Bug 132217 [Markers] invalid thread access in Problems view
I noticed this stack in my log when I was playing with activities earlier: org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:3349) at org.eclipse.swt.SWT.error(SWT.java:3272) at org.eclipse.swt.SWT.error(SWT.java:3243) at org.eclipse.swt.widgets.Widget.error(Widget.java:432) at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:328) at org.eclipse.swt.widgets.Tree.getSelection(Tree.java:1821) at org.eclipse.jface.viewers.TreeViewer.getSelection(TreeViewer.java:451) at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:649) at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2130) at org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1556) at org.eclipse.jface.viewers.AbstractTreeViewer.setSelectionToWidget(AbstractTreeViewer.java:2484) at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1268) at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1322) at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1281) at org.eclipse.ui.views.markers.internal.ProblemView$1.activityManagerChanged(ProblemView.java:443) at org.eclipse.ui.internal.activities.AbstractActivityManager.fireActivityManagerChanged(AbstractActivityManager.java:47) at org.eclipse.ui.internal.activities.ProxyActivityManager$1.activityManagerChanged(ProxyActivityManager.java:49) at org.eclipse.ui.internal.activities.AbstractActivityManager.fireActivityManagerChanged(AbstractActivityManager.java:47) at org.eclipse.ui.internal.activities.MutableActivityManager.setEnabledActivityIds(MutableActivityManager.java:509) at org.eclipse.ui.internal.activities.ws.WorkbenchActivitySupport.setEnabledActivityIds(WorkbenchActivitySupport.java:313) at org.eclipse.ui.activities.WorkbenchActivityHelper.enableActivities(WorkbenchActivityHelper.java:152) at org.eclipse.ui.activities.WorkbenchActivityHelper.allow(WorkbenchActivityHelper.java:117) at org.eclipse.ui.activities.WorkbenchActivityHelper.allowUseOf(WorkbenchActivityHelper.java:89) at org.eclipse.ui.internal.ide.IDEWorkbenchActivityHelper.processProject(IDEWorkbenchActivityHelper.java:196) at org.eclipse.ui.internal.ide.IDEWorkbenchActivityHelper$3.resourceChanged(IDEWorkbenchActivityHelper.java:162) at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:280) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:274) at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:148) at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:256) at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:956) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1742) at org.eclipse.team.core.variants.PersistantResourceVariantByteStore.run(PersistantResourceVariantByteStore.java:171) at org.eclipse.team.internal.core.subscribers.DescendantResourceVariantByteStore.run(DescendantResourceVariantByteStore.java:181) at org.eclipse.team.core.variants.ResourceVariantTree.collectChanges(ResourceVariantTree.java:110) at org.eclipse.team.internal.ccvs.core.syncinfo.CVSResourceVariantTree.collectChanges(CVSResourceVariantTree.java:89) at org.eclipse.team.core.variants.AbstractResourceVariantTree.refresh(AbstractResourceVariantTree.java:92) at org.eclipse.team.internal.ccvs.core.syncinfo.CVSResourceVariantTree.refresh(CVSResourceVariantTree.java:327) at org.eclipse.team.core.variants.AbstractResourceVariantTree.refresh(AbstractResourceVariantTree.java:55) at org.eclipse.team.core.variants.ResourceVariantTreeSubscriber.refresh(ResourceVariantTreeSubscriber.java:160) at org.eclipse.team.core.variants.ResourceVariantTreeSubscriber.refresh(ResourceVariantTreeSubscriber.java:125) at org.eclipse.team.internal.ui.synchronize.RefreshSubscriberParticipantJob.doRefresh(RefreshSubscriberParticipantJob.java:87) at org.eclipse.team.internal.ui.synchronize.RefreshParticipantJob.run(RefreshParticipantJob.java:308) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/views/markers/internal/ProblemView.java
private final static String[] ROOT_TYPES = { IMarker.PROBLEM };
	private final static String TAG_DIALOG_SECTION = "org.eclipse.ui.views.problem"; 
	private static final String TAG_SYSTEM_FILTER_ENTRY = "systemFilter";
	private ActionResolveMarker resolveMarkerAction;
	private IActivityManagerListener activityManagerListener;
	private IField severity = new FieldSeverity();
	private IField folder = new FieldFolder();
	private IField resource = new FieldResource();
	private IField message = new FieldMessage();
	private IField lineNumber = new FieldLineNumber();
	private IField creationTime = new FieldCreationTime();
	
	
	private static IField id = new FieldId();
	private class GroupingAction extends Action {
		IField groupingField;
		ProblemView problemView;
		/**
		 * Create a new instance of the receiver.
		 * 
		 * @param label
		 * @param field
		 * @param view
		 */
		public GroupingAction(String label, IField field, ProblemView view) {
			super(label, IAction.AS_RADIO_BUTTON);
			groupingField = field;
			problemView = view;