Notation meta-model primary package.

Package Specification

This package exposes the notation meta-model API which is used to create notation models. These models usually play the model part of a Model-View-Controller (MVC) architecture for diagrams. Notation models reference other business models (eg. UML models) and store information needed for the visualization of these business models in diagrams. One advantage of maintaining two separate models it to allow the business model to be visualized differently with each notation model.

Description of the Notation Meta-Model Classes

1.        View Classes

The views are the central abstraction in a notation model. View objects reference a business model and contain other notation objects that together hold all the properties needed to visualize that business model. The reason the view object does not have all the properties itself but rather delegates to other abstractions is to allow for easy extension of properties.

1.1     View

The abstract view class is the super class of all view elements. It extends off EModelElement, which is in the EMF core package. It inherits from EmodelElement the ability to be extensible through annotations. The view class has the following properties:   

1.2     Node

A node is a view that can composed and laid out in a container view. The node class has the following property:

1.3     Edge

An edge is a view that represents a connection between two other views. The edge class has the following properties:

1.4     Diagram

A diagram is a view that represents the top level containment of views. The diagram class has the following properties:

2.        Style classes

A style is an object containing properties that affect the visualization of a view. An instance of a style class is created and stored in the 'styles' collection of a view instance.

2.1     Style

The style interface captures the concept of a style.

2.2     FillStyle

The fill style is a style to specify the fill properties of a node. The class has the following property:

2.3     LineStyle

The line style is a style to be installed on views with lines. The class has the following property:

2.4     FontStyle

The font style is a style to be installed on views with text. The class has the following properties:

2.5     RoutingStyle

The routing style is a style to be installed on edges to guide their routing. The class has the following properties:

2.6     DescriptionStyle

The description style is a style to be installed on views to give them description texts. The class has the following property:

2.7     DrawerStyle

The drawer style is a style to be installed on nodes that can be collapsed like a drawer. The class has the following property:

2.8     TitleStyle

The title style is a style to be installed on views that have a title. The class has the following property:

2.9     SortingStyle

The sorting style is a style to be installed on nodes representing lists to be sorted. The class has the following property:

2.10   FilteringStyle

The filtering style is a style to be installed on nodes representing lists to be filtered. The class has the following property:

2.11     CanonicalStyle

The canonical style is a style to be installed on views that need to be synchronized with business model. The class has the following property:

2.12     PageStyle

The page style is a style to be installed on multi-page diagrams. The class has the following property:

2.13     GuideStyle

The guide style is a style to be installed on diagrams that support guides. A 'Guide' is an object with the following properties:

 The guide style class has the following property:

3.        LayoutConstraint Classes

Layout constraints are used by layout managers to properly set the location/size/bounds of a node's visuals. Since the layout constraint can be different based on the type of layout manager using it, the composition pattern is used to allow for changing the layout constraint type easily.

3.1     LayoutConstraint

The layout constraint interface captures the concept of a layout constraint.

3.2     Location

The location constraint specifies the position of a node. The class has the following properties:

3.3     Size

The size constraint specifies the extent of a node. The class has the following properties:

3.4     Bounds

The bounds constraint specifies the bounds of a node. The class inherits its properties from the super classes 'Location' and 'Size'.

3.5     Ratio

The ratio constraint specifies the size ratio of a node in its container. This constraint is suitable for layout algorithms where each child gets a ratio of the container. The class has the following properties:

4.        Bendpoints

'Bendpoints' is a routing constraint installed on edges to suggest that their routing pass through a specific collection of points.

3.3     RelativeBendpoints

A type of bendpoints representing a collection of points with relative distances along the x- and y-axis to the source and target views of an edge. The class has the following properties:

1.1.6        Anchor

An anchor is a routing constraint installed on edges to identify where the source/target views should anchor that edge. This abstract class only captures the concept of an anchor without restricting it by properties.

1.1.6.1     IdentityAnchor

The identity anchor is an anchor constraint which has a unique string id. The class has the following property: