diff --git a/plugins/de.cau.cs.kieler.sccharts.ui/src/de/cau/cs/kieler/sccharts/ui/synthesis/hooks/LabelShorteningHook.xtend b/plugins/de.cau.cs.kieler.sccharts.ui/src/de/cau/cs/kieler/sccharts/ui/synthesis/hooks/LabelShorteningHook.xtend index 2b13b90e66..a9681fc57b 100644 --- a/plugins/de.cau.cs.kieler.sccharts.ui/src/de/cau/cs/kieler/sccharts/ui/synthesis/hooks/LabelShorteningHook.xtend +++ b/plugins/de.cau.cs.kieler.sccharts.ui/src/de/cau/cs/kieler/sccharts/ui/synthesis/hooks/LabelShorteningHook.xtend @@ -28,6 +28,7 @@ import org.eclipse.elk.core.labels.LabelManagementOptions import static extension de.cau.cs.kieler.klighd.syntheses.DiagramSyntheses.* import static extension de.cau.cs.kieler.klighd.util.ModelingUtil.* +import java.util.Iterator /** * Shows or hides or shortens transition labels. @@ -78,15 +79,25 @@ class LabelShorteningHook extends SynthesisActionHook { } override processTransition(Transition transition, KEdge edge) { - if (HIDE_LABELS.booleanValue) { - edge.eContents.filter(KLabel).forEach[initiallyHide] + if (SHORTEN_LABEL_STRATEGY.objectValue.equals(LabelShorteningStrategies.PRIORITIES) + && edge.source.outgoingEdges.length == 1) { + edge.labels.forEach[initiallyHide] + } else if (HIDE_LABELS.booleanValue) { + edge.labels.forEach[initiallyHide] } } override executeAction(KNode rootNode) { val viewer = usedContext.viewer - - if (HIDE_LABELS.booleanValue) { + if (SHORTEN_LABEL_STRATEGY.objectValue.equals(LabelShorteningStrategies.PRIORITIES)) { + rootNode.eAllContentsOfType(KEdge).forEach[edge | + if (edge.source.outgoingEdges.length == 1) { + edge.labels.forEach[label | viewer.hide(label)] + } else { + edge.labels.forEach[label | viewer.show(label)] + } + ] + } else if (HIDE_LABELS.booleanValue) { rootNode.eAllContentsOfType(KNode, KEdge, KLabel).filter(KLabel).forEach[viewer.hide(it)] } else { rootNode.eAllContentsOfType(KNode, KEdge, KLabel).filter(KLabel).forEach[viewer.show(it)] @@ -102,6 +113,7 @@ class LabelShorteningHook extends SynthesisActionHook { if (labelManager !== null) { labelManager.fixedTargetWidth = SHORTEN_LABEL_WIDTH.intValue } + rootNode.setLayoutOption(LabelManagementOptions.LABEL_MANAGER, labelManager) } } \ No newline at end of file diff --git a/plugins/de.cau.cs.kieler.sccharts.ui/src/de/cau/cs/kieler/sccharts/ui/synthesis/labels/TransitionPriorityLabelManager.java b/plugins/de.cau.cs.kieler.sccharts.ui/src/de/cau/cs/kieler/sccharts/ui/synthesis/labels/TransitionPriorityLabelManager.java index 5680ddff55..f905054b7a 100644 --- a/plugins/de.cau.cs.kieler.sccharts.ui/src/de/cau/cs/kieler/sccharts/ui/synthesis/labels/TransitionPriorityLabelManager.java +++ b/plugins/de.cau.cs.kieler.sccharts.ui/src/de/cau/cs/kieler/sccharts/ui/synthesis/labels/TransitionPriorityLabelManager.java @@ -24,6 +24,7 @@ import de.cau.cs.kieler.klighd.kgraph.KLabel; import de.cau.cs.kieler.klighd.krendering.KRendering; import de.cau.cs.kieler.klighd.krendering.KRenderingRef; +import de.cau.cs.kieler.klighd.labels.decoration.LabelDecorationConfigurator; import de.cau.cs.kieler.klighd.labels.management.AbstractKlighdLabelManager; import de.cau.cs.kieler.sccharts.Transition; @@ -67,7 +68,11 @@ public Result doResizeLabel(ElkLabel label, double targetWidth) { // The new label is the priority followed by a period return Result.modified(matcher.group(1) + "."); } else { - // If no priority available + // If no priority available +// String text = kLabel.getText(); +// kLabel.setText(""); +// LabelDecorationConfigurator.create().applyTo(kLabel); +// label.setProperty(KRenderingOptions.K_RENDERING, null); return Result.modified(""); } }