// ModelEditor - definitions of custom shapes // // Language syntax and commands: // // // An Icon defines an icon of an element selected by stereotype: // // Icon { // id: // title: // elements: // stereotype: // display: // name: ".> // width: // height: // minwidth: // minheight: // lockSize: // textAlignment: // baseColor: // Shape { // Line { x1: ; y1: ; x2:; y2: } // Rect { x: ; y: ; width: ; height: } // RoundedRect { x: ; y: ; width: ; height: ; radius: } // Circle { x: ; y: ; radius: } // Ellipse { x: ; y: ; radiusX: ; radiusY: } // Diamond { x: ; y: ; width: ; height: } // Triangle { x: ; y: ; width: ; height: } // Arc { x: ; y: ; radiusX: ; radiusY: ; start: ; span: } // MoveTo { x: ; y: } // LineTo { x: ; y: } // ArcMoveTo { x: ; y: ; radiusX: ; radiusY: ; angle: } // ArcTo { x: ; y: ; radiusX: ; radiusY: ; start: ; span: } // Close // } // } // // // A Relation defines a new relation between two items: // // Relation { // id: // title: // elements: // stereotype: // name: // direction: // pattern: // color: // End { // end: // elements: // role: // cardinality: // navigable: // head: // } // } // // // A Dependency defines settings of a dependency specialization: // // Dependency { // id: // title: // elements: // stereotype: // name: // direction: // } // // // An Inheritance defines settings of an inheritance specialization: // // Inheritance { // id: // title: // elements: // stereotype: // name: // } // // // An Association defines settings of an association specialization: // // Association { // id: // title: // elements: // stereotype: // name: // End { // end: // role: // cardinality: // navigable: // relationship: // } // } // // // A toolbar of icons. If no toolbar is defined the standard toolbar is shown. // // Toolbar { // id: // title: // element: // priority: // Tools { // Tool { // title: // element: // stereotype: // } // Separator // } // } // // ************* // ** Classes ** // ************* Icon { id: Interface elements: class stereotype: 'interface' display: icon width: 20.0 height: 20.0 lockSize: ratio Shape { Circle { x: 10.0; y: 10.0; radius: 10.0 } } } Icon { id: Boundary stereotype: 'boundary' width: 24.0 height: 20.0 lockSize: ratio Shape { Circle { x: 14.0; y: 10.0; radius: 10.0 } Line { x0: 0.0; y0: 0.0; x1: 0.0; y1: 20.0 } Line { x0: 0.0; y0: 10.0; x1: 4.0; y1: 10.0 } } } Icon { id: Control stereotype: 'control' width: 20.0 height: 20.0 lockSize: ratio Shape { Circle { x: 10.0; y: 10.0; radius: 10.0 } Line { x0: 10.0; y0: 0.0; x1: 14.0; y1: -2.0 } Line { x0: 10.0; y0: 0.0; x1: 14.0; y1: 4.0 } } } Icon { id: Entity stereotype: 'entity' width: 20.0 height: 20.0 lockSize: ratio Shape { Circle { x: 10.0; y: 10.0; radius: 10.0 } Line { x0: 0.0; y0: 20.0; x1: 20.0; y1: 20.0 } } } Association { id: Aggregation title: "Aggregation" End { end: A cardinality: "*" navigable: yes relationship: aggregation } } Association { id: Composition title: "Composition" End { end: A cardinality: "1" navigable: yes relationship: composition } } // ******************** // ** Class Toolbars ** // ******************** Toolbar { id: ClassToolbar element: class Tools { Tool { element: dependency } Tool { element: inheritance } Tool { element: association } Tool { element: Aggregation } Tool { element: Composition } } } Toolbar { id: InterfaceToolbar element: Interface Tools { Tool { element: dependency } Tool { element: inheritance } } } // **************** // ** Components ** // **************** Icon { id: Database stereotype: 'database' display: icon width: 20.0 height: 20.0 Shape { MoveTo { x: 0.0; y: 3.0 } LineTo { x: 0.0; y: 17.0 } ArcTo { x: 10.0; y: 17.0; radiusX: 10.0; radiusY: 3.0; start: 180.0; span: 180.0 } LineTo { x: 20.0; y: 3.0 } ArcTo { x: 10.0; y: 3.0; radiusX: 10.0; radiusY: 3.0; start: 0.0; span: -180.0 } Close Arc { x: 10.0; y: 3.0; radiusX: 10.0; radiusY: 3.0; start: 0.0; span: 180.0 } } } // experimental replacement of default shape with custom shape Icon { id: Component elements: component, package, diagram stereotype: 'component' display: decoration width: 20.0 height: 16.0 textAlignment: center Shape { Rect { x: 0; y: 0; width: 20.0; height: 16.0 } Rect { x: -4.0; y: 2.5; width: 8; height: 4 } Rect { x: -4.0; y: 9.5; width: 8; height: 4 } } } // *************** // ** Use Cases ** // *************** Icon { id: UseCase Title: "Use-Case" elements: item stereotype: 'usecase' display: icon textAlignment: center width: 40 height: 20 baseColor: #5fb4f0 Shape { Ellipse { x: 20; y: 10; radiusX: 20; radiusY: 10 } } } Icon { id: Actor elements: item stereotype: 'actor' display: icon width: 20 height: 40 lockSize: ratio baseColor: #5fb4f0 Shape { Circle { x: 10; y: 5; radius: 5 } Line { x0: 0; y0: 15; x1: 20; y1: 15 } Line { x0: 10; y0: 10; x1: 10; y1: 25 } Line { x0: 10; y0: 25; x1: 3; y1: 40 } Line { x0: 10; y0: 25; x1: 17; y1: 40 } } } Relation { id: Communication elements: UseCase, Actor pattern: solid color: A End { end: A } End { end: B } } Toolbar { id: UseCaseToolbar element: UseCase, Actor Tools { Tool { element: Communication } Tool { element: dependency } } } // **************** // ** Activities ** // **************** Icon { id: Start elements: item stereotype: 'start' display: icon name: "" textAlignment: none width: 20 height: 20 lockSize: ratio baseColor: #81d657 Shape { Circle { x: 10; y: 10; radius: 7 } } } Icon { id: Activity elements: item stereotype: 'activity' display: icon textAlignment: center width: 40 height: 20 baseColor: #81d657 Shape { RoundedRect { x: 0; y: 0; width: 40; height: 20; radius: 10 } } } Icon { id: Condition elements: item stereotype: 'condition' display: icon width: 20 height: 20 lockSize: ratio baseColor: #81d657 Shape { MoveTo { x: 10; y: 0 } LineTo { x: 20; y: 10 } LineTo { x: 10; y: 20 } LineTo { x: 0; y: 10 } Close } } Icon { id: HorizontalBar Title: "Horizontal Bar" elements: item stereotype: 'horizontalbar' display: icon name: "" textAlignment: none width: 20 height: 5 minWidth: 20 minHeight: 5 lockSize: height baseColor: #000000 Shape { RoundedRect { x: 0; y: 0; width: 20; height: 5; radius: 1 } } } Icon { id: VerticalBar Title: "Vertical Bar" elements: item stereotype: 'verticalbar' display: icon name: "" textAlignment: none width: 5 height: 20 minWidth: 5 minHeight: 20 lockSize: width baseColor: #000000 Shape { RoundedRect { x: 0; y: 0; width: 5; height: 20; radius: 1 } } } Icon { id: Termination elements: item stereotype: 'termination' display: icon name: "" textAlignment: none width: 20 height: 20 lockSize: ratio baseColor: #81d657 Shape { Circle { x: 10; y: 10; radius: 10 } Circle { x: 10; y: 10; radius: 7 } } } Relation { id: Controlflow pattern: solid color: A End { end: A elements: Start, Activity, Condition, HorizontalBar, VerticalBar } End { end: B elements: Activity, Condition, HorizontalBar, VerticalBar, Termination head: arrow } } Toolbar { id: ActivityToolbar element: Start, Activity, Condition, HorizontalBar, VerticalBar Tools { Tool { element: Controlflow } Tool { element: dependency } } } // *************** // ** Sequences ** // *************** Icon { id: Instance elements: item stereotype: 'instance' display: icon textAlignment: center width: 40 height: 20 baseColor: #81d657 Shape { Rect { x: 0; y: 0; width: 40; height: 20 } } } Icon { id: Activation elements: item stereotype: 'activation' display: icon name: "" textAlignment: none width: 10 height: 40 minWidth: 10 minHeight: 20 lockSize: width baseColor: #81d657 Shape { Rect { x: 0; y: 0; width: 10; height: 40 } } } Icon { id: Destruction elements: item stereotype: 'destruction' display: icon name: "" textAlignment: none width: 10 height: 10 minWidth: 10 minHeight: 10 lockSize: size baseColor: #000000 Shape { Line { x0: 0; y0: 0; x1: 10; y1: 10 } Line { x0: 0; y0: 10; x1: 10; y1: 0 } } } Icon { id: EndLifeline elements: item stereotype: 'endlifeline' display: icon name: "" textAlignment: none width: 10 height: 10 minWidth: 10 minHeight: 10 lockSize: size baseColor: #000000 Shape { Circle { x: 5; y: 5; radius: 5 } } } Relation { id: Lifeline pattern: dash color: A End { end: A; elements: Instance, Activation } End { end: B; elements: Activation, EndLifeline, Destruction } } Relation { id: Message pattern: solid color: A End { end: A; elements: Activation } End { end: B; elements: Activation, Destruction; navigable: true; head: filledtriangle } } Toolbar { id: InstanceToolbar element: Instance Tools { Tool { element: Lifeline } } } Toolbar { id: ActivationToolbar element: Activation Tools { Tool { element: Lifeline } Tool { element: Message } } } Toolbar { id: EndToolbar element: Destruction, EndLifeline Tools { } } // **************** // ** Deployment ** // **************** Icon { id: Node elements: item, package stereotype: 'node' display: icon textAlignment: top width: 20 height: 20 baseColor: #7ccad1 Shape { MoveTo { x: 0; y: 0 } LineTo { x: 3; y: -3 } LineTo { x: 23; y: -3 } LineTo { x: 23; y: 17 } LineTo { x: 20; y: 20 } LineTo { x: 0; y: 20 } Close Line { x0: 0; y0: 0; x1: 20; y1: 0 } Line { x0: 20; y0: 0; x1: 23; y1: -3 } Line { x0: 20; y0: 0; x1: 20; y1: 20 } } } Icon { id: NodeInstance elements: item, package stereotype: 'nodeinstance' display: icon textAlignment: top width: 20 height: 20 baseColor: #7ccad1 Shape { MoveTo { x: 0; y: 0 } LineTo { x: 3; y: -3 } LineTo { x: 23; y: -3 } LineTo { x: 23; y: 17 } LineTo { x: 20; y: 20 } LineTo { x: 0; y: 20 } Close Line { x0: 0; y0: 0; x1: 20; y1: 0 } Line { x0: 20; y0: 0; x1: 23; y1: -3 } Line { x0: 20; y0: 0; x1: 20; y1: 20 } } } Icon { id: Artifact elements: item stereotype: 'artifact' display: icon width: 40 height: 20 baseColor: #7ccad1 Shape { Rect { x: 0; y: 0; width: 40; height: 20 } } } Icon { id: DocumentArtifact elements: item stereotype: 'document' display: icon width: 40 height: 60 minWidth: 40 minHeight: 60 lockSize: ratio baseColor: #7ccad1 Shape { MoveTo { x: 0; y: 0 } LineTo { x: 24; y: 0 } LineTo { x: 40; y: 16 } LineTo { x: 40; y: 60 } LineTo { x: 0; y: 60 } Close Line { x0: 24; y0: 0; x1: 24; y1: 16 } Line { x0: 24; y0: 16; x1: 40; y1: 16 } } } Icon { id: CDArtifact elements: item stereotype: 'cd' display: icon width: 40 height: 40 lockSize: ratio baseColor: #7ccad1 Shape { MoveTo { x: 40; y: 20 } ArcTo { x: 20; y: 20; radiusX: 20; radiusY: 20; start: 0; span: 360 } MoveTo { x: 28; y: 20 } ArcTo { x: 20; y: 20; radiusX: 8; radiusY: 8; start: 0; span: 360 } ArcTo { x: 20; y: 20; radiusX: 8; radiusY: 8; start: 0; span: 360 } MoveTo { x: 24; y: 20 } ArcTo { x: 20; y: 20; radiusX: 4; radiusY: 4; start: 0; span: 360 } Close Line { x0: 22.736; y0: 27.518; x1: 26.840; y1: 38.794 } Line { x0: 27.518; y0: 22.736; x1: 38.794; y1: 26.840 } Line { x0: 17.264; y0: 12.482; x1: 13.160; y1: 1.206 } Line { x0: 12.482; y0: 17.264; x1: 1.206; y1: 13.160 } } } Icon { id: PCNode elements: item stereotype: 'pc' display: icon width: 20 height: 40 minWidth: 40 locksize: ratio baseColor: #7ccad1 Shape { MoveTo { x: 6; y: -6 } LineTo { x: 20; y: -6 } ArcTo { x: 21; y: -1; radiusX: 5; radiusY: 5; start: 90; span: -90 } LineTo { x: 26; y: 34 } LineTo { x: 20; y: 40 } LineTo { x: 0; y: 40 } LineTo { x: 0; y: 0 } LineTo { x: 6; y: -6 } Close Line { x0: 0; y0: 0; x1: 14; y1: 0 } Arc { x: 14; y: 6; radiusX: 6; radiusY: 6; start: 90; span: -90 } Line { x0: 20; y0: 6; x1: 20; y1: 40 } Line { x0: 22; y0: 28; x1: 24; y1: 26 } Line { x0: 22; y0: 30; x1: 24; y1: 28 } Line { x0: 22; y0: 32; x1: 24; y1: 30 } Line { x0: 22; y0: 34; x1: 24; y1: 32 } Circle { x: 10; y: 32; radius: 2 } Line { x0: 4; y0: 10; x1: 16; y1: 10 } Line { x0: 4; y0: 13; x1: 16; y1: 13 } } } Icon { id: MobileNode elements: item stereotype: 'mobile' display: icon width: 20 height: 40 minWidth: 40 lockSize: ratio baseColor: #7ccad1 Shape { MoveTo { x: 4; y: -2 } LineTo { x: 19; y: -2 } ArcTo { x: 19; y: 1; radiusX: 3; radiusY: 3; start: 90; span: -90 } LineTo { x: 22; y: 33 } ArcTo { x: 17; y: 33; radiusX: 5; radiusY: 7; start: 0; span: -90 } LineTo { x: 3; y: 40 } ArcTo { x: 3; y: 37; radiusX: 3; radiusY: 3; start: 270; span: -90 } LineTo { x: 0; y: 3 } ArcTo { x: 4; y: 3; radiusX: 4; radiusY: 5; start: 180; span: -90 } Close Line { x0: 3; y0: 0; x1: 17; y1: 0 } Arc { x: 17; y: 3; radiusX: 3; radiusY: 3; start: 90; span: -90 } Line { x0: 20; y0: 3; x1: 20; y1: 37 } Arc { x: 17; y: 37; radiusX: 3; radiusY: 3; start:0; span: -90 } Arc{ x: 3; y: 3; radiusX: 3; radiusY: 3; start: 180; span: -90 } Rect { x: 3; y: 8; width: 14; height: 24 } Line { x0: 6; y0: 4; x1: 14; y1: 4 } Circle { x: 10; y: 36; radius: 2 } } } Icon { id: TabletNode elements: item stereotype: 'tablet' display: icon width: 40 height: 30 minWidth: 80 lockSize: ratio baseColor: #7ccad1 Shape { MoveTo { x: 4; y: -2 } LineTo { x: 39; y: -2 } ArcTo { x: 39; y: 1; radiusX: 3; radiusY: 3; start: 90; span: -90 } LineTo { x: 42; y: 23 } ArcTo { x: 37; y: 23; radiusX: 5; radiusY: 7; start: 0; span: -90 } LineTo { x: 3; y: 30 } ArcTo { x: 3; y: 27; radiusX: 3; radiusY: 3; start: 270; span: -90 } LineTo { x: 0; y: 3 } ArcTo { x: 4; y: 3; radiusX: 4; radiusY: 5; start: 180; span: -90 } Close Line { x0: 3; y0: 0; x1: 37; y1: 0 } Arc { x: 37; y: 3; radiusX: 3; radiusY: 3; start: 90; span: -90 } Line { x0: 40; y0: 3; x1: 40; y1: 27 } Arc { x: 37; y: 27; radiusX: 3; radiusY: 3; start:0; span: -90 } Arc{ x: 3; y: 3; radiusX: 3; radiusY: 3; start: 180; span: -90 } Rect { x: 4; y: 4; width: 32; height: 19 } Circle { x: 20; y: 26.5; radius: 2 } } } Icon { id: ServerNode elements: item stereotype: 'server' display: icon width: 40 height: 15 minWIdth: 80 lockSize: ratio baseColor: #7ccad1 Shape { LineTo { x: 6; y: -6 } LineTo { x: 46; y: -6 } LineTo { x: 46; y: 9 } LineTo { x: 40; y: 15 } LineTo { x: 0; y: 15 } Close Line { x0: 0; y0: 0; x1: 40; y1: 0 } Line { x0: 40; y0: 0; x1: 46; y1: -6 } Line { x0: 40; y0: 0; x1: 40; y1: 15 } Line { x0: 4; y0: 5; x1: 4; y1: 10 } Line { x0: 6; y0: 5; x1: 6; y1: 10 } Line { x0: 8; y0: 5; x1: 8; y1: 10 } Line { x0: 10; y0: 5; x1: 10; y1: 10 } Line { x0: 12; y0: 5; x1: 12; y1: 10 } Line { x0: 14; y0: 5; x1: 14; y1: 10 } Line { x0: 16; y0: 5; x1: 16; y1: 10 } Rect { x: 31; y: 5; width: 5; height: 5 } Rect { x: 24; y: 5; width: 5; height: 5 } } } Relation { id: NodeAssoziation title: 'Assoziation' elements: Node, NodeInstance, Artifact, DocumentArtifact, CDArtifact, PCNode, MobileNode, TabletNode, ServerNode pattern: solid } Toolbar { id: DeploymentToolbar element: Node, NodeInstance, Artifact, DocumentArtifact, CDArtifact, PCNode, MobileNode, TabletNode, ServerNode Tools { Tool { element: NodeAssoziation } } } // ************** // ** Toolbars ** // ************** Toolbar { id: Classes Tools { Tool { title: "Package"; element: package } Tool { title: "Class"; element: class } Tool { title: "Interface"; element: class; stereotype: "interface" } Tool { title: "Control"; element: class; stereotype: "control" } Tool { title: "Entity"; element: class; stereotype: "entity" } Tool { title: "Boundary"; element: class; stereotype: "boundary" } Separator Tool { title: "Annotation"; element: annotation } Tool { title: "Boundary"; element: boundary } Tool { title: "Swimlane"; element: swimlane } } } Toolbar { id: Components Tools { Tool { title: "Package"; element: package } Tool { title: "Component"; element: component } Tool { title: "Database"; element: component; stereotype: "database" } Separator Tool { title: "Annotation"; element: annotation } Tool { title: "Boundary"; element: boundary } Tool { title: "Swimlane"; element: swimlane } } } Toolbar { id: UseCases Tools { Tool { title: "Package"; element: package } Tool { title: "UseCase"; element: item; stereotype: "usecase" } Tool { title: "Actor"; element: item; stereotype: "actor" } Separator Tool { title: "Annotation"; element: annotation } Tool { title: "Boundary"; element: boundary } Tool { title: "Swimlane"; element: swimlane } } } Toolbar { id: Activities Tools { Tool { title: "Start"; element: item; stereotype: "start" } Tool { title: "Activity"; element: item; stereotype: "activity" } Tool { title: "Condition"; element: item; stereotype: "condition" } Tool { title: "Horiz. Bar"; element: item; stereotype: "horizontalbar" } Tool { title: "Vert. Bar"; element: item; stereotype: "verticalbar" } Tool { title: "Termination"; element: item; stereotype: "termination" } Separator Tool { title: "Annotation"; element: annotation } Tool { title: "Boundary"; element: boundary } Tool { title: "Swimlane"; element: swimlane } } } Toolbar { id: Sequences Tools { Tool { title: "Instance"; element: item; stereotype: "instance" } Tool { title: "Activation"; element: item; stereotype: "activation" } Tool { title: "Destruction"; element: item; stereotype: "destruction" } Tool { title: "EndLifeline"; element: item; stereotype: "endlifeline" } Separator Tool { title: "Annotation"; element: annotation } Tool { title: "Boundary"; element: boundary } Tool { title: "Swimlane"; element: swimlane } } } Toolbar { id: Deployment Tools { Tool { title: "Node"; element: item; stereotype: "node" } Tool { title: "Instance"; element: item; stereotype: "nodeinstance" } Tool { title: "Artifact"; element: item; stereotype: "artifact" } Tool { title: "Document"; element: item; stereotype: "document" } Tool { title: "CD"; element: item; stereotype: "cd" } Tool { title: "PC"; element: item; stereotype: "pc" } Tool { title: "Mobile"; element: item; stereotype: "mobile" } Tool { title: "Tablet"; element: item; stereotype: "tablet" } Tool { title: "Server"; element: item; stereotype: "server" } Separator Tool { title: "Annotation"; element: annotation } Tool { title: "Boundary"; element: boundary } Tool { title: "Swimlane"; element: swimlane } } }