Sidebar-Sysml.js 217 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683
  1. (function()
  2. {
  3. /**
  4. * Adds the sysML palettes to the sidebar.
  5. */
  6. Sidebar.prototype.addSysMLModelElementsPalette = function(expand)
  7. {
  8. var gn = '';
  9. var dt = 'sysml model element ';
  10. var sb = this;
  11. var s = 'html=1;shape=mxgraph.sysml.';
  12. var fns = [
  13. this.addEntry(dt + 'comment', function()
  14. {
  15. var cardCell = new mxCell('Comment text', new mxGeometry(0, 40, 150, 40), 'shape=note;size=15;align=left;spacingLeft=10;html=1;whiteSpace=wrap;');
  16. cardCell.vertex = true;
  17. var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;exitX=0.4;exitY=0;dashed=1;html=1;');
  18. assoc1.geometry.setTerminalPoint(new mxPoint(20, 0), false);
  19. assoc1.geometry.relative = true;
  20. assoc1.geometry.x = 1;
  21. assoc1.edge = true;
  22. cardCell.insertEdge(assoc1, true);
  23. var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;exitX=0.8;exitY=0;dashed=1;html=1;');
  24. assoc2.geometry.setTerminalPoint(new mxPoint(180, 0), false);
  25. assoc2.geometry.relative = true;
  26. assoc2.geometry.x = 1;
  27. assoc2.edge = true;
  28. cardCell.insertEdge(assoc2, true);
  29. return sb.createVertexTemplateFromCells([cardCell, assoc1, assoc2], 180, 80, 'Comment');
  30. }),
  31. this.addEntry(dt + 'constraint note', function()
  32. {
  33. 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;');
  34. cardCell.vertex = true;
  35. var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;exitX=0.4;exitY=0;dashed=1;html=1;');
  36. assoc1.geometry.setTerminalPoint(new mxPoint(20, 0), false);
  37. assoc1.geometry.relative = true;
  38. assoc1.geometry.x = 1;
  39. assoc1.edge = true;
  40. cardCell.insertEdge(assoc1, true);
  41. var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;exitX=0.8;exitY=0;dashed=1;html=1;');
  42. assoc2.geometry.setTerminalPoint(new mxPoint(180, 0), false);
  43. assoc2.geometry.relative = true;
  44. assoc2.geometry.x = 1;
  45. assoc2.edge = true;
  46. cardCell.insertEdge(assoc2, true);
  47. return sb.createVertexTemplateFromCells([cardCell, assoc1, assoc2], 180, 80, 'Constraint Note');
  48. }),
  49. this.addEntry(dt + 'constraint textual note', function()
  50. {
  51. 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;');
  52. cardCell.vertex = true;
  53. 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');
  54. label1.setConnectable(false);
  55. label1.vertex = true;
  56. cardCell.insert(label1);
  57. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Constraint Textual Note');
  58. }),
  59. this.addEntry(dt + 'constraint textual note', function()
  60. {
  61. 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;');
  62. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  63. assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false);
  64. assoc.geometry.relative = true;
  65. assoc.edge = true;
  66. 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;');
  67. sourceLabel.geometry.relative = true;
  68. sourceLabel.setConnectable(false);
  69. sourceLabel.vertex = true;
  70. assoc.insert(sourceLabel);
  71. return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Constraint Textual Note');
  72. }),
  73. 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;',
  74. 160, 90, 'Model', 'Model', null, null, this.getTagsForStencil(gn, '', dt + 'model').join(' ')),
  75. this.addEntry(dt + 'package diagram', function()
  76. {
  77. var bg = new mxCell('<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>pkg</b> Name</p>', new mxGeometry(0, 0, 300, 120), s + 'package;xSize=90;align=left;spacingLeft=10;overflow=fill;strokeWidth=1;recursiveResize=0;');
  78. bg.vertex = true;
  79. 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;');
  80. cardCell2.vertex = true;
  81. bg.insert(cardCell2);
  82. 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;');
  83. cardCell3.vertex = true;
  84. bg.insert(cardCell3);
  85. var assoc1 = new mxCell('&lt;&lt;import&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=open;dashed=1;verticalAlign=top;labelBackgroundColor=none;endSize=12;html=1;');
  86. assoc1.geometry.relative = true;
  87. assoc1.edge = true;
  88. cardCell2.insertEdge(assoc1, true);
  89. cardCell3.insertEdge(assoc1, false);
  90. bg.insert(assoc1);
  91. return sb.createVertexTemplateFromCells([bg], 300, 120, 'Package Diagram');
  92. }),
  93. this.addEntry(dt + 'package tab', function()
  94. {
  95. 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;');
  96. bg.vertex = true;
  97. 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;');
  98. cardCell2.vertex = true;
  99. bg.insert(cardCell2);
  100. 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;');
  101. cardCell3.vertex = true;
  102. bg.insert(cardCell3);
  103. var assoc1 = new mxCell('&lt;&lt;import&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=open;dashed=1;verticalAlign=top;labelBackgroundColor=none;endSize=12;html=1;');
  104. assoc1.geometry.relative = true;
  105. assoc1.edge = true;
  106. cardCell2.insertEdge(assoc1, true);
  107. cardCell3.insertEdge(assoc1, false);
  108. bg.insert(assoc1);
  109. return sb.createVertexTemplateFromCells([bg], 300, 120, 'Package (Tab)');
  110. }),
  111. this.createVertexTemplateEntry('shape=folder;tabWidth=80;tabHeight=20;tabPosition=left;strokeWidth=2;html=1;whiteSpace=wrap;align=center;',
  112. 160, 90, 'Package1', 'Package (Name)', null, null, this.getTagsForStencil(gn, '', dt + 'package name').join(' ')),
  113. this.createVertexTemplateEntry('shape=note;size=15;align=left;spacingLeft=10;html=1;whiteSpace=wrap;',
  114. 160, 60, '&lt;&lt;problem&gt;&gt;\nDescription', 'Problem', null, null, this.getTagsForStencil(gn, '', dt + 'problem').join(' ')),
  115. this.createVertexTemplateEntry('shape=note;size=15;align=left;spacingLeft=10;html=1;whiteSpace=wrap;',
  116. 160, 60, '&lt;&lt;rationale&gt;&gt;\nDescription', 'Rationale', null, null, this.getTagsForStencil(gn, '', dt + 'rationale').join(' ')),
  117. this.createVertexTemplateEntry('shape=folder;tabWidth=80;tabHeight=20;tabPosition=left;html=1;whiteSpace=wrap;align=center;',
  118. 160, 80, '\n&lt;&lt;view&gt;&gt;\n{viewpoint = View name}\nName', 'View (Name)', null, null, this.getTagsForStencil(gn, '', dt + 'view name').join(' ')),
  119. this.createVertexTemplateEntry('shape=folder;html=1;tabWidth=80;tabHeight=40;tabPosition=left;align=left;verticalAlign=top;spacingLeft=10;whiteSpace=wrap;',
  120. 160, 120, '&lt;&lt;view&gt;&gt;\nName', 'View', null, null, this.getTagsForStencil(gn, '', dt + 'view').join(' ')),
  121. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 120, 140,
  122. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  123. '&lt;&lt;viewpoint&gt;&gt;<br/>' +
  124. '<b>Name</b></p><hr/>' +
  125. '<p style="margin:0px;margin-left:8px;text-align:left;">' +
  126. 'stakeholders="..."<br/>' +
  127. 'purpose="..."<br>' +
  128. 'concerns="..."<br>' +
  129. 'languages="..."<br>' +
  130. 'methods="..."</p>',
  131. 'Viewpoint', null, null, this.getTagsForStencil(gn, '', dt + 'viewpoint').join(' ')),
  132. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
  133. 160, 0, '&lt;&lt;conform&gt;&gt;', 'Conform', null, this.getTagsForStencil(gn, '', dt + 'conform').join(' ')),
  134. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
  135. 160, 0, '&lt;&lt;stereotype1&gt;&gt;\ndependency1', 'Dependency', null, this.getTagsForStencil(gn, '', dt + 'dependency').join(' ')),
  136. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
  137. 160, 0, '&lt;&lt;import&gt;&gt;', 'Public Package Import', null, this.getTagsForStencil(gn, '', dt + 'public package import').join(' ')),
  138. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
  139. 160, 0, '&lt;&lt;access&gt;&gt;', 'Private Package Import', null, this.getTagsForStencil(gn, '', dt + 'private package import').join(' ')),
  140. this.createEdgeTemplateEntry('edgeStyle=none;html=1;' + mxConstants.STYLE_STARTARROW + '=sysMLPackCont;startSize=12;' + mxConstants.STYLE_ENDARROW + '=none;',
  141. 160, 0, '', 'Package Containment', null, this.getTagsForStencil(gn, '', dt + 'package containment').join(' ')),
  142. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endSize=12;endArrow=block;endFill=0;dashed=1;',
  143. 160, 0, '', 'Realization', null, this.getTagsForStencil(gn, '', dt + 'realization').join(' ')),
  144. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
  145. 160, 0, '&lt;&lt;refine&gt;&gt;', 'Refine', null, this.getTagsForStencil(gn, '', dt + 'refine').join(' '))
  146. ];
  147. this.addPalette('sysmlModel Elements', 'SysML / Model Elements', expand || false, mxUtils.bind(this, function(content)
  148. {
  149. for (var i = 0; i < fns.length; i++)
  150. {
  151. content.appendChild(fns[i](content));
  152. }
  153. }));
  154. };
  155. Sidebar.prototype.addSysMLBlocksPalette = function(expand)
  156. {
  157. var gn = '';
  158. var dt = 'sysml block ';
  159. var sb = this;
  160. var s = 'html=1;strokeWidth=1;shape=mxgraph.sysml.';
  161. var fns =
  162. [
  163. this.addEntry(dt + 'block definition diagram', function()
  164. {
  165. var bg = new mxCell('<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>bdd</b> Namespace1</p>', new mxGeometry(0, 0, 300, 100), s + 'package;labelX=120;align=left;spacingLeft=10;overflow=fill;recursiveResize=0;');
  166. bg.vertex = true;
  167. var cardCell2 = new mxCell('Block1', new mxGeometry(15, 30, 100, 50), 'shape=rect;fontStyle=1;html=1;whiteSpace=wrap;align=center;');
  168. cardCell2.vertex = true;
  169. bg.insert(cardCell2);
  170. var cardCell3 = new mxCell('Block2', new mxGeometry(190, 30, 100, 50), 'shape=rect;fontStyle=1;html=1;whiteSpace=wrap;align=center;');
  171. cardCell3.vertex = true;
  172. bg.insert(cardCell3);
  173. 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;');
  174. assoc.geometry.relative = true;
  175. assoc.geometry.x=1;
  176. assoc.edge = true;
  177. bg.insert(assoc);
  178. var sourceLabel = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  179. sourceLabel.geometry.relative = true;
  180. sourceLabel.setConnectable(false);
  181. sourceLabel.vertex = true;
  182. assoc.insert(sourceLabel);
  183. var targetLabel = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  184. targetLabel.geometry.relative = true;
  185. targetLabel.setConnectable(false);
  186. targetLabel.vertex = true;
  187. assoc.insert(targetLabel);
  188. cardCell2.insertEdge(assoc, true);
  189. cardCell3.insertEdge(assoc, false);
  190. return sb.createVertexTemplateFromCells([bg], 300, 100, 'Block Definition Diagram');
  191. }),
  192. this.addEntry(dt + 'relation', function()
  193. {
  194. 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;');
  195. assoc.geometry.relative = true;
  196. assoc.geometry.x=1;
  197. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  198. assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false);
  199. assoc.edge = true;
  200. var sourceLabel = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  201. sourceLabel.geometry.relative = true;
  202. sourceLabel.setConnectable(false);
  203. sourceLabel.vertex = true;
  204. assoc.insert(sourceLabel);
  205. var targetLabel = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  206. targetLabel.geometry.relative = true;
  207. targetLabel.setConnectable(false);
  208. targetLabel.vertex = true;
  209. assoc.insert(targetLabel);
  210. return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Relation');
  211. }),
  212. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;verticalAlign=top;align=left;whiteSpace=wrap;', 220, 340,
  213. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  214. '&lt;&lt;block&gt;&gt;<br/>' +
  215. '{encapsulated}<br/>' +
  216. '<b>Block1</b></p><hr/>' +
  217. '<p style="font-size:10px;margin:0px;text-align:center;"><i>constraints</i></p>' +
  218. '<p style="margin:0px;margin-left:8px;text-align:left;">{x &gt; y}</p><hr/>' +
  219. '<p style="font-size:10px;margin:0px;text-align:center;"><i>operations</i></p>' +
  220. '<p style="margin:0px;margin-left:8px;text-align:left;">operation1 (p1 : Type1) : Type2</p><hr/>' +
  221. '<p style="font-size:10px;margin:0px;text-align:center;"><i>parts</i></p>' +
  222. '<p style="margin:0px;margin-left:8px;text-align:left;">property1 : Block2</p><hr/>' +
  223. '<p style="font-size:10px;margin:0px;text-align:center;"><i>references</i></p>' +
  224. '<p style="margin:0px;margin-left:8px;text-align:left;">property2 : Block3 [0..*] {ordered}</p><hr/>' +
  225. '<p style="font-size:10px;margin:0px;text-align:center;"><i>values</i></p>' +
  226. '<p style="margin:0px;margin-left:8px;text-align:left;">property3 : Integer = 99 {readOnly}<br/>property4 : Real = 10.0</p><hr/>' +
  227. '<p style="font-size:10px;margin:0px;text-align:center;"><i>properties</i></p>' +
  228. '<p style="margin:0px;margin-left:8px;text-align:left;">property5 : Type1</p>',
  229. 'Block', null, null, this.getTagsForStencil(gn, '', dt + 'block').join(' ')),
  230. this.createVertexTemplateEntry('shape=umlActor;html=1;verticalLabelPosition=bottom;verticalAlign=top;align=center;',
  231. 30, 60, 'ActorName', 'Actor', null, null, this.getTagsForStencil(gn, '', dt + 'actor').join(' ')),
  232. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 160, 80,
  233. '<p>&lt;&lt;actor&gt;&gt;<br/><b>ActorName</b></p>',
  234. 'Actor', null, null, this.getTagsForStencil(gn, '', dt + 'actor').join(' ')),
  235. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 180,
  236. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  237. '&lt;&lt;valueType&gt;&gt;<br/>' +
  238. '<b>ValueType1</b></p><hr/>' +
  239. '<p style="font-size:10px;margin:0px;text-align:center;"><i>operations</i></p>' +
  240. '<p style="margin:0px;margin-left:8px;text-align:left;">operation1 (p1 : Type1) : Type2</p><hr/>' +
  241. '<p style="font-size:10px;margin:0px;text-align:center;"><i>properties</i></p>' +
  242. '<p style="margin:0px;margin-left:8px;text-align:left;">property1 : Type3</p><hr/>' +
  243. '<p style="margin:0px;margin-left:8px;text-align:center;">&lt;&lt;valueType&gt;&gt;</p>' +
  244. '<p style="margin:0px;margin-left:8px;text-align:left;">unit = UnitName</p>',
  245. 'ValueType', null, null, this.getTagsForStencil(gn, '', dt + 'value type valuetype').join(' ')),
  246. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 80,
  247. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  248. '&lt;&lt;enumeration&gt;&gt;<br/>' +
  249. '<b>Enumeration1</b></p><hr/>' +
  250. '<p style="margin:0px;margin-left:8px;text-align:left;">literalName1<br/>literalName2</p>',
  251. 'Enumeration', null, null, this.getTagsForStencil(gn, '', dt + 'enumeration').join(' ')),
  252. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 80, 40,
  253. '<p style="margin:13px;"><b><i>Name</i></b></p>',
  254. 'Abstract Definition', null, null, this.getTagsForStencil(gn, '', dt + 'abstract definition').join(' ')),
  255. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 80, 40,
  256. '<p style="margin:5px;">{abstract}<br/><b><i>Name</i></b></p>',
  257. 'Abstract Definition', null, null, this.getTagsForStencil(gn, '', dt + 'abstract definition').join(' ')),
  258. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 80, 40,
  259. '<p style="margin:5px;"><b><i>Name</i></b><br/>{abstract}</p>',
  260. 'Abstract Definition', null, null, this.getTagsForStencil(gn, '', dt + 'abstract definition').join(' ')),
  261. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 200, 80,
  262. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  263. '&lt;&lt;stereotype1&gt;&gt;<br/>' +
  264. '<b>Block1</b></p><hr/>' +
  265. '<p style="margin:0px;margin-left:8px;text-align:center;">&lt;&lt;stereotype1&gt;&gt;</p>' +
  266. '<p style="margin:0px;margin-left:8px;text-align:left;">property1 = value</p>',
  267. 'Stereotype Property Compartment', null, null, this.getTagsForStencil(gn, '', dt + 'stereotype property compartment').join(' ')),
  268. this.addEntry(dt + 'namespace compartment', function()
  269. {
  270. var bg = new mxCell(
  271. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  272. '<b>Block1</b></p><hr/>' +
  273. '<p style="font-size:10px;margin:0px;text-align:center;"><i>namespace</i></p>',
  274. new mxGeometry(0, 0, 300, 120), 'shape=rect;align=left;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
  275. bg.vertex = true;
  276. var cardCell2 = new mxCell('Block2', new mxGeometry(15, 60, 100, 50), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  277. cardCell2.vertex = true;
  278. bg.insert(cardCell2);
  279. var cardCell3 = new mxCell('Block3', new mxGeometry(190, 60, 100, 50), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  280. cardCell3.vertex = true;
  281. bg.insert(cardCell3);
  282. 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;');
  283. assoc.geometry.relative = true;
  284. assoc.geometry.x=1;
  285. assoc.edge = true;
  286. bg.insert(assoc);
  287. var sourceLabel = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  288. sourceLabel.geometry.relative = true;
  289. sourceLabel.setConnectable(false);
  290. sourceLabel.vertex = true;
  291. assoc.insert(sourceLabel);
  292. var targetLabel = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  293. targetLabel.geometry.relative = true;
  294. targetLabel.setConnectable(false);
  295. targetLabel.vertex = true;
  296. assoc.insert(targetLabel);
  297. cardCell2.insertEdge(assoc, true);
  298. cardCell3.insertEdge(assoc, false);
  299. return sb.createVertexTemplateFromCells([bg], 300, 100, 'Namespace Compartment');
  300. }),
  301. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 250, 100,
  302. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  303. '<b>Block1</b></p><hr/>' +
  304. '<p style="font-size:10px;margin:0px;text-align:center;"><i>namespace</i></p>',
  305. 'Block', null, null, this.getTagsForStencil(gn, '', dt + 'block').join(' ')),
  306. this.addEntry(dt + 'structure compartment', function()
  307. {
  308. var bg = new mxCell(
  309. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  310. '<b>Block1</b></p><hr/>' +
  311. '<p style="font-size:10px;margin:0px;text-align:center;"><i>structure</i></p>',
  312. new mxGeometry(0, 0, 300, 120), 'shape=rect;align=left;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
  313. bg.vertex = true;
  314. var cardCell2 = new mxCell('Block2', new mxGeometry(15, 60, 100, 50), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  315. cardCell2.vertex = true;
  316. bg.insert(cardCell2);
  317. var cardCell3 = new mxCell('Block3', new mxGeometry(190, 60, 100, 50), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  318. cardCell3.vertex = true;
  319. bg.insert(cardCell3);
  320. var assoc = new mxCell('c1:', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=none;');
  321. assoc.geometry.relative = true;
  322. assoc.edge = true;
  323. bg.insert(assoc);
  324. var targetLabel = new mxCell('e1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  325. targetLabel.geometry.relative = true;
  326. targetLabel.setConnectable(false);
  327. targetLabel.vertex = true;
  328. assoc.insert(targetLabel);
  329. var targetLabel2 = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  330. targetLabel2.geometry.relative = true;
  331. targetLabel2.setConnectable(false);
  332. targetLabel2.vertex = true;
  333. assoc.insert(targetLabel2);
  334. cardCell2.insertEdge(assoc, true);
  335. cardCell3.insertEdge(assoc, false);
  336. return sb.createVertexTemplateFromCells([bg], 300, 100, 'Structure Compartment');
  337. }),
  338. this.addEntry(dt + 'relation', function()
  339. {
  340. 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;');
  341. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  342. assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false);
  343. assoc.geometry.relative = true;
  344. assoc.edge = true;
  345. var sourceLabel = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  346. sourceLabel.geometry.relative = true;
  347. sourceLabel.setConnectable(false);
  348. sourceLabel.vertex = true;
  349. assoc.insert(sourceLabel);
  350. var targetLabel = new mxCell('e1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  351. targetLabel.geometry.relative = true;
  352. targetLabel.setConnectable(false);
  353. targetLabel.vertex = true;
  354. assoc.insert(targetLabel);
  355. return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Relation');
  356. }),
  357. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 60,
  358. '<p style="margin:0px;margin-top:10px;text-align:center;">' +
  359. '&lt;&lt;unit&gt;&gt;<br/>' +
  360. '<p style="margin:0px;margin-left:8px;text-align:center;">{quantityKind = QuantityKind1}<br/>' +
  361. '<b>Unit1</b></p>',
  362. 'Unit', null, null, this.getTagsForStencil(gn, '', dt + 'unit').join(' ')),
  363. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 80,
  364. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  365. '<b>Unit1</b></p><hr/>' +
  366. '<p style="margin:0px;margin-left:8px;text-align:center;">&lt;&lt;unit&gt;&gt;<br/>' +
  367. '{quantityKind = QuantityKind1}</p>',
  368. 'Unit', null, null, this.getTagsForStencil(gn, '', dt + 'unit').join(' ')),
  369. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 60,
  370. '<p style="margin:0px;margin-top:10px;text-align:center;">' +
  371. '&lt;&lt;quantityKind&gt;&gt;<br/>' +
  372. '<p style="margin:0px;margin-left:8px;text-align:center;"><b>QuantityKind1</b></p>',
  373. 'Quantity Kind', null, null, this.getTagsForStencil(gn, '', dt + 'quantity kind').join(' ')),
  374. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;fontSize=15;whiteSpace=wrap;', 70, 30,
  375. '<p style="margin:0px;margin-top:4px;text-align:center;text-decoration:underline;">' +
  376. '<B>i1: Type1</b><br/>',
  377. 'Instance Specification', null, null, this.getTagsForStencil(gn, '', dt + 'instance specification').join(' ')),
  378. this.addEntry(dt + 'instance specification', function()
  379. {
  380. var cardCell = new mxCell(
  381. '<p style="margin:0px;margin-top:4px;text-align:center;text-decoration:underline;">' +
  382. '<B>i1: Type1</b><br/>',
  383. new mxGeometry(0, 0, 80, 30), 'shape=rect;html=1;overflow=fill;fontSize=15;whiteSpace=wrap;');
  384. cardCell.vertex = true;
  385. var cardCell2 = new mxCell(
  386. '<p style="margin:0px;margin-top:4px;text-align:center;text-decoration:underline;">' +
  387. '<B>i2: Type2</b><br/>',
  388. new mxGeometry(200, 0, 80, 30), 'shape=rect;html=1;overflow=fill;fontSize=15;whiteSpace=wrap;');
  389. cardCell2.vertex = true;
  390. var edge1 = new mxCell('&lt;&lt;allocate&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'rounded=0;html=1;verticalAlign=top;labelBackgroundColor=none;endArrow=open;dashed=1;endSize=12;');
  391. edge1.geometry.relative = true;
  392. edge1.edge = true;
  393. cardCell.insertEdge(edge1, true);
  394. cardCell2.insertEdge(edge1, false);
  395. var assoc = new mxCell('A1', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=open;endSize=12;edgeStyle=orthogonalEdgeStyle;');
  396. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  397. assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false);
  398. assoc.geometry.relative = true;
  399. assoc.edge = true;
  400. var targetLabel = new mxCell('p3', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  401. targetLabel.geometry.relative = true;
  402. targetLabel.setConnectable(false);
  403. targetLabel.vertex = true;
  404. assoc.insert(targetLabel);
  405. cardCell.insertEdge(assoc, true);
  406. cardCell2.insertEdge(assoc, false);
  407. return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc], 280, 30, 'Instance Specification');
  408. }),
  409. this.addEntry(dt + 'relation', function()
  410. {
  411. var assoc = new mxCell('A1', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=open;endSize=12;edgeStyle=orthogonalEdgeStyle;');
  412. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  413. assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false);
  414. assoc.geometry.relative = true;
  415. assoc.edge = true;
  416. var targetLabel = new mxCell('p3', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  417. targetLabel.geometry.relative = true;
  418. targetLabel.setConnectable(false);
  419. targetLabel.vertex = true;
  420. assoc.insert(targetLabel);
  421. return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Relation');
  422. }),
  423. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 120, 60,
  424. '<p style="margin:0px;margin-top:10px;text-align:center;text-decoration:underline;">' +
  425. 'instance1: Type1<br/></p>' +
  426. '<p style="margin:0px;margin-top:4px;text-align:center;">value1</p>',
  427. 'Instance Specification', null, null, this.getTagsForStencil(gn, '', dt + 'instance specification').join(' ')),
  428. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 160, 80,
  429. '<p style="margin:0px;margin-top:10px;text-align:center;text-decoration:underline;">' +
  430. 'instance1: Type1<br/></p><hr/>' +
  431. '<p style="margin:0px;margin-top:4px;margin-left:4px;text-align:left;">property1 = 10<br/>property2 = "value"</p>',
  432. 'Instance Specification', null, null, this.getTagsForStencil(gn, '', dt + 'instance specification').join(' ')),
  433. this.addEntry(dt + 'instance specification', function()
  434. {
  435. var bg = new mxCell(
  436. '<p style="margin:0px;margin-top:5px;text-align:center;text-decoration:underline;">' +
  437. ': Type1<hr/></p>',
  438. new mxGeometry(0, 0, 200, 180), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
  439. bg.vertex = true;
  440. var cardCell2 = new mxCell(
  441. '<p style="margin:0px;margin-top:5px;text-align:center;text-decoration:underline;">' +
  442. 'instance1 / property1: Type2<hr/></p>',
  443. new mxGeometry(10, 30, 180, 140), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;');
  444. cardCell2.vertex = true;
  445. bg.insert(cardCell2);
  446. var cardCell3 = new mxCell(
  447. '<p style="margin:0px;margin-top:5px;text-align:center;text-decoration:underline;">' +
  448. 'instance2 / property2:<br/>Type3<hr/></p>' +
  449. '<p style="margin:0px;margin-top:4px;margin-left:4px;text-align:left;">property1 = 10<br/>property2 = "value"</p>',
  450. new mxGeometry(20, 60, 160, 100), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;');
  451. cardCell3.vertex = true;
  452. bg.insert(cardCell3);
  453. return sb.createVertexTemplateFromCells([bg], 200, 180, 'Instance Specification');
  454. }),
  455. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 160,
  456. '<p style="margin:0px;margin-top:4px;text-align:center;text-decoration:underline;">' +
  457. ': Type1</p><hr/>',
  458. 'Instance Specification', null, null, this.getTagsForStencil(gn, '', dt + 'instance specification').join(' ')),
  459. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
  460. 160, 0, '&lt;&lt;stereotype&gt;&gt;\ndependency1', 'Dependency', null, null, this.getTagsForStencil(gn, '', dt + 'dependency').join(' ')),
  461. this.addEntry(dt + 'reference association', function()
  462. {
  463. var assoc = new mxCell('association1', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=open;endSize=12;edgeStyle=orthogonalEdgeStyle;');
  464. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  465. assoc.geometry.setTerminalPoint(new mxPoint(250, 0), false);
  466. assoc.geometry.relative = true;
  467. assoc.edge = true;
  468. var sourceLabel = new mxCell('0..1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  469. sourceLabel.geometry.relative = true;
  470. sourceLabel.setConnectable(false);
  471. sourceLabel.vertex = true;
  472. assoc.insert(sourceLabel);
  473. var targetLabel = new mxCell('{ordered} 1..*', new mxGeometry(0.9, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  474. targetLabel.geometry.relative = true;
  475. targetLabel.setConnectable(false);
  476. targetLabel.vertex = true;
  477. assoc.insert(targetLabel);
  478. var targetLabel2 = new mxCell('property1', new mxGeometry(0.9, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  479. targetLabel2.geometry.relative = true;
  480. targetLabel2.setConnectable(false);
  481. targetLabel2.vertex = true;
  482. assoc.insert(targetLabel2);
  483. return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Reference Association');
  484. }),
  485. this.addEntry(dt + 'reference association', function()
  486. {
  487. var assoc = new mxCell('association1', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=orthogonalEdgeStyle;');
  488. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  489. assoc.geometry.setTerminalPoint(new mxPoint(250, 0), false);
  490. assoc.geometry.relative = true;
  491. assoc.edge = true;
  492. var sourceLabel = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  493. sourceLabel.geometry.relative = true;
  494. sourceLabel.setConnectable(false);
  495. sourceLabel.vertex = true;
  496. assoc.insert(sourceLabel);
  497. var sourceLabel2 = new mxCell('property2', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  498. sourceLabel2.geometry.relative = true;
  499. sourceLabel2.setConnectable(false);
  500. sourceLabel2.vertex = true;
  501. assoc.insert(sourceLabel2);
  502. var targetLabel = new mxCell('{ordered} 0..*', new mxGeometry(0.9, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  503. targetLabel.geometry.relative = true;
  504. targetLabel.setConnectable(false);
  505. targetLabel.vertex = true;
  506. assoc.insert(targetLabel);
  507. var targetLabel2 = new mxCell('property1', new mxGeometry(0.9, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  508. targetLabel2.geometry.relative = true;
  509. targetLabel2.setConnectable(false);
  510. targetLabel2.vertex = true;
  511. assoc.insert(targetLabel2);
  512. return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Reference Association');
  513. }),
  514. this.addEntry(dt + 'part association', function()
  515. {
  516. var assoc = new mxCell('association1', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=open;endSize=12;edgeStyle=orthogonalEdgeStyle;startFill=1;startSize=12;startArrow=diamondThin;');
  517. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  518. assoc.geometry.setTerminalPoint(new mxPoint(250, 0), false);
  519. assoc.geometry.relative = true;
  520. assoc.edge = true;
  521. var sourceLabel = new mxCell('0..1', new mxGeometry(-0.9, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  522. sourceLabel.geometry.relative = true;
  523. sourceLabel.setConnectable(false);
  524. sourceLabel.vertex = true;
  525. assoc.insert(sourceLabel);
  526. var targetLabel = new mxCell('{ordered} 1..*', new mxGeometry(0.9, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  527. targetLabel.geometry.relative = true;
  528. targetLabel.setConnectable(false);
  529. targetLabel.vertex = true;
  530. assoc.insert(targetLabel);
  531. var targetLabel2 = new mxCell('property1', new mxGeometry(0.9, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  532. targetLabel2.geometry.relative = true;
  533. targetLabel2.setConnectable(false);
  534. targetLabel2.vertex = true;
  535. assoc.insert(targetLabel2);
  536. return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Part Association');
  537. }),
  538. this.addEntry(dt + 'part association', function()
  539. {
  540. var assoc = new mxCell('association1', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=orthogonalEdgeStyle;startFill=1;startSize=12;startArrow=diamondThin;');
  541. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  542. assoc.geometry.setTerminalPoint(new mxPoint(250, 0), false);
  543. assoc.geometry.relative = true;
  544. assoc.edge = true;
  545. var sourceLabel = new mxCell('1', new mxGeometry(-0.9, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  546. sourceLabel.geometry.relative = true;
  547. sourceLabel.setConnectable(false);
  548. sourceLabel.vertex = true;
  549. assoc.insert(sourceLabel);
  550. var sourceLabel2 = new mxCell('property2', new mxGeometry(-0.9, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  551. sourceLabel2.geometry.relative = true;
  552. sourceLabel2.setConnectable(false);
  553. sourceLabel2.vertex = true;
  554. assoc.insert(sourceLabel2);
  555. var targetLabel = new mxCell('{ordered} 0..*', new mxGeometry(0.9, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  556. targetLabel.geometry.relative = true;
  557. targetLabel.setConnectable(false);
  558. targetLabel.vertex = true;
  559. assoc.insert(targetLabel);
  560. var targetLabel2 = new mxCell('property1', new mxGeometry(0.9, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  561. targetLabel2.geometry.relative = true;
  562. targetLabel2.setConnectable(false);
  563. targetLabel2.vertex = true;
  564. assoc.insert(targetLabel2);
  565. return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Part Association');
  566. }),
  567. this.addEntry(dt + 'shared association', function()
  568. {
  569. var assoc = new mxCell('association1', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=open;endSize=12;edgeStyle=orthogonalEdgeStyle;startFill=0;startSize=12;startArrow=diamondThin;');
  570. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  571. assoc.geometry.setTerminalPoint(new mxPoint(250, 0), false);
  572. assoc.geometry.relative = true;
  573. assoc.edge = true;
  574. var sourceLabel = new mxCell('0..1', new mxGeometry(-0.9, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  575. sourceLabel.geometry.relative = true;
  576. sourceLabel.setConnectable(false);
  577. sourceLabel.vertex = true;
  578. assoc.insert(sourceLabel);
  579. var targetLabel = new mxCell('{ordered} 1..*', new mxGeometry(0.9, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  580. targetLabel.geometry.relative = true;
  581. targetLabel.setConnectable(false);
  582. targetLabel.vertex = true;
  583. assoc.insert(targetLabel);
  584. var targetLabel2 = new mxCell('property1', new mxGeometry(0.9, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  585. targetLabel2.geometry.relative = true;
  586. targetLabel2.setConnectable(false);
  587. targetLabel2.vertex = true;
  588. assoc.insert(targetLabel2);
  589. return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Shared Association');
  590. }),
  591. this.addEntry(dt + 'shared association', function()
  592. {
  593. var assoc = new mxCell('association1', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=orthogonalEdgeStyle;startFill=0;startSize=12;startArrow=diamondThin;');
  594. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  595. assoc.geometry.setTerminalPoint(new mxPoint(250, 0), false);
  596. assoc.geometry.relative = true;
  597. assoc.edge = true;
  598. var sourceLabel = new mxCell('1', new mxGeometry(-0.9, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  599. sourceLabel.geometry.relative = true;
  600. sourceLabel.setConnectable(false);
  601. sourceLabel.vertex = true;
  602. assoc.insert(sourceLabel);
  603. var sourceLabel2 = new mxCell('property2', new mxGeometry(-0.9, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  604. sourceLabel2.geometry.relative = true;
  605. sourceLabel2.setConnectable(false);
  606. sourceLabel2.vertex = true;
  607. assoc.insert(sourceLabel2);
  608. var targetLabel = new mxCell('{ordered} 0..*', new mxGeometry(0.9, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  609. targetLabel.geometry.relative = true;
  610. targetLabel.setConnectable(false);
  611. targetLabel.vertex = true;
  612. assoc.insert(targetLabel);
  613. var targetLabel2 = new mxCell('property1', new mxGeometry(0.9, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  614. targetLabel2.geometry.relative = true;
  615. targetLabel2.setConnectable(false);
  616. targetLabel2.vertex = true;
  617. assoc.insert(targetLabel2);
  618. return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Shared Association');
  619. }),
  620. this.addEntry(dt + 'multibranch part association', function()
  621. {
  622. var cardCell = new mxCell('association1', new mxGeometry(123, 3, 4, 4), 'verticalAlign=bottom;html=1;ellipse;fillColor=#000000;strokeColor=#000000;');
  623. cardCell.vertex = true;
  624. var edge1 = new mxCell('property1', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;align=right;verticalAlign=bottom;endArrow=none;rounded=0;labelBackgroundColor=none;');
  625. edge1.geometry.setTerminalPoint(new mxPoint(250, 5), false);
  626. edge1.geometry.relative = true;
  627. edge1.geometry.x = 1;
  628. edge1.edge = true;
  629. var edge1Label = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10;labelBackgroundColor=none;');
  630. edge1Label.geometry.relative = true;
  631. edge1Label.setConnectable(false);
  632. edge1Label.vertex = true;
  633. edge1.insert(edge1Label);
  634. cardCell.insertEdge(edge1, true);
  635. var edge2 = new mxCell('property2', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;align=right;verticalAlign=bottom;endArrow=none;rounded=0;labelBackgroundColor=none;');
  636. edge2.geometry.setTerminalPoint(new mxPoint(250, 50), false);
  637. edge2.geometry.relative = true;
  638. edge2.geometry.x = 1;
  639. edge2.edge = true;
  640. var edge2Label = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  641. edge2Label.geometry.relative = true;
  642. edge2Label.setConnectable(false);
  643. edge2Label.vertex = true;
  644. edge2.insert(edge2Label);
  645. cardCell.insertEdge(edge2, true);
  646. var edge3 = new mxCell('property3', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;align=left;verticalAlign=bottom;endArrow=diamondThin;rounded=0;endFill=1;endSize=12;labelBackgroundColor=none;');
  647. edge3.geometry.setTerminalPoint(new mxPoint(0, 5), false);
  648. edge3.geometry.relative = true;
  649. edge3.geometry.x = 1;
  650. edge3.edge = true;
  651. var edge3Label = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  652. edge3Label.geometry.relative = true;
  653. edge3Label.setConnectable(false);
  654. edge3Label.vertex = true;
  655. edge3.insert(edge3Label);
  656. cardCell.insertEdge(edge3, true);
  657. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3], 250, 50, 'Multibranch Part Association');
  658. }),
  659. this.addEntry(dt + 'multibranch shared association', function()
  660. {
  661. var cardCell = new mxCell('association1', new mxGeometry(123, 3, 4, 4), 'verticalAlign=bottom;html=1;ellipse;fillColor=#000000;');
  662. cardCell.vertex = true;
  663. var edge1 = new mxCell('property1', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;align=right;verticalAlign=bottom;endArrow=none;rounded=0;labelBackgroundColor=none;');
  664. edge1.geometry.setTerminalPoint(new mxPoint(250, 5), false);
  665. edge1.geometry.relative = true;
  666. edge1.geometry.x = 1;
  667. edge1.edge = true;
  668. var edge1Label = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;align=right;html=1;verticalAlign=top;labelBackgroundColor=none;fontSize=10;labelBackgroundColor=none;');
  669. edge1Label.geometry.relative = true;
  670. edge1Label.setConnectable(false);
  671. edge1Label.vertex = true;
  672. edge1.insert(edge1Label);
  673. cardCell.insertEdge(edge1, true);
  674. var edge2 = new mxCell('property2', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;align=right;verticalAlign=bottom;endArrow=none;rounded=0;labelBackgroundColor=none;');
  675. edge2.geometry.setTerminalPoint(new mxPoint(250, 50), false);
  676. edge2.geometry.relative = true;
  677. edge2.geometry.x = 1;
  678. edge2.edge = true;
  679. var edge2Label = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;align=right;html=1;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  680. edge2Label.geometry.relative = true;
  681. edge2Label.setConnectable(false);
  682. edge2Label.vertex = true;
  683. edge2.insert(edge2Label);
  684. cardCell.insertEdge(edge2, true);
  685. var edge3 = new mxCell('property3', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;align=left;verticalAlign=bottom;endArrow=diamondThin;rounded=0;endFill=0;endSize=12;labelBackgroundColor=none;');
  686. edge3.geometry.setTerminalPoint(new mxPoint(0, 5), false);
  687. edge3.geometry.relative = true;
  688. edge3.geometry.x = 1;
  689. edge3.edge = true;
  690. var edge3Label = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'resizable=0;align=left;html=1;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  691. edge3Label.geometry.relative = true;
  692. edge3Label.setConnectable(false);
  693. edge3Label.vertex = true;
  694. edge3.insert(edge3Label);
  695. cardCell.insertEdge(edge3, true);
  696. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3], 250, 50, 'Multibranch Shared Association');
  697. }),
  698. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endSize=12;endArrow=block;endFill=0;',
  699. 160, 0, '', 'Generalization', null, this.getTagsForStencil(gn, '', dt + 'generalization').join(' ')),
  700. this.addEntry(dt + 'multibranch generalization', function()
  701. {
  702. var cardCell = new mxCell('', new mxGeometry(68, 23, 4, 4), 'verticalAlign=bottom;html=1;ellipse;fillColor=#000000;strokeColor=#000000;');
  703. cardCell.vertex = true;
  704. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;endSize=12;endArrow=block;endFill=0;elbow=horizontal;rounded=0;');
  705. edge1.geometry.setTerminalPoint(new mxPoint(70, 0), false);
  706. edge1.geometry.relative = true;
  707. edge1.geometry.x = 1;
  708. edge1.edge = true;
  709. cardCell.insertEdge(edge1, true);
  710. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;verticalAlign=bottom;endArrow=none;rounded=0;');
  711. edge2.geometry.setTerminalPoint(new mxPoint(140, 50), false);
  712. edge2.geometry.relative = true;
  713. edge2.geometry.x = 1;
  714. edge2.edge = true;
  715. cardCell.insertEdge(edge2, true);
  716. var edge3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;verticalAlign=bottom;endArrow=none;rounded=0;');
  717. edge3.geometry.setTerminalPoint(new mxPoint(0, 50), false);
  718. edge3.geometry.relative = true;
  719. edge3.geometry.x = 1;
  720. edge3.edge = true;
  721. cardCell.insertEdge(edge3, true);
  722. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3], 140, 50, 'Multibranch Generalization');
  723. }),
  724. this.addEntry(dt + 'generalization set', function()
  725. {
  726. var cardCell = new mxCell('{disjoint}', new mxGeometry(68, 23, 4, 4), 'ellipse;html=1;fillColor=#000000;strokeColor=#000000;labelPosition=right;align=left;');
  727. cardCell.vertex = true;
  728. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;endSize=12;endArrow=block;endFill=0;elbow=horizontal;rounded=0;');
  729. edge1.geometry.setTerminalPoint(new mxPoint(70, 0), false);
  730. edge1.geometry.relative = true;
  731. edge1.geometry.x = 1;
  732. edge1.edge = true;
  733. cardCell.insertEdge(edge1, true);
  734. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;verticalAlign=bottom;endArrow=none;rounded=0;');
  735. edge2.geometry.setTerminalPoint(new mxPoint(140, 50), false);
  736. edge2.geometry.relative = true;
  737. edge2.geometry.x = 1;
  738. edge2.edge = true;
  739. cardCell.insertEdge(edge2, true);
  740. var edge3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;verticalAlign=bottom;endArrow=none;rounded=0;');
  741. edge3.geometry.setTerminalPoint(new mxPoint(0, 50), false);
  742. edge3.geometry.relative = true;
  743. edge3.geometry.x = 1;
  744. edge3.edge = true;
  745. cardCell.insertEdge(edge3, true);
  746. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3], 140, 50, 'Generalization Set');
  747. }),
  748. this.addEntry(dt + 'generalization set', function()
  749. {
  750. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=block;endFill=0;endSize=12;');
  751. edge1.geometry.setTerminalPoint(new mxPoint(10, 0), false);
  752. edge1.geometry.setTerminalPoint(new mxPoint(10, 80), true);
  753. edge1.geometry.relative = true;
  754. edge1.edge = true;
  755. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=block;endFill=0;endSize=12;');
  756. edge2.geometry.setTerminalPoint(new mxPoint(40, 0), false);
  757. edge2.geometry.setTerminalPoint(new mxPoint(40, 80), true);
  758. edge2.geometry.relative = true;
  759. edge2.edge = true;
  760. var edge3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=block;endFill=0;endSize=12;');
  761. edge3.geometry.setTerminalPoint(new mxPoint(70, 0), false);
  762. edge3.geometry.setTerminalPoint(new mxPoint(70, 80), true);
  763. edge3.geometry.relative = true;
  764. edge3.edge = true;
  765. var edge4 = new mxCell('{overlapping}', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;dashed=1;labelPosition=right;align=left;');
  766. edge4.geometry.relative = true;
  767. edge4.geometry.x = 1;
  768. edge4.geometry.setTerminalPoint(new mxPoint(0, 40), true);
  769. edge4.geometry.setTerminalPoint(new mxPoint(80, 40), false);
  770. edge4.edge = true;
  771. return sb.createVertexTemplateFromCells([edge1, edge2, edge3, edge4], 150, 80, 'Generalization Set');
  772. }),
  773. this.addEntry(dt + 'block namespace containment', function()
  774. {
  775. var cardCell = new mxCell('', new mxGeometry(68, 38, 4, 4), 'verticalAlign=bottom;html=1;ellipse;fillColor=#000000;strokeColor=#000000;');
  776. cardCell.vertex = true;
  777. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;endSize=12;endArrow=sysMLPackCont;elbow=horizontal;rounded=0;align=left;verticalAlign=middle');
  778. edge1.geometry.setTerminalPoint(new mxPoint(70, 16), false);
  779. edge1.geometry.relative = true;
  780. edge1.geometry.x = 1;
  781. edge1.edge = true;
  782. cardCell.insertEdge(edge1, true);
  783. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;verticalAlign=bottom;endArrow=none;rounded=0;');
  784. edge2.geometry.setTerminalPoint(new mxPoint(140, 70), false);
  785. edge2.geometry.relative = true;
  786. edge2.geometry.x = 1;
  787. edge2.edge = true;
  788. cardCell.insertEdge(edge2, true);
  789. var edge3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;verticalAlign=bottom;endArrow=none;rounded=0;');
  790. edge3.geometry.setTerminalPoint(new mxPoint(0, 70), false);
  791. edge3.geometry.relative = true;
  792. edge3.geometry.x = 1;
  793. edge3.edge = true;
  794. cardCell.insertEdge(edge3, true);
  795. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3], 140, 70, 'Block Namespace Containment');
  796. }),
  797. this.addEntry(dt + 'participant property', function()
  798. {
  799. var cardCell = new mxCell('Block2', new mxGeometry(0, 0, 50, 20), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  800. cardCell.vertex = true;
  801. var cardCell2 = new mxCell('Block1', new mxGeometry(350, 0, 50, 20), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  802. cardCell2.vertex = true;
  803. var cardCell3 = new mxCell(
  804. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  805. '<b>Assoctiation1</b><hr/></p>' +
  806. '<p style="margin:0px;margin-left:8px;text-align:center;">&lt;&lt;participant&gt;&gt; {end = property 1} p1 : Block 1<br/>' +
  807. '&lt;&lt;participant&gt;&gt; {end = property 2} p2 : Block 2</p>',
  808. new mxGeometry(50, 60, 300, 80), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;');
  809. cardCell3.vertex = true;
  810. var edge1 = new mxCell('Association1', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;verticalAlign=bottom;');
  811. edge1.geometry.relative = true;
  812. edge1.edge = true;
  813. cardCell.insertEdge(edge1, true);
  814. cardCell2.insertEdge(edge1, false);
  815. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;dashed=1;');
  816. edge2.geometry.setTerminalPoint(new mxPoint(200, 10), false);
  817. edge2.geometry.relative = true;
  818. edge2.edge = true;
  819. cardCell3.insertEdge(edge2, true);
  820. var label1 = new mxCell('property2', new mxGeometry(-1, 0, 0, 0), 'spacingLeft=3;html=1;align=left;verticalAlign=bottom;labelPosition=right;labelBackgroundColor=none;fontSize=10');
  821. label1.geometry.relative = true;
  822. label1.setConnectable(false);
  823. label1.vertex = true;
  824. edge1.insert(label1);
  825. var label2 = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'spacingLeft=3;html=1;align=left;verticalAlign=top;labelPosition=right;labelBackgroundColor=none;fontSize=10');
  826. label2.geometry.relative = true;
  827. label2.setConnectable(false);
  828. label2.vertex = true;
  829. edge1.insert(label2);
  830. var label3 = new mxCell('property1', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=bottom;labelPosition=left;labelBackgroundColor=none;fontSize=10');
  831. label3.geometry.relative = true;
  832. label3.setConnectable(false);
  833. label3.vertex = true;
  834. edge1.insert(label3);
  835. var label4 = new mxCell('{ordered} 0..*', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=top;labelPosition=left;labelBackgroundColor=none;fontSize=10');
  836. label4.geometry.relative = true;
  837. label4.setConnectable(false);
  838. label4.vertex = true;
  839. edge1.insert(label4);
  840. return sb.createVertexTemplateFromCells([cardCell, cardCell2, cardCell3, edge1, edge2], 400, 140, 'Participant Property');
  841. }),
  842. this.addEntry(dt + 'participant property', function()
  843. {
  844. var cardCell = new mxCell('Block2', new mxGeometry(0, 0, 50, 20), 'shape=rect;html=1;strokeWidth=1;fontStyle=1;whiteSpace=wrap;align=center;');
  845. cardCell.vertex = true;
  846. var cardCell2 = new mxCell('Block1', new mxGeometry(350, 0, 50, 20), 'shape=rect;html=1;strokeWidth=1;fontStyle=1;whiteSpace=wrap;align=center;');
  847. cardCell2.vertex = true;
  848. var bg = new mxCell(
  849. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  850. '<b>Assoctiation1</b></p><hr/>' +
  851. '<p style="margin:0px;text-align:center;"><i>structure</i></p>',
  852. new mxGeometry(20, 60, 360, 150), 'shape=rect;html=1;strokeWidth=1;overflow=fill;whiteSpace=wrap;recursiveResize=0;');
  853. bg.vertex = true;
  854. var cardCell4 = new mxCell(
  855. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  856. '&lt;&lt;participant&gt;&gt;<br/>' +
  857. '{end = property 2}<br/><br/>' +
  858. '<b>p2 : Block 2</b></p>',
  859. new mxGeometry(20, 50, 150, 80), 'shape=rect;html=1;overflow=fill;dashed=1;whiteSpace=wrap;');
  860. cardCell4.vertex = true;
  861. bg.insert(cardCell4);
  862. var cardCell5 = new mxCell(
  863. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  864. '&lt;&lt;participant&gt;&gt;<br/>' +
  865. '{end = property 1}<br/><br/>' +
  866. '<b>p1 : Block 1</b></p>',
  867. new mxGeometry(190, 50, 150, 80), 'shape=rect;html=1;overflow=fill;dashed=1;whiteSpace=wrap;');
  868. cardCell5.vertex = true;
  869. bg.insert(cardCell5);
  870. var edge1 = new mxCell('Association1', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;verticalAlign=bottom;');
  871. edge1.geometry.relative = true;
  872. edge1.edge = true;
  873. cardCell.insertEdge(edge1, true);
  874. cardCell2.insertEdge(edge1, false);
  875. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;dashed=1;');
  876. edge2.geometry.setTerminalPoint(new mxPoint(200, 10), false);
  877. edge2.geometry.relative = true;
  878. edge2.edge = true;
  879. bg.insertEdge(edge2, true);
  880. var label1 = new mxCell('property2', new mxGeometry(-1, 0, 0, 0), 'spacingLeft=3;html=1;align=left;verticalAlign=bottom;labelPosition=right;labelBackgroundColor=none;fontSize=10');
  881. label1.geometry.relative = true;
  882. label1.setConnectable(false);
  883. label1.vertex = true;
  884. edge1.insert(label1);
  885. var label2 = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'spacingLeft=3;html=1;align=left;verticalAlign=top;labelPosition=right;labelBackgroundColor=none;fontSize=10');
  886. label2.geometry.relative = true;
  887. label2.setConnectable(false);
  888. label2.vertex = true;
  889. edge1.insert(label2);
  890. var label3 = new mxCell('property1', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=bottom;labelPosition=left;labelBackgroundColor=none;fontSize=10');
  891. label3.geometry.relative = true;
  892. label3.setConnectable(false);
  893. label3.vertex = true;
  894. edge1.insert(label3);
  895. var label4 = new mxCell('{ordered} 0..*', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=top;labelPosition=left;labelBackgroundColor=none;fontSize=10');
  896. label4.geometry.relative = true;
  897. label4.setConnectable(false);
  898. label4.vertex = true;
  899. edge1.insert(label4);
  900. return sb.createVertexTemplateFromCells([cardCell, cardCell2, bg, edge1, edge2], 400, 260, 'Participant Property');
  901. }),
  902. this.addEntry(dt + 'participant property', function()
  903. {
  904. var cardCell = new mxCell('Block2', new mxGeometry(0, 0, 50, 20), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  905. cardCell.vertex = true;
  906. var cardCell2 = new mxCell('Block1', new mxGeometry(350, 0, 50, 20), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  907. cardCell2.vertex = true;
  908. var cardCell3 = new mxCell('Association1', new mxGeometry(140, 60, 120, 20), 'shape=rect;html=1;');
  909. cardCell3.vertex = true;
  910. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;html=1;');
  911. edge1.geometry.relative = true;
  912. edge1.edge = true;
  913. cardCell.insertEdge(edge1, true);
  914. cardCell2.insertEdge(edge1, false);
  915. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;dashed=1;');
  916. edge2.geometry.setTerminalPoint(new mxPoint(200, 10), false);
  917. edge2.geometry.relative = true;
  918. edge2.edge = true;
  919. cardCell3.insertEdge(edge2, true);
  920. var label1 = new mxCell('property2', new mxGeometry(-1, 0, 0, 0), 'spacingLeft=3;html=1;align=left;verticalAlign=bottom;labelPosition=right;labelBackgroundColor=none;fontSize=10');
  921. label1.geometry.relative = true;
  922. label1.setConnectable(false);
  923. label1.vertex = true;
  924. edge1.insert(label1);
  925. var label2 = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'spacingLeft=3;html=1;align=left;verticalAlign=top;labelPosition=right;labelBackgroundColor=none;fontSize=10');
  926. label2.geometry.relative = true;
  927. label2.setConnectable(false);
  928. label2.vertex = true;
  929. edge1.insert(label2);
  930. var label3 = new mxCell('property1', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=bottom;labelPosition=left;labelBackgroundColor=none;fontSize=10');
  931. label3.geometry.relative = true;
  932. label3.setConnectable(false);
  933. label3.vertex = true;
  934. edge1.insert(label3);
  935. var label4 = new mxCell('{ordered} 0..*', new mxGeometry(1, 0, 0, 0), 'spacingRight=3;html=1;align=right;verticalAlign=top;labelPosition=left;labelBackgroundColor=none;fontSize=10');
  936. label4.geometry.relative = true;
  937. label4.setConnectable(false);
  938. label4.vertex = true;
  939. edge1.insert(label4);
  940. return sb.createVertexTemplateFromCells([cardCell, cardCell2, cardCell3, edge1, edge2], 400, 80, 'Participant Property');
  941. }),
  942. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 300, 80,
  943. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  944. '<b>Assoctiation1</b></p><hr/>' +
  945. '<p style="margin:0px;margin-left:8px;text-align:center;">&lt;&lt;participant&gt;&gt; {end = property 1} p1 : Blcok 1<br/>' +
  946. '&lt;&lt;participant&gt;&gt; {end = property 2} p2 : Blcok 2</p>',
  947. 'Association', null, null, this.getTagsForStencil(gn, '', dt + 'association').join(' ')),
  948. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 300, 80,
  949. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  950. '<b>Assoctiation1</b></p><hr/>' +
  951. '<p style="margin:0px;text-align:center;"><i>structure</i></p>',
  952. 'Association', null, null, this.getTagsForStencil(gn, '', dt + 'association').join(' ')),
  953. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;dashed=1;whiteSpace=wrap;', 150, 80,
  954. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  955. '&lt;&lt;participant&gt;&gt;<br/>' +
  956. '{end = property 1}<br/><br/>' +
  957. '<b>p1 : Block 1</b></p>',
  958. 'Participant', null, null, this.getTagsForStencil(gn, '', dt + 'participant').join(' ')),
  959. this.addEntry(dt + 'connector property', function()
  960. {
  961. var bg = new mxCell(
  962. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  963. '<b>Block1</b><hr/></p>' +
  964. '<p style="margin:0px;margin-top:-6px;margin-left:10px;text-align:left;">' +
  965. '&lt;&lt;connector&gt;&gt; c1 : Association1<br/>' +
  966. '&lt;&lt;connector&gt;&gt; c2 : Association2<hr/></p>' +
  967. '<p style="margin:0px;margin-top:-6px;text-align:center;font-size:10px;">' +
  968. '<i>structure</i></p>',
  969. new mxGeometry(0, 0, 400, 250), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
  970. bg.vertex = true;
  971. var cardCell2 = new mxCell('p1:\nType1', new mxGeometry(20, 100, 80, 40), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  972. cardCell2.vertex = true;
  973. bg.insert(cardCell2);
  974. var cardCell3 = new mxCell('p2:\nType2', new mxGeometry(300, 100, 80, 40), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  975. cardCell3.vertex = true;
  976. bg.insert(cardCell3);
  977. var edge1 = new mxCell('c1: Association1', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;verticalAlign=bottom;');
  978. edge1.geometry.relative = true;
  979. edge1.edge = true;
  980. cardCell2.insertEdge(edge1, true);
  981. cardCell3.insertEdge(edge1, false);
  982. bg.insert(edge1);
  983. 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');
  984. label1.geometry.relative = true;
  985. label1.setConnectable(false);
  986. label1.vertex = true;
  987. edge1.insert(label1);
  988. 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');
  989. label2.geometry.relative = true;
  990. label2.setConnectable(false);
  991. label2.vertex = true;
  992. edge1.insert(label2);
  993. var cardCell4 = new mxCell('p3:\nType3', new mxGeometry(20, 160, 80, 40), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  994. cardCell4.vertex = true;
  995. bg.insert(cardCell4);
  996. var cardCell5 = new mxCell('p4:\nType4', new mxGeometry(300, 160, 80, 40), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  997. cardCell5.vertex = true;
  998. bg.insert(cardCell5);
  999. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;');
  1000. edge2.geometry.relative = true;
  1001. edge2.edge = true;
  1002. cardCell4.insertEdge(edge2, true);
  1003. cardCell5.insertEdge(edge2, false);
  1004. bg.insert(edge2);
  1005. 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');
  1006. label3.geometry.relative = true;
  1007. label3.setConnectable(false);
  1008. label3.vertex = true;
  1009. edge2.insert(label3);
  1010. 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');
  1011. label4.geometry.relative = true;
  1012. label4.setConnectable(false);
  1013. label4.vertex = true;
  1014. edge2.insert(label4);
  1015. var cardCell6 = new mxCell('c2: Association2', new mxGeometry(140, 210, 120, 20), 'shape=rect;html=1;align=center;');
  1016. cardCell6.vertex = true;
  1017. bg.insert(cardCell6);
  1018. var edge3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;dashed=1;');
  1019. edge3.geometry.setTerminalPoint(new mxPoint(200, 180), false);
  1020. edge3.geometry.relative = true;
  1021. edge3.edge = true;
  1022. cardCell6.insertEdge(edge3, true);
  1023. bg.insert(edge3);
  1024. return sb.createVertexTemplateFromCells([bg], 400, 250, 'Connector Property');
  1025. }),
  1026. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 120,
  1027. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  1028. '<b>Block1</b><hr/>' +
  1029. '&lt;&lt;connector&gt;&gt; c1 : Association1<br/>' +
  1030. '&lt;&lt;connector&gt;&gt; c2 : Association2<hr/></p>',
  1031. 'Connector Property', null, null, this.getTagsForStencil(gn, '', dt + 'connector property').join(' ')),
  1032. this.addEntry(dt + 'internal block diagram', function()
  1033. {
  1034. var bg = new mxCell('<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>ibd</b> Block1</p>', new mxGeometry(0, 0, 300, 100), s + 'package;labelX=100;align=left;spacingLeft=10;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=0;recursiveResize=0;');
  1035. bg.vertex = true;
  1036. var cardCell2 = new mxCell('p1:\nType1', new mxGeometry(15, 30, 100, 50), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  1037. cardCell2.vertex = true;
  1038. bg.insert(cardCell2);
  1039. var cardCell3 = new mxCell('p2:\nType2', new mxGeometry(190, 30, 100, 50), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  1040. cardCell3.vertex = true;
  1041. bg.insert(cardCell3);
  1042. var assoc = new mxCell('c1:a1', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=none;');
  1043. assoc.geometry.relative = true;
  1044. assoc.edge = true;
  1045. var sourceLabel = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  1046. sourceLabel.geometry.relative = true;
  1047. sourceLabel.setConnectable(false);
  1048. sourceLabel.vertex = true;
  1049. assoc.insert(sourceLabel);
  1050. var targetLabel = new mxCell('p3', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  1051. targetLabel.geometry.relative = true;
  1052. targetLabel.setConnectable(false);
  1053. targetLabel.vertex = true;
  1054. assoc.insert(targetLabel);
  1055. cardCell2.insertEdge(assoc, true);
  1056. cardCell3.insertEdge(assoc, false);
  1057. bg.insert(assoc);
  1058. return sb.createVertexTemplateFromCells([bg], 300, 100, 'Internal Block Diagram');
  1059. }),
  1060. this.addEntry(dt + 'property', function()
  1061. {
  1062. var bg = new mxCell('', new mxGeometry(0, 0, 300, 120), 'shape=rect;html=1;strokeWidth=2;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
  1063. bg.vertex = true;
  1064. var cardCell2 = new mxCell(
  1065. '<p style="margin:0px;margin-top:4px;margin-right:4px;text-align:right;font-size:10px;">' +
  1066. '0..*</p>' +
  1067. '<p style="margin:0px;text-align:center;">' +
  1068. '<b>p1 : Type1</b><hr/>' +
  1069. 'x : Integer = 4</p>',
  1070. new mxGeometry(20, 20, 140, 80), 'shape=rect;html=1;overflow=fill;strokeWidth=2;whiteSpace=wrap;align=center;');
  1071. cardCell2.vertex = true;
  1072. bg.insert(cardCell2);
  1073. var cardCell3 = new mxCell(
  1074. 'r1: Type2',
  1075. new mxGeometry(180, 30, 100, 50), 'shape=rect;html=1;fontStyle=1;dashed=1;strokeWidth=2;whiteSpace=wrap;align=center;');
  1076. cardCell3.vertex = true;
  1077. bg.insert(cardCell3);
  1078. return sb.createVertexTemplateFromCells([bg], 300, 120, 'Property');
  1079. }),
  1080. this.createVertexTemplateEntry(s + 'package;html=1;overflow=fill;whiteSpace=wrap;', 300, 135,
  1081. '<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>idb</b> Block1</p>',
  1082. 'Package', null, null, this.getTagsForStencil(gn, '', dt + 'package').join(' ')),
  1083. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 100, 80,
  1084. '<p style="margin:0px;margin-top:4px;margin-right:4px;text-align:right;font-size:10px;">' +
  1085. '0..*</p>' +
  1086. '<p style="margin:0px;text-align:center;">' +
  1087. '<b>p1 : Type1</b><hr/>' +
  1088. 'x : Integer = 4</p>',
  1089. 'Property', null, null, this.getTagsForStencil(gn, '', dt + 'property').join(' ')),
  1090. this.addEntry(dt + 'property', function()
  1091. {
  1092. var bg = new mxCell(
  1093. '<p style="margin:0px;margin-top:4px;margin-right:4px;text-align:right;font-size:10px;">' +
  1094. '0..*</p>' +
  1095. '<p style="margin:0px;text-align:center;">' +
  1096. 'p1 : Type1<hr/></p>',
  1097. new mxGeometry(0, 0, 250, 160), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
  1098. bg.vertex = true;
  1099. var cardCell2 = new mxCell(
  1100. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  1101. '<b>p3 : Type3</b></p><hr/>' +
  1102. '<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
  1103. '<i>initialValues</i></p>' +
  1104. '<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
  1105. 'x1 = 5.0<br/>x2 = "today"</p>',
  1106. new mxGeometry(30, 50, 140, 100), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;');
  1107. cardCell2.vertex = true;
  1108. bg.insert(cardCell2);
  1109. return sb.createVertexTemplateFromCells([bg], 250, 160, 'Property');
  1110. }),
  1111. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 100, 100,
  1112. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  1113. '<b>p3 : Type3</b></p><hr/>' +
  1114. '<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
  1115. '<i>initialValues</i></p>' +
  1116. '<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
  1117. 'x1 = 5.0<br/>x2 = "today"</p>',
  1118. 'Property', null, null, this.getTagsForStencil(gn, '', dt + 'property').join(' ')),
  1119. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 300, 70,
  1120. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  1121. '<b>p1 : [Type1]</b></p><hr/>' +
  1122. '<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
  1123. '<i>values</i></p>' +
  1124. '<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
  1125. '&lt;&lt;normal&gt;&gt; {mean = 2, stdDeviation = 0.1} x : Real</p>',
  1126. 'Property Specific Type', null, null, this.getTagsForStencil(gn, '', dt + 'property specific type').join(' ')),
  1127. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 100, 70,
  1128. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  1129. '<b>p2</b></p><hr/>' +
  1130. '<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
  1131. '<i>values</i></p>' +
  1132. '<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
  1133. 'y : Integer = 5</p>',
  1134. 'Property Specific Type', null, null, this.getTagsForStencil(gn, '', dt + 'property specific type').join(' ')),
  1135. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
  1136. 160, 0, '&lt;&lt;stereotype1&gt;&gt;\ndependency1', 'Dependency', null, null, this.getTagsForStencil(gn, '', dt + 'dependency').join(' ')),
  1137. this.addEntry(dt + 'property', function()
  1138. {
  1139. var assoc = new mxCell('', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=orthogonalEdgeStyle;strokeWidth=2;');
  1140. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  1141. assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false);
  1142. assoc.geometry.relative = true;
  1143. assoc.edge = true;
  1144. var sourceLabel = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  1145. sourceLabel.geometry.relative = true;
  1146. sourceLabel.setConnectable(false);
  1147. sourceLabel.vertex = true;
  1148. assoc.insert(sourceLabel);
  1149. var targetLabel = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  1150. targetLabel.geometry.relative = true;
  1151. targetLabel.setConnectable(false);
  1152. targetLabel.vertex = true;
  1153. assoc.insert(targetLabel);
  1154. return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Property');
  1155. }),
  1156. this.addEntry(dt + 'binding connector', function()
  1157. {
  1158. var assoc = new mxCell('&lt;&lt;equal&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=orthogonalEdgeStyle;strokeWidth=2;');
  1159. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  1160. assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false);
  1161. assoc.geometry.relative = true;
  1162. assoc.edge = true;
  1163. var sourceLabel = new mxCell('1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  1164. sourceLabel.geometry.relative = true;
  1165. sourceLabel.setConnectable(false);
  1166. sourceLabel.vertex = true;
  1167. assoc.insert(sourceLabel);
  1168. var targetLabel = new mxCell('1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  1169. targetLabel.geometry.relative = true;
  1170. targetLabel.setConnectable(false);
  1171. targetLabel.vertex = true;
  1172. assoc.insert(targetLabel);
  1173. return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Binding Connector');
  1174. }),
  1175. this.addEntry(dt + 'bidirectional connector', function()
  1176. {
  1177. var assoc = new mxCell('c1 : association', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=orthogonalEdgeStyle;');
  1178. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  1179. assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false);
  1180. assoc.geometry.relative = true;
  1181. assoc.edge = true;
  1182. var sourceLabel1 = new mxCell('0..1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  1183. sourceLabel1.geometry.relative = true;
  1184. sourceLabel1.setConnectable(false);
  1185. sourceLabel1.vertex = true;
  1186. assoc.insert(sourceLabel1);
  1187. var sourceLabel2 = new mxCell('p1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  1188. sourceLabel2.geometry.relative = true;
  1189. sourceLabel2.setConnectable(false);
  1190. sourceLabel2.vertex = true;
  1191. assoc.insert(sourceLabel2);
  1192. var targetLabel1 = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  1193. targetLabel1.geometry.relative = true;
  1194. targetLabel1.setConnectable(false);
  1195. targetLabel1.vertex = true;
  1196. assoc.insert(targetLabel1);
  1197. var targetLabel2 = new mxCell('p2', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  1198. targetLabel2.geometry.relative = true;
  1199. targetLabel2.setConnectable(false);
  1200. targetLabel2.vertex = true;
  1201. assoc.insert(targetLabel2);
  1202. return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Bidirectional Connector');
  1203. }),
  1204. this.addEntry(dt + 'unidirectional connector', function()
  1205. {
  1206. var assoc = new mxCell('c1 : association', new mxGeometry(0, 0, 0, 0), 'verticalAlign=bottom;html=1;endArrow=none;edgeStyle=orthogonalEdgeStyle;');
  1207. assoc.geometry.setTerminalPoint(new mxPoint(0, 0), true);
  1208. assoc.geometry.setTerminalPoint(new mxPoint(160, 0), false);
  1209. assoc.geometry.relative = true;
  1210. assoc.edge = true;
  1211. var sourceLabel1 = new mxCell('0..1', new mxGeometry(-1, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  1212. sourceLabel1.geometry.relative = true;
  1213. sourceLabel1.setConnectable(false);
  1214. sourceLabel1.vertex = true;
  1215. assoc.insert(sourceLabel1);
  1216. var targetLabel1 = new mxCell('0..*', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=top;labelBackgroundColor=none;fontSize=10');
  1217. targetLabel1.geometry.relative = true;
  1218. targetLabel1.setConnectable(false);
  1219. targetLabel1.vertex = true;
  1220. assoc.insert(targetLabel1);
  1221. var targetLabel2 = new mxCell('p1', new mxGeometry(1, 0, 0, 0), 'resizable=0;html=1;align=right;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  1222. targetLabel2.geometry.relative = true;
  1223. targetLabel2.setConnectable(false);
  1224. targetLabel2.vertex = true;
  1225. assoc.insert(targetLabel2);
  1226. return sb.createVertexTemplateFromCells([assoc], assoc.geometry.width, assoc.geometry.height, 'Unidirectional Connector');
  1227. })
  1228. ];
  1229. this.addPalette('sysmlBlocks', 'SysML / Blocks', expand || false, mxUtils.bind(this, function(content)
  1230. {
  1231. for (var i = 0; i < fns.length; i++)
  1232. {
  1233. content.appendChild(fns[i](content));
  1234. }
  1235. }));
  1236. };
  1237. Sidebar.prototype.addSysMLPortsAndFlowsPalette = function(expand)
  1238. {
  1239. var gn = '';
  1240. var dt = 'sysml port flow ';
  1241. var sb = this;
  1242. var s = 'html=1;shape=mxgraph.sysml.';
  1243. var fns = [
  1244. this.addEntry(dt + 'port', function()
  1245. {
  1246. var s = 'html=1;shape=mxgraph.sysml.';
  1247. var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'port1;fontStyle=1;whiteSpace=wrap;align=center;');
  1248. cardCell.vertex = true;
  1249. 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;');
  1250. label1.geometry.relative = false;
  1251. label1.setConnectable(false);
  1252. label1.vertex = true;
  1253. cardCell.insert(label1);
  1254. var label2 = new mxCell('p2', new mxGeometry(140, 20, 20, 20), 'shape=rect;html=1;resizable=1;labelBackgroundColor=none;fontSize=10;');
  1255. label2.geometry.relative = false;
  1256. label2.setConnectable(false);
  1257. label2.vertex = true;
  1258. cardCell.insert(label2);
  1259. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Port');
  1260. }),
  1261. this.addEntry(dt + 'port conjugated', function()
  1262. {
  1263. var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 200, 60), s + 'port2;fontStyle=1;spacingRight=20;whiteSpace=wrap;align=center;');
  1264. cardCell.vertex = true;
  1265. 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');
  1266. label1.geometry.relative = false;
  1267. label1.setConnectable(false);
  1268. label1.vertex = true;
  1269. cardCell.insert(label1);
  1270. var label2 = new mxCell('p2 : ~T2', new mxGeometry(140, 20, 60, 20), 'shape=rect;html=1;resizable=1;labelBackgroundColor=none;fontSize=10');
  1271. label2.geometry.relative = false;
  1272. label2.setConnectable(false);
  1273. label2.vertex = true;
  1274. cardCell.insert(label2);
  1275. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Port (Conjugated Ports)');
  1276. }),
  1277. this.addEntry(dt + 'port flow property', function()
  1278. {
  1279. var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 80), s + 'port3;fontStyle=1;whiteSpace=wrap;align=center;');
  1280. cardCell.vertex = true;
  1281. 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');
  1282. label1.geometry.relative = false;
  1283. label1.setConnectable(false);
  1284. label1.vertex = true;
  1285. cardCell.insert(label1);
  1286. 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');
  1287. label1.geometry.relative = false;
  1288. label1.setConnectable(false);
  1289. label1.vertex = true;
  1290. cardCell.insert(label1);
  1291. var label2 = new mxCell('p3', new mxGeometry(160, 30, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=bottom;labelBackgroundColor=none;fontSize=10');
  1292. label2.geometry.relative = false;
  1293. label2.setConnectable(false);
  1294. label2.vertex = true;
  1295. cardCell.insert(label2);
  1296. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Ports with Flow Properties');
  1297. }),
  1298. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 160, 70,
  1299. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  1300. '<b>Transmission</b></p><hr/>' +
  1301. '<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
  1302. '<i>ports</i></p>' +
  1303. '<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
  1304. 'p1 : ITransCmd</p>',
  1305. 'Port (Compartment Notation)', null, null, this.getTagsForStencil(gn, '', dt + 'port compartment notation').join(' ')),
  1306. this.addEntry(dt + 'nested port', function()
  1307. {
  1308. var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'nestedPort;fontStyle=1;whiteSpace=wrap;align=center;');
  1309. cardCell.vertex = true;
  1310. 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');
  1311. label1.geometry.relative = false;
  1312. label1.setConnectable(false);
  1313. label1.vertex = true;
  1314. cardCell.insert(label1);
  1315. 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');
  1316. label2.geometry.relative = false;
  1317. label2.setConnectable(false);
  1318. label2.vertex = true;
  1319. cardCell.insert(label2);
  1320. 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');
  1321. label3.geometry.relative = false;
  1322. label3.setConnectable(false);
  1323. label3.vertex = true;
  1324. cardCell.insert(label3);
  1325. 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');
  1326. label4.geometry.relative = false;
  1327. label4.setConnectable(false);
  1328. label4.vertex = true;
  1329. cardCell.insert(label4);
  1330. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Nested Port');
  1331. }),
  1332. this.addEntry(dt + 'proxy port', function()
  1333. {
  1334. var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'port1;fontStyle=1;whiteSpace=wrap;align=center;');
  1335. cardCell.vertex = true;
  1336. var label1 = new mxCell('&lt;&lt;proxy&gt;&gt;\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');
  1337. label1.geometry.relative = false;
  1338. label1.setConnectable(false);
  1339. label1.vertex = true;
  1340. cardCell.insert(label1);
  1341. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Proxy Port');
  1342. }),
  1343. this.addEntry(dt + 'full port', function()
  1344. {
  1345. var cardCell = new mxCell('Transmission', new mxGeometry(0, 0, 160, 60), s + 'port1;fontStyle=1;whiteSpace=wrap;align=center;');
  1346. cardCell.vertex = true;
  1347. var label1 = new mxCell('&lt;&lt;full&gt;&gt;\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');
  1348. label1.geometry.relative = false;
  1349. label1.setConnectable(false);
  1350. label1.vertex = true;
  1351. cardCell.insert(label1);
  1352. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Full Port');
  1353. }),
  1354. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 100,
  1355. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  1356. '<b>Transmission</b></p><hr/>' +
  1357. '<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
  1358. '<i>flow properties</i></p>' +
  1359. '<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
  1360. 'in gearSelect: Gear<br/>' +
  1361. 'in engineTorque: Torque<br/>' +
  1362. 'out wheelsTorque: Torque</p>',
  1363. 'Flow Property', null, null, this.getTagsForStencil(gn, '', dt + 'flow property').join(' ')),
  1364. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 250, 150,
  1365. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  1366. '<b>Transmission</b></p><hr/>' +
  1367. '<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
  1368. '<i>operations</i></p>' +
  1369. '<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
  1370. 'prov Boolean selectGear(g : Gear)<br/>' +
  1371. 'reqd Torque getTorque()</p><hr/>' +
  1372. '<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
  1373. '<i>properties</i></p>' +
  1374. '<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
  1375. 'prov temperature : Integer<br/>' +
  1376. 'reqd geometry : Spline</p>',
  1377. 'Required and Provided Features', null, null, this.getTagsForStencil(gn, '', dt + 'required provided feature').join(' ')),
  1378. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 80,
  1379. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  1380. '&lt;&lt;interfaceBlock&gt;&gt;\n' +
  1381. '<b>ISpeedObserver</b></p><hr/>' +
  1382. '<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
  1383. 'notifySpeedChange(): void</p>',
  1384. 'Interface Block', null, null, this.getTagsForStencil(gn, '', dt + 'interface block').join(' ')),
  1385. this.addEntry(dt + 'item flow', function()
  1386. {
  1387. 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;');
  1388. cardCell.vertex = true;
  1389. var cardCell2 = new mxCell('\ntrns: Transmission', new mxGeometry(0, 120, 120, 60), s + 'itemFlow;fontStyle=1;flowDir=N;flowType=in;whiteSpace=wrap;align=center;');
  1390. cardCell2.vertex = true;
  1391. 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;');
  1392. assoc1.geometry.relative = true;
  1393. assoc1.edge = true;
  1394. 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');
  1395. label1.geometry.relative = true;
  1396. label1.geometry.x = -1;
  1397. label1.setConnectable(false);
  1398. label1.vertex = true;
  1399. assoc1.insert(label1);
  1400. 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');
  1401. label2.geometry.relative = true;
  1402. label2.geometry.x = 1;
  1403. label2.setConnectable(false);
  1404. label2.vertex = true;
  1405. assoc1.insert(label2);
  1406. cardCell.insertEdge(assoc1, true);
  1407. cardCell2.insertEdge(assoc1, false);
  1408. return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc1], 120, 180, 'Item Flow');
  1409. }),
  1410. this.addEntry(dt + 'item flow property', function()
  1411. {
  1412. 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;');
  1413. cardCell.vertex = true;
  1414. var cardCell2 = new mxCell('\ntrns: Transmission', new mxGeometry(20, 120, 120, 60), s + 'itemFlow;fontStyle=1;flowDir=N;flowType=in;whiteSpace=wrap;align=center;');
  1415. cardCell2.vertex = true;
  1416. 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;');
  1417. assoc1.geometry.relative = true;
  1418. assoc1.edge = true;
  1419. 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');
  1420. label1.geometry.relative = true;
  1421. label1.geometry.x = -1;
  1422. label1.setConnectable(false);
  1423. label1.vertex = true;
  1424. assoc1.insert(label1);
  1425. 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');
  1426. label2.geometry.relative = true;
  1427. label2.geometry.x = 1;
  1428. label2.setConnectable(false);
  1429. label2.vertex = true;
  1430. assoc1.insert(label2);
  1431. cardCell.insertEdge(assoc1, true);
  1432. cardCell2.insertEdge(assoc1, false);
  1433. return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc1], 140, 180, 'Item Flow (Item Property)');
  1434. }),
  1435. this.createVertexTemplateEntry(s + 'itemFlow;fontStyle=1;flowDir=N;flowType=in;whiteSpace=wrap;align=center;',
  1436. 200, 80, 'eng:Engine', 'Item Flow North In', null, null, this.getTagsForStencil(gn, '', dt + 'item flow north in').join(' ')),
  1437. this.createVertexTemplateEntry(s + 'itemFlow;fontStyle=1;flowDir=E;flowType=out;whiteSpace=wrap;align=center;',
  1438. 200, 80, 'eng:Engine', 'Item Flow East Out', null, null, this.getTagsForStencil(gn, '', dt + 'item flow east out').join(' ')),
  1439. this.addEntry(dt + 'item flow', function()
  1440. {
  1441. 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;');
  1442. cardCell.vertex = true;
  1443. 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;');
  1444. cardCell2.vertex = true;
  1445. 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;');
  1446. assoc1.geometry.relative = true;
  1447. assoc1.edge = true;
  1448. 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');
  1449. label1.geometry.relative = true;
  1450. label1.geometry.x = -1;
  1451. label1.setConnectable(false);
  1452. label1.vertex = true;
  1453. assoc1.insert(label1);
  1454. 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');
  1455. label2.geometry.relative = true;
  1456. label2.geometry.x = 1;
  1457. label2.setConnectable(false);
  1458. label2.vertex = true;
  1459. assoc1.insert(label2);
  1460. cardCell.insertEdge(assoc1, true);
  1461. cardCell2.insertEdge(assoc1, false);
  1462. var bg = new mxCell(
  1463. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  1464. '<b>c1: Association-1</b></p><hr/>' +
  1465. '<p style="margin:0px;margin-left:4px;text-align:left;font-size:0.9em;">' +
  1466. '&lt;&lt;participant&gt;&gt;{end = ep} epInLink : EP[1]<br/>' +
  1467. '&lt;&lt;participant&gt;&gt;{end = tp} etInLink : TP[1]<hr/></p>' +
  1468. '<p style="margin:0px;text-align:center;font-size:0.9em;">' +
  1469. 'structure</p>',
  1470. new mxGeometry(0, 120, 470, 250), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
  1471. bg.vertex = true;
  1472. var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=elbowEdgeStyle;elbow=horizontal;dashed=1;');
  1473. assoc2.geometry.relative = true;
  1474. assoc2.geometry.setTerminalPoint(new mxPoint(160, 30), true);
  1475. assoc2.edge = true;
  1476. bg.insertEdge(assoc2, false);
  1477. var cardCell4 = new mxCell('epInLink : EP', new mxGeometry(30, 100, 160, 120), s + 'itemFlowRight;fontStyle=1;spacingRight=40;whiteSpace=wrap;align=center;');
  1478. cardCell4.vertex = true;
  1479. bg.insert(cardCell4);
  1480. 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');
  1481. label3.geometry.relative = false;
  1482. label3.setConnectable(false);
  1483. label3.vertex = true;
  1484. cardCell4.insert(label3);
  1485. 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');
  1486. label4.geometry.relative = false;
  1487. label4.setConnectable(false);
  1488. label4.vertex = true;
  1489. cardCell4.insert(label4);
  1490. 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');
  1491. label5.geometry.relative = false;
  1492. label5.setConnectable(false);
  1493. label5.vertex = true;
  1494. cardCell4.insert(label5);
  1495. var cardCell5 = new mxCell('tpInLink : TP', new mxGeometry(280, 100, 160, 120), s + 'itemFlowLeft;fontStyle=1;spacingLeft=40;whiteSpace=wrap;align=center;');
  1496. cardCell5.vertex = true;
  1497. bg.insert(cardCell5);
  1498. 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');
  1499. label6.geometry.relative = false;
  1500. label6.setConnectable(false);
  1501. label6.vertex = true;
  1502. cardCell5.insert(label6);
  1503. 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');
  1504. label7.geometry.relative = false;
  1505. label7.setConnectable(false);
  1506. label7.vertex = true;
  1507. cardCell5.insert(label7);
  1508. 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');
  1509. label8.geometry.relative = false;
  1510. label8.setConnectable(false);
  1511. label8.vertex = true;
  1512. cardCell5.insert(label8);
  1513. 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;');
  1514. assoc3.geometry.relative = true;
  1515. assoc3.edge = true;
  1516. cardCell4.insertEdge(assoc3, true);
  1517. cardCell5.insertEdge(assoc3, false);
  1518. bg.insert(assoc3);
  1519. 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;');
  1520. assoc4.geometry.relative = true;
  1521. assoc4.edge = true;
  1522. cardCell4.insertEdge(assoc4, true);
  1523. cardCell5.insertEdge(assoc4, false);
  1524. bg.insert(assoc4);
  1525. 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;');
  1526. assoc5.geometry.relative = true;
  1527. assoc5.edge = true;
  1528. cardCell4.insertEdge(assoc5, true);
  1529. cardCell5.insertEdge(assoc5, false);
  1530. bg.insert(assoc5);
  1531. return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc1, bg, assoc2], 470, 370, 'Item Flow');
  1532. }),
  1533. this.addEntry(dt + 'item flow', function()
  1534. {
  1535. var cardCell = new mxCell('tpInLink : TP', new mxGeometry(0, 0, 200, 120), s + 'itemFlowLeft;fontStyle=1;whiteSpace=wrap;align=center;');
  1536. cardCell.vertex = true;
  1537. 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');
  1538. label1.geometry.relative = false;
  1539. label1.setConnectable(false);
  1540. label1.vertex = true;
  1541. cardCell.insert(label1);
  1542. 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');
  1543. label2.geometry.relative = false;
  1544. label2.setConnectable(false);
  1545. label2.vertex = true;
  1546. cardCell.insert(label2);
  1547. 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');
  1548. label3.geometry.relative = false;
  1549. label3.setConnectable(false);
  1550. label3.vertex = true;
  1551. cardCell.insert(label3);
  1552. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Item Flow');
  1553. }),
  1554. this.addEntry(dt + 'item flow', function()
  1555. {
  1556. var cardCell = new mxCell('epInLink : EP', new mxGeometry(0, 0, 200, 120), s + 'itemFlowRight;fontStyle=1;whiteSpace=wrap;align=center;');
  1557. cardCell.vertex = true;
  1558. 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');
  1559. label1.geometry.relative = false;
  1560. label1.setConnectable(false);
  1561. label1.vertex = true;
  1562. cardCell.insert(label1);
  1563. 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');
  1564. label2.geometry.relative = false;
  1565. label2.setConnectable(false);
  1566. label2.vertex = true;
  1567. cardCell.insert(label2);
  1568. 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');
  1569. label3.geometry.relative = false;
  1570. label3.setConnectable(false);
  1571. label3.vertex = true;
  1572. cardCell.insert(label3);
  1573. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Item Flow');
  1574. }),
  1575. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 80,
  1576. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  1577. '&lt;&lt;interface&gt;&gt;<br/>' +
  1578. '<b>ISpeedObserver</b></p><hr/>' +
  1579. '<p style="margin:0px;margin-top:4px;margin-left:4px;text-align:left;">' +
  1580. 'notifySpeedChange(): void</p>',
  1581. 'Interface', null, null, this.getTagsForStencil(gn, '', dt + 'interface').join(' ')),
  1582. this.addEntry(dt + 'required interface', function()
  1583. {
  1584. var cardCell = new mxCell('Transmission', new mxGeometry(90, 0, 160, 60), s + 'port4;fontStyle=1;whiteSpace=wrap;align=center;');
  1585. cardCell.vertex = true;
  1586. 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;');
  1587. label1.geometry.relative = false;
  1588. label1.setConnectable(false);
  1589. label1.vertex = true;
  1590. cardCell.insert(label1);
  1591. 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;');
  1592. assoc1.geometry.setTerminalPoint(new mxPoint(0, 0), false);
  1593. assoc1.geometry.relative = true;
  1594. assoc1.geometry.x = 1;
  1595. assoc1.edge = true;
  1596. cardCell.insertEdge(assoc1, true);
  1597. 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;');
  1598. assoc2.geometry.setTerminalPoint(new mxPoint(0, 60), false);
  1599. assoc2.geometry.relative = true;
  1600. assoc2.geometry.x = 1;
  1601. assoc2.edge = true;
  1602. cardCell.insertEdge(assoc2, true);
  1603. return sb.createVertexTemplateFromCells([cardCell, assoc1, assoc2], 250, 60, 'Required Interface');
  1604. }),
  1605. this.addEntry(dt + 'provided interface', function()
  1606. {
  1607. var cardCell = new mxCell('Transmission', new mxGeometry(90, 0, 160, 60), s + 'port4;fontStyle=1;whiteSpace=wrap;align=center;');
  1608. cardCell.vertex = true;
  1609. var label1 = new mxCell('p1', new mxGeometry(0, 20, 20, 20), 'shape=rect;html=1;resizable=0;labelBackgroundColor=none;fontSize=10;');
  1610. label1.geometry.relative = false;
  1611. label1.setConnectable(false);
  1612. label1.vertex = true;
  1613. cardCell.insert(label1);
  1614. 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;');
  1615. assoc1.geometry.setTerminalPoint(new mxPoint(0, 0), false);
  1616. assoc1.geometry.relative = true;
  1617. assoc1.geometry.x = 1;
  1618. assoc1.edge = true;
  1619. cardCell.insertEdge(assoc1, true);
  1620. 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;');
  1621. assoc2.geometry.setTerminalPoint(new mxPoint(0, 60), false);
  1622. assoc2.geometry.relative = true;
  1623. assoc2.geometry.x = 1;
  1624. assoc2.edge = true;
  1625. cardCell.insertEdge(assoc2, true);
  1626. return sb.createVertexTemplateFromCells([cardCell, assoc1, assoc2], 250, 60, 'Provided Interface');
  1627. })
  1628. ];
  1629. this.addPalette('sysmlPorts and Flows', 'SysML / Ports and Flows', expand || false, mxUtils.bind(this, function(content)
  1630. {
  1631. for (var i = 0; i < fns.length; i++)
  1632. {
  1633. content.appendChild(fns[i](content));
  1634. }
  1635. }));
  1636. };
  1637. Sidebar.prototype.addSysMLConstraintBlocksPalette = function(expand)
  1638. {
  1639. var s = 'html=1;shape=mxgraph.sysml.';
  1640. var gn = '';
  1641. var dt = 'sysml constraint block ';
  1642. var sb = this;
  1643. var fns = [
  1644. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;', 200, 180,
  1645. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  1646. '&lt;&lt;constraint&gt;&gt;<br/>' +
  1647. '<b>ConstraintBlock1</b></p><hr/>' +
  1648. '<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
  1649. '<i>constraints</i></p>' +
  1650. '<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
  1651. '{{L1} x > y }<br/>nested: ConstraintBlock2</p><hr/>' +
  1652. '<p style="font-size:10px;margin:0px;margin-top:4px;text-align:center;">' +
  1653. '<i>parameters</i></p>' +
  1654. '<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;">' +
  1655. 'x: Real<br/>y: Real</p>',
  1656. 'Constraint Block', null, null, this.getTagsForStencil(gn, '', dt + '').join(' ')),
  1657. this.addEntry(dt + 'provided interface', function()
  1658. {
  1659. var bg = new mxCell('<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>par</b> Block1</p>', new mxGeometry(0, 0, 300, 170), s + 'package;labelX=120;align=left;spacingLeft=10;overflow=fill;whiteSpace=wrap;strokeWidth=1;recursiveResize=0;');
  1660. bg.vertex = true;
  1661. var cardCell2 = new mxCell('C1: Constraint', new mxGeometry(130, 50, 150, 100), s + 'paramDgm;fontStyle=1;whiteSpace=wrap;align=center;');
  1662. cardCell2.vertex = true;
  1663. bg.insert(cardCell2);
  1664. 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;');
  1665. label1.geometry.relative = false;
  1666. label1.setConnectable(false);
  1667. label1.vertex = true;
  1668. cardCell2.insert(label1);
  1669. 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;');
  1670. label2.geometry.relative = false;
  1671. label2.setConnectable(false);
  1672. label2.vertex = true;
  1673. cardCell2.insert(label2);
  1674. var cardCell3 = new mxCell('length: Real', new mxGeometry(30, 65, 20, 20), 'shape=rect;html=1;fontSize=10;verticalLabelPosition=top;verticalAlign=bottom;');
  1675. cardCell3.vertex = true;
  1676. bg.insert(cardCell3);
  1677. var cardCell4 = new mxCell('width: Real', new mxGeometry(30, 115, 20, 20), 'shape=rect;html=1;fontSize=10;verticalLabelPosition=top;verticalAlign=bottom;');
  1678. cardCell4.vertex = true;
  1679. bg.insert(cardCell4);
  1680. 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;');
  1681. assoc1.geometry.relative = true;
  1682. assoc1.geometry.x=1;
  1683. assoc1.edge = true;
  1684. cardCell2.insertEdge(assoc1, true);
  1685. cardCell3.insertEdge(assoc1, false);
  1686. bg.insert(assoc1);
  1687. 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;');
  1688. assoc2.geometry.relative = true;
  1689. assoc2.geometry.x=1;
  1690. assoc2.edge = true;
  1691. cardCell2.insertEdge(assoc2, true);
  1692. cardCell4.insertEdge(assoc2, false);
  1693. bg.insert(assoc2);
  1694. return sb.createVertexTemplateFromCells([bg], 300, 170, 'Parametric Diagram');
  1695. }),
  1696. this.addEntry(dt + 'constraint property', function()
  1697. {
  1698. var cardCell = new mxCell('C1:Constraint1', new mxGeometry(0, 0, 150, 100), s + 'paramDgm;fontStyle=1;whiteSpace=wrap;align=center;');
  1699. cardCell.vertex = true;
  1700. 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;');
  1701. label1.geometry.relative = false;
  1702. label1.setConnectable(false);
  1703. label1.vertex = true;
  1704. cardCell.insert(label1);
  1705. 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;');
  1706. label2.geometry.relative = false;
  1707. label2.setConnectable(false);
  1708. label2.vertex = true;
  1709. cardCell.insert(label2);
  1710. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Constraint Property');
  1711. }),
  1712. this.addEntry(dt + 'constraint property', function()
  1713. {
  1714. var cardCell = new mxCell(
  1715. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  1716. '&lt;&lt;constraint&gt;&gt;<br/>' +
  1717. '<b>C1: Constraint1</b></p><hr/>',
  1718. new mxGeometry(0, 0, 150, 120), s + 'consProp;overflow=fill;whiteSpace=wrap;');
  1719. cardCell.vertex = true;
  1720. var label1 = new mxCell('x: Real', new mxGeometry(0, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=middle;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;spacingLeft=22;spacingTop=120;fontStyle=1;');
  1721. label1.geometry.relative = false;
  1722. label1.setConnectable(false);
  1723. label1.vertex = true;
  1724. cardCell.insert(label1);
  1725. var label2 = new mxCell('y: Real', new mxGeometry(0, 0, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=middle;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;spacingLeft=22;spacingTop=180;fontStyle=1;');
  1726. label2.geometry.relative = false;
  1727. label2.setConnectable(false);
  1728. label2.vertex = true;
  1729. cardCell.insert(label2);
  1730. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Constraint Property');
  1731. })
  1732. ];
  1733. this.addPalette('sysmlConstraint Blocks', 'SysML / Constraint Blocks', expand || false, mxUtils.bind(this, function(content)
  1734. {
  1735. for (var i = 0; i < fns.length; i++)
  1736. {
  1737. content.appendChild(fns[i](content));
  1738. }
  1739. }));
  1740. };
  1741. Sidebar.prototype.addSysMLActivitiesPalette = function(expand)
  1742. {
  1743. var s = 'html=1;shape=mxgraph.sysml.';
  1744. var gn = '';
  1745. var dt = 'sysml activity ';
  1746. var sb = this;
  1747. var fns = [
  1748. this.createVertexTemplateEntry('shape=rect;html=1;rounded=1;whiteSpace=wrap;align=center;',
  1749. 160, 80, 'Action', 'Action', null, null, this.getTagsForStencil(gn, '', dt + 'action').join(' ')),
  1750. this.createVertexTemplateEntry(s + 'callBehAct;whiteSpace=wrap;align=center;',
  1751. 160, 80, 'action name:\nbehavior name', 'Call Behavior Action', null, null, this.getTagsForStencil(gn, 'callBehAct', dt + 'call behavior action').join(' ')),
  1752. this.createVertexTemplateEntry(s + 'accEvent;strokeWidth=2;whiteSpace=wrap;align=center;',
  1753. 100, 60, 'Event', 'Accept Event Action', null, null, this.getTagsForStencil(gn, 'accEvent', dt + 'accept event action').join(' ')),
  1754. this.createVertexTemplateEntry(s + 'timeEvent;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;',
  1755. 35, 40, '', 'Time Event', null, null, this.getTagsForStencil(gn, 'timeEvent', dt + 'time event').join(' ')),
  1756. this.createVertexTemplateEntry(s + 'sendSigAct;strokeWidth=2;whiteSpace=wrap;align=center;',
  1757. 100, 60, 'Signal', 'Send Signal Action', null, null, this.getTagsForStencil(gn, 'sendSigAct', dt + 'send signal action').join(' ')),
  1758. this.createVertexTemplateEntry(s + 'actFinal;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;',
  1759. 40, 40, '', 'Activity Final', null, null, this.getTagsForStencil(gn, 'actFinal', dt + 'activity final').join(' ')),
  1760. this.createVertexTemplateEntry(s + 'actParamNode;align=left;spacingLeft=15;verticalAlign=top;spacingTop=-3;',
  1761. 300, 135, 'act', 'Activity Parameter Node', null, null, this.getTagsForStencil(gn, 'act', dt + 'activity parameter node').join(' ')),
  1762. this.createVertexTemplateEntry('shape=rect;rounded=1;html=1;whiteSpace=wrap;align=center;',
  1763. 160, 80, '&lt;&lt;controlOperator&gt;&gt;\nCallBehaviorAction', 'Control Operator', null, null, this.getTagsForStencil(gn, '', dt + 'control operator').join(' ')),
  1764. this.createVertexTemplateEntry(s + 'package;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;labelX=135;html=1;overflow=fill;',
  1765. 250, 120, '<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>act</b> [ControlOperator]</p>', 'Control Operator',
  1766. null, null, this.getTagsForStencil(gn, 'package', dt + 'control operator').join(' ')),
  1767. this.addEntry(dt + 'decision node', function()
  1768. {
  1769. var cardCell = new mxCell('', new mxGeometry(80, 40, 40, 40),
  1770. 'shape=rhombus;html=1;verticalLabelPosition=bottom;verticalAlignment=top;');
  1771. cardCell.vertex = true;
  1772. 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;');
  1773. edge1.geometry.setTerminalPoint(new mxPoint(100, 0), false);
  1774. edge1.geometry.relative = true;
  1775. edge1.edge = true;
  1776. cardCell.insertEdge(edge1, true);
  1777. 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;');
  1778. edge2.geometry.setTerminalPoint(new mxPoint(200, 60), false);
  1779. edge2.geometry.relative = true;
  1780. edge2.edge = true;
  1781. cardCell.insertEdge(edge2, true);
  1782. 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;');
  1783. edge3.geometry.setTerminalPoint(new mxPoint(0, 60), false);
  1784. edge3.geometry.relative = true;
  1785. edge3.edge = true;
  1786. cardCell.insertEdge(edge3, true);
  1787. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3], 200, 80, 'Decision Node');
  1788. }),
  1789. this.createVertexTemplateEntry(s + 'flowFinal;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;',
  1790. 40, 40, '', 'Flow Final', null, null, this.getTagsForStencil(gn, 'flowFinal', dt + 'flow final').join(' ')),
  1791. this.addEntry(dt + 'fork node', function()
  1792. {
  1793. var cardCell = new mxCell('', new mxGeometry(60, 0, 4, 80),'shape=rect;html=1;fillColor=#000000;verticalLabelPosition=bottom;verticalAlignment=top;');
  1794. cardCell.vertex = true;
  1795. 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;');
  1796. edge1.geometry.setTerminalPoint(new mxPoint(0, 40), false);
  1797. edge1.geometry.relative = true;
  1798. edge1.edge = true;
  1799. cardCell.insertEdge(edge1, true);
  1800. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;strokeWidth=3;endSize=12;');
  1801. edge2.geometry.setTerminalPoint(new mxPoint(200, 10), false);
  1802. edge2.geometry.relative = true;
  1803. edge2.edge = true;
  1804. cardCell.insertEdge(edge2, true);
  1805. var edge3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;strokeWidth=3;endSize=12;');
  1806. edge3.geometry.setTerminalPoint(new mxPoint(200, 30), false);
  1807. edge3.geometry.relative = true;
  1808. edge3.edge = true;
  1809. cardCell.insertEdge(edge3, true);
  1810. var edge4 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;strokeWidth=3;endSize=12;');
  1811. edge4.geometry.setTerminalPoint(new mxPoint(200, 50), false);
  1812. edge4.geometry.relative = true;
  1813. edge4.edge = true;
  1814. cardCell.insertEdge(edge4, true);
  1815. var edge5 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;strokeWidth=3;endSize=12;');
  1816. edge5.geometry.setTerminalPoint(new mxPoint(200, 70), false);
  1817. edge5.geometry.relative = true;
  1818. edge5.edge = true;
  1819. cardCell.insertEdge(edge5, true);
  1820. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3, edge4, edge5], 200, 80, 'Fork Node');
  1821. }),
  1822. this.createVertexTemplateEntry('shape=ellipse;html=1;illColor=#000000;strokeWidth=2;verticalLabelPosition=bottom;verticalAlignment=top;',
  1823. 40, 40, '', 'Initial Node', null, null, this.getTagsForStencil(gn, '', dt + 'initial node').join(' ')),
  1824. this.addEntry(dt + 'join node', function()
  1825. {
  1826. var cardCell = new mxCell('{joinspec=...}', new mxGeometry(136, 0, 4, 80),'shape=rect;html=1;fillColor=#000000;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;');
  1827. cardCell.vertex = true;
  1828. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;rounded=0;endArrow=open;strokeWidth=3;endSize=12;');
  1829. edge1.geometry.setTerminalPoint(new mxPoint(200, 40), false);
  1830. edge1.geometry.relative = true;
  1831. edge1.edge = true;
  1832. cardCell.insertEdge(edge1, true);
  1833. 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;');
  1834. edge2.geometry.setTerminalPoint(new mxPoint(0, 10), false);
  1835. edge2.geometry.relative = true;
  1836. edge2.edge = true;
  1837. cardCell.insertEdge(edge2, true);
  1838. 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;');
  1839. edge3.geometry.setTerminalPoint(new mxPoint(0, 30), false);
  1840. edge3.geometry.relative = true;
  1841. edge3.edge = true;
  1842. cardCell.insertEdge(edge3, true);
  1843. 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;');
  1844. edge4.geometry.setTerminalPoint(new mxPoint(0, 50), false);
  1845. edge4.geometry.relative = true;
  1846. edge4.edge = true;
  1847. cardCell.insertEdge(edge4, true);
  1848. 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;');
  1849. edge5.geometry.setTerminalPoint(new mxPoint(0, 70), false);
  1850. edge5.geometry.relative = true;
  1851. edge5.edge = true;
  1852. cardCell.insertEdge(edge5, true);
  1853. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3, edge4, edge5], 200, 80, 'Join Node');
  1854. }),
  1855. this.addEntry(dt + 'is control', function()
  1856. {
  1857. var cardCell = new mxCell('Action', new mxGeometry(90, 0, 120, 60), s + 'isControl;whiteSpace=wrap;align=center;');
  1858. cardCell.vertex = true;
  1859. 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;');
  1860. edge1.geometry.setTerminalPoint(new mxPoint(0, 30), false);
  1861. edge1.geometry.relative = true;
  1862. edge1.edge = true;
  1863. cardCell.insertEdge(edge1, true);
  1864. 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;');
  1865. edge2.geometry.setTerminalPoint(new mxPoint(300, 30), false);
  1866. edge2.geometry.relative = true;
  1867. edge2.edge = true;
  1868. cardCell.insertEdge(edge2, true);
  1869. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2], 300, 60, 'Is Control');
  1870. }),
  1871. this.addEntry(dt + 'is stream', function()
  1872. {
  1873. var cardCell = new mxCell('Action', new mxGeometry(90, 0, 120, 60), s + 'isControl;whiteSpace=wrap;align=center;');
  1874. cardCell.vertex = true;
  1875. 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;');
  1876. edge1.geometry.setTerminalPoint(new mxPoint(0, 30), false);
  1877. edge1.geometry.relative = true;
  1878. edge1.edge = true;
  1879. cardCell.insertEdge(edge1, true);
  1880. 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;');
  1881. edge2.geometry.setTerminalPoint(new mxPoint(300, 30), false);
  1882. edge2.geometry.relative = true;
  1883. edge2.edge = true;
  1884. cardCell.insertEdge(edge2, true);
  1885. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2], 300, 60, 'Is Stream');
  1886. }),
  1887. this.addEntry(dt + 'is stream', function()
  1888. {
  1889. var cardCell = new mxCell('Action', new mxGeometry(90, 0, 120, 60), s + 'isStream;whiteSpace=wrap;align=center;');
  1890. cardCell.vertex = true;
  1891. 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;');
  1892. edge1.geometry.setTerminalPoint(new mxPoint(0, 30), false);
  1893. edge1.geometry.relative = true;
  1894. edge1.edge = true;
  1895. cardCell.insertEdge(edge1, true);
  1896. 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;');
  1897. edge2.geometry.setTerminalPoint(new mxPoint(300, 30), false);
  1898. edge2.geometry.relative = true;
  1899. edge2.edge = true;
  1900. cardCell.insertEdge(edge2, true);
  1901. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2], 300, 60, 'Is Stream');
  1902. }),
  1903. this.addEntry(dt + 'is stream', function()
  1904. {
  1905. var cardCell = new mxCell('act', new mxGeometry(0, 0, 200, 100), s + 'isActStream;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;');
  1906. cardCell.vertex = true;
  1907. 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;');
  1908. label1.geometry.relative = false;
  1909. label1.setConnectable(false);
  1910. label1.vertex = true;
  1911. cardCell.insert(label1);
  1912. return sb.createVertexTemplateFromCells([cardCell], 250, 100, 'Is Stream');
  1913. }),
  1914. this.addEntry(dt + 'local pre precondition post postcondition', function()
  1915. {
  1916. 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;');
  1917. cardCell1.vertex = true;
  1918. var cardCell2 = new mxCell('Action', new mxGeometry(10, 65, 100, 50), 'shape=rect;html=1;rounded=1;strokeWidth=2;whiteSpace=wrap;align=center;');
  1919. cardCell2.vertex = true;
  1920. 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;');
  1921. cardCell3.vertex = true;
  1922. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;rounded=0;endArrow=none;');
  1923. edge1.geometry.relative = true;
  1924. edge1.edge = true;
  1925. cardCell1.insertEdge(edge1, true);
  1926. cardCell2.insertEdge(edge1, false);
  1927. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;rounded=0;endArrow=none;');
  1928. edge2.geometry.relative = true;
  1929. edge2.edge = true;
  1930. cardCell2.insertEdge(edge2, true);
  1931. cardCell3.insertEdge(edge2, false);
  1932. return sb.createVertexTemplateFromCells([cardCell1, cardCell2, cardCell3, edge1, edge2], 150, 180, 'Local Pre- and Postconditions');
  1933. }),
  1934. this.addEntry(dt + 'merge node', function()
  1935. {
  1936. var cardCell = new mxCell('', new mxGeometry(80, 0, 40, 40), 'shape=rhombus;html=1;verticalLabelPosition=top;verticalAlignment=bottom;');
  1937. cardCell.vertex = true;
  1938. 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;');
  1939. edge1.geometry.setTerminalPoint(new mxPoint(100, 80), false);
  1940. edge1.geometry.relative = true;
  1941. edge1.edge = true;
  1942. cardCell.insertEdge(edge1, true);
  1943. 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;');
  1944. edge2.geometry.setTerminalPoint(new mxPoint(200, 20), false);
  1945. edge2.geometry.relative = true;
  1946. edge2.edge = true;
  1947. cardCell.insertEdge(edge2, true);
  1948. 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;');
  1949. edge3.geometry.setTerminalPoint(new mxPoint(0, 20), false);
  1950. edge3.geometry.relative = true;
  1951. edge3.edge = true;
  1952. cardCell.insertEdge(edge3, true);
  1953. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3], 200, 80, 'Merge Node');
  1954. }),
  1955. this.addEntry(dt + 'no buffer', function()
  1956. {
  1957. var cardCell = new mxCell('Action', new mxGeometry(90, 0, 120, 60), s + 'isControl;whiteSpace=wrap;align=center;');
  1958. cardCell.vertex = true;
  1959. var edge1 = new mxCell('&lt;&lt;noBuffer&gt;&gt;', 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;');
  1960. edge1.geometry.setTerminalPoint(new mxPoint(0, 30), false);
  1961. edge1.geometry.relative = true;
  1962. edge1.edge = true;
  1963. cardCell.insertEdge(edge1, true);
  1964. var edge2 = new mxCell('&lt;&lt;noBuffer&gt;&gt;', 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;');
  1965. edge2.geometry.setTerminalPoint(new mxPoint(300, 30), false);
  1966. edge2.geometry.relative = true;
  1967. edge2.edge = true;
  1968. cardCell.insertEdge(edge2, true);
  1969. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2], 300, 60, 'No Buffer');
  1970. }),
  1971. this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;',
  1972. 160, 80, 'object node name:\n type name\n[state, state ...]', 'Object Node', null, null, this.getTagsForStencil(gn, '', dt + 'object node').join(' ')),
  1973. this.addEntry(dt + 'object node', function()
  1974. {
  1975. var cardCell = new mxCell('Action', new mxGeometry(0, 0, 120, 60), s + 'isControl;whiteSpace=wrap;align=center;');
  1976. cardCell.vertex = true;
  1977. 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;');
  1978. label1.geometry.relative = false;
  1979. label1.setConnectable(false);
  1980. label1.vertex = true;
  1981. cardCell.insert(label1);
  1982. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Object Node');
  1983. }),
  1984. this.addEntry(dt + 'optional', function()
  1985. {
  1986. var cardCell = new mxCell('Action', new mxGeometry(90, 0, 120, 60), s + 'isControl;whiteSpace=wrap;align=center;');
  1987. cardCell.vertex = true;
  1988. var edge1 = new mxCell('&lt;&lt;optional&gt;&gt;', 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;');
  1989. edge1.geometry.setTerminalPoint(new mxPoint(0, 30), false);
  1990. edge1.geometry.relative = true;
  1991. edge1.edge = true;
  1992. cardCell.insertEdge(edge1, true);
  1993. var edge2 = new mxCell('&lt;&lt;optional&gt;&gt;', 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;');
  1994. edge2.geometry.setTerminalPoint(new mxPoint(300, 30), false);
  1995. edge2.geometry.relative = true;
  1996. edge2.edge = true;
  1997. cardCell.insertEdge(edge2, true);
  1998. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2], 300, 60, 'Optional');
  1999. }),
  2000. this.addEntry(dt + 'optional', function()
  2001. {
  2002. var cardCell = new mxCell('act', new mxGeometry(0, 0, 200, 100), s + 'isActStream;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;fontStyle=1;');
  2003. cardCell.vertex = true;
  2004. var label1 = new mxCell('&lt;&lt;optional&gt;&gt;', new mxGeometry(200, 50, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;fontSize=10;spacingTop=5;');
  2005. label1.geometry.relative = false;
  2006. label1.setConnectable(false);
  2007. label1.vertex = true;
  2008. cardCell.insert(label1);
  2009. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Optional');
  2010. }),
  2011. this.addEntry(dt + 'overwrite', function()
  2012. {
  2013. var cardCell = new mxCell('Action', new mxGeometry(90, 0, 120, 60), s + 'isControl;whiteSpace=wrap;align=center;');
  2014. cardCell.vertex = true;
  2015. var edge1 = new mxCell('&lt;&lt;overwrite&gt;&gt;', 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;');
  2016. edge1.geometry.setTerminalPoint(new mxPoint(0, 30), false);
  2017. edge1.geometry.relative = true;
  2018. edge1.edge = true;
  2019. cardCell.insertEdge(edge1, true);
  2020. var edge2 = new mxCell('&lt;&lt;overwrite&gt;&gt;', 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;');
  2021. edge2.geometry.setTerminalPoint(new mxPoint(300, 30), false);
  2022. edge2.geometry.relative = true;
  2023. edge2.edge = true;
  2024. cardCell.insertEdge(edge2, true);
  2025. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2], 300, 60, 'Overwrite');
  2026. }),
  2027. this.createVertexTemplateEntry(s + 'paramSet;whiteSpace=wrap;align=center;',
  2028. 160, 100, 'Action', 'Parameter Set', null, null, this.getTagsForStencil(gn, 'paramSet', dt + 'parameter set').join(' ')),
  2029. this.createVertexTemplateEntry(s + 'paramActSet;align=left;spacingLeft=15;verticalAlign=top;spacingTop=-3;fontStyle=1;',
  2030. 250, 120, 'act', 'Parameter Set', null, null, this.getTagsForStencil(gn, 'paramActSet', dt + 'parameter set').join(' ')),
  2031. this.addEntry(dt + 'probability', function()
  2032. {
  2033. var cardCell = new mxCell('Action', new mxGeometry(0, 0, 120, 160), s + 'probability;whiteSpace=wrap;align=center;');
  2034. cardCell.vertex = true;
  2035. 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;');
  2036. label1.geometry.relative = false;
  2037. label1.setConnectable(false);
  2038. label1.vertex = true;
  2039. cardCell.insert(label1);
  2040. 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;');
  2041. label2.geometry.relative = false;
  2042. label2.setConnectable(false);
  2043. label2.vertex = true;
  2044. cardCell.insert(label2);
  2045. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Probability');
  2046. }),
  2047. this.addEntry(dt + 'probability', function()
  2048. {
  2049. var cardCell = new mxCell('act', new mxGeometry(0, 0, 120, 160), s + 'actProb;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;fontStyle=1;');
  2050. cardCell.vertex = true;
  2051. 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;');
  2052. label1.geometry.relative = false;
  2053. label1.setConnectable(false);
  2054. label1.vertex = true;
  2055. cardCell.insert(label1);
  2056. 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;');
  2057. label2.geometry.relative = false;
  2058. label2.setConnectable(false);
  2059. label2.vertex = true;
  2060. cardCell.insert(label2);
  2061. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Probability');
  2062. }),
  2063. this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;',
  2064. 120, 60, '&lt;&lt;continuous&gt;&gt;\nObject Node', 'Rate', null, null, this.getTagsForStencil(gn, '', dt + 'rate').join(' ')),
  2065. this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;',
  2066. 120, 60, '&lt;&lt;discrete&gt;&gt;\nObject Node', 'Rate', null, null, this.getTagsForStencil(gn, '', dt + 'rate').join(' ')),
  2067. this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;',
  2068. 140, 120, '{ rate = constant }\n{ rate = distribution }\n&lt;&lt;continuous&gt;&gt;\n&lt;&lt;discrete&gt;&gt;\nObject Node', 'Rate',
  2069. null, null, this.getTagsForStencil(gn, '', dt + 'rate').join(' ')),
  2070. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;',
  2071. 140, 80,
  2072. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  2073. 'Object Node</p><hr/>' +
  2074. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  2075. '&lt;&lt;rate&gt;&gt;<br/>' +
  2076. 'rate = constant<br/>' +
  2077. 'rate = distribution</p>',
  2078. 'Rate', null, null, this.getTagsForStencil(gn, '', dt + 'rate').join(' ')),
  2079. this.addEntry(dt + 'rate', function()
  2080. {
  2081. var cardCell = new mxCell('act', new mxGeometry(0, 0, 200, 100), s + 'isActStream;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;fontStyle=1;');
  2082. cardCell.vertex = true;
  2083. var label1 = new mxCell(
  2084. '{ rate = constant }\n{ rate = distributuion}\n&lt;&lt;continuous&gt;&gt;\n&lt;&lt;discrete&gt;&gt;',
  2085. new mxGeometry(200, 50, 0, 0), 'resizable=0;html=1;align=left;verticalAlign=top;labelPosition=left;verticalLabelPosition=middle;labelBackgroundColor=none;fontSize=10;spacingTop=5;');
  2086. label1.geometry.relative = false;
  2087. label1.setConnectable(false);
  2088. label1.vertex = true;
  2089. cardCell.insert(label1);
  2090. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Rate');
  2091. }),
  2092. this.addEntry(dt + 'rate', function()
  2093. {
  2094. var cardCell = new mxCell('Action', new mxGeometry(90, 0, 120, 60), s + 'isControl;whiteSpace=wrap;align=center;');
  2095. cardCell.vertex = true;
  2096. var edge1 = new mxCell('{ rate = constant }\n{ rate = distributuion}\n&lt;&lt;continuous&gt;&gt;\n&lt;&lt;discrete&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;startArrow=open;rounded=0;endArrow=none;verticalAlign=top;exitX=0;exitY=0.5;labelBackgroundColor=none;startSize=12;');
  2097. edge1.geometry.setTerminalPoint(new mxPoint(0, 30), false);
  2098. edge1.geometry.relative = true;
  2099. edge1.edge = true;
  2100. cardCell.insertEdge(edge1, true);
  2101. var edge2 = new mxCell('{ rate = constant }\n{ rate = distributuion}\n&lt;&lt;continuous&gt;&gt;\n&lt;&lt;discrete&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;endArrow=open;rounded=0;verticalAlign=top;entryX=0;entryY=0.5;labelBackgroundColor=none;endSize=12;');
  2102. edge2.geometry.setTerminalPoint(new mxPoint(300, 30), false);
  2103. edge2.geometry.relative = true;
  2104. edge2.edge = true;
  2105. cardCell.insertEdge(edge2, true);
  2106. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2], 'Rate');
  2107. }),
  2108. this.addEntry(dt + 'control flow', function()
  2109. {
  2110. var cardCell = new mxCell('', new mxGeometry(0, 0, 60, 40), 'shape=rect;html=1;rounded=1;whiteSpace=wrap;');
  2111. cardCell.vertex = true;
  2112. var cardCell2 = new mxCell('', new mxGeometry(100, 0, 60, 40), 'shape=rect;html=1;rounded=1;whiteSpace=wrap;');
  2113. cardCell2.vertex = true;
  2114. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;endArrow=open;labelBackgroundColor=none;endSize=12;');
  2115. edge1.geometry.relative = true;
  2116. edge1.edge = true;
  2117. cardCell.insertEdge(edge1, true);
  2118. cardCell2.insertEdge(edge1, false);
  2119. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 160, 60, 'control flow');
  2120. }),
  2121. this.addEntry(dt + 'control flow', function()
  2122. {
  2123. var cardCell = new mxCell('', new mxGeometry(0, 0, 60, 40), 'shape=rect;html=1;rounded=1;whiteSpace=wrap;');
  2124. cardCell.vertex = true;
  2125. var cardCell2 = new mxCell('', new mxGeometry(100, 0, 60, 40), 'shape=rect;html=1;rounded=1;whiteSpace=wrap;');
  2126. cardCell2.vertex = true;
  2127. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;endArrow=open;labelBackgroundColor=none;dashed=1;endSize=12;');
  2128. edge1.geometry.relative = true;
  2129. edge1.edge = true;
  2130. cardCell.insertEdge(edge1, true);
  2131. cardCell2.insertEdge(edge1, false);
  2132. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 160, 60, 'Control Flow');
  2133. }),
  2134. this.addEntry(dt + 'object flow', function()
  2135. {
  2136. var cardCell = new mxCell('', new mxGeometry(0, 0, 60, 40), 'shape=rect;html=1;rounded=1;strokeWidth=2;whiteSpace=wrap;');
  2137. cardCell.vertex = true;
  2138. var cardCell2 = new mxCell('', new mxGeometry(100, 0, 60, 40), 'shape=rect;html=1;strokeWidth=2;whiteSpace=wrap;');
  2139. cardCell2.vertex = true;
  2140. var cardCell3 = new mxCell('', new mxGeometry(200, 0, 60, 40), 'shape=rect;html=1;rounded=1;strokeWidth=2;whiteSpace=wrap;');
  2141. cardCell3.vertex = true;
  2142. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;endArrow=open;labelBackgroundColor=none;strokeWidth=2;endSize=12;');
  2143. edge1.geometry.relative = true;
  2144. edge1.edge = true;
  2145. cardCell.insertEdge(edge1, true);
  2146. cardCell2.insertEdge(edge1, false);
  2147. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;endArrow=open;labelBackgroundColor=none;strokeWidth=2;endSize=12;');
  2148. edge2.geometry.relative = true;
  2149. edge2.edge = true;
  2150. cardCell2.insertEdge(edge2, true);
  2151. cardCell3.insertEdge(edge2, false);
  2152. return sb.createVertexTemplateFromCells([cardCell, cardCell2, cardCell3, edge1, edge2], 260, 60, 'Object Flow');
  2153. }),
  2154. this.addEntry(dt + 'object flow', function()
  2155. {
  2156. var cardCell = new mxCell('', new mxGeometry(0, 0, 60, 40), s + 'objFlowR;strokeWidth=2;whiteSpace=wrap;');
  2157. cardCell.vertex = true;
  2158. var cardCell2 = new mxCell('', new mxGeometry(140, 0, 60, 40), s + 'objFlowL;strokeWidth=2;whiteSpace=wrap;');
  2159. cardCell2.vertex = true;
  2160. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=horizontal;endArrow=open;labelBackgroundColor=none;strokeWidth=2;endSize=12;');
  2161. edge1.geometry.relative = true;
  2162. edge1.edge = true;
  2163. cardCell.insertEdge(edge1, true);
  2164. cardCell2.insertEdge(edge1, false);
  2165. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 200, 60, 'Object Flow');
  2166. }),
  2167. this.createVertexTemplateEntry(s + 'objFlowR;whiteSpace=wrap;',
  2168. 120, 60, '', 'Object Flow', null, null, this.getTagsForStencil(gn, 'objFlowR', dt + 'object flow').join(' ')),
  2169. this.createVertexTemplateEntry(s + 'objFlowL;whiteSpace=wrap;',
  2170. 120, 60, '', 'Object Flow', null, null, this.getTagsForStencil(gn, 'objFlowL', dt + 'object flow').join(' ')),
  2171. this.addEntry(dt + 'probability', function()
  2172. {
  2173. var cardCell = new mxCell('', new mxGeometry(155, 40, 40, 40), 'shape=rhombus;html=1;whiteSpace=wrap;verticalLabelPosition=bottom;verticalAlignment=top;');
  2174. cardCell.vertex = true;
  2175. 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;');
  2176. edge1.geometry.setTerminalPoint(new mxPoint(175, 0), false);
  2177. edge1.geometry.relative = true;
  2178. edge1.edge = true;
  2179. cardCell.insertEdge(edge1, true);
  2180. var edge2 = new mxCell('{ probability = valueSpecification }', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;verticalAlign=bottom;endArrow=open;rounded=0;labelBackgroundColor=none;endSize=12;');
  2181. edge2.geometry.setTerminalPoint(new mxPoint(350, 60), false);
  2182. edge2.geometry.relative = true;
  2183. edge2.edge = true;
  2184. cardCell.insertEdge(edge2, true);
  2185. var edge3 = new mxCell('{ probability = valueSpecification }', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;html=1;elbow=vertical;verticalAlign=bottom;endArrow=open;rounded=0;labelBackgroundColor=none;endSize=12;');
  2186. edge3.geometry.setTerminalPoint(new mxPoint(0, 60), false);
  2187. edge3.geometry.relative = true;
  2188. edge3.edge = true;
  2189. cardCell.insertEdge(edge3, true);
  2190. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3], 350, 80, 'Probability');
  2191. }),
  2192. this.addEntry(dt + 'probability', function()
  2193. {
  2194. var cardCell = new mxCell('Action', new mxGeometry(0, 0, 160, 60), s + 'objFlowR;whiteSpace=wrap;align=center;');
  2195. cardCell.vertex = true;
  2196. var assoc1 = new mxCell('{ probability = valueSpecification }', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=center;verticalAlign=bottom;endArrow=open;endSize=12;exitX=1;exitY=0.5;fillColor=#ffffff;labelBackgroundColor=none;');
  2197. assoc1.geometry.setTerminalPoint(new mxPoint(250, 0), false);
  2198. assoc1.geometry.relative = true;
  2199. assoc1.geometry.x = 1;
  2200. assoc1.edge = true;
  2201. cardCell.insertEdge(assoc1, true);
  2202. var assoc2 = new mxCell('{ probability = valueSpecification }', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=center;verticalAlign=top;endArrow=open;endSize=12;exitX=1;exitY=0.5;fillColor=#ffffff;labelBackgroundColor=none;');
  2203. assoc2.geometry.setTerminalPoint(new mxPoint(250, 60), false);
  2204. assoc2.geometry.relative = true;
  2205. assoc2.geometry.x = 1;
  2206. assoc2.edge = true;
  2207. cardCell.insertEdge(assoc2, true);
  2208. return sb.createVertexTemplateFromCells([cardCell, assoc1, assoc2], 250, 60, 'Probability');
  2209. }),
  2210. this.addEntry(dt + 'probability', function()
  2211. {
  2212. var cardCell = new mxCell('Object Node', new mxGeometry(0, 0, 160, 60), 'shape=rect;whiteSpace=wrap;align=center;');
  2213. cardCell.vertex = true;
  2214. var assoc1 = new mxCell('{ probability = valueSpecification }', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=center;verticalAlign=bottom;endArrow=open;endSize=12;exitX=1;exitY=0.3;fillColor=#ffffff;labelBackgroundColor=none;');
  2215. assoc1.geometry.setTerminalPoint(new mxPoint(250, 0), false);
  2216. assoc1.geometry.relative = true;
  2217. assoc1.geometry.x = 1;
  2218. assoc1.edge = true;
  2219. cardCell.insertEdge(assoc1, true);
  2220. var assoc2 = new mxCell('{ probability = valueSpecification }', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;align=center;verticalAlign=top;endArrow=open;endSize=12;exitX=1;exitY=0.7;fillColor=#ffffff;labelBackgroundColor=none;');
  2221. assoc2.geometry.setTerminalPoint(new mxPoint(250, 60), false);
  2222. assoc2.geometry.relative = true;
  2223. assoc2.geometry.x = 1;
  2224. assoc2.edge = true;
  2225. cardCell.insertEdge(assoc2, true);
  2226. return sb.createVertexTemplateFromCells([cardCell, assoc1, assoc2], 250, 60, 'Probability');
  2227. }),
  2228. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;verticalAlign=top;labelBackgroundColor=none;', 160, 0,
  2229. '{ rate = constant }\n{rate = distribution}\n&lt;&lt;continuous&gt;&gt;\n&lt;&lt;discrete&gt;&gt;',
  2230. 'Rate', null, null, this.getTagsForStencil(gn, '', dt + 'rate').join(' ')),
  2231. this.addEntry(dt + 'in block definition diagram activity association', function()
  2232. {
  2233. var bg = new mxCell('bdd', new mxGeometry(0, 0, 330, 250), s + 'package;labelX=45;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;fontStyle=1;strokeWidth=1;recursiveResize=0;');
  2234. bg.vertex = true;
  2235. var cardCell2 = new mxCell('&lt;&lt;activity&gt;&gt;\nactivity name', new mxGeometry(30, 40, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2236. cardCell2.vertex = true;
  2237. bg.insert(cardCell2);
  2238. var cardCell3 = new mxCell('&lt;&lt;activity&gt;&gt;\nactivity name', new mxGeometry(30, 160, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2239. cardCell3.vertex = true;
  2240. bg.insert(cardCell3);
  2241. var assoc1 = new mxCell('action\nname', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;endFill=0;startArrow=diamondThin;startFill=1;startSize=12;align=left;verticalAlign=bottom;');
  2242. assoc1.geometry.relative = true;
  2243. assoc1.geometry.x=1;
  2244. assoc1.edge = true;
  2245. cardCell2.insertEdge(assoc1, true);
  2246. cardCell3.insertEdge(assoc1, false);
  2247. bg.insert(assoc1);
  2248. var cardCell4 = new mxCell('&lt;&lt;activity&gt;&gt;\nactivity name', new mxGeometry(180, 40, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2249. cardCell4.vertex = true;
  2250. bg.insert(cardCell4);
  2251. var cardCell5 = new mxCell('&lt;&lt;block&gt;&gt;\nblock name', new mxGeometry(180, 160, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2252. cardCell5.vertex = true;
  2253. bg.insert(cardCell5);
  2254. var assoc2 = new mxCell('object\nnode\nname', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;endFill=0;startFill=1;startSize=12;align=left;verticalAlign=bottom;');
  2255. assoc2.geometry.relative = true;
  2256. assoc2.geometry.x=1;
  2257. assoc2.edge = true;
  2258. cardCell4.insertEdge(assoc2, true);
  2259. cardCell5.insertEdge(assoc2, false);
  2260. bg.insert(assoc2);
  2261. return sb.createVertexTemplateFromCells([bg], 400, 250, 'In Block Definition Diagrams, Activity, Association');
  2262. }),
  2263. this.createVertexTemplateEntry(s + 'actPart;strokeWidth=3;verticalAlign=top;rotation=-90;whiteSpace=wrap;',
  2264. 100, 100, 'Partition Name', 'Activity Partition', null, null, this.getTagsForStencil(gn, 'actPart', dt + 'activity partition').join(' ')),
  2265. this.createVertexTemplateEntry('shape=rect;html=1;rounded=1;strokeWidth=2;verticalAlign=top;whiteSpace=wrap;align=center;',
  2266. 140, 50, '(Partition Name)\nAction', 'Activity Partition', null, null, this.getTagsForStencil(gn, '', dt + 'activity partition').join(' ')),
  2267. this.addEntry(dt + 'interruptible activity region', function()
  2268. {
  2269. var cardCell = new mxCell('region name', new mxGeometry(0, 0, 160, 60), 'shape=rect;html=1;rounded=1;verticalAlign=top;dashed=1;strokeWidth=2;whiteSpace=wrap;align=center;');
  2270. cardCell.vertex = true;
  2271. var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'shape=mxgraph.lean_mapping.electronic_info_flow_edge;html=1;edgeStyle=none;align=center;verticalAlign=bottom;exitX=1;exitY=0.5;fillColor=#ffffff;');
  2272. assoc1.geometry.setTerminalPoint(new mxPoint(250, 30), false);
  2273. assoc1.geometry.relative = true;
  2274. assoc1.geometry.x = 1;
  2275. assoc1.edge = true;
  2276. cardCell.insertEdge(assoc1, true);
  2277. return sb.createVertexTemplateFromCells([cardCell, assoc1], 250, 60, 'Interruptible Activity Region');
  2278. }),
  2279. this.createVertexTemplateEntry('shape=rect;html=1;rounded=1;dashed=1;strokeWidth=2;verticalAlign=top;whiteSpace=wrap;align=center;',
  2280. 160, 60, '&lt;&lt;structured&gt;&gt; node name', 'Structured Activity Node', null, null, this.getTagsForStencil(gn, '', dt + 'structured activity node').join(' '))
  2281. ];
  2282. this.addPalette('sysmlActivities', 'SysML / Activities', expand || false, mxUtils.bind(this, function(content)
  2283. {
  2284. for (var i = 0; i < fns.length; i++)
  2285. {
  2286. content.appendChild(fns[i](content));
  2287. }
  2288. }));
  2289. };
  2290. Sidebar.prototype.addSysMLInteractionsPalette = function(expand)
  2291. {
  2292. var s = 'html=1;shape=mxgraph.sysml.';
  2293. var gn = '';
  2294. var dt = 'sysml interaction ';
  2295. var sb = this;
  2296. var fns = [
  2297. this.createVertexTemplateEntry(s + 'package;overflow=fill;labelX=95;align=left;spacingLeft=5;verticalAlign=top;spacingTop=-3;', 160, 80,
  2298. '<p style="margin:0px;margin-top:4px;margin-left:5px;text-align:left;"><b>sd</b> Interaction1</p>',
  2299. 'Sequence Diagram', null, null, this.getTagsForStencil(gn, 'package', dt + 'sequence diagram').join(' ')),
  2300. this.addEntry(dt + 'lifeline', function()
  2301. {
  2302. var cardCell = new mxCell('b1:Block1', new mxGeometry(0, 0, 160, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2303. cardCell.vertex = true;
  2304. 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;');
  2305. assoc1.geometry.setTerminalPoint(new mxPoint(80, 150), false);
  2306. assoc1.geometry.relative = true;
  2307. assoc1.geometry.x = 1;
  2308. assoc1.edge = true;
  2309. cardCell.insertEdge(assoc1, true);
  2310. return sb.createVertexTemplateFromCells([cardCell, assoc1], 160, 150, 'Lifeline');
  2311. }),
  2312. this.addEntry(dt + 'execution specification', function()
  2313. {
  2314. var cardCell = new mxCell('b1:Block1', new mxGeometry(0, 0, 160, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2315. cardCell.vertex = true;
  2316. var cardCell2 = new mxCell('', new mxGeometry(70, 100, 20, 80), 'shape=rect;html=1;fillColor=#eeeeee;');
  2317. cardCell2.vertex = true;
  2318. var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;');
  2319. assoc1.geometry.relative = true;
  2320. assoc1.edge = true;
  2321. cardCell.insertEdge(assoc1, true);
  2322. cardCell2.insertEdge(assoc1, false);
  2323. var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;');
  2324. assoc2.geometry.setTerminalPoint(new mxPoint(80, 220), false);
  2325. assoc2.geometry.relative = true;
  2326. assoc2.geometry.x = 1;
  2327. assoc2.edge = true;
  2328. cardCell2.insertEdge(assoc2, true);
  2329. return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc1, assoc2], 160, 220, 'Execution Specification');
  2330. }),
  2331. this.addEntry(dt + 'execution specification', function()
  2332. {
  2333. var cardCell = new mxCell('b1:Block1', new mxGeometry(0, 0, 160, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2334. cardCell.vertex = true;
  2335. var cardCell2 = new mxCell('execSpec', new mxGeometry(20, 100, 120, 80), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2336. cardCell2.vertex = true;
  2337. var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;');
  2338. assoc1.geometry.relative = true;
  2339. assoc1.edge = true;
  2340. cardCell.insertEdge(assoc1, true);
  2341. cardCell2.insertEdge(assoc1, false);
  2342. var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;');
  2343. assoc2.geometry.setTerminalPoint(new mxPoint(80, 220), false);
  2344. assoc2.geometry.relative = true;
  2345. assoc2.geometry.x = 1;
  2346. assoc2.edge = true;
  2347. cardCell2.insertEdge(assoc2, true);
  2348. return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc1, assoc2], 160, 220, 'Execution Specification');
  2349. }),
  2350. this.addEntry(dt + 'use', function()
  2351. {
  2352. var cardCell = new mxCell('Interaction3', new mxGeometry(0, 0, 160, 60), s + 'package;labelX=40;whiteSpace=wrap;align=center;');
  2353. cardCell.vertex = true;
  2354. 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;');
  2355. label1.geometry.relative = false;
  2356. label1.setConnectable(false);
  2357. label1.vertex = true;
  2358. cardCell.insert(label1);
  2359. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Interaction Use');
  2360. }),
  2361. this.addEntry(dt + 'combined fragment', function()
  2362. {
  2363. var bg = new mxCell('<p style="margin:0px;margin-top:4px;margin-left:10px;text-align:left;"><b>sd</b> Interaction1</p>', new mxGeometry(0, 0, 350, 320), s + 'package;labelX=100;html=1;overflow=fill;strokeWidth=1;recursiveResize=0;');
  2364. bg.vertex = true;
  2365. var cardCell2 = new mxCell('b1: Block1', new mxGeometry(30, 40, 80, 30), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2366. cardCell2.vertex = true;
  2367. bg.insert(cardCell2);
  2368. var cardCell3 = new mxCell('b2: Block2', new mxGeometry(140, 40, 80, 30), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2369. cardCell3.vertex = true;
  2370. bg.insert(cardCell3);
  2371. var cardCell4 = new mxCell('b3: Block3', new mxGeometry(250, 40, 80, 30), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2372. cardCell4.vertex = true;
  2373. bg.insert(cardCell4);
  2374. 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;');
  2375. cardCell5.vertex = true;
  2376. bg.insert(cardCell5);
  2377. var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;dashed=1;');
  2378. assoc1.geometry.setTerminalPoint(new mxPoint(70, 300), false);
  2379. assoc1.geometry.relative = true;
  2380. assoc1.edge = true;
  2381. cardCell2.insertEdge(assoc1, true);
  2382. bg.insert(assoc1);
  2383. var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;dashed=1;');
  2384. assoc2.geometry.setTerminalPoint(new mxPoint(180, 300), false);
  2385. assoc2.geometry.relative = true;
  2386. assoc2.edge = true;
  2387. bg.insert(assoc2);
  2388. cardCell3.insertEdge(assoc2, true);
  2389. var assoc3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;dashed=1;');
  2390. assoc3.geometry.setTerminalPoint(new mxPoint(290, 300), false);
  2391. assoc3.geometry.relative = true;
  2392. assoc3.edge = true;
  2393. bg.insert(assoc3);
  2394. cardCell4.insertEdge(assoc3, true);
  2395. var assoc4 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;dashed=1;');
  2396. assoc4.geometry.setTerminalPoint(new mxPoint(20, 170), false);
  2397. assoc4.geometry.setTerminalPoint(new mxPoint(220, 170), true);
  2398. assoc4.geometry.relative = true;
  2399. assoc4.edge = true;
  2400. bg.insert(assoc4);
  2401. 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;');
  2402. assoc5.geometry.setTerminalPoint(new mxPoint(70, 150), true);
  2403. assoc5.geometry.setTerminalPoint(new mxPoint(180, 150), false);
  2404. assoc5.geometry.relative = true;
  2405. assoc5.geometry.x = -1;
  2406. assoc5.edge = true;
  2407. bg.insert(assoc5);
  2408. var label1 = new mxCell('msg1', new mxGeometry(1, 0, 0, 0), 'align=right;html=1;verticalAlign=bottom;labelBackgroundColor=none;');
  2409. label1.geometry.relative = true;
  2410. label1.setConnectable(false);
  2411. label1.vertex = true;
  2412. assoc5.insert(label1);
  2413. 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;');
  2414. assoc6.geometry.setTerminalPoint(new mxPoint(70, 230), true);
  2415. assoc6.geometry.setTerminalPoint(new mxPoint(180, 230), false);
  2416. assoc6.geometry.relative = true;
  2417. assoc6.geometry.x = -1;
  2418. assoc6.edge = true;
  2419. bg.insert(assoc6);
  2420. var label2 = new mxCell('msg2', new mxGeometry(1, 0, 0, 0), 'align=right;html=1;verticalAlign=bottom;labelBackgroundColor=none;');
  2421. label2.geometry.relative = true;
  2422. label2.setConnectable(false);
  2423. label2.vertex = true;
  2424. assoc6.insert(label2);
  2425. bg.insert(assoc6);
  2426. var assoc7 = new mxCell('msg3', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;edgeStyle=none;verticalAlign=bottom;labelBackgroundColor=none;endSize=12;');
  2427. assoc7.geometry.setTerminalPoint(new mxPoint(70, 290), true);
  2428. assoc7.geometry.setTerminalPoint(new mxPoint(290, 290), false);
  2429. assoc7.geometry.relative = true;
  2430. assoc7.edge = true;
  2431. bg.insert(assoc7);
  2432. return sb.createVertexTemplateFromCells([bg], 350, 320, 'Combined Fragment');
  2433. }),
  2434. this.addEntry(dt + 'state invariant configuration', function()
  2435. {
  2436. var cardCell = new mxCell(':Y', new mxGeometry(0, 0, 120, 50), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2437. cardCell.vertex = true;
  2438. var cardCell2 = new mxCell('p==15', new mxGeometry(0, 100, 120, 50), s + 'cont;fontStyle=1;whiteSpace=wrap;align=center;');
  2439. cardCell2.vertex = true;
  2440. var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;');
  2441. assoc1.geometry.relative = true;
  2442. assoc1.edge = true;
  2443. cardCell.insertEdge(assoc1, true);
  2444. cardCell2.insertEdge(assoc1, false);
  2445. var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;');
  2446. assoc2.geometry.setTerminalPoint(new mxPoint(60, 220), false);
  2447. assoc2.geometry.relative = true;
  2448. assoc2.geometry.x = 1;
  2449. assoc2.edge = true;
  2450. cardCell2.insertEdge(assoc2, true);
  2451. return sb.createVertexTemplateFromCells([cardCell, cardCell2, assoc1, assoc2], 120, 220, 'State Invariant / Continuations');
  2452. }),
  2453. this.addEntry(dt + 'coregion', function()
  2454. {
  2455. var cardCell = new mxCell('s[u]:B', new mxGeometry(0, 0, 100, 50), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2456. cardCell.vertex = true;
  2457. var cardCell2 = new mxCell('', new mxGeometry(40, 100, 20, 70), s + 'coregion;strokeWidth=3;');
  2458. cardCell2.vertex = true;
  2459. var knot1 = new mxCell('', new mxGeometry(48, 118, 4, 4), 'shape=ellipse;html=1;fillColor=#000000;');
  2460. knot1.vertex = true;
  2461. var knot2 = new mxCell('', new mxGeometry(48, 148, 4, 4), 'shape=ellipse;html=1;fillColor=#000000;');
  2462. knot2.vertex = true;
  2463. var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;');
  2464. assoc1.geometry.relative = true;
  2465. assoc1.edge = true;
  2466. cardCell.insertEdge(assoc1, true);
  2467. knot1.insertEdge(assoc1, false);
  2468. var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;');
  2469. assoc2.geometry.relative = true;
  2470. assoc2.edge = true;
  2471. knot1.insertEdge(assoc2, true);
  2472. knot2.insertEdge(assoc2, false);
  2473. var assoc3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;');
  2474. assoc3.geometry.setTerminalPoint(new mxPoint(50, 220), false);
  2475. assoc3.geometry.relative = true;
  2476. assoc3.edge = true;
  2477. knot2.insertEdge(assoc3, true);
  2478. 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;');
  2479. assoc4.geometry.setTerminalPoint(new mxPoint(250, 120), false);
  2480. assoc4.geometry.relative = true;
  2481. assoc4.edge = true;
  2482. knot1.insertEdge(assoc4, true);
  2483. 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;');
  2484. assoc5.geometry.setTerminalPoint(new mxPoint(250, 150), false);
  2485. assoc5.geometry.relative = true;
  2486. assoc5.edge = true;
  2487. knot2.insertEdge(assoc5, true);
  2488. return sb.createVertexTemplateFromCells([cardCell, cardCell2, knot1, knot2, assoc1, assoc2, assoc3, assoc4, assoc5], 250, 220, 'Coregion');
  2489. }),
  2490. this.addEntry(dt + 'creation destruction event', function()
  2491. {
  2492. var cardCell1 = new mxCell('b1:Block1', new mxGeometry(0, 0, 100, 30), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2493. cardCell1.vertex = true;
  2494. var cardCell2 = new mxCell('b2:Block2', new mxGeometry(150, 40, 100, 30), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2495. cardCell2.vertex = true;
  2496. var cardCell3 = new mxCell('', new mxGeometry(190, 70, 20, 100), 'shape=rect;fillColor=#eeeeee;html=1;');
  2497. cardCell3.vertex = true;
  2498. var knot1 = new mxCell('', new mxGeometry(48, 53, 4, 4), 'shape=ellipse;fillColor=#000000;html=1;');
  2499. knot1.vertex = true;
  2500. var knot2 = new mxCell('', new mxGeometry(48, 148, 4, 4), 'shape=ellipse;fillColor=#000000;html=1;');
  2501. knot2.vertex = true;
  2502. var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;dashed=1;endArrow=none;html=1;');
  2503. assoc1.geometry.relative = true;
  2504. assoc1.edge = true;
  2505. cardCell1.insertEdge(assoc1, true);
  2506. knot1.insertEdge(assoc1, false);
  2507. var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;dashed=1;endArrow=none;html=1;');
  2508. assoc2.geometry.relative = true;
  2509. assoc2.edge = true;
  2510. knot1.insertEdge(assoc2, true);
  2511. knot2.insertEdge(assoc2, false);
  2512. var assoc3 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;dashed=1;endArrow=none;html=1;');
  2513. assoc3.geometry.setTerminalPoint(new mxPoint(50, 220), false);
  2514. assoc3.geometry.relative = true;
  2515. assoc3.edge = true;
  2516. knot2.insertEdge(assoc3, true);
  2517. var assoc4 = new mxCell('create', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=open;verticalAlign=bottom;endSize=12;html=1;');
  2518. assoc4.geometry.setTerminalPoint(new mxPoint(250, 120), false);
  2519. assoc4.geometry.relative = true;
  2520. assoc4.edge = true;
  2521. knot1.insertEdge(assoc4, true);
  2522. cardCell2.insertEdge(assoc4, false);
  2523. var assoc5 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=elbowEdgeStyle;endArrow=open;elbow=vertical;endSize=12;html=1;');
  2524. assoc5.geometry.setTerminalPoint(new mxPoint(250, 150), false);
  2525. assoc5.geometry.relative = true;
  2526. assoc5.edge = true;
  2527. knot2.insertEdge(assoc5, true);
  2528. cardCell3.insertEdge(assoc5, false);
  2529. var assoc6 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=sysMLx;endSize=22;dashed=1;html=1;');
  2530. assoc6.geometry.setTerminalPoint(new mxPoint(200, 200), false);
  2531. assoc6.geometry.relative = true;
  2532. assoc6.edge = true;
  2533. cardCell3.insertEdge(assoc6, true);
  2534. return sb.createVertexTemplateFromCells([cardCell1, cardCell2, cardCell3, knot1, knot2, assoc1, assoc2, assoc3, assoc4, assoc5, assoc6], 250, 220, 'Creation/Destruction Event');
  2535. }),
  2536. this.addEntry(dt + 'duration constraint', function()
  2537. {
  2538. var cardCell1 = new mxCell(':User', new mxGeometry(0, 0, 100, 50), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2539. cardCell1.vertex = true;
  2540. var cardCell2 = new mxCell('{d..3*d}', new mxGeometry(-20, 100, 100, 40), s + 'dimension;rotation=-90;verticalAlign=top;spacingTop=-5');
  2541. cardCell2.vertex = true;
  2542. var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;dashed=1;endArrow=none;html=1;');
  2543. assoc1.geometry.setTerminalPoint(new mxPoint(50, 250), false);
  2544. assoc1.geometry.relative = true;
  2545. assoc1.edge = true;
  2546. cardCell1.insertEdge(assoc1, true);
  2547. var assoc2 = new mxCell('Code d=duration', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;verticalAlign=bottom;endSize=12;');
  2548. assoc2.geometry.setTerminalPoint(new mxPoint(50, 70), true);
  2549. assoc2.geometry.setTerminalPoint(new mxPoint(250, 70), false);
  2550. assoc2.geometry.relative = true;
  2551. assoc2.edge = true;
  2552. 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;');
  2553. assoc3.geometry.setTerminalPoint(new mxPoint(50, 170), false);
  2554. assoc3.geometry.setTerminalPoint(new mxPoint(250, 170), true);
  2555. assoc3.geometry.relative = true;
  2556. assoc3.edge = true;
  2557. var assoc4 = new mxCell('OK', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;verticalAlign=top;spacingTop=5;endSize=12;');
  2558. assoc4.geometry.setTerminalPoint(new mxPoint(50, 200), false);
  2559. assoc4.geometry.setTerminalPoint(new mxPoint(250, 140), true);
  2560. assoc4.geometry.relative = true;
  2561. assoc4.edge = true;
  2562. return sb.createVertexTemplateFromCells([cardCell1, cardCell2, assoc1, assoc2, assoc3, assoc4], 250, 250, 'Duration Constraint');
  2563. }),
  2564. this.addEntry(dt + 'duration constraint', function()
  2565. {
  2566. var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;');
  2567. assoc1.geometry.setTerminalPoint(new mxPoint(20, 0), true);
  2568. assoc1.geometry.setTerminalPoint(new mxPoint(20, 200), false);
  2569. assoc1.geometry.relative = true;
  2570. assoc1.edge = true;
  2571. var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;dashed=1;endArrow=none;');
  2572. assoc2.geometry.setTerminalPoint(new mxPoint(230, 0), true);
  2573. assoc2.geometry.setTerminalPoint(new mxPoint(230, 200), false);
  2574. assoc2.geometry.relative = true;
  2575. assoc2.edge = true;
  2576. 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;');
  2577. assoc3.geometry.setTerminalPoint(new mxPoint(20, 140), false);
  2578. assoc3.geometry.setTerminalPoint(new mxPoint(230, 140), true);
  2579. assoc3.geometry.relative = true;
  2580. assoc3.edge = true;
  2581. var assoc4 = new mxCell('OK', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;verticalAlign=top;spacingTop=5;endSize=12;');
  2582. assoc4.geometry.setTerminalPoint(new mxPoint(20, 170), false);
  2583. assoc4.geometry.setTerminalPoint(new mxPoint(230, 110), true);
  2584. assoc4.geometry.relative = true;
  2585. assoc4.edge = true;
  2586. var assoc5 = new mxCell('{t..t+3}', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;align=right;labelBackgroundColor=none;');
  2587. assoc5.geometry.setTerminalPoint(new mxPoint(20, 170), false);
  2588. assoc5.geometry.setTerminalPoint(new mxPoint(0, 170), true);
  2589. assoc5.geometry.relative = true;
  2590. assoc5.geometry.x = -1;
  2591. assoc5.edge = true;
  2592. var assoc6 = new mxCell('t=now', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;align=left;labelBackgroundColor=none;');
  2593. assoc6.geometry.setTerminalPoint(new mxPoint(230, 140), false);
  2594. assoc6.geometry.setTerminalPoint(new mxPoint(250, 140), true);
  2595. assoc6.geometry.relative = true;
  2596. assoc6.geometry.x = -1;
  2597. assoc6.edge = true;
  2598. return sb.createVertexTemplateFromCells([assoc1, assoc2, assoc3, assoc4, assoc5, assoc6], 250, 200, 'Time Constraint');
  2599. }),
  2600. this.addEntry(dt + 'message', function()
  2601. {
  2602. var cardCell1 = new mxCell('b1:Block1', new mxGeometry(0, 0, 100, 30), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2603. cardCell1.vertex = true;
  2604. var cardCell2 = new mxCell('b2:Block2', new mxGeometry(150, 0, 100, 30), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2605. cardCell2.vertex = true;
  2606. var assoc1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;dashed=1;html=1;endArrow=none;');
  2607. assoc1.geometry.setTerminalPoint(new mxPoint(50, 250), false);
  2608. assoc1.geometry.relative = true;
  2609. assoc1.edge = true;
  2610. cardCell1.insertEdge(assoc1, true);
  2611. var assoc2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;dashed=1;html=1;endArrow=none;');
  2612. assoc2.geometry.setTerminalPoint(new mxPoint(200, 250), false);
  2613. assoc2.geometry.relative = true;
  2614. assoc2.edge = true;
  2615. cardCell2.insertEdge(assoc2, true);
  2616. var assoc3 = new mxCell('asyncSignal', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;verticalAlign=bottom;endSize=12;');
  2617. assoc3.geometry.setTerminalPoint(new mxPoint(50, 70), true);
  2618. assoc3.geometry.setTerminalPoint(new mxPoint(200, 70), false);
  2619. assoc3.geometry.relative = true;
  2620. assoc3.edge = true;
  2621. var assoc4 = new mxCell('syncCall(param)', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=block;verticalAlign=bottom;endSize=12;endFill=1;');
  2622. assoc4.geometry.setTerminalPoint(new mxPoint(50, 160), true);
  2623. assoc4.geometry.setTerminalPoint(new mxPoint(200, 160), false);
  2624. assoc4.geometry.relative = true;
  2625. assoc4.edge = true;
  2626. var assoc5 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;verticalAlign=bottom;endSize=12;endFill=1;dashed=1;');
  2627. assoc5.geometry.setTerminalPoint(new mxPoint(200, 200), true);
  2628. assoc5.geometry.setTerminalPoint(new mxPoint(50, 200), false);
  2629. assoc5.geometry.relative = true;
  2630. assoc5.edge = true;
  2631. return sb.createVertexTemplateFromCells([cardCell1, cardCell2, assoc1, assoc2, assoc3, assoc4, assoc5], 250, 250, 'Message');
  2632. }),
  2633. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=sysMLLost;endSize=12;verticalAlign=bottom;',
  2634. 160, 0, 'lost', 'Lost Message', null, this.getTagsForStencil(gn, '', dt + 'lost message').join(' ')),
  2635. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;verticalAlign=bottom;startArrow=sysMLFound;startSize=12;',
  2636. 160, 0, 'found', 'Found Message', null, this.getTagsForStencil(gn, '', dt + 'found message').join(' ')),
  2637. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=none;verticalAlign=bottom;dashed=1;strokeWidth=2;',
  2638. 160, 0, '', 'General Ordering', null, this.getTagsForStencil(gn, '', dt + 'general ordering').join(' '))
  2639. ];
  2640. this.addPalette('sysmlInteractions', 'SysML / Interactions', expand || false, mxUtils.bind(this, function(content)
  2641. {
  2642. for (var i = 0; i < fns.length; i++)
  2643. {
  2644. content.appendChild(fns[i](content));
  2645. }
  2646. }));
  2647. };
  2648. Sidebar.prototype.addSysMLStateMachinesPalette = function(expand)
  2649. {
  2650. var s = 'shape=mxgraph.sysml.';
  2651. var gn = '';
  2652. var dt = 'sysml state machine ';
  2653. var sb = this;
  2654. var fns = [
  2655. this.addEntry(dt + 'choice pseudo state', function()
  2656. {
  2657. var cardCell = new mxCell('', new mxGeometry(0, 20, 40, 40), 'shape=rhombus;html=1;labelPosition=right;align=left;verticalAlign=middle');
  2658. cardCell.vertex = true;
  2659. 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;');
  2660. edge1.geometry.setTerminalPoint(new mxPoint(20, 0), true);
  2661. edge1.geometry.relative = true;
  2662. edge1.edge = true;
  2663. cardCell.insertEdge(edge1, false);
  2664. 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;');
  2665. edge2.geometry.setTerminalPoint(new mxPoint(20, 100), false);
  2666. edge2.geometry.relative = true;
  2667. edge2.edge = true;
  2668. cardCell.insertEdge(edge2, true);
  2669. 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;');
  2670. edge3.geometry.setTerminalPoint(new mxPoint(150, 100), false);
  2671. edge3.geometry.relative = true;
  2672. edge3.edge = true;
  2673. cardCell.insertEdge(edge3, true);
  2674. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2, edge3], 150, 100, 'Choice Pseudo State');
  2675. }),
  2676. this.addEntry(dt + 'composite state', function()
  2677. {
  2678. 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;');
  2679. bg.vertex = true;
  2680. var cardCell2 = new mxCell('', new mxGeometry(20, 50, 20, 20), 'shape=ellipse;html=1;fillColor=#000000;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;');
  2681. cardCell2.vertex = true;
  2682. bg.insert(cardCell2);
  2683. var cardCell3 = new mxCell('State1', new mxGeometry(80, 60, 100, 40), 'shape=rect;html=1;rounded=1;whiteSpace=wrap;align=center;');
  2684. cardCell3.vertex = true;
  2685. bg.insert(cardCell3);
  2686. var cardCell4 = new mxCell('State2', new mxGeometry(80, 130, 100, 40), 'shape=rect;html=1;rounded=1;whiteSpace=wrap;align=center;');
  2687. cardCell4.vertex = true;
  2688. bg.insert(cardCell4);
  2689. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;endSize=12;');
  2690. edge1.geometry.relative = true;
  2691. edge1.edge = true;
  2692. cardCell2.insertEdge(edge1, true);
  2693. cardCell3.insertEdge(edge1, false);
  2694. bg.insert(edge1);
  2695. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=open;endSize=12;');
  2696. edge2.geometry.relative = true;
  2697. edge2.edge = true;
  2698. cardCell3.insertEdge(edge2, true);
  2699. cardCell4.insertEdge(edge2, false);
  2700. bg.insert(edge2);
  2701. return sb.createVertexTemplateFromCells([bg], 220, 190, 'Composite State');
  2702. }),
  2703. this.createVertexTemplateEntry(s + 'compState;html=1;align=left;verticalAlign=top;spacingTop=-3;spacingLeft=18;',
  2704. 200, 160, 'CompositeState1', 'Composite State', null, null, this.getTagsForStencil(gn, 'compState', dt + 'composite state').join(' ')),
  2705. this.createVertexTemplateEntry('ellipse;html=1;labelPosition=left;verticalLabelPosition=bottom;spacingBottom=10;align=right;verticalAlign=bottom;resizable=0;',
  2706. 20, 20, 'again', 'Entry Point', null, null, this.getTagsForStencil(gn, 'compState', dt + 'entry point').join(' ')),
  2707. this.addEntry(dt + 'exit point', function()
  2708. {
  2709. 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;');
  2710. cardCell.vertex = true;
  2711. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Exit Point');
  2712. }),
  2713. this.createVertexTemplateEntry(s + 'actFinal;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;',
  2714. 40, 40, '', 'Final State', null, null, this.getTagsForStencil(gn, 'actFinal', dt + 'final state').join(' ')),
  2715. this.createVertexTemplateEntry('shape=ellipse;html=1;fontSize=18;align=center;',
  2716. 40, 40, 'H*', 'History, Deep Pseudo State', null, null, this.getTagsForStencil(gn, '', dt + 'history deep pseudo state').join(' ')),
  2717. this.createVertexTemplateEntry('shape=ellipse;html=1;fontSize=18;align=center;',
  2718. 40, 40, 'H', 'History, Shallow Pseudo State', null, null, this.getTagsForStencil(gn, '', dt + 'history shallow pseudo state').join(' ')),
  2719. this.createVertexTemplateEntry('shape=ellipse;html=1;fillColor=#000000;fontSize=18;fontColor=#ffffff;',
  2720. 40, 40, '', 'Initial Pseudo State', null, null, this.getTagsForStencil(gn, '', dt + 'initial pseudo state').join(' ')),
  2721. this.createVertexTemplateEntry('shape=ellipse;html=1;fillColor=#000000;fontSize=18;fontColor=#ffffff;',
  2722. 40, 40, '', 'Junction Pseudo State', null, null, this.getTagsForStencil(gn, '', dt + 'junction pseudo state').join(' ')),
  2723. this.createVertexTemplateEntry(s + 'accEvent;flipH=1;whiteSpace=wrap;align=center;',
  2724. 140, 40, 'Req(Id)', 'Receive Signal Action', null, null, this.getTagsForStencil(gn, 'accEvent', dt + 'receive signal action').join(' ')),
  2725. this.createVertexTemplateEntry(s + 'sendSigAct;whiteSpace=wrap;align=center;',
  2726. 140, 40, 'TurnOn', 'Send Signal Action', null, null, this.getTagsForStencil(gn, 'sendSigAct', dt + 'send signal action').join(' ')),
  2727. this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;',
  2728. 140, 40, 'MinorReq := Id;', 'Action', null, null, this.getTagsForStencil(gn, '', dt + 'action').join(' ')),
  2729. this.createVertexTemplateEntry(s + 'region;align=left;verticalAlign=top;spacingTop=-3;spacingLeft=25;',
  2730. 200, 160, 'S', 'Region', null, null, this.getTagsForStencil(gn, '', dt + 'region').join(' ')),
  2731. this.createVertexTemplateEntry('shape=rect;rounded=1;html=1;whiteSpace=wrap;align=center;',
  2732. 100, 40, 'State1', 'Simple State', null, null, this.getTagsForStencil(gn, '', dt + 'simple state').join(' ')),
  2733. this.createVertexTemplateEntry(s + 'simpleState;html=1;overflow=fill;whiteSpace=wrap;align=center;', 200, 100,
  2734. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  2735. 'State2<hr/></p>' +
  2736. '<p style="margin:0px;margin-left:8px;text-align:left;">entry / entryActivity<br/>do / doActivity<br/>exit / exitActivity</p>',
  2737. 'Simple State', null, null, this.getTagsForStencil(gn, 'simpleState', dt + 'simple state').join(' ')),
  2738. this.createVertexTemplateEntry('shape=rect;rounded=1;html=1;whiteSpace=wrap;align=center;',
  2739. 120, 40, 'State1, State2', 'State List', null, null, this.getTagsForStencil(gn, '', dt + 'state list').join(' ')),
  2740. this.addEntry(dt + 'state machine', function()
  2741. {
  2742. var cardCell = new mxCell('ReadAmountSM', new mxGeometry(0, 0, 160, 120), s + 'stateMachine;verticalAlign=top;whiteSpace=wrap;align=center;');
  2743. cardCell.vertex = true;
  2744. var label1 = new mxCell('aborted', new mxGeometry(160, 60, 0, 0), 'resizable=0;html=1;verticalAlign=top;align=left;labelBackgroundColor=none;spacingLeft=5;spacingTop=-2;');
  2745. label1.geometry.relative = false;
  2746. label1.setConnectable(false);
  2747. label1.vertex = true;
  2748. cardCell.insert(label1);
  2749. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'State Machine');
  2750. }),
  2751. this.createVertexTemplateEntry(s + 'x;',
  2752. 40, 40, '', 'Terminate Node', null, null, this.getTagsForStencil(gn, 'x', dt + 'terminate node').join(' ')),
  2753. this.addEntry(dt + 'submachine state', function()
  2754. {
  2755. var cardCell = new mxCell('ReadAmount :\nReadAmountSM', new mxGeometry(0, 0, 160, 120), s + 'submState;whiteSpace=wrap;align=center;');
  2756. cardCell.vertex = true;
  2757. var label1 = new mxCell('aborted', new mxGeometry(160, 60, 0, 0), 'resizable=0;html=1;verticalAlign=bottom;align=left;labelBackgroundColor=none;spacingLeft=5;spacingBottom=2;');
  2758. label1.geometry.relative = false;
  2759. label1.setConnectable(false);
  2760. label1.vertex = true;
  2761. cardCell.insert(label1);
  2762. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Submachine State');
  2763. }),
  2764. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;strokeWidth=3;verticalAlign=bottom;',
  2765. 160, 0, 'trigger[guard]/activity', 'Transition', null, this.getTagsForStencil(gn, '', dt + 'transition').join(' '))
  2766. ];
  2767. this.addPalette('sysmlState Machines', 'SysML / State Machines', expand || false, mxUtils.bind(this, function(content)
  2768. {
  2769. for (var i = 0; i < fns.length; i++)
  2770. {
  2771. content.appendChild(fns[i](content));
  2772. }
  2773. }));
  2774. };
  2775. Sidebar.prototype.addSysMLUseCasesPalette = function(expand)
  2776. {
  2777. var s = 'html=1;shape=mxgraph.sysml.';
  2778. var gn = '';
  2779. var dt = 'sysml use case ';
  2780. var sb = this;
  2781. var fns = [
  2782. this.createVertexTemplateEntry('shape=ellipse;html=1;strokeWidth=3;fontStyle=1;whiteSpace=wrap;align=center;',
  2783. 120, 60, 'UseCaseName', 'Use Case', null, null, this.getTagsForStencil(gn, '', dt + 'use case').join(' ')),
  2784. this.addEntry(dt + '', function()
  2785. {
  2786. var cardCell = new mxCell('\nextension points\np1, p2', new mxGeometry(0, 0, 160, 80), s + 'useCaseExtPt;whiteSpace=wrap;align=center;');
  2787. cardCell.vertex = true;
  2788. var label1 = new mxCell('UseCaseName', new mxGeometry(80, 17, 0, 0), 'resizable=0;html=1;verticalAlign=middle;align=center;labelBackgroundColor=none;fontStyle=1;');
  2789. label1.geometry.relative = false;
  2790. label1.setConnectable(false);
  2791. label1.vertex = true;
  2792. cardCell.insert(label1);
  2793. return sb.createVertexTemplateFromCells([cardCell], cardCell.geometry.width, cardCell.geometry.height, 'Use Case');
  2794. }),
  2795. this.createVertexTemplateEntry('shape=umlActor;html=1;verticalLabelPosition=bottom;verticalAlign=top;align=center;',
  2796. 30, 60, 'ActorName', 'Actor', null, null, this.getTagsForStencil(gn, 'umlActor', dt + '').join(' ')),
  2797. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;html=1;whiteSpace=wrap;align=center;', 80, 40,
  2798. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  2799. '&lt;&lt;actor&gt;&gt;<br/>' +
  2800. '<b>ActorName</b></p>',
  2801. 'Actor', null, null, this.getTagsForStencil(gn, '', dt + '').join(' ')),
  2802. this.createVertexTemplateEntry('shape=rect;html=1;verticalAlign=top;fontStyle=1;whiteSpace=wrap;align=center;',
  2803. 120, 60, 'SubjectName', 'Subject', null, null, this.getTagsForStencil(gn, '', dt + 'subject').join(' ')),
  2804. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=none;verticalAlign=bottom;',
  2805. 160, 0, '', 'Communication Path', null, this.getTagsForStencil(gn, '', dt + 'communication path').join(' ')),
  2806. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;verticalAlign=bottom;dashed=1;labelBackgroundColor=none;',
  2807. 160, 0, '&lt;&lt;include&gt;&gt;', 'Include', null, this.getTagsForStencil(gn, '', dt + 'include').join(' ')),
  2808. this.createEdgeTemplateEntry('edgeStyle=none;html=1;startArrow=open;endArrow=none;startSize=12;verticalAlign=bottom;dashed=1;labelBackgroundColor=none;',
  2809. 160, 0, '&lt;&lt;extend&gt;&gt;', 'Extend', null, this.getTagsForStencil(gn, '', dt + 'extend').join(' ')),
  2810. this.addEntry(dt + 'extend condition', function()
  2811. {
  2812. var cardCell = new mxCell('Condition: {boolean expression}\nextension point: p1, p2', new mxGeometry(20, 0, 230, 40), 'shape=note;size=15;spacingLeft=5;align=left;whiteSpace=wrap;');
  2813. cardCell.vertex = true;
  2814. var edge1 = new mxCell('&lt;&lt;extend&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'align=right;html=1;verticalAlign=bottom;rounded=0;labelBackgroundColor=none;endArrow=open;endSize=12;dashed=1;');
  2815. edge1.geometry.setTerminalPoint(new mxPoint(0, 80), false);
  2816. edge1.geometry.setTerminalPoint(new mxPoint(160, 80), true);
  2817. edge1.geometry.relative = true;
  2818. edge1.edge = true;
  2819. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;html=1;endArrow=none;rounded=0;labelBackgroundColor=none;dashed=1;exitX=0.5;exitY=1;');
  2820. edge2.geometry.setTerminalPoint(new mxPoint(100, 80), false);
  2821. edge2.geometry.relative = true;
  2822. edge2.edge = true;
  2823. cardCell.insertEdge(edge2, true);
  2824. return sb.createVertexTemplateFromCells([cardCell, edge1, edge2], 250, 80, 'Extend with Condition');
  2825. }),
  2826. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=block;endFill=0;endSize=12;verticalAlign=bottom;',
  2827. 160, 0, '', 'Generalization', null, this.getTagsForStencil(gn, '', dt + 'generalization').join(' '))
  2828. ];
  2829. this.addPalette('sysmlUse Cases', 'SysML / UseCases', expand || false, mxUtils.bind(this, function(content)
  2830. {
  2831. for (var i = 0; i < fns.length; i++)
  2832. {
  2833. content.appendChild(fns[i](content));
  2834. }
  2835. }));
  2836. };
  2837. Sidebar.prototype.addSysMLAllocationsPalette = function(expand)
  2838. {
  2839. var s = 'html=1;shape=mxgraph.sysml.';
  2840. var gn = '';
  2841. var dt = 'sysml allocation ';
  2842. var sb = this;
  2843. var fns = [
  2844. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;html=1;whiteSpace=wrap;align=center;', 120, 60,
  2845. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  2846. '&lt;&lt;allocated&gt;&gt;<br/>' +
  2847. '<b>Named<br/>Element</b></p>',
  2848. 'Allocated Stereotype', null, null, this.getTagsForStencil(gn, '', dt + 'allocated stereotype').join(' ')),
  2849. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;strokeWidth=2;whiteSpace=wrap;align=center;', 200, 120,
  2850. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  2851. '<b>BlockName</b></p><hr/>' +
  2852. '<p style="font-size:10px;margin:0px;text-align:center;"><i>allocatedFrom</i></p>' +
  2853. '<p style="margin:0px;margin-left:8px;text-align:left;">&lt;&lt;elementType&gt;&gt; ElementName</p><hr/>' +
  2854. '<p style="font-size:10px;margin:0px;text-align:center;"><i>allocatedTo</i></p>' +
  2855. '<p style="margin:0px;margin-left:8px;text-align:left;">&lt;&lt;elementType&gt;&gt; ElementName</p>',
  2856. 'Allocation derived properties (Block)', null, null, this.getTagsForStencil(gn, '', dt + 'derived property block').join(' ')),
  2857. this.addEntry(dt + 'derived property comment', function()
  2858. {
  2859. var cardCell = new mxCell(
  2860. '<p style="margin:0px;margin-top:10px;margin-left:10px;text-align:left;">' +
  2861. '<b>allocatedFrom</b><br/>' +
  2862. '&lt;&lt;elementType&gt;&gt; ElementName<br/>' +
  2863. '<b>allocatedTo</b><br/>' +
  2864. '&lt;&lt;elementType&gt;&gt; ElementName</p>',
  2865. new mxGeometry(40, 0, 230, 80), 'shape=note;html=1;size=15;spacingLeft=5;align=left;html=1;overflow=fill;whiteSpace=wrap;align=center;');
  2866. cardCell.vertex = true;
  2867. var cardCell2 = new mxCell('ElementName', new mxGeometry(0, 100, 120, 40), 'shape=rect;fontStyle=1;whiteSpace=wrap;align=center;');
  2868. cardCell2.vertex = true;
  2869. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'rounded=0;html=1;labelBackgroundColor=none;endArrow=none;dashed=1;');
  2870. edge1.geometry.relative = true;
  2871. edge1.edge = true;
  2872. cardCell.insertEdge(edge1, true);
  2873. cardCell2.insertEdge(edge1, false);
  2874. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 270, 140, 'Allocation derived properties (Comment)');
  2875. }),
  2876. this.addEntry(dt + 'derived property internal block diagram', function()
  2877. {
  2878. var bg = new mxCell(
  2879. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  2880. '&lt;&lt;block&gt;&gt;<br/>' +
  2881. '<b>BlockName</b></p><hr/>',
  2882. new mxGeometry(0, 0, 250, 160), 'shape=rect;html=1;overflow=fill;strokeWidth=2;whiteSpace=wrap;align=center;verticalAlign=top;strokeWidth=1;recursiveResize=0;');
  2883. bg.vertex = true;
  2884. var cardCell2 = new mxCell(
  2885. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  2886. '<b>PartName</b><hr/></p>' +
  2887. '<p style="font-size:10px;margin:0px;text-align:center;"><i>allocatedFrom</i></p>' +
  2888. '<p style="margin:0px;margin-left:8px;text-align:left;">&lt;&lt;elementType&gt;&gt; ElementName</p>',
  2889. new mxGeometry(20, 60, 210, 80), 'shape=rect;html=1;overflow=fill;strokeWidth=2;whiteSpace=wrap;align=center;');
  2890. cardCell2.vertex = true;
  2891. bg.insert(cardCell2);
  2892. return sb.createVertexTemplateFromCells([bg], 250, 160, 'Allocation derived properties (Internal Block Diagram)');
  2893. }),
  2894. this.createVertexTemplateEntry(s + 'simpleState;html=1;overflow=fill;whiteSpace=wrap;align=center;', 200, 100,
  2895. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  2896. '<b>ActivityName</b><hr/></p>' +
  2897. '<p style="font-size:10px;margin:0px;text-align:center;"><i>allocatedTo</i></p>' +
  2898. '<p style="margin:0px;margin-left:8px;text-align:left;">&lt;&lt;elementType&gt;&gt; ElementName</p>',
  2899. 'Allocation Derived Properties (Activity Diagram)', null, null, this.getTagsForStencil(gn, '', dt + 'derived property activity diagram').join(' ')),
  2900. this.addEntry(dt + 'activity partition', function()
  2901. {
  2902. var cardCell = new mxCell(
  2903. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  2904. '&lt;&lt;allocate&gt;&gt;<br/>:ElementName<hr/></p>',
  2905. new mxGeometry(0, 0, 250, 160), 'shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;verticalAlign=top;');
  2906. cardCell.vertex = true;
  2907. var cardCell2 = new mxCell('ActionName', new mxGeometry(65, 70, 120, 60), s + 'cont;fontStyle=1;whiteSpace=wrap;align=center;');
  2908. cardCell2.vertex = true;
  2909. return sb.createVertexTemplateFromCells([cardCell, cardCell2], 250, 160, 'Allocation Activity Partition');
  2910. }),
  2911. this.addEntry(dt + 'general', function()
  2912. {
  2913. var cardCell = new mxCell('Client', new mxGeometry(0, 0, 100, 60), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  2914. cardCell.vertex = true;
  2915. var cardCell2 = new mxCell('Supplier', new mxGeometry(200, 0, 100, 60), 'shape=rect;html=1;fontStyle=1;whiteSpace=wrap;align=center;');
  2916. cardCell2.vertex = true;
  2917. var edge1 = new mxCell('&lt;&lt;allocate&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'rounded=0;html=1;verticalAlign=top;labelBackgroundColor=none;endArrow=open;dashed=1;endSize=12;');
  2918. edge1.geometry.relative = true;
  2919. edge1.edge = true;
  2920. cardCell.insertEdge(edge1, true);
  2921. cardCell2.insertEdge(edge1, false);
  2922. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 300, 60, 'Allocation (General)');
  2923. })
  2924. ];
  2925. this.addPalette('sysmlAllocations', 'SysML / Allocations', expand || false, mxUtils.bind(this, function(content)
  2926. {
  2927. for (var i = 0; i < fns.length; i++)
  2928. {
  2929. content.appendChild(fns[i](content));
  2930. }
  2931. }));
  2932. };
  2933. Sidebar.prototype.addSysMLRequirementsPalette = function(expand)
  2934. {
  2935. var s = 'html=1;shape=mxgraph.sysml.';
  2936. var gn = '';
  2937. var dt = 'sysml requirement ';
  2938. var sb = this;
  2939. var fns = [
  2940. this.createVertexTemplateEntry(s + 'package;overflow=fill;labelX=110;strokeWidth=2;align=center;', 160, 80,
  2941. '<p style="margin:0px;margin-top:4px;margin-left:7px;text-align:left;"><b>req</b> ReqDiagram</p>',
  2942. 'Requirement Diagram', null, null, this.getTagsForStencil(gn, 'package', dt + 'diagram').join(' ')),
  2943. this.createVertexTemplateEntry('shape=rect;overflow=fill;html=1;whiteSpace=wrap;align=center;', 200, 100,
  2944. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  2945. '&lt;&lt;requirement&gt;&gt;<br/><b>Requirement Name</b><hr/></p>' +
  2946. '<p style="margin:0px;margin-left:8px;text-align:left;">text="The system shall do"<br/>Id="62j32."</p>',
  2947. 'Requirement', null, null, this.getTagsForStencil(gn, 'package', dt + '').join(' ')),
  2948. this.createVertexTemplateEntry('shape=rect;overflow=fill;html=1;whiteSpace=wrap;align=center;', 200, 100,
  2949. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  2950. '&lt;&lt;testCase&gt;&gt;<br/><b>TestCaseName</b><hr/></p>',
  2951. 'Test Case', null, null, this.getTagsForStencil(gn, 'package', dt + 'test case').join(' ')),
  2952. this.addEntry(dt + 'containment relationship', function()
  2953. {
  2954. var cardCell = new mxCell('&lt;&lt;requirement&gt;&gt;\nParent', new mxGeometry(90, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2955. cardCell.vertex = true;
  2956. var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nChild1', new mxGeometry(0, 120, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2957. cardCell2.vertex = true;
  2958. var cardCell3 = new mxCell('&lt;&lt;requirement&gt;&gt;\nChild2', new mxGeometry(180, 120, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2959. cardCell3.vertex = true;
  2960. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'rounded=0;html=1;labelBackgroundColor=none;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=sysMLPackCont;startSize=12;');
  2961. edge1.geometry.relative = true;
  2962. edge1.edge = true;
  2963. cardCell.insertEdge(edge1, true);
  2964. cardCell2.insertEdge(edge1, false);
  2965. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'rounded=0;html=1;labelBackgroundColor=none;endArrow=none;edgeStyle=elbowEdgeStyle;elbow=vertical;startArrow=sysMLPackCont;startSize=12;');
  2966. edge2.geometry.relative = true;
  2967. edge2.edge = true;
  2968. cardCell.insertEdge(edge2, true);
  2969. cardCell3.insertEdge(edge2, false);
  2970. return sb.createVertexTemplateFromCells([cardCell, cardCell2, cardCell3, edge1, edge2], 300, 180, 'Requirement Containment Relationship');
  2971. }),
  2972. this.addEntry(dt + 'copy dependency', function()
  2973. {
  2974. var cardCell = new mxCell('&lt;&lt;requirement&gt;&gt;\nSlave', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2975. cardCell.vertex = true;
  2976. var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nMaster', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2977. cardCell2.vertex = true;
  2978. var edge1 = new mxCell('&lt;&lt;copy&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;edgeStyle=none;endSize=12;dashed=1;html=1;');
  2979. edge1.geometry.relative = true;
  2980. edge1.edge = true;
  2981. cardCell.insertEdge(edge1, true);
  2982. cardCell2.insertEdge(edge1, false);
  2983. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Copy Dependency');
  2984. }),
  2985. this.addEntry(dt + 'master callout', function()
  2986. {
  2987. var cardCell = new mxCell('Master\n&lt;&lt;requirement&gt;&gt; Master', new mxGeometry(0, 0, 160, 60), 'shape=note;html=1;size=15;align=left;spacingLeft=5;whiteSpace=wrap;align=center;');
  2988. cardCell.vertex = true;
  2989. var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt; Slave', new mxGeometry(200, 0, 160, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  2990. cardCell2.vertex = true;
  2991. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;dashed=1;');
  2992. edge1.geometry.relative = true;
  2993. edge1.edge = true;
  2994. cardCell.insertEdge(edge1, true);
  2995. cardCell2.insertEdge(edge1, false);
  2996. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Master Callout');
  2997. }),
  2998. this.addEntry(dt + 'derive dependency', function()
  2999. {
  3000. var cardCell = new mxCell('&lt;&lt;requirement&gt;&gt;\nClient', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3001. cardCell.vertex = true;
  3002. var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nSupplier', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3003. cardCell2.vertex = true;
  3004. var edge1 = new mxCell('&lt;&lt;deriveReq&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;html=1;edgeStyle=none;endSize=12;dashed=1;');
  3005. edge1.geometry.relative = true;
  3006. edge1.edge = true;
  3007. cardCell.insertEdge(edge1, true);
  3008. cardCell2.insertEdge(edge1, false);
  3009. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Derive Dependency');
  3010. }),
  3011. this.addEntry(dt + 'derive callout', function()
  3012. {
  3013. var cardCell = new mxCell('&lt;&lt;requirement&gt;&gt;\nReqA', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3014. cardCell.vertex = true;
  3015. var cardCell2 = new mxCell('Derived\n&lt;&lt;requirement&gt;&gt; ReqB', new mxGeometry(200, 0, 160, 60), 'shape=note;html=1;size=15;align=left;spacingLeft=5;whiteSpace=wrap;align=center;');
  3016. cardCell2.vertex = true;
  3017. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;dashed=1;');
  3018. edge1.geometry.relative = true;
  3019. edge1.edge = true;
  3020. cardCell.insertEdge(edge1, true);
  3021. cardCell2.insertEdge(edge1, false);
  3022. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Derive Callout');
  3023. }),
  3024. this.addEntry(dt + 'derive callout', function()
  3025. {
  3026. var cardCell = new mxCell('DerivedFrom\n&lt;&lt;requirement&gt;&gt; ReqA', new mxGeometry(0, 0, 160, 60), 'shape=note;html=1;size=15;align=left;spacingLeft=5;whiteSpace=wrap;align=center;');
  3027. cardCell.vertex = true;
  3028. var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nReqB', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3029. cardCell2.vertex = true;
  3030. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
  3031. edge1.geometry.relative = true;
  3032. edge1.edge = true;
  3033. cardCell.insertEdge(edge1, true);
  3034. cardCell2.insertEdge(edge1, false);
  3035. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Derive Callout');
  3036. }),
  3037. this.addEntry(dt + 'satisfy dependency', function()
  3038. {
  3039. var cardCell = new mxCell('NamedElement', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3040. cardCell.vertex = true;
  3041. var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nSupplier', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3042. cardCell2.vertex = true;
  3043. var edge1 = new mxCell('&lt;&lt;satisfy&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;edgeStyle=none;endSize=12;dashed=1;html=1;');
  3044. edge1.geometry.relative = true;
  3045. edge1.edge = true;
  3046. cardCell.insertEdge(edge1, true);
  3047. cardCell2.insertEdge(edge1, false);
  3048. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Satisfy Dependency');
  3049. }),
  3050. this.addEntry(dt + 'satisfy callout', function()
  3051. {
  3052. var cardCell = new mxCell('NamedElement', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3053. cardCell.vertex = true;
  3054. var cardCell2 = new mxCell('Satisfies\n&lt;&lt;requirement&gt;&gt; ReqA', new mxGeometry(200, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
  3055. cardCell2.vertex = true;
  3056. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
  3057. edge1.geometry.relative = true;
  3058. edge1.edge = true;
  3059. cardCell.insertEdge(edge1, true);
  3060. cardCell2.insertEdge(edge1, false);
  3061. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Satisfy Callout');
  3062. }),
  3063. this.addEntry(dt + 'satisfy callout', function()
  3064. {
  3065. var cardCell = new mxCell('SatisfiedBy\nNamedElement', new mxGeometry(0, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
  3066. cardCell.vertex = true;
  3067. var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nReqA', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3068. cardCell2.vertex = true;
  3069. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
  3070. edge1.geometry.relative = true;
  3071. edge1.edge = true;
  3072. cardCell.insertEdge(edge1, true);
  3073. cardCell2.insertEdge(edge1, false);
  3074. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Satisfy Callout');
  3075. }),
  3076. this.addEntry(dt + 'verify dependency', function()
  3077. {
  3078. var cardCell = new mxCell('NamedElement', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3079. cardCell.vertex = true;
  3080. var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nSupplier', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3081. cardCell2.vertex = true;
  3082. var edge1 = new mxCell('&lt;&lt;verify&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;edgeStyle=none;endSize=12;dashed=1;html=1;');
  3083. edge1.geometry.relative = true;
  3084. edge1.edge = true;
  3085. cardCell.insertEdge(edge1, true);
  3086. cardCell2.insertEdge(edge1, false);
  3087. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Verify Dependency');
  3088. }),
  3089. this.addEntry(dt + 'verify callout', function()
  3090. {
  3091. var cardCell = new mxCell('NamedElement', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3092. cardCell.vertex = true;
  3093. var cardCell2 = new mxCell('Verifies\n&lt;&lt;requirement&gt;&gt; ReqA', new mxGeometry(200, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
  3094. cardCell2.vertex = true;
  3095. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
  3096. edge1.geometry.relative = true;
  3097. edge1.edge = true;
  3098. cardCell.insertEdge(edge1, true);
  3099. cardCell2.insertEdge(edge1, false);
  3100. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Verify Callout');
  3101. }),
  3102. this.addEntry(dt + 'verify callout', function()
  3103. {
  3104. var cardCell = new mxCell('VerifiedBy\nNamedElement', new mxGeometry(0, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
  3105. cardCell.vertex = true;
  3106. var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nReqA', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3107. cardCell2.vertex = true;
  3108. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
  3109. edge1.geometry.relative = true;
  3110. edge1.edge = true;
  3111. cardCell.insertEdge(edge1, true);
  3112. cardCell2.insertEdge(edge1, false);
  3113. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Verify Callout');
  3114. }),
  3115. this.addEntry(dt + 'refine dependency', function()
  3116. {
  3117. var cardCell = new mxCell('NamedElement', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3118. cardCell.vertex = true;
  3119. var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nClient', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3120. cardCell2.vertex = true;
  3121. var edge1 = new mxCell('&lt;&lt;refine&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;edgeStyle=none;endSize=12;dashed=1;html=1;');
  3122. edge1.geometry.relative = true;
  3123. edge1.edge = true;
  3124. cardCell.insertEdge(edge1, true);
  3125. cardCell2.insertEdge(edge1, false);
  3126. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Refine Dependency');
  3127. }),
  3128. this.addEntry(dt + 'refine dependency', function()
  3129. {
  3130. var cardCell = new mxCell('NamedElement', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3131. cardCell.vertex = true;
  3132. var cardCell2 = new mxCell('Refines\n&lt;&lt;requirement&gt;&gt; ReqA', new mxGeometry(200, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
  3133. cardCell2.vertex = true;
  3134. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
  3135. edge1.geometry.relative = true;
  3136. edge1.edge = true;
  3137. cardCell.insertEdge(edge1, true);
  3138. cardCell2.insertEdge(edge1, false);
  3139. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Refine Callout');
  3140. }),
  3141. this.addEntry(dt + 'refine dependency', function()
  3142. {
  3143. var cardCell = new mxCell('RefinedBy\nNamedElement', new mxGeometry(0, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
  3144. cardCell.vertex = true;
  3145. var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nReqA', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3146. cardCell2.vertex = true;
  3147. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
  3148. edge1.geometry.relative = true;
  3149. edge1.edge = true;
  3150. cardCell.insertEdge(edge1, true);
  3151. cardCell2.insertEdge(edge1, false);
  3152. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Refine Callout');
  3153. }),
  3154. this.addEntry(dt + 'trace dependency', function()
  3155. {
  3156. var cardCell = new mxCell('&lt;&lt;requirement&gt;&gt;\nClient', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3157. cardCell.vertex = true;
  3158. var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nSupplier', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3159. cardCell2.vertex = true;
  3160. var edge1 = new mxCell('&lt;&lt;trace&gt;&gt;', new mxGeometry(0, 0, 0, 0), 'endArrow=open;edgeStyle=none;endSize=12;dashed=1;html=1;');
  3161. edge1.geometry.relative = true;
  3162. edge1.edge = true;
  3163. cardCell.insertEdge(edge1, true);
  3164. cardCell2.insertEdge(edge1, false);
  3165. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Trace Dependency');
  3166. }),
  3167. this.addEntry(dt + 'refine callout', function()
  3168. {
  3169. var cardCell = new mxCell('NamedElement', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3170. cardCell.vertex = true;
  3171. var cardCell2 = new mxCell('TracedFrom\n&lt;&lt;requirement&gt;&gt; ReqA', new mxGeometry(200, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
  3172. cardCell2.vertex = true;
  3173. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
  3174. edge1.geometry.relative = true;
  3175. edge1.edge = true;
  3176. cardCell.insertEdge(edge1, true);
  3177. cardCell2.insertEdge(edge1, false);
  3178. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Refine Callout');
  3179. }),
  3180. this.addEntry(dt + 'trace callout', function()
  3181. {
  3182. var cardCell = new mxCell('TracedTo\nNamedElement', new mxGeometry(0, 0, 160, 60), 'shape=note;size=15;align=left;spacingLeft=5;html=1;whiteSpace=wrap;align=center;');
  3183. cardCell.vertex = true;
  3184. var cardCell2 = new mxCell('&lt;&lt;requirement&gt;&gt;\nReqA', new mxGeometry(240, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3185. cardCell2.vertex = true;
  3186. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=none;edgeStyle=none;dashed=1;html=1;');
  3187. edge1.geometry.relative = true;
  3188. edge1.edge = true;
  3189. cardCell.insertEdge(edge1, true);
  3190. cardCell2.insertEdge(edge1, false);
  3191. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 360, 60, 'Trace Callout');
  3192. })
  3193. ];
  3194. this.addPalette('sysmlRequirements', 'SysML / Requirements', expand || false, mxUtils.bind(this, function(content)
  3195. {
  3196. for (var i = 0; i < fns.length; i++)
  3197. {
  3198. content.appendChild(fns[i](content));
  3199. }
  3200. }));
  3201. };
  3202. Sidebar.prototype.addSysMLProfilesPalette = function(expand)
  3203. {
  3204. var s = 'shape=mxgraph.sysml.';
  3205. var gn = '';
  3206. var dt = 'sysml profile ';
  3207. var sb = this;
  3208. var fns = [
  3209. this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;',
  3210. 160, 80, '&lt;&lt;stereotype&gt;&gt;\nStereotypeName', 'Stereotype', null, null, this.getTagsForStencil(gn, '', dt + 'stereotype').join(' ')),
  3211. this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;',
  3212. 160, 80, '&lt;&lt;metaclass&gt;&gt;\nMetaClassName', 'Metaclass', null, null, this.getTagsForStencil(gn, '', dt + 'metaclass').join(' ')),
  3213. this.createVertexTemplateEntry('shape=folder;tabWidth=80;tabHeight=20;tabPosition=left;html=1;whiteSpace=wrap;align=center;',
  3214. 160, 100, '&lt;&lt;profile&gt;&gt;\nProfileName', 'Profile', null, null, this.getTagsForStencil(gn, '', dt + 'profile').join(' ')),
  3215. this.createVertexTemplateEntry('shape=folder;tabWidth=80;tabHeight=20;tabPosition=left;html=1;whiteSpace=wrap;align=center;',
  3216. 160, 100, '&lt;&lt;modelLibrary&gt;&gt;\nLibraryName', 'Model Library', null, null, this.getTagsForStencil(gn, '', dt + 'model library').join(' ')),
  3217. this.addEntry(dt + 'extension', function()
  3218. {
  3219. var cardCell = new mxCell('&lt;&lt;metaclass&gt;&gt;\nMetaClassName', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3220. cardCell.vertex = true;
  3221. var cardCell2 = new mxCell('&lt;&lt;stereotype&gt;&gt;\nStereotypeName', new mxGeometry(0, 120, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3222. cardCell2.vertex = true;
  3223. var edge1 = new mxCell('{required}', new mxGeometry(0, 0, 0, 0), 'endArrow=block;html=1;endFill=1;edgeStyle=none;endSize=12;labelBackgroundColor=none;align=left;');
  3224. edge1.geometry.relative = true;
  3225. edge1.edge = true;
  3226. cardCell.insertEdge(edge1, false);
  3227. cardCell2.insertEdge(edge1, true);
  3228. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 120, 180, 'Extension');
  3229. }),
  3230. this.addEntry(dt + 'generalization', function()
  3231. {
  3232. var cardCell = new mxCell('&lt;&lt;stereotype&gt;&gt;\nStereotypeName', new mxGeometry(0, 0, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3233. cardCell.vertex = true;
  3234. var cardCell2 = new mxCell('&lt;&lt;stereotype&gt;&gt;\nStereotypeName', new mxGeometry(0, 120, 120, 60), 'shape=rect;html=1;whiteSpace=wrap;align=center;');
  3235. cardCell2.vertex = true;
  3236. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=block;html=1;endFill=0;edgeStyle=none;endSize=12;labelBackgroundColor=none;align=left;');
  3237. edge1.geometry.relative = true;
  3238. edge1.edge = true;
  3239. cardCell.insertEdge(edge1, false);
  3240. cardCell2.insertEdge(edge1, true);
  3241. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 120, 180, 'Generalization');
  3242. }),
  3243. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=bottom;',
  3244. 160, 0, '&lt;&lt;apply&gt;&gt;{strict}', 'Profile Application', null, this.getTagsForStencil(gn, '', dt + 'profile application').join(' ')),
  3245. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;dashed=1;verticalAlign=top;',
  3246. 160, 0, '&lt;&lt;reference&gt;&gt;', 'Metamodel Reference', null, this.getTagsForStencil(gn, '', dt + 'metamodel reference').join(' ')),
  3247. this.createEdgeTemplateEntry('edgeStyle=none;html=1;endArrow=open;endSize=12;verticalAlign=bottom;',
  3248. 160, 0, 'propertyName', 'Unidirectional Association', null, this.getTagsForStencil(gn, '', dt + 'unidirectional association').join(' '))
  3249. ];
  3250. this.addPalette('sysmlProfiles', 'SysML / Profiles', expand || false, mxUtils.bind(this, function(content)
  3251. {
  3252. for (var i = 0; i < fns.length; i++)
  3253. {
  3254. content.appendChild(fns[i](content));
  3255. }
  3256. }));
  3257. };
  3258. Sidebar.prototype.addSysMLStereotypesPalette = function(expand)
  3259. {
  3260. var s = 'html=1;shape=mxgraph.sysml.';
  3261. var gn = '';
  3262. var dt = 'sysml stereotype ';
  3263. var sb = this;
  3264. var fns = [
  3265. this.addEntry(dt + 'note', function()
  3266. {
  3267. var cardCell = new mxCell(
  3268. '<p style="margin:0px;margin-top:10px;margin-left:10px;text-align:left;">' +
  3269. '<b>&lt;&lt;stereotypeName&gt;&gt;<br/>' +
  3270. 'PropertyName=ValueString<br/>' +
  3271. 'MultiPropertyName=ValueString, ValueString<br/>' +
  3272. 'BooleanPropertyName</b></p>',
  3273. new mxGeometry(40, 0, 280, 80), 'shape=note;size=15;spacingLeft=5;html=1;overflow=fill;whiteSpace=wrap;');
  3274. cardCell.vertex = true;
  3275. var cardCell2 = new mxCell('Element\nName', new mxGeometry(0, 110, 80, 40), 'shape=rect;fontStyle=1;html=1;whiteSpace=wrap;align=center;');
  3276. cardCell2.vertex = true;
  3277. var cardCell3 = new mxCell('Element\nName', new mxGeometry(220, 110, 80, 40), 'shape=rect;fontStyle=1;html=1;whiteSpace=wrap;align=center;');
  3278. cardCell3.vertex = true;
  3279. var edge1 = new mxCell('PathName', new mxGeometry(0, 0, 0, 0), 'rounded=0;labelBackgroundColor=none;verticalAlign=top;endArrow=none;fontStyle=1;html=1;');
  3280. edge1.geometry.relative = true;
  3281. edge1.edge = true;
  3282. cardCell2.insertEdge(edge1, true);
  3283. cardCell3.insertEdge(edge1, false);
  3284. var edge2 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'rounded=0;endArrow=none;dashed=1;html=1;');
  3285. edge2.geometry.setTerminalPoint(new mxPoint(150, 130), false);
  3286. edge2.geometry.relative = true;
  3287. edge2.edge = true;
  3288. cardCell.insertEdge(edge2, true);
  3289. return sb.createVertexTemplateFromCells([cardCell, cardCell2, cardCell3, edge1, edge2], 320, 150, 'Stereotype Note');
  3290. }),
  3291. this.addEntry(dt + 'note', function()
  3292. {
  3293. var cardCell = new mxCell(
  3294. '<p style="margin:0px;margin-top:10px;margin-left:10px;text-align:left;">' +
  3295. '<b>&lt;&lt;stereotypeName&gt;&gt;<br/>' +
  3296. 'PropertyName=ValueString<br/>' +
  3297. 'MultiPropertyName=ValueString, ValueString<br/>' +
  3298. 'BooleanPropertyName</b></p>',
  3299. new mxGeometry(40, 0, 280, 80), 'shape=note;size=15;spacingLeft=5;html=1;overflow=fill;whiteSpace=wrap;');
  3300. cardCell.vertex = true;
  3301. var cardCell2 = new mxCell('Element\nName', new mxGeometry(0, 110, 80, 40), 'shape=rect;fontStyle=1;html=1;whiteSpace=wrap;align=center;');
  3302. cardCell2.vertex = true;
  3303. var edge1 = new mxCell('', new mxGeometry(0, 0, 0, 0), 'rounded=0;endArrow=none;dashed=1;html=1;');
  3304. edge1.geometry.setTerminalPoint(new mxPoint(150, 130), false);
  3305. edge1.geometry.relative = true;
  3306. edge1.edge = true;
  3307. cardCell.insertEdge(edge1, true);
  3308. cardCell2.insertEdge(edge1, false);
  3309. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 320, 150, 'Stereotype Note');
  3310. }),
  3311. this.createVertexTemplateEntry('shape=rect;html=1;whiteSpace=wrap;align=center;', 160, 80,
  3312. '&lt;&lt;stereotypeName&gt;&gt;\n{PropertyName=ValueString;\nBooleanPropertyName}\nNodeName',
  3313. 'Stereotype (Node)', null, null, this.getTagsForStencil(gn, '', dt + 'node').join(' ')),
  3314. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 400, 100,
  3315. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  3316. '<b>NodeName</b><hr/></p>' +
  3317. '<p style="margin:0px;margin-left:10px;text-align:left;">' +
  3318. '&lt;&lt;stereotypeName&gt;&gt;{PropertyName=ValueString}ElementName<br/>' +
  3319. '&lt;&lt;stereotypeName&gt;&gt;{PropertyName=ValueString};<br/>' +
  3320. 'BooleanPropertyName<br/>' +
  3321. 'ElementName</p>',
  3322. 'Stereotype (Compartment)', null, null, this.getTagsForStencil(gn, '', dt + 'compartment').join(' ')),
  3323. this.addEntry(dt + 'edge', function()
  3324. {
  3325. var cardCell = new mxCell('Element\nName', new mxGeometry(0, 0, 120, 60), 'shape=rect;fontStyle=1;html=1;whiteSpace=wrap;align=center;');
  3326. cardCell.vertex = true;
  3327. var cardCell2 = new mxCell('Element\nName', new mxGeometry(0, 120, 120, 60), 'shape=rect;fontStyle=1;html=1;whiteSpace=wrap;align=center;');
  3328. cardCell2.vertex = true;
  3329. var edge1 = new mxCell(
  3330. '&lt;&lt;steretyoeName&gt;&gt;\n{PropertyName=ValueString;\nBooleanPropertyName}PathName',
  3331. new mxGeometry(0, 0, 0, 0), 'endArrow=none;html=1;edgeStyle=none;labelBackgroundColor=none;align=left;fontStyle=1;fontSize=10;');
  3332. edge1.geometry.relative = true;
  3333. edge1.edge = true;
  3334. cardCell.insertEdge(edge1, false);
  3335. cardCell2.insertEdge(edge1, true);
  3336. return sb.createVertexTemplateFromCells([cardCell, cardCell2, edge1], 200, 180, 'Stereotype (Edge)');
  3337. }),
  3338. this.createVertexTemplateEntry('shape=rect;html=1;overflow=fill;whiteSpace=wrap;align=center;', 300, 120,
  3339. '<p style="margin:0px;margin-top:4px;text-align:center;">' +
  3340. '<b>&lt;&lt;stereotypeName&gt;&gt;</br>NodeName</b><hr/></p>' +
  3341. '<p style="margin:0px;margin-left:10px;text-align:left;">' +
  3342. '&lt;&lt;stereotypeName&gt;&gt;<br/>PropertyName=ValueString<br/>' +
  3343. 'MultiPropertyName=ValueString, ValueString<br/>' +
  3344. 'BooleanPropertyName<br/></p>',
  3345. 'Stereotype (Compartment)', null, null, this.getTagsForStencil(gn, '', dt + 'compartment').join(' '))
  3346. ];
  3347. this.addPalette('sysmlStereotypes', 'SysML / Stereotypes', expand || false, mxUtils.bind(this, function(content)
  3348. {
  3349. for (var i = 0; i < fns.length; i++)
  3350. {
  3351. content.appendChild(fns[i](content));
  3352. }
  3353. }));
  3354. };
  3355. })();