diff options
author | Maxime Porhel | 2020-10-22 19:22:49 +0000 |
---|---|---|
committer | Maxime Porhel | 2021-02-22 20:05:34 +0000 |
commit | 819f384e8d4f91e35d1dcf9e11c74ba98d9a9f61 (patch) | |
tree | 54dfbbf1824844a2067f508d89c202d4e839d822 | |
parent | b4963e8b55063bc4ff1ff68185f78537974307b5 (diff) | |
download | org.eclipse.sirius-819f384e8d4f91e35d1dcf9e11c74ba98d9a9f61.tar.gz org.eclipse.sirius-819f384e8d4f91e35d1dcf9e11c74ba98d9a9f61.tar.xz org.eclipse.sirius-819f384e8d4f91e35d1dcf9e11c74ba98d9a9f61.zip |
[571400] Refactor CacheHelper
- Identify structural and range dependant cache.
- Clear range dependant caches as soon as a RangeSetter.setVerticalRange
is called.
- Rename the cache activator and tester methods
Bug: 571400
Cherry-picked-from: 567517
Change-Id: I2a854fda59e7816fda4227ebd076e7fb97822605
Signed-off-by: Maxime Porhel <maxime.porhel@obeo.fr>
11 files changed, 88 insertions, 122 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.sequence.ui/src/org/eclipse/sirius/diagram/sequence/ui/tool/internal/ui/SequenceDragEditPartsTrackerEx.java b/plugins/org.eclipse.sirius.diagram.sequence.ui/src/org/eclipse/sirius/diagram/sequence/ui/tool/internal/ui/SequenceDragEditPartsTrackerEx.java index b8bfeac72f..60161b44f4 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence.ui/src/org/eclipse/sirius/diagram/sequence/ui/tool/internal/ui/SequenceDragEditPartsTrackerEx.java +++ b/plugins/org.eclipse.sirius.diagram.sequence.ui/src/org/eclipse/sirius/diagram/sequence/ui/tool/internal/ui/SequenceDragEditPartsTrackerEx.java @@ -75,7 +75,8 @@ public class SequenceDragEditPartsTrackerEx extends SiriusDragEditPartsTrackerEx diagram.useCache(false); diagram.clearAllCaches(); } - + CacheHelper.setStructuralCacheEnabled(false); + CacheHelper.setVerticalRangeCacheEnabled(false); CacheHelper.clearCaches(); } @@ -86,7 +87,9 @@ public class SequenceDragEditPartsTrackerEx extends SiriusDragEditPartsTrackerEx * the drag tracker source/owner edit part. */ public static void handleButtonDown(IGraphicalEditPart smep) { - CacheHelper.initCaches(); + CacheHelper.clearCaches(); + CacheHelper.setStructuralCacheEnabled(true); + CacheHelper.setVerticalRangeCacheEnabled(true); SequenceDiagram diagram = getSequenceDiagram(smep); if (diagram != null) { diff --git a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/AbstractFrame.java b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/AbstractFrame.java index f7322af461..99b82c5dda 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/AbstractFrame.java +++ b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/AbstractFrame.java @@ -90,7 +90,7 @@ public abstract class AbstractFrame extends AbstractSequenceNode implements ISeq * @return the covered lifelines. */ public Collection<Lifeline> computeCoveredLifelines() { - if (CacheHelper.isCacheEnabled()) { + if (CacheHelper.isStructuralCacheEnabled()) { Collection<Lifeline> coverage = CacheHelper.getCoverageCache().get(this); if (coverage != null) { return new ArrayList<Lifeline>(coverage); @@ -130,7 +130,7 @@ public abstract class AbstractFrame extends AbstractSequenceNode implements ISeq DslCommonPlugin.PROFILER.stopWork(COVERAGE); - if (CacheHelper.isCacheEnabled()) { + if (CacheHelper.isStructuralCacheEnabled()) { CacheHelper.getCoverageCache().put(this, coveredLifelines); } diff --git a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/AbstractNodeEvent.java b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/AbstractNodeEvent.java index aa516bae0b..aa6a0f411d 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/AbstractNodeEvent.java +++ b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/AbstractNodeEvent.java @@ -103,7 +103,7 @@ public abstract class AbstractNodeEvent extends AbstractSequenceNode implements @Override public ISequenceEvent getParentEvent() { - if (CacheHelper.isCacheEnabled()) { + if (CacheHelper.isStructuralCacheEnabled()) { ISequenceEvent parentEvent = CacheHelper.getEventToParentEventCache().get(this); if (parentEvent != null) { return parentEvent; @@ -117,7 +117,7 @@ public abstract class AbstractNodeEvent extends AbstractSequenceNode implements parent = getParentOperand().get(); } - if (CacheHelper.isCacheEnabled()) { + if (CacheHelper.isStructuralCacheEnabled()) { CacheHelper.getEventToParentEventCache().put(this, parent); } return parent; @@ -154,7 +154,7 @@ public abstract class AbstractNodeEvent extends AbstractSequenceNode implements */ @Override public Option<Operand> getParentOperand() { - if (CacheHelper.isCacheEnabled()) { + if (CacheHelper.isStructuralCacheEnabled()) { Option<Operand> parentOperand = CacheHelper.getEventToParentOperandCache().get(this); if (parentOperand != null) { return parentOperand; @@ -162,7 +162,7 @@ public abstract class AbstractNodeEvent extends AbstractSequenceNode implements } Option<Operand> parentOperand = new ParentOperandFinder(this).getParentOperand(); - if (CacheHelper.isCacheEnabled()) { + if (CacheHelper.isStructuralCacheEnabled()) { CacheHelper.getEventToParentOperandCache().put(this, parentOperand); } return parentOperand; @@ -240,7 +240,7 @@ public abstract class AbstractNodeEvent extends AbstractSequenceNode implements * @return the hierarchical parent event of this event, if any. */ protected ISequenceEvent getHierarchicalParentEvent(String noFoundParentExceptionMessage) { - if (CacheHelper.isCacheEnabled()) { + if (CacheHelper.isStructuralCacheEnabled()) { ISequenceEvent hierarchicalParent = CacheHelper.getAbstractNodeEventToHierarchicalParentCache().get(this); if (hierarchicalParent != null) { return hierarchicalParent; @@ -252,7 +252,7 @@ public abstract class AbstractNodeEvent extends AbstractSequenceNode implements View parentView = (View) viewContainer; Option<ISequenceEvent> parentElement = ISequenceElementAccessor.getISequenceEvent(parentView); if (parentElement.some()) { - if (CacheHelper.isCacheEnabled()) { + if (CacheHelper.isStructuralCacheEnabled()) { CacheHelper.getAbstractNodeEventToHierarchicalParentCache().put(this, parentElement.get()); } diff --git a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/Execution.java b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/Execution.java index bb6dac6a10..c0791e51a3 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/Execution.java +++ b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/Execution.java @@ -199,7 +199,7 @@ public class Execution extends AbstractNodeEvent { private Option<Message> getCompoundMessage(boolean start) { Message result = null; Option<Message> resultOption = Options.newNone(); - if (CacheHelper.isCacheEnabled()) { + if (CacheHelper.isStructuralCacheEnabled()) { if (start) { result = CacheHelper.getStartCompoundMessageCache().get(this); } else { @@ -236,7 +236,7 @@ public class Execution extends AbstractNodeEvent { } private void putMessageInCache(boolean start, Message message) { - if (CacheHelper.isCacheEnabled()) { + if (CacheHelper.isStructuralCacheEnabled()) { if (start) { CacheHelper.getStartCompoundMessageCache().put(this, message); } else { diff --git a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/Message.java b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/Message.java index dab2c9d8ef..b364548c37 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/Message.java +++ b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/elements/Message.java @@ -378,7 +378,7 @@ public class Message extends AbstractSequenceElement implements ISequenceEvent { @Override public Option<Operand> getParentOperand() { - if (CacheHelper.isCacheEnabled()) { + if (CacheHelper.isStructuralCacheEnabled()) { Option<Operand> parentOperand = CacheHelper.getEventToParentOperandCache().get(this); if (parentOperand != null) { return parentOperand; @@ -408,7 +408,7 @@ public class Message extends AbstractSequenceElement implements ISequenceEvent { parentOperand = targetParentOperand; } - if (CacheHelper.isCacheEnabled()) { + if (CacheHelper.isStructuralCacheEnabled()) { CacheHelper.getEventToParentOperandCache().put(this, parentOperand); } @@ -481,9 +481,9 @@ public class Message extends AbstractSequenceElement implements ISequenceEvent { if (isReflective()) { Lifeline lifeline = getLifeline().get(); SequenceDiagram diagram = getDiagram(); - EventEndsOrdering semanticOrdering = diagram.getSequenceDDiagram().getSemanticOrdering(); List<EventEnd> msgEnds = EventEndHelper.findEndsFromSemanticOrdering(this); if (msgEnds.size() == 2) { + EventEndsOrdering semanticOrdering = diagram.getSequenceDDiagram().getSemanticOrdering(); int start = semanticOrdering.getEventEnds().indexOf(msgEnds.get(0)); int end = semanticOrdering.getEventEnds().indexOf(msgEnds.get(1)); if (Math.abs(start - end) > 1) { diff --git a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/query/SequenceMessageViewQuery.java b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/query/SequenceMessageViewQuery.java index 56c8a5605b..b3086be7bb 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/query/SequenceMessageViewQuery.java +++ b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/query/SequenceMessageViewQuery.java @@ -106,7 +106,7 @@ public class SequenceMessageViewQuery { */ public Range getVerticalRange() { Range result = null; - if (CacheHelper.isDragTrackerCacheEnabled()) { + if (CacheHelper.isVerticalRangeCacheEnabled()) { result = CacheHelper.getViewToRangeCache().get(edge); } if (result == null) { @@ -131,7 +131,7 @@ public class SequenceMessageViewQuery { result = new Range(Math.min(firstY, lastY), Math.max(firstY, lastY)); } } - if (CacheHelper.isDragTrackerCacheEnabled()) { + if (CacheHelper.isVerticalRangeCacheEnabled()) { CacheHelper.getViewToRangeCache().put(edge, result); } } @@ -261,10 +261,10 @@ public class SequenceMessageViewQuery { View source = edge.getSource(); Range sourceRange = new Range(0, 0); if (source instanceof Node) { - boolean cacheEnabled = CacheHelper.isDragTrackerCacheEnabled(); - CacheHelper.setDragTrackerCacheEnabled(false); + boolean cacheEnabled = CacheHelper.isVerticalRangeCacheEnabled(); + CacheHelper.setVerticalRangeCacheEnabled(false); sourceRange = new SequenceNodeQuery((Node) source).getVerticalRange(); - CacheHelper.setDragTrackerCacheEnabled(cacheEnabled); + CacheHelper.setVerticalRangeCacheEnabled(cacheEnabled); } return getAnchorAbsolutePosition(srcAnchor, sourceRange); // could not return 0 : other utility method take 0,5 precision point @@ -285,10 +285,10 @@ public class SequenceMessageViewQuery { } View target = edge.getTarget(); if (target instanceof Node) { - boolean cacheEnabled = CacheHelper.isDragTrackerCacheEnabled(); - CacheHelper.setDragTrackerCacheEnabled(false); + boolean cacheEnabled = CacheHelper.isVerticalRangeCacheEnabled(); + CacheHelper.setVerticalRangeCacheEnabled(false); Range targetRange = new SequenceNodeQuery((Node) target).getVerticalRange(); - CacheHelper.setDragTrackerCacheEnabled(cacheEnabled); + CacheHelper.setVerticalRangeCacheEnabled(cacheEnabled); return getAnchorAbsolutePosition(tgtAnchor, targetRange); } diff --git a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/query/SequenceNodeQuery.java b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/query/SequenceNodeQuery.java index 34d8387e66..a672a21801 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/query/SequenceNodeQuery.java +++ b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/query/SequenceNodeQuery.java @@ -57,7 +57,7 @@ public class SequenceNodeQuery { if (!(element instanceof DDiagramElement)) { result = null; } else { - if (CacheHelper.isDragTrackerCacheEnabled()) { + if (CacheHelper.isVerticalRangeCacheEnabled()) { result = CacheHelper.getViewToRangeCache().get(node); } if (result == null) { @@ -87,7 +87,7 @@ public class SequenceNodeQuery { if (isShifted()) { result = result.shifted(IBorderItemOffsets.DEFAULT_OFFSET.height); } - if (CacheHelper.isDragTrackerCacheEnabled()) { + if (CacheHelper.isVerticalRangeCacheEnabled()) { CacheHelper.getViewToRangeCache().put(node, result); } } diff --git a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/refresh/RefreshLayoutCommand.java b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/refresh/RefreshLayoutCommand.java index a32acd4680..7a4508b36e 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/refresh/RefreshLayoutCommand.java +++ b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/refresh/RefreshLayoutCommand.java @@ -75,7 +75,9 @@ public class RefreshLayoutCommand extends RecordingCommand { IPermissionAuthority permissionAuthority = PermissionAuthorityRegistry.getDefault().getPermissionAuthority(sequenceDDiagram); if (permissionAuthority != null && permissionAuthority.canEditInstance(sequenceDDiagram)) { sequenceDiagram.useCache(true); - CacheHelper.initRefreshLayoutCaches(); + CacheHelper.clearCaches(); + CacheHelper.setStructuralCacheEnabled(true); + CacheHelper.setVerticalRangeCacheEnabled(false); try { /* * Everything has been committed, so we should be in a stable state where it is safe to refresh both @@ -121,6 +123,9 @@ public class RefreshLayoutCommand extends RecordingCommand { } finally { sequenceDiagram.useCache(false); sequenceDiagram.clearAllCaches(); + + CacheHelper.setStructuralCacheEnabled(false); + CacheHelper.setVerticalRangeCacheEnabled(false); CacheHelper.clearCaches(); } } diff --git a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/util/CacheHelper.java b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/util/CacheHelper.java index d4e251cf9c..fadce04d0b 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/util/CacheHelper.java +++ b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/util/CacheHelper.java @@ -32,9 +32,9 @@ import org.eclipse.sirius.ext.base.Option; */ public final class CacheHelper { - private static boolean dragTrackercacheEnabled; + private static boolean structuralCacheEnabled; - private static boolean refreshLayoutcacheEnabled; + private static boolean verticalRangeCacheEnabled; private static Map<AbstractFrame, Collection<Lifeline>> coverageCache = new ConcurrentHashMap<>(); @@ -60,98 +60,64 @@ public final class CacheHelper { } /** - * Return if all caches types are enabled. + * Return true if the structural caches are enabled. * - * @return if all caches are enabled. + * @return true if the structural caches are enabled. */ - public static boolean isCacheEnabled() { - return dragTrackercacheEnabled || refreshLayoutcacheEnabled; + public static boolean isStructuralCacheEnabled() { + return structuralCacheEnabled; } /** - * Return if drag tracker cache is enabled. + * Set if the structural cache cache is enabled. * - * @return if drag tracker cache is enabled. - */ - public static boolean isDragTrackerCacheEnabled() { - return dragTrackercacheEnabled; - } - - /** - * Return if refresh layout cache is enabled. - * - * @return if refresh layout cache is enabled. + * @param enabled + * boolean */ - public static boolean isRefreshLayoutCacheEnabled() { - return refreshLayoutcacheEnabled; + public static void setStructuralCacheEnabled(boolean enabled) { + CacheHelper.structuralCacheEnabled = enabled; } /** - * Set if drag tracker cache is enabled. + * Return true if the vertical range cache is enabled. * - * @param enabled - * boolean + * @return true if the vertical range cache is enabled. */ - public static void setDragTrackerCacheEnabled(boolean enabled) { - CacheHelper.dragTrackercacheEnabled = enabled; + public static boolean isVerticalRangeCacheEnabled() { + return verticalRangeCacheEnabled; } /** - * Set if refresh layout cache is enabled. + * Set if vertical range is enabled. * * @param enabled * boolean */ - public static void setRefreshLayoutCacheEnabled(boolean enabled) { - CacheHelper.refreshLayoutcacheEnabled = enabled; + public static void setVerticalRangeCacheEnabled(boolean enabled) { + CacheHelper.verticalRangeCacheEnabled = enabled; } /** - * Clear drag tracker caches. - */ - public static void clearDragTrackerCaches() { - viewToRangeCache.clear(); - clearRefreshLayoutCaches(); - } - - /** - * Clear refresh layout caches. + * Clear and disable all caches. */ - public static void clearRefreshLayoutCaches() { + public static void clearCaches() { + // Structural caches coverageCache.clear(); - subEventsCache.clear(); startCompoundMessageCache.clear(); endCompoundMessageCache.clear(); nodeEventToHierarchicalParentCache.clear(); - eventToParentOperandCache.clear(); - eventToParentEventCache.clear(); + clearRangeDependantCaches(); } /** - * Clear and disable all caches. + * Clear and disable range dependant caches. */ - public static void clearCaches() { - CacheHelper.setDragTrackerCacheEnabled(false); - CacheHelper.setRefreshLayoutCacheEnabled(false); - CacheHelper.clearDragTrackerCaches(); - } - - /** - * Init and enable all caches. - */ - public static void initCaches() { - clearCaches(); - CacheHelper.setDragTrackerCacheEnabled(true); - CacheHelper.setRefreshLayoutCacheEnabled(false); - } - - /** - * Init and enable refresh layout caches. - */ - public static void initRefreshLayoutCaches() { - clearCaches(); - CacheHelper.setRefreshLayoutCacheEnabled(true); - CacheHelper.setDragTrackerCacheEnabled(false); + public static void clearRangeDependantCaches() { + // Range dependant cache + subEventsCache.clear(); + eventToParentOperandCache.clear(); + eventToParentEventCache.clear(); + viewToRangeCache.clear(); } /** @@ -164,7 +130,7 @@ public final class CacheHelper { } /** - * get subEvents cache. + * Get subEvents cache. * * @return the subEventsCache */ @@ -182,47 +148,48 @@ public final class CacheHelper { } /** - * get start message cache. + * Get start message cache. * - * @return the message + * @return the cache */ public static ConcurrentHashMap<ISequenceEvent, Message> getStartCompoundMessageCache() { return startCompoundMessageCache; } /** - * get end message cache. + * Get end message cache. * - * @return the message + * @return the cache */ public static ConcurrentHashMap<ISequenceEvent, Message> getEndCompoundMessageCache() { return endCompoundMessageCache; } /** - * get end message cache. + * Get hierarchical parent cache. * - * @return the message + * @return the cache */ public static ConcurrentHashMap<AbstractNodeEvent, ISequenceEvent> getAbstractNodeEventToHierarchicalParentCache() { return nodeEventToHierarchicalParentCache; } /** - * get end message cache. + * Get parent operand cache. * - * @return the message + * @return the cache */ public static ConcurrentHashMap<ISequenceEvent, Option<Operand>> getEventToParentOperandCache() { return eventToParentOperandCache; } /** - * get end message cache. + * Get parent event cache. * - * @return the message + * @return the cache */ public static ConcurrentHashMap<ISequenceEvent, ISequenceEvent> getEventToParentEventCache() { return eventToParentEventCache; } + } diff --git a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/util/RangeSetter.java b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/util/RangeSetter.java index 7f6b91d951..c7fddbf5ca 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/util/RangeSetter.java +++ b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/util/RangeSetter.java @@ -65,9 +65,8 @@ public final class RangeSetter { * the vertical range of the given sequence event. */ public static void setVerticalRange(AbstractNodeEvent self, Range range) { - if (CacheHelper.isDragTrackerCacheEnabled()) { - CacheHelper.clearCaches(); - } + CacheHelper.clearRangeDependantCaches(); + Range oldRange = self.getVerticalRange(); int deltaY = range.getLowerBound() - oldRange.getLowerBound(); int size = range.width(); @@ -85,9 +84,8 @@ public final class RangeSetter { * the vertical range of the given sequence event. */ public static void setVerticalRange(State self, Range range) { - if (CacheHelper.isDragTrackerCacheEnabled()) { - CacheHelper.clearCaches(); - } + CacheHelper.clearRangeDependantCaches(); + Range oldRange = self.getVerticalRange(); int deltaY = range.getLowerBound() - oldRange.getLowerBound(); int size = range.width(); @@ -105,9 +103,8 @@ public final class RangeSetter { * the vertical range of the given sequence event. */ public static void setVerticalRange(InteractionUse self, Range range) { - if (CacheHelper.isDragTrackerCacheEnabled()) { - CacheHelper.clearCaches(); - } + CacheHelper.clearRangeDependantCaches(); + Range oldRange = self.getVerticalRange(); int deltaY = range.getLowerBound() - oldRange.getLowerBound(); int size = range.width(); @@ -125,9 +122,8 @@ public final class RangeSetter { * the vertical range of the given sequence event. */ public static void setVerticalRange(CombinedFragment self, Range range) { - if (CacheHelper.isDragTrackerCacheEnabled()) { - CacheHelper.clearCaches(); - } + CacheHelper.clearRangeDependantCaches(); + Range oldRange = self.getVerticalRange(); int deltaY = range.getLowerBound() - oldRange.getLowerBound(); int size = range.width(); @@ -145,9 +141,8 @@ public final class RangeSetter { * the vertical range of the given sequence event. */ public static void setVerticalRange(Operand self, Range range) { - if (CacheHelper.isDragTrackerCacheEnabled()) { - CacheHelper.clearCaches(); - } + CacheHelper.clearRangeDependantCaches(); + Range oldRange = self.getVerticalRange(); int deltaY = range.getLowerBound() - oldRange.getLowerBound(); int size = range.width(); @@ -165,9 +160,7 @@ public final class RangeSetter { * the vertical range of the given sequence event. */ public static void setVerticalRange(Lifeline self, Range range) { - if (CacheHelper.isDragTrackerCacheEnabled()) { - CacheHelper.clearCaches(); - } + CacheHelper.clearRangeDependantCaches(); InstanceRole instanceRole = self.getInstanceRole(); Rectangle irepBounds = instanceRole.getBounds(); @@ -264,9 +257,7 @@ public final class RangeSetter { * the vertical range of the given sequence event. */ public static void setVerticalRange(Message self, Range range) { - if (CacheHelper.isDragTrackerCacheEnabled()) { - CacheHelper.clearCaches(); - } + CacheHelper.clearRangeDependantCaches(); RangeSetter.handlePotentialLostEnd(self.getSourceElement(), range); RangeSetter.handlePotentialLostEnd(self.getTargetElement(), range); diff --git a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/util/SubEventsHelper.java b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/util/SubEventsHelper.java index 93b5bc6ebe..d2955c0143 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/util/SubEventsHelper.java +++ b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/util/SubEventsHelper.java @@ -95,7 +95,7 @@ public final class SubEventsHelper { List<ISequenceEvent> result = getValidSubEvents(); Collections.sort(result, RangeHelper.lowerBoundOrdering().onResultOf(ISequenceEvent.VERTICAL_RANGE)); - if (CacheHelper.isCacheEnabled()) { + if (CacheHelper.isStructuralCacheEnabled()) { CacheHelper.getSubEventsCache().put(parentEvent, new ArrayList<>(result)); } return result; |