(function() { /** * Adds the sysML palettes to the sidebar. */ Sidebar.prototype.addSysMLModelElementsPalette = function(expand) { var gn = ''; var dt = 'sysml model element '; var sb = this; var s = 'html=1;shape=mxgraph.sysml.'; var fns = [ this.addEntry(dt + 'comment', function() { var cardCell = new mxCell('Comment text', new mxGeometry(0, 40, 150, 40), 'shape=note;size=15;align=left;spacingLeft=10;html=1;whiteSpace=wrap;'); cardCell.vertex = true; var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;exitX=0.4;exitY=0;dashed=1;html=1;'); assoc1.geometry.setTerminalPoint(new mxPoint(20, 0), false); assoc1.geometry.relative = true; assoc1.geometry.x = 1; assoc1.edge = true; cardCell.insertEdge(assoc1, true); var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;exitX=0.8;exitY=0;dashed=1;html=1;'); assoc2.geometry.setTerminalPoint(new mxPoint(180, 0), false); assoc2.geometry.relative = true; assoc2.geometry.x = 1; assoc2.edge = true; cardCell.insertEdge(assoc2, true); return sb.createVertexTemplateFromCells([cardCell, assoc1, assoc2], 180, 80, 'Comment'); }), this.addEntry(dt + 'constraint note', function() { var cardCell = new mxCell('{C1: {L1} E1.x > E2.y}', new mxGeometry(0, 40, 150, 40), 'shape=note;size=15;align=left;spacingLeft=10;html=1;whiteSpace=wrap;'); cardCell.vertex = true; var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;exitX=0.4;exitY=0;dashed=1;html=1;'); assoc1.geometry.setTerminalPoint(new mxPoint(20, 0), false); assoc1.geometry.relative = true; assoc1.geometry.x = 1; assoc1.edge = true; cardCell.insertEdge(assoc1, true); var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;exitX=0.8;exitY=0;dashed=1;html=1;'); assoc2.geometry.setTerminalPoint(new mxPoint(180, 0), false); assoc2.geometry.relative = true; assoc2.geometry.x = 1; assoc2.edge = true; cardCell.insertEdge(assoc2, true); return sb.createVertexTemplateFromCells([cardCell, assoc1, assoc2], 180, 80, 'Constraint Note'); }), this.addEntry(dt + 'constraint textual note', function() { var cardCell = new mxCell('Element1\n(any graphical node)', new mxGeometry(0, 0, 160, 60), 'shape=rect;strokeWidth=2;fontStyle=1;html=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('{constraint text}', new mxGeometry(160, 30, 0, 0), 'align=left;html=1;verticalAlign=middle;labelPosition=right;verticalLabelPosition=middle;labelBackgroundColor=none;fontSize=10'); label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Constraint Textual Note'); }), this.addEntry(dt + 'constraint textual note', function() { var assoc = new mxCell('{constraint text}', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=none;labelBackgroundColor=none;fontSize=10;strokeWidth=2;'); assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true); assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false); assoc.geometry.relative = true; assoc.edge = true; var sourceLabel = new mxCell('{any graphical path}', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10;'); sourceLabel.geometry.relative = true; sourceLabel.setConnectable(false); sourceLabel.vertex = true; assoc.insert(sourceLabel); return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Constraint Textual Note'); }), this.createVertexTemplateEntry(s + 'composite;symbol0=folder;fontStyle=1;spacingTop=15;tabWidth=80;tabHeight=20;tabPosition=left;symbol1=triangle;symbol1Width=7;symbol1Height=10;symbol1Align=right;symbol1VerticalAlign=top;symbol1Spacing=8;symbol1VSpacing=25;symbol1Direction=north;strokeWidth=2;whiteSpace=wrap;align=center;', 160, 90, 'Model', 'Model', null, null, this.getTagsForStencil(gn, '', dt + 'model').join(' ')), this.addEntry(dt + 'package diagram', function() { var bg = new mxCell('
pkg Name
', new mxGeometry(0, 0, 300, 120), s + 'package;xSize=90;align=left;spacingLeft=10;overflow=fill;strokeWidth=1;recursiveResize=0;'); bg.vertex = true; var cardCell2 = new mxCell('\nSubpackage1', new mxGeometry(15, 60, 100, 50), 'shape=folder;spacingLeft=10;tabWidth=40;tabHeight=14;tabPosition=left;fontSize=10;html=1;whiteSpace=wrap;'); cardCell2.vertex = true; bg.insert(cardCell2); var cardCell3 = new mxCell('\nSubpackage2', new mxGeometry(190, 20, 100, 50), 'shape=folder;spacingLeft=10;tabWidth=40;tabHeight=14;tabPosition=left;fontSize=10;html=1;whiteSpace=wrap;'); cardCell3.vertex = true; bg.insert(cardCell3); var assoc1 = new mxCell('<<import>>', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=open;dashed=1;verticalAlign=top;labelBackgroundColor=none;endSize=12;html=1;'); assoc1.geometry.relative = true; assoc1.edge = true; cardCell2.insertEdge(assoc1, true); cardCell3.insertEdge(assoc1, false); bg.insert(assoc1); return sb.createVertexTemplateFromCells([bg], 300, 120, 'Package Diagram'); }), this.addEntry(dt + 'package tab', function() { var bg = new mxCell('Package1', new mxGeometry(0, 0, 300, 120), 'shape=folder;xSize=90;align=left;spacingLeft=10;align=left;verticalAlign=top;spacingLeft=5;spacingTop=-4;tabWidth=70;tabHeight=20;tabPosition=left;html=1;strokeWidth=1;recursiveResize=0;'); bg.vertex = true; var cardCell2 = new mxCell('\nSubpackage1', new mxGeometry(15, 60, 100, 50), 'shape=folder;spacingLeft=10;tabWidth=40;tabHeight=14;tabPosition=left;fontSize=10;html=1;whiteSpace=wrap;'); cardCell2.vertex = true; bg.insert(cardCell2); var cardCell3 = new mxCell('\nSubpackage2', new mxGeometry(190, 30, 100, 50), 'shape=folder;spacingLeft=10;tabWidth=40;tabHeight=14;tabPosition=left;fontSize=10;html=1;whiteSpace=wrap;'); cardCell3.vertex = true; bg.insert(cardCell3); var assoc1 = new mxCell('<<import>>', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=open;dashed=1;verticalAlign=top;labelBackgroundColor=none;endSize=12;html=1;'); assoc1.geometry.relative = true; assoc1.edge = true; cardCell2.insertEdge(assoc1, true); cardCell3.insertEdge(assoc1, false); bg.insert(assoc1); return sb.createVertexTemplateFromCells([bg], 300, 120, 'Package (Tab)'); }), this.createVertexTemplateEntry('shape=folder;tabWidth=80;tabHeight=20;tabPosition=left;strokeWidth=2;html=1;whiteSpace=wrap;align=center;', 160, 90, 'Package1', 'Package (Name)', null, null, this.getTagsForStencil(gn, '', dt + 'package name').join(' ')), this.createVertexTemplateEntry('shape=note;size=15;align=left;spacingLeft=10;html=1;whiteSpace=wrap;', 160, 60, '<<problem>>\nDescription', 'Problem', null, null, this.getTagsForStencil(gn, '', dt + 'problem').join(' ')), this.createVertexTemplateEntry('shape=note;size=15;align=left;spacingLeft=10;html=1;whiteSpace=wrap;', 160, 60, '<<rationale>>\nDescription', 'Rationale', null, null, this.getTagsForStencil(gn, '', dt + 'rationale').join(' ')), this.createVertexTemplateEntry('shape=folder;tabWidth=80;tabHeight=20;tabPosition=left;html=1;whiteSpace=wrap;align=center;', 160, 80, '\n<<view>>\n{viewpoint = View name}\nName', 'View (Name)', null, null, this.getTagsForStencil(gn, '', dt + 'view name').join(' ')), this.createVertexTemplateEntry('shape=folder;html=1;tabWidth=80;tabHeight=40;tabPosition=left;align=left;verticalAlign=top;spacingLeft=10;whiteSpace=wrap;', 160, 120, '<<view>>\nName', 'View', null, null, this.getTagsForStencil(gn, '', dt + 'view').join(' ')), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 120, 140, '' +
'<<viewpoint>>
' +
'Name
' +
'stakeholders="..."
' +
'purpose="..."
' +
'concerns="..."
' +
'languages="..."
' +
'methods="..."
bdd Namespace1
', new mxGeometry(0, 0, 300, 100), s + 'package;labelX=120;align=left;spacingLeft=10;overflow=fill;recursiveResize=0;'); bg.vertex = true; var cardCell2 = new mxCell('Block1', new mxGeometry(15, 30, 100, 50), 'shape=rect;fontStyle=1;html=1;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; bg.insert(cardCell2); var cardCell3 = new mxCell('Block2', new mxGeometry(190, 30, 100, 50), 'shape=rect;fontStyle=1;html=1;whiteSpace=wrap;align=center;'); cardCell3.vertex = true; bg.insert(cardCell3); var assoc = new mxCell('part1', new mxGeometry(0, 0, 0, 0), 'align=right;html=1;verticalAlign=bottom;endArrow=none;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=none;endFill=0;'); assoc.geometry.relative = true; assoc.geometry.x=1; assoc.edge = true; bg.insert(assoc); var sourceLabel = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); sourceLabel.geometry.relative = true; sourceLabel.setConnectable(false); sourceLabel.vertex = true; assoc.insert(sourceLabel); var targetLabel = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); targetLabel.geometry.relative = true; targetLabel.setConnectable(false); targetLabel.vertex = true; assoc.insert(targetLabel); cardCell2.insertEdge(assoc, true); cardCell3.insertEdge(assoc, false); return sb.createVertexTemplateFromCells([bg], 300, 100, 'Block Definition Diagram'); }), this.addEntry(dt + 'relation', function() { var assoc = new mxCell('part1', new mxGeometry(0, 0, 0, 0), 'align=right;html=1;verticalAlign=bottom;endArrow=none;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=none;'); assoc.geometry.relative = true; assoc.geometry.x=1; assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true); assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false); assoc.edge = true; var sourceLabel = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); sourceLabel.geometry.relative = true; sourceLabel.setConnectable(false); sourceLabel.vertex = true; assoc.insert(sourceLabel); var targetLabel = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); targetLabel.geometry.relative = true; targetLabel.setConnectable(false); targetLabel.vertex = true; assoc.insert(targetLabel); return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Relation'); }), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;verticalAlign=top;align=left;whiteSpace=wrap;', 220, 340, '' +
'<<block>>
' +
'{encapsulated}
' +
'Block1
constraints
' + '{x > y}
operations
' + 'operation1 (p1 : Type1) : Type2
parts
' + 'property1 : Block2
references
' + 'property2 : Block3 [0..*] {ordered}
values
' + 'property3 : Integer = 99 {readOnly}
property4 : Real = 10.0
properties
' + 'property5 : Type1
', 'Block', null, null, this.getTagsForStencil(gn, '', dt + 'block').join(' ')), this.createVertexTemplateEntry('shape=umlActor;html=1;verticalLabelPosition=bottom;verticalAlign=top;align=center;', 30, 60, 'ActorName', 'Actor', null, null, this.getTagsForStencil(gn, '', dt + 'actor').join(' ')), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 160, 80, '<<actor>>
ActorName
' +
'<<valueType>>
' +
'ValueType1
operations
' + 'operation1 (p1 : Type1) : Type2
properties
' + 'property1 : Type3
<<valueType>>
' + 'unit = UnitName
', 'ValueType', null, null, this.getTagsForStencil(gn, '', dt + 'value type valuetype').join(' ')), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 80, '' +
'<<enumeration>>
' +
'Enumeration1
literalName1
literalName2
Name
', 'Abstract Definition', null, null, this.getTagsForStencil(gn, '', dt + 'abstract definition').join(' ')), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 80, 40, '{abstract}
Name
Name
{abstract}
' +
'<<stereotype1>>
' +
'Block1
<<stereotype1>>
' + 'property1 = value
', 'Stereotype Property Compartment', null, null, this.getTagsForStencil(gn, '', dt + 'stereotype property compartment').join(' ')), this.addEntry(dt + 'namespace compartment', function() { var bg = new mxCell( '' + 'Block1
namespace
', new mxGeometry(0, 0, 300, 120), 'shape=rect;align=left;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;'); bg.vertex = true; var cardCell2 = new mxCell('Block2', new mxGeometry(15, 60, 100, 50), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; bg.insert(cardCell2); var cardCell3 = new mxCell('Block3', new mxGeometry(190, 60, 100, 50), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell3.vertex = true; bg.insert(cardCell3); var assoc = new mxCell('part1', new mxGeometry(0, 0, 0, 0), 'align=right;verticalAlign=bottom;endArrow=none;startArrow=diamondThin;startSize=14;startFill=1;edgeStyle=none;html=1;'); assoc.geometry.relative = true; assoc.geometry.x=1; assoc.edge = true; bg.insert(assoc); var sourceLabel = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); sourceLabel.geometry.relative = true; sourceLabel.setConnectable(false); sourceLabel.vertex = true; assoc.insert(sourceLabel); var targetLabel = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); targetLabel.geometry.relative = true; targetLabel.setConnectable(false); targetLabel.vertex = true; assoc.insert(targetLabel); cardCell2.insertEdge(assoc, true); cardCell3.insertEdge(assoc, false); return sb.createVertexTemplateFromCells([bg], 300, 100, 'Namespace Compartment'); }), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 250, 100, '' + 'Block1
namespace
', 'Block', null, null, this.getTagsForStencil(gn, '', dt + 'block').join(' ')), this.addEntry(dt + 'structure compartment', function() { var bg = new mxCell( '' + 'Block1
structure
', new mxGeometry(0, 0, 300, 120), 'shape=rect;align=left;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;'); bg.vertex = true; var cardCell2 = new mxCell('Block2', new mxGeometry(15, 60, 100, 50), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; bg.insert(cardCell2); var cardCell3 = new mxCell('Block3', new mxGeometry(190, 60, 100, 50), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell3.vertex = true; bg.insert(cardCell3); var assoc = new mxCell('c1:', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=none;'); assoc.geometry.relative = true; assoc.edge = true; bg.insert(assoc); var targetLabel = new mxCell('e1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); targetLabel.geometry.relative = true; targetLabel.setConnectable(false); targetLabel.vertex = true; assoc.insert(targetLabel); var targetLabel2 = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10'); targetLabel2.geometry.relative = true; targetLabel2.setConnectable(false); targetLabel2.vertex = true; assoc.insert(targetLabel2); cardCell2.insertEdge(assoc, true); cardCell3.insertEdge(assoc, false); return sb.createVertexTemplateFromCells([bg], 300, 100, 'Structure Compartment'); }), this.addEntry(dt + 'relation', function() { var assoc = new mxCell('c1', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;startArrow=none;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;'); assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true); assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false); assoc.geometry.relative = true; assoc.edge = true; var sourceLabel = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10'); sourceLabel.geometry.relative = true; sourceLabel.setConnectable(false); sourceLabel.vertex = true; assoc.insert(sourceLabel); var targetLabel = new mxCell('e1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); targetLabel.geometry.relative = true; targetLabel.setConnectable(false); targetLabel.vertex = true; assoc.insert(targetLabel); return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Relation'); }), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 60, '' +
'<<unit>>
' +
'
{quantityKind = QuantityKind1}
' +
'Unit1
' + 'Unit1
<<unit>>
' +
'{quantityKind = QuantityKind1}
' +
'<<quantityKind>>
' +
'
QuantityKind1
', 'Quantity Kind', null, null, this.getTagsForStencil(gn, '', dt + 'quantity kind').join(' ')), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;fontSize=15;whiteSpace=wrap;', 70, 30, '' +
'i1: Type1
',
'Instance Specification', null, null, this.getTagsForStencil(gn, '', dt + 'instance specification').join(' ')),
this.addEntry(dt + 'instance specification', function()
{
var cardCell = new mxCell(
'
' +
'i1: Type1
',
new mxGeometry(0, 0, 80, 30), 'shape=rect;html=1;overflow=fill;fontSize=15;whiteSpace=wrap;');
cardCell.vertex = true;
var cardCell2 = new mxCell(
'
' +
'i2: Type2
',
new mxGeometry(200, 0, 80, 30), 'shape=rect;html=1;overflow=fill;fontSize=15;whiteSpace=wrap;');
cardCell2.vertex = true;
var edge1 = new mxCell('<<allocate>>', new mxGeometry(0, 0, 0, 0), 'rounded=0;html=1;verticalAlign=top;labelBackgroundColor=none;endArrow=open;dashed=1;endSize=12;');
edge1.geometry.relative = true;
edge1.edge = true;
cardCell.insertEdge(edge1, true);
cardCell2.insertEdge(edge1, false);
var assoc = new mxCell('A1', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=open;endSize=12;edgeStyle=orthogonalEdgeStyle;');
assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false);
assoc.geometry.relative = true;
assoc.edge = true;
var targetLabel = new mxCell('p3', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
targetLabel.geometry.relative = true;
targetLabel.setConnectable(false);
targetLabel.vertex = true;
assoc.insert(targetLabel);
cardCell.insertEdge(assoc, true);
cardCell2.insertEdge(assoc, false);
return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc], 280, 30, 'Instance Specification');
}),
this.addEntry(dt + 'relation', function()
{
var assoc = new mxCell('A1', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=open;endSize=12;edgeStyle=orthogonalEdgeStyle;');
assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false);
assoc.geometry.relative = true;
assoc.edge = true;
var targetLabel = new mxCell('p3', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
targetLabel.geometry.relative = true;
targetLabel.setConnectable(false);
targetLabel.vertex = true;
assoc.insert(targetLabel);
return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Relation');
}),
this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 120, 60,
'
' +
'instance1: Type1
value1
', 'Instance Specification', null, null, this.getTagsForStencil(gn, '', dt + 'instance specification').join(' ')), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 160, 80, '' +
'instance1: Type1
property1 = 10
property2 = "value"
' + ': Type1
' + 'instance1 / property1: Type2
' +
'instance2 / property2:
Type3
property1 = 10
property2 = "value"
' + ': Type1
' + 'Assoctiation1
<<participant>> {end = property 1} p1 : Block 1
' +
'<<participant>> {end = property 2} p2 : Block 2
' + 'Assoctiation1
structure
', new mxGeometry(20, 60, 360, 150), 'shape=rect;html=1;strokeWidth=1;overflow=fill;whiteSpace=wrap;recursiveResize=0;'); bg.vertex = true; var cardCell4 = new mxCell( '' +
'<<participant>>
' +
'{end = property 2}
' +
'p2 : Block 2
' +
'<<participant>>
' +
'{end = property 1}
' +
'p1 : Block 1
' + 'Assoctiation1
<<participant>> {end = property 1} p1 : Blcok 1
' +
'<<participant>> {end = property 2} p2 : Blcok 2
' + 'Assoctiation1
structure
', 'Association', null, null, this.getTagsForStencil(gn, '', dt + 'association').join(' ')), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;dashed=1;whiteSpace=wrap;', 150, 80, '' +
'<<participant>>
' +
'{end = property 1}
' +
'p1 : Block 1
' + 'Block1
' +
'<<connector>> c1 : Association1
' +
'<<connector>> c2 : Association2
' + 'structure
', new mxGeometry(0, 0, 400, 250), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;'); bg.vertex = true; var cardCell2 = new mxCell('p1:\nType1', new mxGeometry(20, 100, 80, 40), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; bg.insert(cardCell2); var cardCell3 = new mxCell('p2:\nType2', new mxGeometry(300, 100, 80, 40), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell3.vertex = true; bg.insert(cardCell3); var edge1 = new mxCell('c1: Association1', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;verticalAlign=bottom;'); edge1.geometry.relative = true; edge1.edge = true; cardCell2.insertEdge(edge1, true); cardCell3.insertEdge(edge1, false); bg.insert(edge1); var label1 = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=bottom;labelPosition=left;labelBackgroundColor=none;fontSize=10'); label1.geometry.relative = true; label1.setConnectable(false); label1.vertex = true; edge1.insert(label1); var label2 = new mxCell('e1', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=top;labelPosition=left;labelBackgroundColor=none;fontSize=10'); label2.geometry.relative = true; label2.setConnectable(false); label2.vertex = true; edge1.insert(label2); var cardCell4 = new mxCell('p3:\nType3', new mxGeometry(20, 160, 80, 40), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell4.vertex = true; bg.insert(cardCell4); var cardCell5 = new mxCell('p4:\nType4', new mxGeometry(300, 160, 80, 40), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell5.vertex = true; bg.insert(cardCell5); var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;'); edge2.geometry.relative = true; edge2.edge = true; cardCell4.insertEdge(edge2, true); cardCell5.insertEdge(edge2, false); bg.insert(edge2); var label3 = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=bottom;labelPosition=left;labelBackgroundColor=none;fontSize=10'); label3.geometry.relative = true; label3.setConnectable(false); label3.vertex = true; edge2.insert(label3); var label4 = new mxCell('e1', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=top;labelPosition=left;labelBackgroundColor=none;fontSize=10'); label4.geometry.relative = true; label4.setConnectable(false); label4.vertex = true; edge2.insert(label4); var cardCell6 = new mxCell('c2: Association2', new mxGeometry(140, 210, 120, 20), 'shape=rect;html=1;align=center;'); cardCell6.vertex = true; bg.insert(cardCell6); var edge3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;dashed=1;'); edge3.geometry.setTerminalPoint(new mxPoint(200, 180), false); edge3.geometry.relative = true; edge3.edge = true; cardCell6.insertEdge(edge3, true); bg.insert(edge3); return sb.createVertexTemplateFromCells([bg], 400, 250, 'Connector Property'); }), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 120, '' + 'Block1
ibd Block1
', new mxGeometry(0, 0, 300, 100), s + 'package;labelX=100;align=left;spacingLeft=10;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=0;recursiveResize=0;'); bg.vertex = true; var cardCell2 = new mxCell('p1:\nType1', new mxGeometry(15, 30, 100, 50), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; bg.insert(cardCell2); var cardCell3 = new mxCell('p2:\nType2', new mxGeometry(190, 30, 100, 50), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell3.vertex = true; bg.insert(cardCell3); var assoc = new mxCell('c1:a1', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=none;'); assoc.geometry.relative = true; assoc.edge = true; var sourceLabel = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10'); sourceLabel.geometry.relative = true; sourceLabel.setConnectable(false); sourceLabel.vertex = true; assoc.insert(sourceLabel); var targetLabel = new mxCell('p3', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); targetLabel.geometry.relative = true; targetLabel.setConnectable(false); targetLabel.vertex = true; assoc.insert(targetLabel); cardCell2.insertEdge(assoc, true); cardCell3.insertEdge(assoc, false); bg.insert(assoc); return sb.createVertexTemplateFromCells([bg], 300, 100, 'Internal Block Diagram'); }), this.addEntry(dt + 'property', function() { var bg = new mxCell('', new mxGeometry(0, 0, 300, 120), 'shape=rect;html=1;strokeWidth=2;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;'); bg.vertex = true; var cardCell2 = new mxCell( '' + '0..*
' + '' + 'p1 : Type1
idb Block1
', 'Package', null, null, this.getTagsForStencil(gn, '', dt + 'package').join(' ')), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 100, 80, '' + '0..*
' + '' + 'p1 : Type1
' + '0..*
' + '' + 'p1 : Type1
' + 'p3 : Type3
' + 'initialValues
' + '' +
'x1 = 5.0
x2 = "today"
' + 'p3 : Type3
' + 'initialValues
' + '' +
'x1 = 5.0
x2 = "today"
' + 'p1 : [Type1]
' + 'values
' + '' + '<<normal>> {mean = 2, stdDeviation = 0.1} x : Real
', 'Property Specific Type', null, null, this.getTagsForStencil(gn, '', dt + 'property specific type').join(' ')), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 100, 70, '' + 'p2
' + 'values
' + '' + 'y : Integer = 5
', 'Property Specific Type', null, null, this.getTagsForStencil(gn, '', dt + 'property specific type').join(' ')), this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;', 160, 0, '<<stereotype1>>\ndependency1', 'Dependency', null, null, this.getTagsForStencil(gn, '', dt + 'dependency').join(' ')), this.addEntry(dt + 'property', function() { var assoc = new mxCell('', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=orthogonalEdgeStyle;strokeWidth=2;'); assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true); assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false); assoc.geometry.relative = true; assoc.edge = true; var sourceLabel = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); sourceLabel.geometry.relative = true; sourceLabel.setConnectable(false); sourceLabel.vertex = true; assoc.insert(sourceLabel); var targetLabel = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); targetLabel.geometry.relative = true; targetLabel.setConnectable(false); targetLabel.vertex = true; assoc.insert(targetLabel); return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Property'); }), this.addEntry(dt + 'binding connector', function() { var assoc = new mxCell('<<equal>>', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=orthogonalEdgeStyle;strokeWidth=2;'); assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true); assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false); assoc.geometry.relative = true; assoc.edge = true; var sourceLabel = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); sourceLabel.geometry.relative = true; sourceLabel.setConnectable(false); sourceLabel.vertex = true; assoc.insert(sourceLabel); var targetLabel = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); targetLabel.geometry.relative = true; targetLabel.setConnectable(false); targetLabel.vertex = true; assoc.insert(targetLabel); return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Binding Connector'); }), this.addEntry(dt + 'bidirectional connector', function() { var assoc = new mxCell('c1 : association', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=orthogonalEdgeStyle;'); assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true); assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false); assoc.geometry.relative = true; assoc.edge = true; var sourceLabel1 = new mxCell('0..1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); sourceLabel1.geometry.relative = true; sourceLabel1.setConnectable(false); sourceLabel1.vertex = true; assoc.insert(sourceLabel1); var sourceLabel2 = new mxCell('p1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10'); sourceLabel2.geometry.relative = true; sourceLabel2.setConnectable(false); sourceLabel2.vertex = true; assoc.insert(sourceLabel2); var targetLabel1 = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); targetLabel1.geometry.relative = true; targetLabel1.setConnectable(false); targetLabel1.vertex = true; assoc.insert(targetLabel1); var targetLabel2 = new mxCell('p2', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10'); targetLabel2.geometry.relative = true; targetLabel2.setConnectable(false); targetLabel2.vertex = true; assoc.insert(targetLabel2); return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Bidirectional Connector'); }), this.addEntry(dt + 'unidirectional connector', function() { var assoc = new mxCell('c1 : association', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=orthogonalEdgeStyle;'); assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true); assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false); assoc.geometry.relative = true; assoc.edge = true; var sourceLabel1 = new mxCell('0..1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); sourceLabel1.geometry.relative = true; sourceLabel1.setConnectable(false); sourceLabel1.vertex = true; assoc.insert(sourceLabel1); var targetLabel1 = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10'); targetLabel1.geometry.relative = true; targetLabel1.setConnectable(false); targetLabel1.vertex = true; assoc.insert(targetLabel1); var targetLabel2 = new mxCell('p1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10'); targetLabel2.geometry.relative = true; targetLabel2.setConnectable(false); targetLabel2.vertex = true; assoc.insert(targetLabel2); return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Unidirectional Connector'); }) ]; this.addPalette('sysmlBlocks', 'SysML / Blocks', expand || false, mxUtils.bind(this, function(content) { for (var i = 0; i < fns.length; i++) { content.appendChild(fns[i](content)); } })); }; Sidebar.prototype.addSysMLPortsAndFlowsPalette = function(expand) { var gn = ''; var dt = 'sysml port flow '; var sb = this; var s = 'html=1;shape=mxgraph.sysml.'; var fns = [ this.addEntry(dt + 'port', function() { var s = 'html=1;shape=mxgraph.sysml.'; var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'port1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('p1', new mxGeometry(0, 20, 20, 20), 'shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); var label2 = new mxCell('p2', new mxGeometry(140, 20, 20, 20), 'shape=rect;html=1;resizable=1;labelBackgroundColor=none;fontSize=10;'); label2.geometry.relative = false; label2.setConnectable(false); label2.vertex = true; cardCell.insert(label2); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Port'); }), this.addEntry(dt + 'port conjugated', function() { var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 200, 60), s + 'port2;fontStyle=1;spacingRight=20;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('p1 : ~T1', new mxGeometry(0, 20, 20, 20), 'shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPositin=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); var label2 = new mxCell('p2 : ~T2', new mxGeometry(140, 20, 60, 20), 'shape=rect;html=1;resizable=1;labelBackgroundColor=none;fontSize=10'); label2.geometry.relative = false; label2.setConnectable(false); label2.vertex = true; cardCell.insert(label2); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Port (Conjugated Ports)'); }), this.addEntry(dt + 'port flow property', function() { var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 80), s + 'port3;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('p1', new mxGeometry(0, 10, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); var label1 = new mxCell('p2', new mxGeometry(0, 50, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); var label2 = new mxCell('p3', new mxGeometry(160, 30, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10'); label2.geometry.relative = false; label2.setConnectable(false); label2.vertex = true; cardCell.insert(label2); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Ports with Flow Properties'); }), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 160, 70, '' + 'Transmission
' + 'ports
' + '' + 'p1 : ITransCmd
', 'Port (Compartment Notation)', null, null, this.getTagsForStencil(gn, '', dt + 'port compartment notation').join(' ')), this.addEntry(dt + 'nested port', function() { var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'nestedPort;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('p1.1', new mxGeometry(0, 14, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=middle;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); var label2 = new mxCell('p1.2', new mxGeometry(0, 30, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=middle;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label2.geometry.relative = false; label2.setConnectable(false); label2.vertex = true; cardCell.insert(label2); var label3 = new mxCell('p1.3', new mxGeometry(0, 46, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=middle;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label3.geometry.relative = false; label3.setConnectable(false); label3.vertex = true; cardCell.insert(label3); var label4 = new mxCell('p1', new mxGeometry(22, 10, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=middle;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label4.geometry.relative = false; label4.setConnectable(false); label4.vertex = true; cardCell.insert(label4); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Nested Port'); }), this.addEntry(dt + 'proxy port', function() { var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'port1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('<<proxy>>\np1', new mxGeometry(0, 20, 20, 20), 'shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Proxy Port'); }), this.addEntry(dt + 'full port', function() { var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'port1;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('<<full>>\np1', new mxGeometry(0, 20, 20, 20), 'shape=rect;html=1;resizable=1;align=right;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Full Port'); }), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 100, '' + 'Transmission
' + 'flow properties
' + '' +
'in gearSelect: Gear
' +
'in engineTorque: Torque
' +
'out wheelsTorque: Torque
' + 'Transmission
' + 'operations
' + '' +
'prov Boolean selectGear(g : Gear)
' +
'reqd Torque getTorque()
' + 'properties
' + '' +
'prov temperature : Integer
' +
'reqd geometry : Spline
' + '<<interfaceBlock>>\n' + 'ISpeedObserver
' + 'notifySpeedChange(): void
', 'Interface Block', null, null, this.getTagsForStencil(gn, '', dt + 'interface block').join(' ')), this.addEntry(dt + 'item flow', function() { var cardCell = new mxCell('eng: engine\n', new mxGeometry(20, 0, 80, 60), s + 'itemFlow;fontStyle=1;flowDir=S;flowType=out;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var cardCell2 = new mxCell('\ntrns: Transmission', new mxGeometry(0, 120, 120, 60), s + 'itemFlow;fontStyle=1;flowDir=N;flowType=in;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; var assoc1 = new mxCell('Torque', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=right;endArrow=none;exitX=0.5;exitY=1;entryX=0.5;entryY=0;'); assoc1.geometry.relative = true; assoc1.edge = true; var label1 = new mxCell('p', new mxGeometry(0, 0, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=10;verticalAlign=top;labelPosition=left;verticalLabelPosition=bottom;labelBackgroundColor=none;fontSize=10'); label1.geometry.relative = true; label1.geometry.x = -1; label1.setConnectable(false); label1.vertex = true; assoc1.insert(label1); var label2 = new mxCell('p', new mxGeometry(0, 0, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=10;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=bottom;labelBackgroundColor=none;fontSize=10'); label2.geometry.relative = true; label2.geometry.x = 1; label2.setConnectable(false); label2.vertex = true; assoc1.insert(label2); cardCell.insertEdge(assoc1, true); cardCell2.insertEdge(assoc1, false); return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc1], 120, 180, 'Item Flow'); }), this.addEntry(dt + 'item flow property', function() { var cardCell = new mxCell('eng: engine\n', new mxGeometry(40, 0, 80, 60), s + 'itemFlow;fontStyle=1;flowDir=S;flowType=out;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var cardCell2 = new mxCell('\ntrns: Transmission', new mxGeometry(20, 120, 120, 60), s + 'itemFlow;fontStyle=1;flowDir=N;flowType=in;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; var assoc1 = new mxCell('torque: Torque', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=right;endArrow=none;exitX=0.5;exitY=1;entryX=0.5;entryY=0;'); assoc1.geometry.relative = true; assoc1.edge = true; var label1 = new mxCell('p', new mxGeometry(0, 0, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=10;verticalAlign=top;labelPosition=left;verticalLabelPosition=bottom;labelBackgroundColor=none;fontSize=10'); label1.geometry.relative = true; label1.geometry.x = -1; label1.setConnectable(false); label1.vertex = true; assoc1.insert(label1); var label2 = new mxCell('p', new mxGeometry(0, 0, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=10;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=bottom;labelBackgroundColor=none;fontSize=10'); label2.geometry.relative = true; label2.geometry.x = 1; label2.setConnectable(false); label2.vertex = true; assoc1.insert(label2); cardCell.insertEdge(assoc1, true); cardCell2.insertEdge(assoc1, false); return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc1], 140, 180, 'Item Flow (Item Property)'); }), this.createVertexTemplateEntry(s + 'itemFlow;fontStyle=1;flowDir=N;flowType=in;whiteSpace=wrap;align=center;', 200, 80, 'eng:Engine', 'Item Flow North In', null, null, this.getTagsForStencil(gn, '', dt + 'item flow north in').join(' ')), this.createVertexTemplateEntry(s + 'itemFlow;fontStyle=1;flowDir=E;flowType=out;whiteSpace=wrap;align=center;', 200, 80, 'eng:Engine', 'Item Flow East Out', null, null, this.getTagsForStencil(gn, '', dt + 'item flow east out').join(' ')), this.addEntry(dt + 'item flow', function() { var cardCell = new mxCell('eng: engine', new mxGeometry(40, 0, 100, 60), s + 'itemFlow;fontStyle=1;strokeWidth=1;flowDir=E;flowType=none;spacingRight=20;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var cardCell2 = new mxCell('trns: Translation', new mxGeometry(260, 0, 140, 60), s + 'itemFlow;strokeWidth=1;fontStyle=1;flowDir=W;flowType=none;spacingLeft=15;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; var assoc1 = new mxCell('Torque', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=left;verticalAlign=top;endArrow=none;exitX=1;exitY=0.5;entryX=0;entryY=0.5;'); assoc1.geometry.relative = true; assoc1.edge = true; var label1 = new mxCell('ep:EP', new mxGeometry(0, 0, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=5;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=bottom;labelBackgroundColor=none;fontSize=10'); label1.geometry.relative = true; label1.geometry.x = -1; label1.setConnectable(false); label1.vertex = true; assoc1.insert(label1); var label2 = new mxCell('tp:TP', new mxGeometry(0, 0, 0, 0), 'resizable=0;html=1;align=right;spacingRight=5;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=bottom;labelBackgroundColor=none;fontSize=10'); label2.geometry.relative = true; label2.geometry.x = 1; label2.setConnectable(false); label2.vertex = true; assoc1.insert(label2); cardCell.insertEdge(assoc1, true); cardCell2.insertEdge(assoc1, false); var bg = new mxCell( '' + 'c1: Association-1
' +
'<<participant>>{end = ep} epInLink : EP[1]
' +
'<<participant>>{end = tp} etInLink : TP[1]
' + 'structure
', new mxGeometry(0, 120, 470, 250), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;'); bg.vertex = true; var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=elbowEdgeStyle;elbow=horizontal;dashed=1;'); assoc2.geometry.relative = true; assoc2.geometry.setTerminalPoint(new mxPoint(160, 30), true); assoc2.edge = true; bg.insertEdge(assoc2, false); var cardCell4 = new mxCell('epInLink : EP', new mxGeometry(30, 100, 160, 120), s + 'itemFlowRight;fontStyle=1;spacingRight=40;whiteSpace=wrap;align=center;'); cardCell4.vertex = true; bg.insert(cardCell4); var label3 = new mxCell('ep.1', new mxGeometry(160, 30, 0, 0), 'resizable=0;html=1;align=right;spacingRight=22;verticalAlign=middle;labelPosition=right;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label3.geometry.relative = false; label3.setConnectable(false); label3.vertex = true; cardCell4.insert(label3); var label4 = new mxCell('ep.2', new mxGeometry(160, 60, 0, 0), 'resizable=0;html=1;align=right;spacingRight=22;verticalAlign=middle;labelPosition=right;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label4.geometry.relative = false; label4.setConnectable(false); label4.vertex = true; cardCell4.insert(label4); var label5 = new mxCell('ep.3', new mxGeometry(160, 90, 0, 0), 'resizable=0;html=1;align=right;spacingRight=22;verticalAlign=middle;labelPosition=right;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label5.geometry.relative = false; label5.setConnectable(false); label5.vertex = true; cardCell4.insert(label5); var cardCell5 = new mxCell('tpInLink : TP', new mxGeometry(280, 100, 160, 120), s + 'itemFlowLeft;fontStyle=1;spacingLeft=40;whiteSpace=wrap;align=center;'); cardCell5.vertex = true; bg.insert(cardCell5); var label6 = new mxCell('tp.1', new mxGeometry(0, 30, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=22;verticalAlign=middle;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label6.geometry.relative = false; label6.setConnectable(false); label6.vertex = true; cardCell5.insert(label6); var label7 = new mxCell('tp.2', new mxGeometry(0, 60, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=22;verticalAlign=middle;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label7.geometry.relative = false; label7.setConnectable(false); label7.vertex = true; cardCell5.insert(label7); var label8 = new mxCell('tp.3', new mxGeometry(0, 90, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=22;verticalAlign=middle;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label8.geometry.relative = false; label8.setConnectable(false); label8.vertex = true; cardCell5.insert(label8); var assoc3 = new mxCell('Vibration', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;verticalAlign=bottom;endArrow=none;exitX=1;exitY=0.25;entryX=0;entryY=0.25;'); assoc3.geometry.relative = true; assoc3.edge = true; cardCell4.insertEdge(assoc3, true); cardCell5.insertEdge(assoc3, false); bg.insert(assoc3); var assoc4 = new mxCell('Heat', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;verticalAlign=bottom;endArrow=none;exitX=1;exitY=0.5;entryX=0;entryY=0.5;'); assoc4.geometry.relative = true; assoc4.edge = true; cardCell4.insertEdge(assoc4, true); cardCell5.insertEdge(assoc4, false); bg.insert(assoc4); var assoc5 = new mxCell('Current', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;verticalAlign=bottom;endArrow=none;exitX=1;exitY=0.75;entryX=0;entryY=0.75;'); assoc5.geometry.relative = true; assoc5.edge = true; cardCell4.insertEdge(assoc5, true); cardCell5.insertEdge(assoc5, false); bg.insert(assoc5); return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc1, bg, assoc2], 470, 370, 'Item Flow'); }), this.addEntry(dt + 'item flow', function() { var cardCell = new mxCell('tpInLink : TP', new mxGeometry(0, 0, 200, 120), s + 'itemFlowLeft;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('tp.1', new mxGeometry(0, 30, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=22;verticalAlign=middle;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); var label2 = new mxCell('tp.2', new mxGeometry(0, 60, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=22;verticalAlign=middle;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label2.geometry.relative = false; label2.setConnectable(false); label2.vertex = true; cardCell.insert(label2); var label3 = new mxCell('tp.3', new mxGeometry(0, 90, 0, 0), 'resizable=0;html=1;align=left;spacingLeft=22;verticalAlign=middle;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label3.geometry.relative = false; label3.setConnectable(false); label3.vertex = true; cardCell.insert(label3); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Item Flow'); }), this.addEntry(dt + 'item flow', function() { var cardCell = new mxCell('epInLink : EP', new mxGeometry(0, 0, 200, 120), s + 'itemFlowRight;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('ep.1', new mxGeometry(200, 30, 0, 0), 'resizable=0;html=1;align=right;spacingRight=22;verticalAlign=middle;labelPosition=right;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); var label2 = new mxCell('ep.2', new mxGeometry(200, 60, 0, 0), 'resizable=0;html=1;align=right;spacingRight=22;verticalAlign=middle;labelPosition=right;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label2.geometry.relative = false; label2.setConnectable(false); label2.vertex = true; cardCell.insert(label2); var label3 = new mxCell('ep.3', new mxGeometry(200, 90, 0, 0), 'resizable=0;html=1;align=right;spacingRight=22;verticalAlign=middle;labelPosition=right;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10'); label3.geometry.relative = false; label3.setConnectable(false); label3.vertex = true; cardCell.insert(label3); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Item Flow'); }), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 80, '' +
'<<interface>>
' +
'ISpeedObserver
' + 'notifySpeedChange(): void
', 'Interface', null, null, this.getTagsForStencil(gn, '', dt + 'interface').join(' ')), this.addEntry(dt + 'required interface', function() { var cardCell = new mxCell('Transmission', new mxGeometry(90, 0, 160, 60), s + 'port4;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('p1', new mxGeometry(0, 20, 20, 20), 'shape=rect;html=1;resizable=0;align=left;verticalAlign=bottom;labelPosition=right;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); var assoc1 = new mxCell('ITransCmd', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=left;verticalAlign=bottom;endArrow=sysMLReqInt;endSize=8;exitX=0;exitY=0.5;fillColor=#ffffff;'); assoc1.geometry.setTerminalPoint(new mxPoint(0, 0), false); assoc1.geometry.relative = true; assoc1.geometry.x = 1; assoc1.edge = true; cardCell.insertEdge(assoc1, true); var assoc2 = new mxCell('ITransData', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=left;verticalAlign=top;endArrow=sysMLProvInt;endSize=12;exitX=0;exitY=0.5;fillColor=#ffffff;'); assoc2.geometry.setTerminalPoint(new mxPoint(0, 60), false); assoc2.geometry.relative = true; assoc2.geometry.x = 1; assoc2.edge = true; cardCell.insertEdge(assoc2, true); return sb.createVertexTemplateFromCells([cardCell, assoc1, assoc2], 250, 60, 'Required Interface'); }), this.addEntry(dt + 'provided interface', function() { var cardCell = new mxCell('Transmission', new mxGeometry(90, 0, 160, 60), s + 'port4;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('p1', new mxGeometry(0, 20, 20, 20), 'shape=rect;html=1;resizable=0;labelBackgroundColor=none;fontSize=10;'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); var assoc1 = new mxCell('ITransCmd', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=left;verticalAlign=bottom;endArrow=sysMLReqInt;endSize=8;exitX=0;exitY=0.5;fillColor=#ffffff;'); assoc1.geometry.setTerminalPoint(new mxPoint(0, 0), false); assoc1.geometry.relative = true; assoc1.geometry.x = 1; assoc1.edge = true; cardCell.insertEdge(assoc1, true); var assoc2 = new mxCell('ITransData', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=left;verticalAlign=top;endArrow=sysMLProvInt;endSize=12;exitX=0;exitY=0.5;fillColor=#ffffff;'); assoc2.geometry.setTerminalPoint(new mxPoint(0, 60), false); assoc2.geometry.relative = true; assoc2.geometry.x = 1; assoc2.edge = true; cardCell.insertEdge(assoc2, true); return sb.createVertexTemplateFromCells([cardCell, assoc1, assoc2], 250, 60, 'Provided Interface'); }) ]; this.addPalette('sysmlPorts and Flows', 'SysML / Ports and Flows', expand || false, mxUtils.bind(this, function(content) { for (var i = 0; i < fns.length; i++) { content.appendChild(fns[i](content)); } })); }; Sidebar.prototype.addSysMLConstraintBlocksPalette = function(expand) { var s = 'html=1;shape=mxgraph.sysml.'; var gn = ''; var dt = 'sysml constraint block '; var sb = this; var fns = [ this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 180, '' +
'<<constraint>>
' +
'ConstraintBlock1
' + 'constraints
' + '' +
'{{L1} x > y }
nested: ConstraintBlock2
' + 'parameters
' + '' +
'x: Real
y: Real
par Block1
', new mxGeometry(0, 0, 300, 170), s + 'package;labelX=120;align=left;spacingLeft=10;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;'); bg.vertex = true; var cardCell2 = new mxCell('C1: Constraint', new mxGeometry(130, 50, 150, 100), s + 'paramDgm;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; bg.insert(cardCell2); var label1 = new mxCell('x:', new mxGeometry(0, 25, 0, 0), 'html=1;resizable=0;align=left;verticalAlign=middle;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;fontSize=10;spacingLeft=22;fontStyle=1;'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell2.insert(label1); var label2 = new mxCell('y:', new mxGeometry(0, 75, 0, 0), 'html=1;resizable=0;align=left;verticalAlign=middle;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;fontSize=10;spacingLeft=22;fontStyle=1;'); label2.geometry.relative = false; label2.setConnectable(false); label2.vertex = true; cardCell2.insert(label2); var cardCell3 = new mxCell('length: Real', new mxGeometry(30, 65, 20, 20), 'shape=rect;html=1;fontSize=10;verticalLabelPosition=top;verticalAlign=bottom;'); cardCell3.vertex = true; bg.insert(cardCell3); var cardCell4 = new mxCell('width: Real', new mxGeometry(30, 115, 20, 20), 'shape=rect;html=1;fontSize=10;verticalLabelPosition=top;verticalAlign=bottom;'); cardCell4.vertex = true; bg.insert(cardCell4); var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;exitY=0.25;exitX=0;entryY=0.5;entryX=1;'); assoc1.geometry.relative = true; assoc1.geometry.x=1; assoc1.edge = true; cardCell2.insertEdge(assoc1, true); cardCell3.insertEdge(assoc1, false); bg.insert(assoc1); var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;exitY=0.75;exitX=0;entryY=0.5;entryX=1;'); assoc2.geometry.relative = true; assoc2.geometry.x=1; assoc2.edge = true; cardCell2.insertEdge(assoc2, true); cardCell4.insertEdge(assoc2, false); bg.insert(assoc2); return sb.createVertexTemplateFromCells([bg], 300, 170, 'Parametric Diagram'); }), this.addEntry(dt + 'constraint property', function() { var cardCell = new mxCell('C1:Constraint1', new mxGeometry(0, 0, 150, 100), s + 'paramDgm;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('x: Real', new mxGeometry(0, 25, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=middle;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;fontSize=10;spacingLeft=22;fontStyle=1;'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); var label2 = new mxCell('y: Real', new mxGeometry(0, 75, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=middle;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;fontSize=10;spacingLeft=22;fontStyle=1;'); label2.geometry.relative = false; label2.setConnectable(false); label2.vertex = true; cardCell.insert(label2); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Constraint Property'); }), this.addEntry(dt + 'constraint property', function() { var cardCell = new mxCell( '' +
'<<constraint>>
' +
'C1: Constraint1
act [ControlOperator]
', 'Control Operator', null, null, this.getTagsForStencil(gn, 'package', dt + 'control operator').join(' ')), this.addEntry(dt + 'decision node', function() { var cardCell = new mxCell('', new mxGeometry(80, 40, 40, 40), 'shape=rhombus;html=1;verticalLabelPosition=bottom;verticalAlignment=top;'); cardCell.vertex = true; var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;align=right;verticalAlign=bottom;endArrow=none;rounded=0;labelBackgroundColor=none;startArrow=open;startSize=12;'); edge1.geometry.setTerminalPoint(new mxPoint(100, 0), false); edge1.geometry.relative = true; edge1.edge = true; cardCell.insertEdge(edge1, true); var edge2 = new mxCell('[guard]', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;verticalAlign=bottom;endArrow=open;rounded=0;labelBackgroundColor=none;endSize=12;'); edge2.geometry.setTerminalPoint(new mxPoint(200, 60), false); edge2.geometry.relative = true; edge2.edge = true; cardCell.insertEdge(edge2, true); var edge3 = new mxCell('[else]', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;verticalAlign=bottom;endArrow=open;rounded=0;labelBackgroundColor=none;endSize=12;'); edge3.geometry.setTerminalPoint(new mxPoint(0, 60), false); edge3.geometry.relative = true; edge3.edge = true; cardCell.insertEdge(edge3, true); return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3], 200, 80, 'Decision Node'); }), this.createVertexTemplateEntry(s + 'flowFinal;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;', 40, 40, '', 'Flow Final', null, null, this.getTagsForStencil(gn, 'flowFinal', dt + 'flow final').join(' ')), this.addEntry(dt + 'fork node', function() { var cardCell = new mxCell('', new mxGeometry(60, 0, 4, 80),'shape=rect;html=1;fillColor=#000000;verticalLabelPosition=bottom;verticalAlignment=top;'); cardCell.vertex = true; var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;endArrow=none;rounded=0;startArrow=open;strokeWidth=3;startSize=12;'); edge1.geometry.setTerminalPoint(new mxPoint(0, 40), false); edge1.geometry.relative = true; edge1.edge = true; cardCell.insertEdge(edge1, true); var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;strokeWidth=3;endSize=12;'); edge2.geometry.setTerminalPoint(new mxPoint(200, 10), false); edge2.geometry.relative = true; edge2.edge = true; cardCell.insertEdge(edge2, true); var edge3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;strokeWidth=3;endSize=12;'); edge3.geometry.setTerminalPoint(new mxPoint(200, 30), false); edge3.geometry.relative = true; edge3.edge = true; cardCell.insertEdge(edge3, true); var edge4 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;strokeWidth=3;endSize=12;'); edge4.geometry.setTerminalPoint(new mxPoint(200, 50), false); edge4.geometry.relative = true; edge4.edge = true; cardCell.insertEdge(edge4, true); var edge5 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;strokeWidth=3;endSize=12;'); edge5.geometry.setTerminalPoint(new mxPoint(200, 70), false); edge5.geometry.relative = true; edge5.edge = true; cardCell.insertEdge(edge5, true); return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3, edge4, edge5], 200, 80, 'Fork Node'); }), this.createVertexTemplateEntry('shape=ellipse;html=1;illColor=#000000;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;', 40, 40, '', 'Initial Node', null, null, this.getTagsForStencil(gn, '', dt + 'initial node').join(' ')), this.addEntry(dt + 'join node', function() { var cardCell = new mxCell('{joinspec=...}', new mxGeometry(136, 0, 4, 80),'shape=rect;html=1;fillColor=#000000;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;'); cardCell.vertex = true; var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;rounded=0;endArrow=open;strokeWidth=3;endSize=12;'); edge1.geometry.setTerminalPoint(new mxPoint(200, 40), false); edge1.geometry.relative = true; edge1.edge = true; cardCell.insertEdge(edge1, true); var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;startArrow=open;endArrow=none;rounded=0;strokeWidth=3;startSize=12;'); edge2.geometry.setTerminalPoint(new mxPoint(0, 10), false); edge2.geometry.relative = true; edge2.edge = true; cardCell.insertEdge(edge2, true); var edge3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;startArrow=open;endArrow=none;rounded=0;strokeWidth=3;startSize=12;'); edge3.geometry.setTerminalPoint(new mxPoint(0, 30), false); edge3.geometry.relative = true; edge3.edge = true; cardCell.insertEdge(edge3, true); var edge4 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;startArrow=open;endArrow=none;rounded=0;strokeWidth=3;startSize=12;'); edge4.geometry.setTerminalPoint(new mxPoint(0, 50), false); edge4.geometry.relative = true; edge4.edge = true; cardCell.insertEdge(edge4, true); var edge5 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;startArrow=open;endArrow=none;rounded=0;strokeWidth=3;startSize=12;'); edge5.geometry.setTerminalPoint(new mxPoint(0, 70), false); edge5.geometry.relative = true; edge5.edge = true; cardCell.insertEdge(edge5, true); return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3, edge4, edge5], 200, 80, 'Join Node'); }), this.addEntry(dt + 'is control', function() { var cardCell = new mxCell('Action', new mxGeometry(90, 0, 120, 60), s + 'isControl;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var edge1 = new mxCell('{control}', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;startArrow=open;rounded=0;endArrow=none;verticalAlign=bottom;exitX=0;exitY=0.5;startSize=12;'); edge1.geometry.setTerminalPoint(new mxPoint(0, 30), false); edge1.geometry.relative = true; edge1.edge = true; cardCell.insertEdge(edge1, true); var edge2 = new mxCell('{control}', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;verticalAlign=bottom;entryX=0;entryY=0.5;endSize=12;'); edge2.geometry.setTerminalPoint(new mxPoint(300, 30), false); edge2.geometry.relative = true; edge2.edge = true; cardCell.insertEdge(edge2, true); return sb.createVertexTemplateFromCells([cardCell, edge1, edge2], 300, 60, 'Is Control'); }), this.addEntry(dt + 'is stream', function() { var cardCell = new mxCell('Action', new mxGeometry(90, 0, 120, 60), s + 'isControl;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var edge1 = new mxCell('{stream}', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;startArrow=open;rounded=0;endArrow=none;verticalAlign=bottom;exitX=0;exitY=0.5;startSize=12;'); edge1.geometry.setTerminalPoint(new mxPoint(0, 30), false); edge1.geometry.relative = true; edge1.edge = true; cardCell.insertEdge(edge1, true); var edge2 = new mxCell('{stream}', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;verticalAlign=bottom;entryX=0;entryY=0.5;endSize=12;'); edge2.geometry.setTerminalPoint(new mxPoint(300, 30), false); edge2.geometry.relative = true; edge2.edge = true; cardCell.insertEdge(edge2, true); return sb.createVertexTemplateFromCells([cardCell, edge1, edge2], 300, 60, 'Is Stream'); }), this.addEntry(dt + 'is stream', function() { var cardCell = new mxCell('Action', new mxGeometry(90, 0, 120, 60), s + 'isStream;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;startArrow=open;rounded=0;endArrow=none;exitX=0;exitY=0.5;startSize=12;'); edge1.geometry.setTerminalPoint(new mxPoint(0, 30), false); edge1.geometry.relative = true; edge1.edge = true; cardCell.insertEdge(edge1, true); var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;entryX=0;entryY=0.5;endSize=12;'); edge2.geometry.setTerminalPoint(new mxPoint(300, 30), false); edge2.geometry.relative = true; edge2.edge = true; cardCell.insertEdge(edge2, true); return sb.createVertexTemplateFromCells([cardCell, edge1, edge2], 300, 60, 'Is Stream'); }), this.addEntry(dt + 'is stream', function() { var cardCell = new mxCell('act', new mxGeometry(0, 0, 200, 100), s + 'isActStream;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;'); cardCell.vertex = true; var label1 = new mxCell('{stream}', new mxGeometry(200, 50, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;fontSize=10;spacingTop=5;'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); return sb.createVertexTemplateFromCells([cardCell], 250, 100, 'Is Stream'); }), this.addEntry(dt + 'local pre precondition post postcondition', function() { var cardCell1 = new mxCell('localPrecondition\nconstraint', new mxGeometry(0, 0, 120, 40), 'shape=note;html=1;size=15;strokeWidth=2;align=left;spacingLeft=5;whiteSpace=wrap;align=center;'); cardCell1.vertex = true; var cardCell2 = new mxCell('Action', new mxGeometry(10, 65, 100, 50), 'shape=rect;html=1;rounded=1;strokeWidth=2;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; var cardCell3 = new mxCell('localPostcondition\nconstraint', new mxGeometry(20, 140, 130, 40), 'shape=note;html=1;size=15;strokeWidth=2;align=left;spacingLeft=5;whiteSpace=wrap;align=center;'); cardCell3.vertex = true; var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;rounded=0;endArrow=none;'); edge1.geometry.relative = true; edge1.edge = true; cardCell1.insertEdge(edge1, true); cardCell2.insertEdge(edge1, false); var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;rounded=0;endArrow=none;'); edge2.geometry.relative = true; edge2.edge = true; cardCell2.insertEdge(edge2, true); cardCell3.insertEdge(edge2, false); return sb.createVertexTemplateFromCells([cardCell1, cardCell2, cardCell3, edge1, edge2], 150, 180, 'Local Pre- and Postconditions'); }), this.addEntry(dt + 'merge node', function() { var cardCell = new mxCell('', new mxGeometry(80, 0, 40, 40), 'shape=rhombus;html=1;verticalLabelPosition=top;verticalAlignment=bottom;'); cardCell.vertex = true; var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;align=right;verticalAlign=bottom;rounded=0;labelBackgroundColor=none;endArrow=open;endSize=12;'); edge1.geometry.setTerminalPoint(new mxPoint(100, 80), false); edge1.geometry.relative = true; edge1.edge = true; cardCell.insertEdge(edge1, true); var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;verticalAlign=bottom;startArrow=open;endArrow=none;rounded=0;labelBackgroundColor=none;startSize=12;'); edge2.geometry.setTerminalPoint(new mxPoint(200, 20), false); edge2.geometry.relative = true; edge2.edge = true; cardCell.insertEdge(edge2, true); var edge3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;verticalAlign=bottom;startArrow=open;endArrow=none;rounded=0;labelBackgroundColor=none;startSize=12;'); edge3.geometry.setTerminalPoint(new mxPoint(0, 20), false); edge3.geometry.relative = true; edge3.edge = true; cardCell.insertEdge(edge3, true); return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3], 200, 80, 'Merge Node'); }), this.addEntry(dt + 'no buffer', function() { var cardCell = new mxCell('Action', new mxGeometry(90, 0, 120, 60), s + 'isControl;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var edge1 = new mxCell('<<noBuffer>>', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;startArrow=open;rounded=0;endArrow=none;verticalAlign=bottom;exitX=0;exitY=0.5;startSize=12;'); edge1.geometry.setTerminalPoint(new mxPoint(0, 30), false); edge1.geometry.relative = true; edge1.edge = true; cardCell.insertEdge(edge1, true); var edge2 = new mxCell('<<noBuffer>>', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;verticalAlign=bottom;entryX=0;entryY=0.5;endSize=12;'); edge2.geometry.setTerminalPoint(new mxPoint(300, 30), false); edge2.geometry.relative = true; edge2.edge = true; cardCell.insertEdge(edge2, true); return sb.createVertexTemplateFromCells([cardCell, edge1, edge2], 300, 60, 'No Buffer'); }), this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;', 160, 80, 'object node name:\n type name\n[state, state ...]', 'Object Node', null, null, this.getTagsForStencil(gn, '', dt + 'object node').join(' ')), this.addEntry(dt + 'object node', function() { var cardCell = new mxCell('Action', new mxGeometry(0, 0, 120, 60), s + 'isControl;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('pin name: type name\n[state, state ...]', new mxGeometry(0, 30, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=middle;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;spacingRight=5;'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Object Node'); }), this.addEntry(dt + 'optional', function() { var cardCell = new mxCell('Action', new mxGeometry(90, 0, 120, 60), s + 'isControl;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var edge1 = new mxCell('<<optional>>', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;startArrow=open;rounded=0;endArrow=none;verticalAlign=bottom;exitX=0;exitY=0.5;startSize=12;'); edge1.geometry.setTerminalPoint(new mxPoint(0, 30), false); edge1.geometry.relative = true; edge1.edge = true; cardCell.insertEdge(edge1, true); var edge2 = new mxCell('<<optional>>', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;verticalAlign=bottom;entryX=0;entryY=0.5;endSize=12;'); edge2.geometry.setTerminalPoint(new mxPoint(300, 30), false); edge2.geometry.relative = true; edge2.edge = true; cardCell.insertEdge(edge2, true); return sb.createVertexTemplateFromCells([cardCell, edge1, edge2], 300, 60, 'Optional'); }), this.addEntry(dt + 'optional', function() { var cardCell = new mxCell('act', new mxGeometry(0, 0, 200, 100), s + 'isActStream;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;fontStyle=1;'); cardCell.vertex = true; var label1 = new mxCell('<<optional>>', new mxGeometry(200, 50, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;fontSize=10;spacingTop=5;'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Optional'); }), this.addEntry(dt + 'overwrite', function() { var cardCell = new mxCell('Action', new mxGeometry(90, 0, 120, 60), s + 'isControl;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var edge1 = new mxCell('<<overwrite>>', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;startArrow=open;rounded=0;endArrow=none;verticalAlign=bottom;exitX=0;exitY=0.5;startSize=12;'); edge1.geometry.setTerminalPoint(new mxPoint(0, 30), false); edge1.geometry.relative = true; edge1.edge = true; cardCell.insertEdge(edge1, true); var edge2 = new mxCell('<<overwrite>>', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;verticalAlign=bottom;entryX=0;entryY=0.5;endSize=12;'); edge2.geometry.setTerminalPoint(new mxPoint(300, 30), false); edge2.geometry.relative = true; edge2.edge = true; cardCell.insertEdge(edge2, true); return sb.createVertexTemplateFromCells([cardCell, edge1, edge2], 300, 60, 'Overwrite'); }), this.createVertexTemplateEntry(s + 'paramSet;whiteSpace=wrap;align=center;', 160, 100, 'Action', 'Parameter Set', null, null, this.getTagsForStencil(gn, 'paramSet', dt + 'parameter set').join(' ')), this.createVertexTemplateEntry(s + 'paramActSet;align=left;spacingLeft=15;verticalAlign=top;spacingTop=-3;fontStyle=1;', 250, 120, 'act', 'Parameter Set', null, null, this.getTagsForStencil(gn, 'paramActSet', dt + 'parameter set').join(' ')), this.addEntry(dt + 'probability', function() { var cardCell = new mxCell('Action', new mxGeometry(0, 0, 120, 160), s + 'probability;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('{ probability =\nvalueSpecification }', new mxGeometry(120, 40, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=bottom;labelBackgroundColor=none;fontSize=10;spacingBottom=25;'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); var label2 = new mxCell('{ probability =\nvalueSpecification }', new mxGeometry(120, 120, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;spacingTop=25;'); label2.geometry.relative = false; label2.setConnectable(false); label2.vertex = true; cardCell.insert(label2); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Probability'); }), this.addEntry(dt + 'probability', function() { var cardCell = new mxCell('act', new mxGeometry(0, 0, 120, 160), s + 'actProb;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;fontStyle=1;'); cardCell.vertex = true; var label1 = new mxCell('{ probability =\nvalueSpecification }', new mxGeometry(120, 40, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=bottom;labelPosition=left;verticalLabelPosition=bottom;labelBackgroundColor=none;fontSize=10;spacingBottom=25;'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); var label2 = new mxCell('{ probability =\nvalueSpecification }', new mxGeometry(120, 120, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;fontSize=10;spacingTop=25;'); label2.geometry.relative = false; label2.setConnectable(false); label2.vertex = true; cardCell.insert(label2); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Probability'); }), this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;', 120, 60, '<<continuous>>\nObject Node', 'Rate', null, null, this.getTagsForStencil(gn, '', dt + 'rate').join(' ')), this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;', 120, 60, '<<discrete>>\nObject Node', 'Rate', null, null, this.getTagsForStencil(gn, '', dt + 'rate').join(' ')), this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;', 140, 120, '{ rate = constant }\n{ rate = distribution }\n<<continuous>>\n<<discrete>>\nObject Node', 'Rate', null, null, this.getTagsForStencil(gn, '', dt + 'rate').join(' ')), this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 140, 80, '' + 'Object Node
' +
'<<rate>>
' +
'rate = constant
' +
'rate = distribution
sd Interaction1
', 'Sequence Diagram', null, null, this.getTagsForStencil(gn, 'package', dt + 'sequence diagram').join(' ')), this.addEntry(dt + 'lifeline', function() { var cardCell = new mxCell('b1:Block1', new mxGeometry(0, 0, 160, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;align=center;verticalAlign=bottom;exitX=0.5;exitY=1;'); assoc1.geometry.setTerminalPoint(new mxPoint(80, 150), false); assoc1.geometry.relative = true; assoc1.geometry.x = 1; assoc1.edge = true; cardCell.insertEdge(assoc1, true); return sb.createVertexTemplateFromCells([cardCell, assoc1], 160, 150, 'Lifeline'); }), this.addEntry(dt + 'execution specification', function() { var cardCell = new mxCell('b1:Block1', new mxGeometry(0, 0, 160, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var cardCell2 = new mxCell('', new mxGeometry(70, 100, 20, 80), 'shape=rect;html=1;fillColor=#eeeeee;'); cardCell2.vertex = true; var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;'); assoc1.geometry.relative = true; assoc1.edge = true; cardCell.insertEdge(assoc1, true); cardCell2.insertEdge(assoc1, false); var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;'); assoc2.geometry.setTerminalPoint(new mxPoint(80, 220), false); assoc2.geometry.relative = true; assoc2.geometry.x = 1; assoc2.edge = true; cardCell2.insertEdge(assoc2, true); return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc1, assoc2], 160, 220, 'Execution Specification'); }), this.addEntry(dt + 'execution specification', function() { var cardCell = new mxCell('b1:Block1', new mxGeometry(0, 0, 160, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var cardCell2 = new mxCell('execSpec', new mxGeometry(20, 100, 120, 80), 'shape=rect;html=1;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;'); assoc1.geometry.relative = true; assoc1.edge = true; cardCell.insertEdge(assoc1, true); cardCell2.insertEdge(assoc1, false); var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;'); assoc2.geometry.setTerminalPoint(new mxPoint(80, 220), false); assoc2.geometry.relative = true; assoc2.geometry.x = 1; assoc2.edge = true; cardCell2.insertEdge(assoc2, true); return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc1, assoc2], 160, 220, 'Execution Specification'); }), this.addEntry(dt + 'use', function() { var cardCell = new mxCell('Interaction3', new mxGeometry(0, 0, 160, 60), s + 'package;labelX=40;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var label1 = new mxCell('ref', new mxGeometry(0, 0, 0, 0), 'html=1;align=left;verticalAlign=top;labelPosition=left;verticalLabelPosition=top;labelBackgroundColor=none;spacingLeft=5;spacingTop=-2;fontStyle=1;'); label1.geometry.relative = false; label1.setConnectable(false); label1.vertex = true; cardCell.insert(label1); return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Interaction Use'); }), this.addEntry(dt + 'combined fragment', function() { var bg = new mxCell('sd Interaction1
', new mxGeometry(0, 0, 350, 320), s + 'package;labelX=100;html=1;overflow=fill;strokeWidth=1;recursiveResize=0;'); bg.vertex = true; var cardCell2 = new mxCell('b1: Block1', new mxGeometry(30, 40, 80, 30), 'shape=rect;html=1;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; bg.insert(cardCell2); var cardCell3 = new mxCell('b2: Block2', new mxGeometry(140, 40, 80, 30), 'shape=rect;html=1;whiteSpace=wrap;align=center;'); cardCell3.vertex = true; bg.insert(cardCell3); var cardCell4 = new mxCell('b3: Block3', new mxGeometry(250, 40, 80, 30), 'shape=rect;html=1;whiteSpace=wrap;align=center;'); cardCell4.vertex = true; bg.insert(cardCell4); var cardCell5 = new mxCell('alt', new mxGeometry(20, 90, 200, 160), s + 'package;labelX=35;fontStyle=1;align=left;verticalAlign=top;spacingLeft=5;spacingTop=-3;'); cardCell5.vertex = true; bg.insert(cardCell5); var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;dashed=1;'); assoc1.geometry.setTerminalPoint(new mxPoint(70, 300), false); assoc1.geometry.relative = true; assoc1.edge = true; cardCell2.insertEdge(assoc1, true); bg.insert(assoc1); var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;dashed=1;'); assoc2.geometry.setTerminalPoint(new mxPoint(180, 300), false); assoc2.geometry.relative = true; assoc2.edge = true; bg.insert(assoc2); cardCell3.insertEdge(assoc2, true); var assoc3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;dashed=1;'); assoc3.geometry.setTerminalPoint(new mxPoint(290, 300), false); assoc3.geometry.relative = true; assoc3.edge = true; bg.insert(assoc3); cardCell4.insertEdge(assoc3, true); var assoc4 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;dashed=1;'); assoc4.geometry.setTerminalPoint(new mxPoint(20, 170), false); assoc4.geometry.setTerminalPoint(new mxPoint(220, 170), true); assoc4.geometry.relative = true; assoc4.edge = true; bg.insert(assoc4); var assoc5 = new mxCell('[if x < 10]', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;edgeStyle=none;verticalAlign=bottom;labelBackgroundColor=none;endSize=12;'); assoc5.geometry.setTerminalPoint(new mxPoint(70, 150), true); assoc5.geometry.setTerminalPoint(new mxPoint(180, 150), false); assoc5.geometry.relative = true; assoc5.geometry.x = -1; assoc5.edge = true; bg.insert(assoc5); var label1 = new mxCell('msg1', new mxGeometry(1, 0, 0, 0), 'align=right;html=1;verticalAlign=bottom;labelBackgroundColor=none;'); label1.geometry.relative = true; label1.setConnectable(false); label1.vertex = true; assoc5.insert(label1); var assoc6 = new mxCell('[else]', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;edgeStyle=none;verticalAlign=bottom;labelBackgroundColor=none;align=right;endSize=12;'); assoc6.geometry.setTerminalPoint(new mxPoint(70, 230), true); assoc6.geometry.setTerminalPoint(new mxPoint(180, 230), false); assoc6.geometry.relative = true; assoc6.geometry.x = -1; assoc6.edge = true; bg.insert(assoc6); var label2 = new mxCell('msg2', new mxGeometry(1, 0, 0, 0), 'align=right;html=1;verticalAlign=bottom;labelBackgroundColor=none;'); label2.geometry.relative = true; label2.setConnectable(false); label2.vertex = true; assoc6.insert(label2); bg.insert(assoc6); var assoc7 = new mxCell('msg3', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;edgeStyle=none;verticalAlign=bottom;labelBackgroundColor=none;endSize=12;'); assoc7.geometry.setTerminalPoint(new mxPoint(70, 290), true); assoc7.geometry.setTerminalPoint(new mxPoint(290, 290), false); assoc7.geometry.relative = true; assoc7.edge = true; bg.insert(assoc7); return sb.createVertexTemplateFromCells([bg], 350, 320, 'Combined Fragment'); }), this.addEntry(dt + 'state invariant configuration', function() { var cardCell = new mxCell(':Y', new mxGeometry(0, 0, 120, 50), 'shape=rect;html=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var cardCell2 = new mxCell('p==15', new mxGeometry(0, 100, 120, 50), s + 'cont;fontStyle=1;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;'); assoc1.geometry.relative = true; assoc1.edge = true; cardCell.insertEdge(assoc1, true); cardCell2.insertEdge(assoc1, false); var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;'); assoc2.geometry.setTerminalPoint(new mxPoint(60, 220), false); assoc2.geometry.relative = true; assoc2.geometry.x = 1; assoc2.edge = true; cardCell2.insertEdge(assoc2, true); return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc1, assoc2], 120, 220, 'State Invariant / Continuations'); }), this.addEntry(dt + 'coregion', function() { var cardCell = new mxCell('s[u]:B', new mxGeometry(0, 0, 100, 50), 'shape=rect;html=1;whiteSpace=wrap;align=center;'); cardCell.vertex = true; var cardCell2 = new mxCell('', new mxGeometry(40, 100, 20, 70), s + 'coregion;strokeWidth=3;'); cardCell2.vertex = true; var knot1 = new mxCell('', new mxGeometry(48, 118, 4, 4), 'shape=ellipse;html=1;fillColor=#000000;'); knot1.vertex = true; var knot2 = new mxCell('', new mxGeometry(48, 148, 4, 4), 'shape=ellipse;html=1;fillColor=#000000;'); knot2.vertex = true; var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;'); assoc1.geometry.relative = true; assoc1.edge = true; cardCell.insertEdge(assoc1, true); knot1.insertEdge(assoc1, false); var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;'); assoc2.geometry.relative = true; assoc2.edge = true; knot1.insertEdge(assoc2, true); knot2.insertEdge(assoc2, false); var assoc3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;'); assoc3.geometry.setTerminalPoint(new mxPoint(50, 220), false); assoc3.geometry.relative = true; assoc3.edge = true; knot2.insertEdge(assoc3, true); var assoc4 = new mxCell('m3', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;startArrow=open;verticalAlign=bottom;startSize=12;'); assoc4.geometry.setTerminalPoint(new mxPoint(250, 120), false); assoc4.geometry.relative = true; assoc4.edge = true; knot1.insertEdge(assoc4, true); var assoc5 = new mxCell('m2', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;startArrow=open;verticalAlign=bottom;startSize=12;'); assoc5.geometry.setTerminalPoint(new mxPoint(250, 150), false); assoc5.geometry.relative = true; assoc5.edge = true; knot2.insertEdge(assoc5, true); return sb.createVertexTemplateFromCells([cardCell, cardCell2, knot1, knot2, assoc1, assoc2, assoc3, assoc4, assoc5], 250, 220, 'Coregion'); }), this.addEntry(dt + 'creation destruction event', function() { var cardCell1 = new mxCell('b1:Block1', new mxGeometry(0, 0, 100, 30), 'shape=rect;html=1;whiteSpace=wrap;align=center;'); cardCell1.vertex = true; var cardCell2 = new mxCell('b2:Block2', new mxGeometry(150, 40, 100, 30), 'shape=rect;html=1;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; var cardCell3 = new mxCell('', new mxGeometry(190, 70, 20, 100), 'shape=rect;fillColor=#eeeeee;html=1;'); cardCell3.vertex = true; var knot1 = new mxCell('', new mxGeometry(48, 53, 4, 4), 'shape=ellipse;fillColor=#000000;html=1;'); knot1.vertex = true; var knot2 = new mxCell('', new mxGeometry(48, 148, 4, 4), 'shape=ellipse;fillColor=#000000;html=1;'); knot2.vertex = true; var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;dashed=1;endArrow=none;html=1;'); assoc1.geometry.relative = true; assoc1.edge = true; cardCell1.insertEdge(assoc1, true); knot1.insertEdge(assoc1, false); var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;dashed=1;endArrow=none;html=1;'); assoc2.geometry.relative = true; assoc2.edge = true; knot1.insertEdge(assoc2, true); knot2.insertEdge(assoc2, false); var assoc3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;dashed=1;endArrow=none;html=1;'); assoc3.geometry.setTerminalPoint(new mxPoint(50, 220), false); assoc3.geometry.relative = true; assoc3.edge = true; knot2.insertEdge(assoc3, true); var assoc4 = new mxCell('create', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=open;verticalAlign=bottom;endSize=12;html=1;'); assoc4.geometry.setTerminalPoint(new mxPoint(250, 120), false); assoc4.geometry.relative = true; assoc4.edge = true; knot1.insertEdge(assoc4, true); cardCell2.insertEdge(assoc4, false); var assoc5 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;endArrow=open;elbow=vertical;endSize=12;html=1;'); assoc5.geometry.setTerminalPoint(new mxPoint(250, 150), false); assoc5.geometry.relative = true; assoc5.edge = true; knot2.insertEdge(assoc5, true); cardCell3.insertEdge(assoc5, false); var assoc6 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=sysMLx;endSize=22;dashed=1;html=1;'); assoc6.geometry.setTerminalPoint(new mxPoint(200, 200), false); assoc6.geometry.relative = true; assoc6.edge = true; cardCell3.insertEdge(assoc6, true); return sb.createVertexTemplateFromCells([cardCell1, cardCell2, cardCell3, knot1, knot2, assoc1, assoc2, assoc3, assoc4, assoc5, assoc6], 250, 220, 'Creation/Destruction Event'); }), this.addEntry(dt + 'duration constraint', function() { var cardCell1 = new mxCell(':User', new mxGeometry(0, 0, 100, 50), 'shape=rect;html=1;whiteSpace=wrap;align=center;'); cardCell1.vertex = true; var cardCell2 = new mxCell('{d..3*d}', new mxGeometry(-20, 100, 100, 40), s + 'dimension;rotation=-90;verticalAlign=top;spacingTop=-5'); cardCell2.vertex = true; var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;dashed=1;endArrow=none;html=1;'); assoc1.geometry.setTerminalPoint(new mxPoint(50, 250), false); assoc1.geometry.relative = true; assoc1.edge = true; cardCell1.insertEdge(assoc1, true); var assoc2 = new mxCell('Code d=duration', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;verticalAlign=bottom;endSize=12;'); assoc2.geometry.setTerminalPoint(new mxPoint(50, 70), true); assoc2.geometry.setTerminalPoint(new mxPoint(250, 70), false); assoc2.geometry.relative = true; assoc2.edge = true; var assoc3 = new mxCell('CardOut {0..13}', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;verticalAlign=bottom;spacingBottom=5;endSize=12;'); assoc3.geometry.setTerminalPoint(new mxPoint(50, 170), false); assoc3.geometry.setTerminalPoint(new mxPoint(250, 170), true); assoc3.geometry.relative = true; assoc3.edge = true; var assoc4 = new mxCell('OK', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;verticalAlign=top;spacingTop=5;endSize=12;'); assoc4.geometry.setTerminalPoint(new mxPoint(50, 200), false); assoc4.geometry.setTerminalPoint(new mxPoint(250, 140), true); assoc4.geometry.relative = true; assoc4.edge = true; return sb.createVertexTemplateFromCells([cardCell1, cardCell2, assoc1, assoc2, assoc3, assoc4], 250, 250, 'Duration Constraint'); }), this.addEntry(dt + 'duration constraint', function() { var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;'); assoc1.geometry.setTerminalPoint(new mxPoint(20, 0), true); assoc1.geometry.setTerminalPoint(new mxPoint(20, 200), false); assoc1.geometry.relative = true; assoc1.edge = true; var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;'); assoc2.geometry.setTerminalPoint(new mxPoint(230, 0), true); assoc2.geometry.setTerminalPoint(new mxPoint(230, 200), false); assoc2.geometry.relative = true; assoc2.edge = true; var assoc3 = new mxCell('CardOut {0..13}', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;verticalAlign=bottom;spacingBottom=5;endSize=12;'); assoc3.geometry.setTerminalPoint(new mxPoint(20, 140), false); assoc3.geometry.setTerminalPoint(new mxPoint(230, 140), true); assoc3.geometry.relative = true; assoc3.edge = true; var assoc4 = new mxCell('OK', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;verticalAlign=top;spacingTop=5;endSize=12;'); assoc4.geometry.setTerminalPoint(new mxPoint(20, 170), false); assoc4.geometry.setTerminalPoint(new mxPoint(230, 110), true); assoc4.geometry.relative = true; assoc4.edge = true; var assoc5 = new mxCell('{t..t+3}', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;align=right;labelBackgroundColor=none;'); assoc5.geometry.setTerminalPoint(new mxPoint(20, 170), false); assoc5.geometry.setTerminalPoint(new mxPoint(0, 170), true); assoc5.geometry.relative = true; assoc5.geometry.x = -1; assoc5.edge = true; var assoc6 = new mxCell('t=now', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;align=left;labelBackgroundColor=none;'); assoc6.geometry.setTerminalPoint(new mxPoint(230, 140), false); assoc6.geometry.setTerminalPoint(new mxPoint(250, 140), true); assoc6.geometry.relative = true; assoc6.geometry.x = -1; assoc6.edge = true; return sb.createVertexTemplateFromCells([assoc1, assoc2, assoc3, assoc4, assoc5, assoc6], 250, 200, 'Time Constraint'); }), this.addEntry(dt + 'message', function() { var cardCell1 = new mxCell('b1:Block1', new mxGeometry(0, 0, 100, 30), 'shape=rect;html=1;whiteSpace=wrap;align=center;'); cardCell1.vertex = true; var cardCell2 = new mxCell('b2:Block2', new mxGeometry(150, 0, 100, 30), 'shape=rect;html=1;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;dashed=1;html=1;endArrow=none;'); assoc1.geometry.setTerminalPoint(new mxPoint(50, 250), false); assoc1.geometry.relative = true; assoc1.edge = true; cardCell1.insertEdge(assoc1, true); var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;dashed=1;html=1;endArrow=none;'); assoc2.geometry.setTerminalPoint(new mxPoint(200, 250), false); assoc2.geometry.relative = true; assoc2.edge = true; cardCell2.insertEdge(assoc2, true); var assoc3 = new mxCell('asyncSignal', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;verticalAlign=bottom;endSize=12;'); assoc3.geometry.setTerminalPoint(new mxPoint(50, 70), true); assoc3.geometry.setTerminalPoint(new mxPoint(200, 70), false); assoc3.geometry.relative = true; assoc3.edge = true; var assoc4 = new mxCell('syncCall(param)', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=block;verticalAlign=bottom;endSize=12;endFill=1;'); assoc4.geometry.setTerminalPoint(new mxPoint(50, 160), true); assoc4.geometry.setTerminalPoint(new mxPoint(200, 160), false); assoc4.geometry.relative = true; assoc4.edge = true; var assoc5 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;verticalAlign=bottom;endSize=12;endFill=1;dashed=1;'); assoc5.geometry.setTerminalPoint(new mxPoint(200, 200), true); assoc5.geometry.setTerminalPoint(new mxPoint(50, 200), false); assoc5.geometry.relative = true; assoc5.edge = true; return sb.createVertexTemplateFromCells([cardCell1, cardCell2, assoc1, assoc2, assoc3, assoc4, assoc5], 250, 250, 'Message'); }), this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=sysMLLost;endSize=12;verticalAlign=bottom;', 160, 0, 'lost', 'Lost Message', null, this.getTagsForStencil(gn, '', dt + 'lost message').join(' ')), this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;verticalAlign=bottom;startArrow=sysMLFound;startSize=12;', 160, 0, 'found', 'Found Message', null, this.getTagsForStencil(gn, '', dt + 'found message').join(' ')), this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=none;verticalAlign=bottom;dashed=1;strokeWidth=2;', 160, 0, '', 'General Ordering', null, this.getTagsForStencil(gn, '', dt + 'general ordering').join(' ')) ]; this.addPalette('sysmlInteractions', 'SysML / Interactions', expand || false, mxUtils.bind(this, function(content) { for (var i = 0; i < fns.length; i++) { content.appendChild(fns[i](content)); } })); }; Sidebar.prototype.addSysMLStateMachinesPalette = function(expand) { var s = 'shape=mxgraph.sysml.'; var gn = ''; var dt = 'sysml state machine '; var sb = this; var fns = [ this.addEntry(dt + 'choice pseudo state', function() { var cardCell = new mxCell('', new mxGeometry(0, 20, 40, 40), 'shape=rhombus;html=1;labelPosition=right;align=left;verticalAlign=middle'); cardCell.vertex = true; var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;align=right;verticalAlign=bottom;rounded=0;labelBackgroundColor=none;endArrow=open;endSize=12;'); edge1.geometry.setTerminalPoint(new mxPoint(20, 0), true); edge1.geometry.relative = true; edge1.edge = true; cardCell.insertEdge(edge1, false); var edge2 = new mxCell('[Id<=10]', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;align=right;endArrow=open;rounded=0;labelBackgroundColor=none;endSize=12;'); edge2.geometry.setTerminalPoint(new mxPoint(20, 100), false); edge2.geometry.relative = true; edge2.edge = true; cardCell.insertEdge(edge2, true); var edge3 = new mxCell('[Id>10]', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;align=left;endArrow=open;rounded=0;labelBackgroundColor=none;verticalAlign=bottom;endSize=12;'); edge3.geometry.setTerminalPoint(new mxPoint(150, 100), false); edge3.geometry.relative = true; edge3.edge = true; cardCell.insertEdge(edge3, true); return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3], 150, 100, 'Choice Pseudo State'); }), this.addEntry(dt + 'composite state', function() { var bg = new mxCell('CompositeState1', new mxGeometry(0, 0, 220, 190), s + 'compState;align=left;verticalAlign=top;spacingTop=-3;spacingLeft=18;strokeWidth=1;recursiveResize=0;'); bg.vertex = true; var cardCell2 = new mxCell('', new mxGeometry(20, 50, 20, 20), 'shape=ellipse;html=1;fillColor=#000000;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;'); cardCell2.vertex = true; bg.insert(cardCell2); var cardCell3 = new mxCell('State1', new mxGeometry(80, 60, 100, 40), 'shape=rect;html=1;rounded=1;whiteSpace=wrap;align=center;'); cardCell3.vertex = true; bg.insert(cardCell3); var cardCell4 = new mxCell('State2', new mxGeometry(80, 130, 100, 40), 'shape=rect;html=1;rounded=1;whiteSpace=wrap;align=center;'); cardCell4.vertex = true; bg.insert(cardCell4); var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;endSize=12;'); edge1.geometry.relative = true; edge1.edge = true; cardCell2.insertEdge(edge1, true); cardCell3.insertEdge(edge1, false); bg.insert(edge1); var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;endSize=12;'); edge2.geometry.relative = true; edge2.edge = true; cardCell3.insertEdge(edge2, true); cardCell4.insertEdge(edge2, false); bg.insert(edge2); return sb.createVertexTemplateFromCells([bg], 220, 190, 'Composite State'); }), this.createVertexTemplateEntry(s + 'compState;html=1;align=left;verticalAlign=top;spacingTop=-3;spacingLeft=18;', 200, 160, 'CompositeState1', 'Composite State', null, null, this.getTagsForStencil(gn, 'compState', dt + 'composite state').join(' ')), this.createVertexTemplateEntry('ellipse;html=1;labelPosition=left;verticalLabelPosition=bottom;spacingBottom=10;align=right;verticalAlign=bottom;resizable=0;', 20, 20, 'again', 'Entry Point', null, null, this.getTagsForStencil(gn, 'compState', dt + 'entry point').join(' ')), this.addEntry(dt + 'exit point', function() { var cardCell = new mxCell('aborted', new mxGeometry(0, 10, 20, 20), s + 'flowFinal;labelPosition=right;verticalLabelPosition=top;spacingTop=5;spacingLeft=3;align=left;verticalAlign=top;resizable=0;'); cardCell.vertex = true; return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Exit Point'); }), this.createVertexTemplateEntry(s + 'actFinal;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;', 40, 40, '', 'Final State', null, null, this.getTagsForStencil(gn, 'actFinal', dt + 'final state').join(' ')), this.createVertexTemplateEntry('shape=ellipse;html=1;fontSize=18;align=center;', 40, 40, 'H*', 'History, Deep Pseudo State', null, null, this.getTagsForStencil(gn, '', dt + 'history deep pseudo state').join(' ')), this.createVertexTemplateEntry('shape=ellipse;html=1;fontSize=18;align=center;', 40, 40, 'H', 'History, Shallow Pseudo State', null, null, this.getTagsForStencil(gn, '', dt + 'history shallow pseudo state').join(' ')), this.createVertexTemplateEntry('shape=ellipse;html=1;fillColor=#000000;fontSize=18;fontColor=#ffffff;', 40, 40, '', 'Initial Pseudo State', null, null, this.getTagsForStencil(gn, '', dt + 'initial pseudo state').join(' ')), this.createVertexTemplateEntry('shape=ellipse;html=1;fillColor=#000000;fontSize=18;fontColor=#ffffff;', 40, 40, '', 'Junction Pseudo State', null, null, this.getTagsForStencil(gn, '', dt + 'junction pseudo state').join(' ')), this.createVertexTemplateEntry(s + 'accEvent;flipH=1;whiteSpace=wrap;align=center;', 140, 40, 'Req(Id)', 'Receive Signal Action', null, null, this.getTagsForStencil(gn, 'accEvent', dt + 'receive signal action').join(' ')), this.createVertexTemplateEntry(s + 'sendSigAct;whiteSpace=wrap;align=center;', 140, 40, 'TurnOn', 'Send Signal Action', null, null, this.getTagsForStencil(gn, 'sendSigAct', dt + 'send signal action').join(' ')), this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;', 140, 40, 'MinorReq := Id;', 'Action', null, null, this.getTagsForStencil(gn, '', dt + 'action').join(' ')), this.createVertexTemplateEntry(s + 'region;align=left;verticalAlign=top;spacingTop=-3;spacingLeft=25;', 200, 160, 'S', 'Region', null, null, this.getTagsForStencil(gn, '', dt + 'region').join(' ')), this.createVertexTemplateEntry('shape=rect;rounded=1;html=1;whiteSpace=wrap;align=center;', 100, 40, 'State1', 'Simple State', null, null, this.getTagsForStencil(gn, '', dt + 'simple state').join(' ')), this.createVertexTemplateEntry(s + 'simpleState;html=1;overflow=fill;whiteSpace=wrap;align=center;', 200, 100, '' + 'State2
entry / entryActivity
do / doActivity
exit / exitActivity
' +
'<<actor>>
' +
'ActorName
' +
'<<allocated>>
' +
'Named
Element
' + 'BlockName
allocatedFrom
' + '<<elementType>> ElementName
allocatedTo
' + '<<elementType>> ElementName
', 'Allocation derived properties (Block)', null, null, this.getTagsForStencil(gn, '', dt + 'derived property block').join(' ')), this.addEntry(dt + 'derived property comment', function() { var cardCell = new mxCell( '' +
'allocatedFrom
' +
'<<elementType>> ElementName
' +
'allocatedTo
' +
'<<elementType>> ElementName
' +
'<<block>>
' +
'BlockName
' + 'PartName
allocatedFrom
' + '<<elementType>> ElementName
', new mxGeometry(20, 60, 210, 80), 'shape=rect;html=1;overflow=fill;strokeWidth=2;whiteSpace=wrap;align=center;'); cardCell2.vertex = true; bg.insert(cardCell2); return sb.createVertexTemplateFromCells([bg], 250, 160, 'Allocation derived properties (Internal Block Diagram)'); }), this.createVertexTemplateEntry(s + 'simpleState;html=1;overflow=fill;whiteSpace=wrap;align=center;', 200, 100, '' + 'ActivityName
allocatedTo
' + '<<elementType>> ElementName
', 'Allocation Derived Properties (Activity Diagram)', null, null, this.getTagsForStencil(gn, '', dt + 'derived property activity diagram').join(' ')), this.addEntry(dt + 'activity partition', function() { var cardCell = new mxCell( '' +
'<<allocate>>
:ElementName
req ReqDiagram
', 'Requirement Diagram', null, null, this.getTagsForStencil(gn, 'package', dt + 'diagram').join(' ')), this.createVertexTemplateEntry('shape=rect;overflow=fill;html=1;whiteSpace=wrap;align=center;', 200, 100, '' +
'<<requirement>>
Requirement Name
text="The system shall do"
Id="62j32."
' +
'<<testCase>>
TestCaseName
' +
'<<stereotypeName>>
' +
'PropertyName=ValueString
' +
'MultiPropertyName=ValueString, ValueString
' +
'BooleanPropertyName
' +
'<<stereotypeName>>
' +
'PropertyName=ValueString
' +
'MultiPropertyName=ValueString, ValueString
' +
'BooleanPropertyName
' + 'NodeName
' +
'<<stereotypeName>>{PropertyName=ValueString}ElementName
' +
'<<stereotypeName>>{PropertyName=ValueString};
' +
'BooleanPropertyName
' +
'ElementName
' + '<<stereotypeName>>NodeName
' +
'<<stereotypeName>>
PropertyName=ValueString
' +
'MultiPropertyName=ValueString, ValueString
' +
'BooleanPropertyName