Creating and Modifying Elements
In this chapter, we're goint to learn how to create and modify elements. The most important is that you should not create or modify elements directly like var class1 = new UMLClass()
or class1.name = "New Name"
because all changes should be done via operations which supports by undo and redo.
Creating elements
Creating a model element
You can call createModel
function of app.factory
to create a model element with an option object.
The option object may have following fields:
id
: ID of factory function to create an element. To see the full ID list, executeapp.factory.getModelIds()
.parent
: A parent element where the created element to be contained.field
(optional) : Field name of the parent element (default isownedElements
).modelInitializer
(optional) : A function to initialize the created model element.
You can see the created elements in Model Explorer and undo and redo are available for each creation.
Creating a diagram
Call createDiagram
function of app.factory
to create a diagram with an option object:
The option object may have following fields:
id
: ID of Factory function to create a diagram. To see the full ID list, executeapp.factory.getDiagramIds()
.parent
: A parent element where the created diagram to be contained.options
(optional) : An object containing the below options.diagramInitializer
(optional) : A function to initialize the created diagram.
Creating a model element and a view element at once
Call createModelAndView
function of app.factory
to create a model element and a view element at once with an option object.
The option object may have following fields:
id
: ID of Factory function. To see the full ID list, executeFactory.getModelAndViewIds()
.parent
: A parent element where the created model element to be contained.diagram
: A diagram element where the created view element to be contained.modelInitializer
(optional) : A function to initialize the created model element.viewInitializer
(optional) : A function to initialize the created view element.x1
,y1
,x2
,y2
(optional) : Rectangle coordinate to initialize position and size of the created view element.tailView
,headView
(optional) : If you try to create a relationship (e.g.UMLAssociation
), the created view element connects these two view elementstailView
andheadView
.tailModel
, andheadModel
(optional) : If you try to create a relationship, the created model element connects these two model elementstailModel
andheadModel
.containerView
(optional) : A view element where the created view element to be contained.
The function createModelAndView
returns the created view element, so you need to get the create model element by accessing model
field. (e.g. classView1.model
). Following code will create two classes and a association connecting the two classes.
Creating a view element of an existing model element
Call createViewOf
function of app.factory
to create a view element of an existing model element with an option object.
The option object may have following fields:
model
: A model element referenced by the created view element.diagram
: A diagram element where the created view element to be contained.viewInitializer
(optional) : A function to initialize the created view element.x
,y
(optional) : Position of the created view element.containerView
(optional) : A view element where the created view element to be contained.
You will see the one more class view element at (500, 500).
Adding tags to an element
If you want to extend an element with additional tags, you can create tags by calling createModel
function with Tag
parameter of app.factory
. There are five kinds of Tag: String, Number, Boolean, Reference, and Hidden. Hidden tags are not shown in diagrams, but other tags are shown as properties. (Check Format > Show Property menu). Following code will create a string tag to the selected element.
Modifying elements
Change property value
You should not modify a property of an element directly like class1.name = "New Name"
because all changes should be done via operations which supports by undo and redo.
To change property value, use app.engine.setProperty()
function as below:
Examples
Sequence Diagram
Here is an example to create a Sequence Diagram including two Lifelines and a Message.
Last updated