| /********************************************************************* |
| * Copyright (c) 2005, 2019 SAP SE |
| * |
| * This program and the accompanying materials are made |
| * available under the terms of the Eclipse Public License 2.0 |
| * which is available at https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * Contributors: |
| * SAP SE - initial API, implementation and documentation |
| * Patch 184530 from Bug 331829 contributed by Henrik Rentz-Reichert |
| * mwenz - Bug 331715: Support for rectangular grids in diagrams |
| * Benjamin Schmeling - mwenz - Bug 367483 - Support composite connections |
| * mwenz - Bug 417454 - Proposal to add an additional createDiagram() method to IPeCreateService |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| **********************************************************************/ |
| package org.eclipse.graphiti.services; |
| |
| import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm; |
| import org.eclipse.graphiti.mm.algorithms.Polyline; |
| import org.eclipse.graphiti.mm.pictograms.AnchorContainer; |
| import org.eclipse.graphiti.mm.pictograms.BoxRelativeAnchor; |
| import org.eclipse.graphiti.mm.pictograms.ChopboxAnchor; |
| import org.eclipse.graphiti.mm.pictograms.CompositeConnection; |
| import org.eclipse.graphiti.mm.pictograms.Connection; |
| import org.eclipse.graphiti.mm.pictograms.ConnectionDecorator; |
| import org.eclipse.graphiti.mm.pictograms.ContainerShape; |
| import org.eclipse.graphiti.mm.pictograms.CurvedConnection; |
| import org.eclipse.graphiti.mm.pictograms.Diagram; |
| import org.eclipse.graphiti.mm.pictograms.FixPointAnchor; |
| import org.eclipse.graphiti.mm.pictograms.FreeFormConnection; |
| import org.eclipse.graphiti.mm.pictograms.ManhattanConnection; |
| import org.eclipse.graphiti.mm.pictograms.PictogramElement; |
| import org.eclipse.graphiti.mm.pictograms.Shape; |
| |
| /** |
| * The interface IPeCreateService provides services for the creation of all |
| * available pictogram elements. E.g. Shapes, Connections, Anchors, ... |
| * |
| * @noimplement This interface is not intended to be implemented by clients. |
| * @noextend This interface is not intended to be extended by clients. |
| */ |
| public interface IPeCreateService { |
| |
| /** |
| * Creates a box relative anchor inside the given anchor container. |
| * |
| * @param anchorContainer |
| * the anchors parent |
| * @return the new box relative anchor |
| */ |
| BoxRelativeAnchor createBoxRelativeAnchor(AnchorContainer anchorContainer); |
| |
| /** |
| * Creates a chop box anchor inside the given anchor container. |
| * |
| * @param anchorContainer |
| * the anchors parent |
| * @return the new chop box anchor |
| */ |
| ChopboxAnchor createChopboxAnchor(AnchorContainer anchorContainer); |
| |
| /** |
| * Creates a connection decorator and adds it to the given connection. |
| * |
| * @param connection |
| * the connection |
| * @param active |
| * TRUE, if decorator is active, FALSE otherwise |
| * @param location |
| * location of the decorator (must be between 0 and 1) |
| * @param isRelative |
| * true if the decorator should be positioned relative to the |
| * connection's midpoint |
| * @return the new connection decorator |
| */ |
| ConnectionDecorator createConnectionDecorator(Connection connection, boolean active, double location, boolean isRelative); |
| |
| /** |
| * Creates a container shape inside the given parent container shape. |
| * |
| * @param parentContainerShape |
| * the parent container shape |
| * @param active |
| * <code>true</code>, if the created shape should be active, |
| * <code>false</code> otherwise. An active shape can be selected |
| * in the diagram editor and it is also relevant for layouting: |
| * an active shape opens a coordinate system relative to its next |
| * active parent which can be used for layouting its |
| * {@link PictogramElement} children, while an inactive one uses |
| * the coordinate system of its next direct parent for layouting |
| * its children. |
| * <p> |
| * By default all shapes should be active, inactive shapes should |
| * be used for grouping purposes or for linking a group of |
| * graphical objects to the domain world only. |
| * <p> |
| * For those familiar with GEF: only for active shapes a GEF |
| * EditPart will be created by the Graphiti framework, not for |
| * inactive ones. |
| * @return the new container shape |
| */ |
| ContainerShape createContainerShape(ContainerShape parentContainerShape, boolean active); |
| |
| /** |
| * Creates a diagram. Snapping to the grid is disabled by default. |
| * |
| * @param diagramTypeId |
| * the type id of the diagram |
| * @param diagramName |
| * the name of the diagram |
| * @return the new diagram |
| * @see #createDiagram(String diagramTypeId, String diagramName, boolean |
| * snap) |
| * @since 0.12 |
| */ |
| Diagram createDiagram(String diagramTypeId, String diagramName); |
| |
| /** |
| * Creates a diagram. |
| * |
| * @param diagramTypeId |
| * the type id of the diagram |
| * @param diagramName |
| * the name of the diagram |
| * @param snap |
| * TRUE enables snap to grid |
| * @return the new diagram |
| * @see #createDiagram(String diagramTypeId, String diagramName, int |
| * gridUnit, boolean snap) |
| */ |
| Diagram createDiagram(String diagramTypeId, String diagramName, boolean snap); |
| |
| /** |
| * Creates a diagram. |
| * |
| * @param diagramTypeId |
| * the type id of the diagram |
| * @param diagramName |
| * the name of the diagram |
| * @param gridUnit |
| * grid size (in both directions) in pixel; if 0 then no grid |
| * will be drawn |
| * @param snap |
| * TRUE enables snap to grid |
| * @return the new diagram |
| */ |
| Diagram createDiagram(String diagramTypeId, String diagramName, int gridUnit, boolean snap); |
| |
| /** |
| * Creates a diagram. |
| * |
| * @param diagramTypeId |
| * the type id of the diagram |
| * @param diagramName |
| * the name of the diagram |
| * @param horizontalGridUnit |
| * horizontal grid size in pixel; if 0 then no grid will be drawn |
| * @param verticalGridUnit |
| * vertical grid size in pixel; if 0 then no grid will be drawn |
| * |
| * @param snap |
| * TRUE enables snap to grid |
| * @return the new diagram |
| * @since 0.8 |
| */ |
| Diagram createDiagram(String diagramTypeId, String diagramName, int horizontalGridUnit, int verticalGridUnit, boolean snap); |
| |
| /** |
| * Creates a fix point anchor inside the given anchor container. |
| * |
| * @param anchorContainer |
| * the anchors parent |
| * @return the new fix point anchor |
| */ |
| FixPointAnchor createFixPointAnchor(AnchorContainer anchorContainer); |
| |
| /** |
| * Creates a free form connection inside the given diagram. |
| * |
| * @param diagram |
| * the diagram |
| * @return the new free form connection |
| */ |
| FreeFormConnection createFreeFormConnection(Diagram diagram); |
| |
| /** |
| * Creates a manhattan connection inside the given diagram. |
| * |
| * @param diagram |
| * the diagram |
| * @return the new free form connection |
| * @since 0.8 |
| */ |
| ManhattanConnection createManhattanConnection(Diagram diagram); |
| |
| /** |
| * Creates a curved connection (Bezier curve) inside the given diagram. |
| * |
| * @param controllPoints |
| * an array of double value pairs defining the control points |
| * (two values - x and y - define the point) of the Bezier curve |
| * @param diagram |
| * the diagram |
| * @return the new curved connection |
| * @since 0.9 |
| */ |
| CurvedConnection createCurvedConnection(double[] controllPoints, Diagram diagram); |
| |
| /** |
| * Creates a composite connection (a connection that is made of several |
| * other connections) inside the given diagram. {@link CompositeConnection}s |
| * can be used to combine any number of {@link CurvedConnection}s into one |
| * semantical connection using its {@link CompositeConnection#getChildren()} |
| * relation. Note that the composite connection itself needs to have an |
| * associated {@link GraphicsAlgorithm} (usually a {@link Polyline}) for its |
| * visualization, although it might be invisible and only the child |
| * connections have a visible polyline as their visualization.<br> |
| * |
| * <b>Note that this is an experimental API and might change without further |
| * notice.</b> |
| * |
| * @param diagram |
| * the diagram |
| * @return the new composite connection |
| * @experimental |
| * @since 0.9 |
| */ |
| CompositeConnection createCompositeConnection(Diagram diagram); |
| |
| /** |
| * Creates a shape inside the given parent container shape. |
| * |
| * @param parentContainerShape |
| * the parent container shape |
| * @param active |
| * <code>true</code>, if the created shape should be active, |
| * <code>false</code> otherwise. An active shape can be selected |
| * in the diagram editor and it is also relevant for layouting: |
| * an active shape opens a coordinate system which can be used |
| * for layouting its {@link PictogramElement} children, while an |
| * inactive one does not provide one but uses the coordinate |
| * system of its next active parent for layouting its children. |
| * <p> |
| * By default all shapes should be active, inactive shapes should |
| * be used for grouping purposes or for linking a group of |
| * graphical objects to the domain world only. |
| * <p> |
| * For those familiar with GEF: only for active shapes a GEF |
| * EditPart will be created by the Graphiti framework, not for |
| * inactive ones. |
| * @return the new shape |
| */ |
| Shape createShape(ContainerShape parentContainerShape, boolean active); |
| |
| } |