Diagram Features Documentation
1. General
1.1. Opening and Closing a Model File. Flower Modeling Perspective
A model file can be opened by clicking on the "+" next to it, in the Project Explorer view. Double clicking on the model file works as well. After opening, the user is invited to switch to the "Flower Modeling" perspective.
The "Flower Modeling" perspective is available in the perspectives menu as well (Window/Open Perspective). Hint: you can switch perspectives easily (e.g. "Flower Modeling" <-> Development) using shortcuts (e.g. CTRL + F8 by default in Windows).
A model file can be closed by right clicking on it and selecting "Close File" from the context menu. It is closed as well when the current project is closed.
For example closing a file can be useful when there are too many open files and we need more memory. If undesired behaviors appear (especially for alpha versions), closing/reopening the file often gives results.
1.2. Selection Tool
The selection tool (from the diagram's toolbar) is the tool that is enabled by default.
Besides mouse selection, key selection is possible as well:
- CTRL + click - toggles the selected state of an element,
- SHIFT + click - makes the selected element "main" selected element (i.e. black anchors); useful for some commands where the "main" selected element is important,
- CTRL + A - selects everything on the diagram.
1.3. Link Selection between Tree and Diagram
The selection between the model tree and opened diagrams can be linked together using the "Link with Editor" button from the Project Explorer view.
With this option turned on, when selecting an element in the model tree, it is selected as well in the diagram (if a diagram containing it is opened). And vice versa, when selecting an element on the diagram, it is selected as well in the model tree.
1.4. Zooming
There are 3 ways to control the zoom on a diagram:
- using CTRL + mouse scroll wheel,
- using the Zoom combo box in the toolbar,
- using the Zoom tool and selecting a rectangular area on the screen.

2. Elements
To create a class, interface or note, a tool from the toolbar needs to be used. Annotations, Attributes, Operations can be added using the buttons from classes/interfaces, or from the diagram context menu.
<
Please note that new types (classes or interfaces) are created in the diagram's package. In order to make it synchronizable it needs to be moved inside a SrcDir.
3. Relations
3.1. Creating and Moving
To create a relation or a note connector, a tool from the toolbar needs to be selected + a drag and drop (from the source element to the destination element). To move an end of an already existing connection, one of its end anchors need to be dragged and dropped on a new target.
When an association end is moved, its corresponding attribute is moved as well.
3.2. Bend Points
Bend points can be added on an existent connection by starting dragging from the connection. They can be moved by dragging their anchors and can be removed by in-lining the 2 segments linked to the bend point.
3.3. Labels
Some connections can have labels (e.g. associations, dependencies). They can be edited using the in-place editor (see below), removed ("Hide Label" from the label's context menu) or shown ("Show ..." from the connection's context menu). Label visibility can be controlled using styles as well (see below).
3.4. Displaying Existing Relations and Related Elements
If an element has relations but they are not displayed on the diagram, the following context menu commands are useful:
- "Display Missing Relations" - displays all the relations for which the opposite end (i.e. the related element) already exists on the diagram,
- "Add Related Elements and Display Relations" - adds related elements on the diagram if they don't already exist (i.e. opposite ends of the relations) and then displays the relations; this command includes the previous one.

3.5. In-place Editor and Content Assist
Many elements can be edited directly on the diagram by either clicking to select and clicking again for edit, or by pressing F2. To accept the modifications hit ENTER, CTRL + ENTER or click on the diagram (outside the edit box). To cancel the changes hit ESC.
When editing attributes (or association ends) or operations, a content assist is available that proposes existent types from the model. The content assist is opened automatically after typing ":" or when pressing CTRL + SPACE.
The in-place editor syntax is the following
- for attributes: [visibility] attributeName [: fully.qualified.name.attributeType][=defaultValue]; e.g. -attribute2 : com.uml4as.example.MyClass
- for operations: [visibility] operationName ({parameterName_i [: fully.qualified.name.parameterType_i] [= parameterDefaultValue_i]}) [: operationReturnValue] with i >= 0; e.g. ~myMethod1(param : int) : String or -get value() : String
- for annotations, several forms are supported:
- annotationName; e.g. Annotation,
- annotationName(value); e.g. Annotation(value),
- annotationName({key_i = value_i}) with i >= 1; e.g. Annotation(p1 = value1, p2 = value2).
[] means it could be missing. {} means it can be repeated several times, separating with a comma ",".
visibility can be:
- - private
- # protected
- + public
- ~ package
Type search strategy:
- if the type name is fully qualified (e.g. com.uml4as.example.MyClass): the type is searched for in the specified package (e.g. com.uml4as.example); if found, it is used; otherwise a new class is created (e.g. named MyClass);
- if the type name is not fully qualified (e.g. MyClass),
- if editing in the diagram (e.g. Diagrams/MyDiagram): the default package (the root package from the compiler's point of view) is searched for the type; if found, it is used; otherwise, the diagram's package is searched for that type; if found it is used; otherwise a new class is created there (e.g. Diagrams/MyClass);
- if editing in the tree (e.g. editing an attribute for com.uml4as.example.MyOtherClass): the default package is searched for the type; if found, it is used; otherwise, the current element's package is searched for that type; if found it is used; otherwise a new class is created there (e.g. com.uml4as.example.MyClass).
4. Associations
4.1. Creating Associations from Attributes
An attribute can have an association attached to it, in which case there is a small arrow icon in the bottom right corner of the element icon. To create an association from an existing attribute (that has no association), the "Create Association from Attribute" context menu command needs to be used.
An uni-directional association will be created between the current class (having the current attribute as end, e.g. customer) and the attribute type as other end (non-navigable). If the other end exists on the diagram, a graphical connector is added on the diagram as well; otherwise "Add Related Elements and Display Relations" needs to be used, to put it on the diagram.
4.2. Splitting and Combining Associations
A bi-directional association can be split into 2 uni-directional associations and vice versa, 2 uni-directional associations (that are compatible, i.e. link the same 2 types) can be combined into 1 uni-directional association. "Split into Uni-Directional Associations" and "Combine into a Bi-Directional Association" context menu commands are used for this.
4.3. Example: Creating an One to Many Association after Importing Code
When code is first synchronized for an existing project (i.e. imported), it might me useful to create some associations for some existing constructs. For example we have in class Customer an attribute orders:ArrayCollection and in class Order an attribute customer:Customer. We want to create a one to many bi-directional association between these 2 classes.
Step 1: create 2 uni-directional associations. We select the 2 attributes (orders and customer) and click on "Create Association from Attribute". This creates an association between Order and Customer and another one between Customer and ArrayCollection. The first one is already displayed on the diagram. We need to select "Add Related Elements and Display Relations" for class Customer to have the second association on the diagram.
Step 2: combine associations. We move the target of Customer/ArrayCollection association from ArrayCollection to Order. We have now 2 opposite uni-directional associations that can be combined using "Combine into a Bi-Directional Association".
Step 3: adjust multiplicities. Using the Model Properties view to adjust the Lower/Upper Multiplicity: 0..* for orders and 0..1 for customer.
5. Notes and Documentation
There are 2 types of notes:
- stand alone; they can be linked to 0, 1 or more elements with note connectors

- linked to documentation; in this case the note needs to be linked to only one element that allows documentation. When the note changes, the documentation is updated and vice versa (i.e. documentation changed -> note updated). To activate this behavior, there is a context menu entry "Retrieve documentation".
Notes that are linked with documentation have an icon in the upper left corner. They can be unlinked by deleting the note connector. Every note (linked or not) can be edited directly from the diagram or using the documentation view.
6. Compartments
6.1. Showing and Hiding
Analysis elements (classes, interfaces) have 2 compartments: attributes, operations. For ActionScript elements:
- classes have 3 compartments: annotations, attributes, operations
- interfaces have only 2: annotations and operations
Compartments can be hidden by using the "-" button from the element's compartment, or from the context menu. They can be shown using the context menu.
Compartment visibility can be controlled as well using styles (please see below).
6.2. Filtering
Compartment contents can be filtered (using the "Filter Compartment Elements" context menu entry).
There are 2 filtering strategies:
- Hide only selected elements (new elements are shown by default) - for this strategy the hidden elements are specified explicitly and newly added ones will be visible. E.g. if a new attribute appears after synchronization, it will be displayed.
- Show only selected elements (new elements are hidden by default) - for this strategy the shown elements are specified explicitly and newly added ones will be hidden. E.g. if a new attribute appears after synchronization, it won't be displayed.
This behavior is useful sometimes, when we want emphasize only some elements (that participate to a feature of the app) and we don't want the diagram to be polluted in the future with new elements that may appear and are not related to the feature.
Compartment filtering can be controlled using styles as well; please see below. The "inherited" option relates to styles as well.
7. Styles
Documentation for the styling mechanism will be soon provided.