Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 282436 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/mylyn/internal/context/core/InteractionContextManager.java (-6 / +12 lines)
Lines 39-50 Link Here
39
import org.eclipse.mylyn.context.core.AbstractContextListener;
39
import org.eclipse.mylyn.context.core.AbstractContextListener;
40
import org.eclipse.mylyn.context.core.AbstractContextStructureBridge;
40
import org.eclipse.mylyn.context.core.AbstractContextStructureBridge;
41
import org.eclipse.mylyn.context.core.ContextChangeEvent;
41
import org.eclipse.mylyn.context.core.ContextChangeEvent;
42
import org.eclipse.mylyn.context.core.ContextChangeEvent.ContextChangeKind;
43
import org.eclipse.mylyn.context.core.ContextCore;
42
import org.eclipse.mylyn.context.core.ContextCore;
44
import org.eclipse.mylyn.context.core.IInteractionContext;
43
import org.eclipse.mylyn.context.core.IInteractionContext;
45
import org.eclipse.mylyn.context.core.IInteractionContextManager;
44
import org.eclipse.mylyn.context.core.IInteractionContextManager;
46
import org.eclipse.mylyn.context.core.IInteractionElement;
45
import org.eclipse.mylyn.context.core.IInteractionElement;
47
import org.eclipse.mylyn.context.core.IInteractionRelation;
46
import org.eclipse.mylyn.context.core.IInteractionRelation;
47
import org.eclipse.mylyn.context.core.ContextChangeEvent.ContextChangeKind;
48
import org.eclipse.mylyn.monitor.core.InteractionEvent;
48
import org.eclipse.mylyn.monitor.core.InteractionEvent;
49
import org.eclipse.mylyn.monitor.core.InteractionEvent.Kind;
49
import org.eclipse.mylyn.monitor.core.InteractionEvent.Kind;
50
50
Lines 804-812 Link Here
804
804
805
				if (activityMetaContext == null) {
805
				if (activityMetaContext == null) {
806
					resetActivityMetaContext();
806
					resetActivityMetaContext();
807
				} else if (!ContextCorePlugin.getDefault()
807
				} else if (!ContextCorePlugin.getDefault().getPluginPreferences().getBoolean(
808
						.getPluginPreferences()
808
						PREFERENCE_ATTENTION_MIGRATED)) {
809
						.getBoolean(PREFERENCE_ATTENTION_MIGRATED)) {
810
					activityMetaContext = migrateLegacyActivity(activityMetaContext);
809
					activityMetaContext = migrateLegacyActivity(activityMetaContext);
811
					saveActivityMetaContext();
810
					saveActivityMetaContext();
812
					ContextCorePlugin.getDefault().getPluginPreferences().setValue(PREFERENCE_ATTENTION_MIGRATED, true);
811
					ContextCorePlugin.getDefault().getPluginPreferences().setValue(PREFERENCE_ATTENTION_MIGRATED, true);
Lines 1010-1017 Link Here
1010
				// reduce interest of children
1009
				// reduce interest of children
1011
				for (String childHandle : bridge.getChildHandles(element.getHandleIdentifier())) {
1010
				for (String childHandle : bridge.getChildHandles(element.getHandleIdentifier())) {
1012
					IInteractionElement childElement = context.get(childHandle);
1011
					IInteractionElement childElement = context.get(childHandle);
1013
					if (childElement != null /*&& childElement.getInterest().isInteresting()*/
1012
					if (childElement != null && isAPartOfContext(childElement) && !childElement.equals(element)) {
1014
							&& !childElement.equals(element)) {
1015
						manipulateInterestForElementHelper(childElement, increment, forceLandmark,
1013
						manipulateInterestForElementHelper(childElement, increment, forceLandmark,
1016
								preserveUninteresting, sourceId, context, changedElements, forcedBridge,
1014
								preserveUninteresting, sourceId, context, changedElements, forcedBridge,
1017
								isExplicitManipulation);
1015
								isExplicitManipulation);
Lines 1044-1049 Link Here
1044
		return true;
1042
		return true;
1045
	}
1043
	}
1046
1044
1045
	private boolean isAPartOfContext(IInteractionElement childElement) {
1046
		if (childElement instanceof CompositeContextElement) {
1047
			CompositeContextElement element = (CompositeContextElement) childElement;
1048
			return element.getNodes() != null && element.getNodes().size() > 0;
1049
		}
1050
		return true;
1051
	}
1052
1047
	/**
1053
	/**
1048
	 * Used to migrate old activity to new activity events
1054
	 * Used to migrate old activity to new activity events
1049
	 * 
1055
	 * 
(-)src/org/eclipse/mylyn/java/tests/InteractionContextManagerTest.java (+41 lines)
Lines 26-31 Link Here
26
import org.eclipse.core.runtime.IPath;
26
import org.eclipse.core.runtime.IPath;
27
import org.eclipse.core.runtime.NullProgressMonitor;
27
import org.eclipse.core.runtime.NullProgressMonitor;
28
import org.eclipse.jdt.core.IJavaElement;
28
import org.eclipse.jdt.core.IJavaElement;
29
import org.eclipse.jdt.core.IJavaProject;
29
import org.eclipse.jdt.core.IMethod;
30
import org.eclipse.jdt.core.IMethod;
30
import org.eclipse.jdt.core.IPackageFragment;
31
import org.eclipse.jdt.core.IPackageFragment;
31
import org.eclipse.jdt.core.IType;
32
import org.eclipse.jdt.core.IType;
Lines 572-586 Link Here
572
		}
573
		}
573
	}
574
	}
574
575
576
	public void testRemoveProjectFromContextRemovesOnlyInteresting() throws JavaModelException {
577
578
		StubContextElementedDeletedListener listener = new StubContextElementedDeletedListener();
579
		try {
580
			manager.addListener(listener);
581
			type1.createMethod("void m1() { }", null, true, null);
582
			type1.createMethod("void m2() { }", null, true, null);
583
			type1.createMethod("void m4() { }", null, true, null);
584
			type1.createMethod("void m5() { }", null, true, null);
585
			IJavaProject project = type1.getJavaProject();
586
			IInteractionElement node = ContextCore.getContextManager().getElement(project.getHandleIdentifier());
587
			assertFalse(node.getInterest().isInteresting());
588
589
			InteractionEvent event = new InteractionEvent(InteractionEvent.Kind.MANIPULATION,
590
					new JavaStructureBridge().getContentType(), project.getHandleIdentifier(), "source");
591
			IInteractionElement element = ContextCorePlugin.getContextManager().processInteractionEvent(event, true);
592
593
			// test implicit deletion
594
			ContextCorePlugin.getContextManager().processInteractionEvent(event, true);
595
			assertEquals(0, listener.explicitDeletionEventCount);
596
			assertEquals(0, listener.elementCount);
597
598
			// test explicit deletion
599
			manager.manipulateInterestForElements(Collections.singletonList(element), false, false, false, "test",
600
					ContextCorePlugin.getContextManager().getActiveContext(), true);
601
			assertEquals(1, listener.explicitDeletionEventCount);
602
603
			// should have 2 element changes.  1 for resources and 1 for java
604
			assertEquals(2, listener.elementCount);
605
606
		} finally {
607
			// clean up
608
			manager.removeListener(listener);
609
		}
610
	}
611
575
	private class StubContextElementedDeletedListener extends AbstractContextListener {
612
	private class StubContextElementedDeletedListener extends AbstractContextListener {
576
613
577
		private int explicitDeletionEventCount;
614
		private int explicitDeletionEventCount;
578
615
579
		private int implicitDeletionEventCount;
616
		private int implicitDeletionEventCount;
580
617
618
		private int elementCount;
619
581
		void reset() {
620
		void reset() {
582
			implicitDeletionEventCount = 0;
621
			implicitDeletionEventCount = 0;
583
			explicitDeletionEventCount = 0;
622
			explicitDeletionEventCount = 0;
623
			elementCount = 0;
584
		}
624
		}
585
625
586
		@Override
626
		@Override
Lines 594-599 Link Here
594
				} else {
634
				} else {
595
					implicitDeletionEventCount++;
635
					implicitDeletionEventCount++;
596
				}
636
				}
637
				elementCount += event.getElements().size();
597
				break;
638
				break;
598
			}
639
			}
599
		}
640
		}

Return to bug 282436