diff options
Diffstat (limited to 'plugins/org.eclipse.etrice.ui.layout')
8 files changed, 164 insertions, 126 deletions
diff --git a/plugins/org.eclipse.etrice.ui.layout/plugin.xml b/plugins/org.eclipse.etrice.ui.layout/plugin.xml index a2865dd7e..dee8a4903 100644 --- a/plugins/org.eclipse.etrice.ui.layout/plugin.xml +++ b/plugins/org.eclipse.etrice.ui.layout/plugin.xml @@ -28,6 +28,11 @@ option="de.cau.cs.kieler.borderSpacing" value="30"> </option> + <option + class="org.eclipse.etrice.ui.layout.eTriceBehaviorDiagram" + option="de.cau.cs.kieler.spacing" + value="50"> + </option> <diagramType id="org.eclipse.etrice.ui.layout.eTriceStructureDiagram" name="eTrice Structure Diagram"> @@ -47,19 +52,9 @@ option="de.cau.cs.kieler.borderSpacing" value="50"> </option> - <semanticOption - class="org.eclipse.etrice.core.room.ActorContainerClass" - config="org.eclipse.etrice.ui.layout.ETriceSemanticLayoutConfig"> - </semanticOption> - <semanticOption - class="org.eclipse.etrice.core.room.StateGraph" - config="org.eclipse.etrice.ui.layout.ETriceSemanticLayoutConfig"> - </semanticOption> - <option - class="org.eclipse.etrice.ui.layout.eTriceBehaviorDiagram" - option="de.cau.cs.kieler.spacing" - value="50"> - </option> + <config + class="org.eclipse.etrice.ui.layout.ETriceLayoutConfig"> + </config> </extension> <extension point="org.eclipse.core.runtime.preferences"> diff --git a/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/Activator.java b/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/Activator.java index c3e810a6d..ad0fab811 100644 --- a/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/Activator.java +++ b/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/Activator.java @@ -6,6 +6,11 @@ import org.osgi.framework.BundleContext; import de.cau.cs.kieler.kiml.ui.KimlUiPlugin; +/** + * The activator class which controls the plug-in life cycle. + * + * @author jayant + */ public class Activator extends AbstractUIPlugin { // The plug-in ID diff --git a/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/BehaviorDiagramLayoutManager.java b/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/BehaviorDiagramLayoutManager.java index b110fd9ba..03fb475c5 100644 --- a/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/BehaviorDiagramLayoutManager.java +++ b/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/BehaviorDiagramLayoutManager.java @@ -77,6 +77,11 @@ public class BehaviorDiagramLayoutManager extends ETriceDiagramLayoutManager { } + /** + * {@inheritDoc} + * + * @author jayant + */ @Override protected Dimension getDefaultSize(Shape shape) { Dimension defaultSize = new Dimension(); @@ -86,10 +91,10 @@ public class BehaviorDiagramLayoutManager extends ETriceDiagramLayoutManager { defaultSize.setSize(StateSupport.MIN_SIZE_X, StateSupport.MIN_SIZE_Y); /* - * This code sets default size differently for State Graphs and States. - * This keeps the top-level container quite large on layout (according - * to the default size in StateGraphSupport), which might not seem so - * pleasant. + * This code snippet sets default the size for State Graphs and States + * differently. With this the top-level container remains large after + * layout (according to the default size in StateGraphSupport), which + * might not look proper. */ /* EObject modelObject = shape.getLink().getBusinessObjects().get(0); @@ -103,7 +108,7 @@ public class BehaviorDiagramLayoutManager extends ETriceDiagramLayoutManager { } else { defaultSize.setSize(20, 20); }*/ - + return defaultSize; } diff --git a/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/ETriceDiagramLayoutManager.java b/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/ETriceDiagramLayoutManager.java index 18aeb5640..af474b44c 100644 --- a/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/ETriceDiagramLayoutManager.java +++ b/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/ETriceDiagramLayoutManager.java @@ -188,6 +188,8 @@ public abstract class ETriceDiagramLayoutManager extends /** * {@inheritDoc} + * + * @author jayant */ @Override public LayoutMapping<PictogramElement> buildLayoutGraph( @@ -230,14 +232,6 @@ public abstract class ETriceDiagramLayoutManager extends shapeLayout.setSize(ga.getWidth(), ga.getHeight()); mapping.getGraphMap().put(diagramNode, element); - VolatileLayoutConfig staticConfig = mapping - .getProperty(KimlGraphitiUtil.STATIC_CONFIG); - - if (workbenchPart instanceof BehaviorEditor) - staticConfig.setValue(LayoutOptions.DIAGRAM_TYPE, diagramNode, - LayoutContext.GRAPH_ELEM, - ETriceSemanticLayoutConfig.BEHAVIOR_DIAGRAM_TYPE); - // Node creation for currently visible top-level Container // Shape(Bounding Box) in // eTrice Diagrams diff --git a/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/ETriceLayoutConfig.java b/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/ETriceLayoutConfig.java new file mode 100644 index 000000000..970182d09 --- /dev/null +++ b/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/ETriceLayoutConfig.java @@ -0,0 +1,126 @@ +package org.eclipse.etrice.ui.layout; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.etrice.core.room.ActorContainerClass; +import org.eclipse.etrice.core.room.StateGraph; +import org.eclipse.etrice.ui.behavior.editor.BehaviorEditor; +import org.eclipse.ui.IWorkbenchPart; + +import de.cau.cs.kieler.core.kgraph.KGraphData; +import de.cau.cs.kieler.kiml.LayoutContext; +import de.cau.cs.kieler.kiml.LayoutOptionData; +import de.cau.cs.kieler.kiml.config.DefaultLayoutConfig; +import de.cau.cs.kieler.kiml.config.ILayoutConfig; +import de.cau.cs.kieler.kiml.options.LayoutOptions; +import de.cau.cs.kieler.kiml.ui.service.EclipseLayoutConfig; + +/** + * A layout config for option configuration in eTrice. It configures the diagram + * types of diagram elements based on the domain model and the specific diagram + * editor. + * + * @author jayant + */ +public class ETriceLayoutConfig implements ILayoutConfig { + + /** The priority for this layout configurations. */ + public static final int PRIORITY = 40; + + /** + * The diagram type for the diagram elements in eTrice behavior diagrams. + */ + public static final String BEHAVIOR_DIAGRAM_TYPE = "org.eclipse.etrice.ui.layout.eTriceBehaviorDiagram"; + + /** + * The diagram type for the diagram elements in eTrice structure diagrams. + */ + public static final String STRUCTURE_DIAGRAM_TYPE = "org.eclipse.etrice.ui.layout.eTriceStructureDiagram"; + + /** + * {@inheritDoc} + * + * @author jayant + */ + @Override + public int getPriority() { + return PRIORITY; + } + + /** + * {@inheritDoc} + * + * @author jayant + */ + @Override + public void enrich(LayoutContext context) { + Object element = context.getProperty(LayoutContext.DOMAIN_MODEL); + + if (element instanceof ActorContainerClass + || element instanceof StateGraph) { + IWorkbenchPart workbenchPart = context + .getProperty(EclipseLayoutConfig.WORKBENCH_PART); + Object diagramType = getDiagramType(element, workbenchPart); + + if (diagramType != null) + context.setProperty(DefaultLayoutConfig.CONTENT_DIAGT, + diagramType); + } + } + + /** + * {@inheritDoc} + * + * @author jayant + */ + @Override + public Object getValue(LayoutOptionData<?> optionData, LayoutContext context) { + if (optionData.getId().equals(LayoutOptions.DIAGRAM_TYPE.getId())) { + EObject element = context.getProperty(LayoutContext.DOMAIN_MODEL); + + if (element instanceof ActorContainerClass + || element instanceof StateGraph) { + IWorkbenchPart workbenchPart = context + .getProperty(EclipseLayoutConfig.WORKBENCH_PART); + return getDiagramType(element, workbenchPart); + } + } + + return null; + } + + /** + * {@inheritDoc} + * + * @author jayant + */ + @Override + public void transferValues(KGraphData graphData, LayoutContext context) { + // not required : no other options to set dynamically + } + + /** + * Returns the diagram type(string) for a domain model element depending + * upon the diagram editor which contains the corresponding diagram element + * + * @param modelElement + * the domain model element + * @param workbenchPart + * the editor containing the corresspnding diagram element + * @return the diagram type for the domain model element + * + * @author jayant + */ + private String getDiagramType(final Object modelElement, + IWorkbenchPart workbenchPart) { + if (modelElement instanceof StateGraph) { + return BEHAVIOR_DIAGRAM_TYPE; + } else if (modelElement instanceof ActorContainerClass) { + if (workbenchPart instanceof BehaviorEditor) + return BEHAVIOR_DIAGRAM_TYPE; + else + return STRUCTURE_DIAGRAM_TYPE; + } + + return null; + } +} diff --git a/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/ETriceSemanticLayoutConfig.java b/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/ETriceSemanticLayoutConfig.java deleted file mode 100644 index d4db0c0af..000000000 --- a/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/ETriceSemanticLayoutConfig.java +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * CONTRIBUTORS: - * Jayant Gupta (initial contribution) - * - *******************************************************************************/ -package org.eclipse.etrice.ui.layout; - -import org.eclipse.emf.ecore.EObject; -import org.eclipse.etrice.core.room.ActorContainerClass; -import org.eclipse.etrice.core.room.StateGraph; - -import de.cau.cs.kieler.core.properties.IProperty; -import de.cau.cs.kieler.kiml.LayoutOptionData; -import de.cau.cs.kieler.kiml.config.SemanticLayoutConfig; -import de.cau.cs.kieler.kiml.options.LayoutOptions; - -/** - * @author jayant - * - */ -public class ETriceSemanticLayoutConfig extends SemanticLayoutConfig { - - /** - * The diagram type for the top-level bounding box containers in eTrice - * Behavior Diagram. - */ - public static final String BEHAVIOR_DIAGRAM_TYPE = "org.eclipse.etrice.ui.layout.eTriceBehaviorDiagram"; - - /** - * The diagram type for the top-level bounding box containers in eTrice - * Structure Diagram. - */ - public static final String STRUCTURE_DIAGRAM_TYPE = "org.eclipse.etrice.ui.layout.eTriceStructureDiagram"; - - /** the priority for eTrice Semantic layout configurations. */ - public static final int PRIORITY = 20; - - /** - * {@inheritDoc} - */ - @Override - public int getPriority() { - return PRIORITY; - } - - /** - * {@inheritDoc} - * - * @author jayant - */ - @Override - protected IProperty<?>[] getAffectedOptions(EObject semanticElem) { - if (semanticElem instanceof ActorContainerClass - || semanticElem instanceof StateGraph) - return new IProperty<?>[] { LayoutOptions.DIAGRAM_TYPE }; - - return null; - } - - /** - * {@inheritDoc} - * - * @author jayant - */ - @Override - protected Object getSemanticValue(EObject semanticElem, - LayoutOptionData<?> layoutOption) { - if (layoutOption.getId().equals(LayoutOptions.DIAGRAM_TYPE.getId())) { - if (semanticElem instanceof ActorContainerClass) - return STRUCTURE_DIAGRAM_TYPE; - else if (semanticElem instanceof StateGraph) - return BEHAVIOR_DIAGRAM_TYPE; - else - return "de.cau.cs.kieler.layout.diagrams.general"; - } - - return null; - } - - /** - * {@inheritDoc} - * - * @author jayant - */ - @Override - protected void setSemanticValue(EObject semanticElem, - LayoutOptionData<?> layoutOption, Object value) { - // not supported by this layout configuration - } - -} diff --git a/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/StructureDiagramLayoutManager.java b/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/StructureDiagramLayoutManager.java index 47121beae..0482ac04b 100644 --- a/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/StructureDiagramLayoutManager.java +++ b/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/StructureDiagramLayoutManager.java @@ -72,6 +72,11 @@ public class StructureDiagramLayoutManager extends ETriceDiagramLayoutManager { } } + /** + * {@inheritDoc} + * + * @author jayant + */ @Override protected Dimension getDefaultSize(Shape shape) { @@ -83,10 +88,10 @@ public class StructureDiagramLayoutManager extends ETriceDiagramLayoutManager { ActorContainerRefSupport.MIN_SIZE_Y); /* - * This code sets default size differently for Actor Class and Actor - * Container Refs. This keeps the top-level container quite large on - * layout(according to the default size in StructureSupport), which - * might not seem so pleasant. + * This code snippet sets default the size for Actor Class and Actor + * Container Refs differently. With this the top-level container remains + * large after layout (according to the default size in + * StructureSupport), which might not look proper. */ /* EObject modelObject = shape.getLink().getBusinessObjects().get(0); diff --git a/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/preferences/ETricePreferenceUtil.java b/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/preferences/ETricePreferenceUtil.java index 7d1a770aa..4bf61c7ff 100644 --- a/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/preferences/ETricePreferenceUtil.java +++ b/plugins/org.eclipse.etrice.ui.layout/src/org/eclipse/etrice/ui/layout/preferences/ETricePreferenceUtil.java @@ -511,6 +511,8 @@ public final class ETricePreferenceUtil { return images.getPropInt(); case FLOAT: return images.getPropFloat(); + default: + break; } } return null; @@ -734,6 +736,8 @@ public final class ETricePreferenceUtil { return images.getPropInt(); case FLOAT: return images.getPropFloat(); + default: + break; } } return null; |