Adding new diagram types to the modeling tool consists of two steps:
Override the abstract class DiagramDescriptor and implement the following abstract methods:
For the full source code, see the Open API examples in <program installation directory>\openapi\examples. |
/** * Descriptor of a specific diagram. */ public class SpecificDiagramDescriptor extends DiagramDescriptor { public static final String SPECIFIC_DIAGRAM = "Specific Diagram"; /** * Let this diagram type be a sub type of a class diagram type. */ public String getSuperType() { return DiagramType.UML_CLASS_DIAGRAM; } /** * This is a creatable diagram. */ public boolean isCreatable() { return true; } /** * Actions used in this diagram. */ public MDActionsManager getDiagramActions() { return SpecificDiagramActions.ACTIONS; } /** * A configurator for a diagram toolbar. */ public AMConfigurator getDiagramToolbarConfigurator() { return new SpecificDiagramToolbarConfigurator(); } /** * A configurator for diagram shortcuts. */ public AMConfigurator getDiagramShortcutsConfigurator() { return new ClassDiagramShortcutsConfigurator(); } /** * A configurator for a diagram shortcut menu. */ public DiagramContextAMConfigurator getDiagramContextConfigurator() { return new BaseDiagramContextAMConfigurator(); } /** * Id of the diagram type. */ public String getDiagramTypeId() { return SPECIFIC_DIAGRAM; } /** * A diagram type human name. */ public String getSingularDiagramTypeHumanName() { return "Specific Diagram"; } /** * A diagram type human name in a plural form. */ public String getPluralDiagramTypeHumanName() { return "Specific Diagrams"; } /** * Resizable svg icon for diagram. */ public ResizableIcon getSVGIcon() { ResizableIcon icon = null; try { icon = IconsFactory.getSvgIcon(new File("icons/specificdiagram.svg").toURI().toURL()); } catch(Exception e){e.printStackTrace();} return icon; } /** * URL to a small icon for a diagram. */ public URL getSmallIconURL() { return getClass().getResource("icons/specificdiagram.svg"); } } |
Step #2. Register a new diagram type
The new diagram descriptor should be registered in a modeling tool using the com.nomagic.magicdraw.core.Application.addNewDiagramType(DiagramDescriptor) method of the modeling tool you are using. This method can be invoked when a plugin is initialized.
For the full source code, see the Open API examples in <program installation directory>\openapi\examples\specificdiagram. |
class SpecificDiagramPlugin extends Plugin{ /** * Initializing the plugin. */ public void init() { // Registering a new diagram type Application.getInstance().addNewDiagramType(new SpecificDiagramDescriptor()); } /** * Always returns true, because this plugin does not have any close specific actions. */ public boolean close() { return true; } /** * Always returns true, because this plugin does not have any specific suportability conditions. */ public boolean isSupported() { return true; } } |