diff options
author | Maxime Porhel | 2016-05-20 13:12:22 +0000 |
---|---|---|
committer | Maxime Porhel | 2016-08-16 15:23:18 +0000 |
commit | f708d10ea54c417ca6861769ad16fc018750ab72 (patch) | |
tree | 2f7ef53373e668bdd2be9ae63241106305600d9c /plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/layout | |
parent | e2a6d3e6132d47e91c5c0b39a2613a32d51a112c (diff) | |
download | org.eclipse.sirius-f708d10ea54c417ca6861769ad16fc018750ab72.tar.gz org.eclipse.sirius-f708d10ea54c417ca6861769ad16fc018750ab72.tar.xz org.eclipse.sirius-f708d10ea54c417ca6861769ad16fc018750ab72.zip |
[cleanup] Avoid potential IllegalArgumentException
During diagram initialization and first vertical layout pass, regarding
the VSM configuration, lifelines might not be correctly sized yet to
respect the default minimum gaps, causing an invalid Range creation
during layout preparation.
Change-Id: Ic818e2ce2af56262e2bc9d065f53e757ea22a34e
Signed-off-by: Maxime Porhel <maxime.porhel@obeo.fr>
Diffstat (limited to 'plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/layout')
-rw-r--r-- | plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/layout/vertical/SequenceVerticalLayout.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/layout/vertical/SequenceVerticalLayout.java b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/layout/vertical/SequenceVerticalLayout.java index 1e15ce0a83..1480fa3da1 100644 --- a/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/layout/vertical/SequenceVerticalLayout.java +++ b/plugins/org.eclipse.sirius.diagram.sequence/src/org/eclipse/sirius/diagram/sequence/business/internal/layout/vertical/SequenceVerticalLayout.java @@ -119,6 +119,7 @@ public class SequenceVerticalLayout extends AbstractSequenceOrderingLayout<ISequ * A function to compute the sequence events corresponding to an event end. */ protected final Function<EventEnd, Collection<ISequenceEvent>> eventEndToSequenceEvents = new Function<EventEnd, Collection<ISequenceEvent>>() { + @Override public Collection<ISequenceEvent> apply(EventEnd from) { return endToISequencEvents.get(from); } @@ -134,6 +135,7 @@ public class SequenceVerticalLayout extends AbstractSequenceOrderingLayout<ISequ * A function to get the instance role height of a lifeline. */ private final Function<Lifeline, Integer> instanceRoleHeight = new Function<Lifeline, Integer>() { + @Override public Integer apply(Lifeline from) { InstanceRole irep = from.getInstanceRole(); if (irep != null) { @@ -150,6 +152,7 @@ public class SequenceVerticalLayout extends AbstractSequenceOrderingLayout<ISequ private final Ordering<Lifeline> heightOrdering = Ordering.natural().onResultOf(instanceRoleHeight); private final Function<ISequenceEvent, Option<Range>> oldRangeFunction = new Function<ISequenceEvent, Option<Range>>() { + @Override public Option<Range> apply(ISequenceEvent from) { Range range = oldLayoutData.get(from); if (range == null) { @@ -160,6 +163,7 @@ public class SequenceVerticalLayout extends AbstractSequenceOrderingLayout<ISequ }; private final Function<ISequenceEvent, Option<Range>> oldFlaggedRange = new Function<ISequenceEvent, Option<Range>>() { + @Override public Option<Range> apply(ISequenceEvent from) { Rectangle rect = oldFlaggedLayoutData.get(from); Range result = null; @@ -807,7 +811,7 @@ public class SequenceVerticalLayout extends AbstractSequenceOrderingLayout<ISequ int minTimeBounds = getMinTimeBounds(); int startTime = minTimeBounds; int endTime = getMaxTimeBounds(pack, minTimeBounds) - LayoutConstants.TIME_STOP_OFFSET; - this.timeRange = new Range(startTime, endTime); + this.timeRange = new Range(startTime, Math.max(startTime, endTime)); } private int getMaxTimeBounds(boolean pack, int minTimeBounds) { @@ -818,6 +822,7 @@ public class SequenceVerticalLayout extends AbstractSequenceOrderingLayout<ISequ // Avoid to handle lifelines to move up for max computation. Predicate<Lifeline> isMaxRangeCandidate = new Predicate<Lifeline>() { + @Override public boolean apply(Lifeline input) { InstanceRole irep = input.getInstanceRole(); if (irep != null) { @@ -859,6 +864,7 @@ public class SequenceVerticalLayout extends AbstractSequenceOrderingLayout<ISequ int endOfLifeVsize = 0; List<DNode> endOfLifes = Lists.newArrayList(Iterables.filter(node.getOwnedBorderedNodes(), new Predicate<DNode>() { + @Override public boolean apply(DNode input) { return input.isVisible() && EndOfLife.viewpointElementPredicate().apply(input); } @@ -887,6 +893,7 @@ public class SequenceVerticalLayout extends AbstractSequenceOrderingLayout<ISequ // Avoid to handle lifelines to move up for min computation. Predicate<Lifeline> isMinRangeCandidate = new Predicate<Lifeline>() { + @Override public boolean apply(Lifeline input) { InstanceRole irep = input.getInstanceRole(); if (irep != null) { |