MyCanvas.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. draw2d.MyCanvas=function(id){
  2. draw2d.Workflow.call(this,id);
  3. this.html.style.backgroundImage="";//remove default backgourd
  4. this.html.className="MyCanvas";
  5. this.disabled=false;
  6. //this.processCategory=null;
  7. this.processId=null;
  8. this.processName=null;
  9. this.process=new draw2d.Process();
  10. //this.listeners=new draw2d.ArrayList();
  11. };
  12. draw2d.MyCanvas.prototype = new draw2d.Workflow();
  13. draw2d.MyCanvas.prototype.type = "MyCanvas";
  14. /*
  15. draw2d.MyCanvas.prototype.showConnectionLine=function(x1, y1, x2, y2){
  16. var connectionLine = new draw2d.DecoratedConnection();
  17. connectionLine.setStartPoint(x1, y1);
  18. connectionLine.setEndPoint(x2, y2);
  19. if (connectionLine.canvas === null) {
  20. draw2d.Canvas.prototype.addFigure.call(this, connectionLine);
  21. }
  22. };
  23. */
  24. draw2d.MyCanvas.prototype.setDisabled = function(){
  25. this.disabled = true;
  26. return this.readOnly;
  27. };
  28. draw2d.MyCanvas.prototype.addFigure = function(figure, xPos, yPos){
  29. var parent = this.getBestCompartmentFigure(xPos,yPos);
  30. if(parent === null){
  31. draw2d.Workflow.prototype.addFigure.call(this,figure, xPos, yPos);
  32. }else{
  33. this.getCommandStack().execute(new draw2d.CommandAdd(this,figure,xPos,yPos,parent));
  34. }
  35. };
  36. draw2d.MyCanvas.prototype.addModel = function(figure, xPos, yPos){
  37. var parent = this.getBestCompartmentFigure(xPos,yPos);
  38. this.getCommandStack().execute(new draw2d.CommandAdd(this,figure,xPos,yPos,parent));
  39. };
  40. draw2d.MyCanvas.prototype.getContextMenu=function(){
  41. if(this.readOnly)return null;
  42. var menu =new draw2d.ContextMenu(100, 50);
  43. var data = {workflow:this};
  44. menu.appendMenuItem(new draw2d.ContextMenuItem("属性", "properties-icon",data,function(x,y)
  45. {
  46. var data = this.getData();
  47. var workflow = data.workflow;
  48. var pid = workflow.process.id;
  49. openProperties(pid,'processProperties');
  50. }));
  51. return menu;
  52. };
  53. /*
  54. draw2d.MyCanvas.prototype.getListener=function(id){
  55. for(var i=0;i<this.listeners.getSize();i++){
  56. var listener = this.listeners.get(i);
  57. if(listener.getId()=== id){
  58. return listener;
  59. }
  60. }
  61. };
  62. draw2d.MyCanvas.prototype.deleteListener=function(id){
  63. var listener = this.getListener(id);
  64. this.listeners.remove(listener);
  65. };
  66. draw2d.MyCanvas.prototype.setListener=function(listenser){
  67. this.listeners.add(listener);
  68. };
  69. */
  70. draw2d.MyCanvas.prototype.onContextMenu=function(x,y){
  71. if(this.readOnly)return;
  72. var f = this.getBestFigure(x, y);
  73. if(f==null)
  74. f = this.getBestLine(x, y);
  75. if(f !=null){
  76. var menu = f.getContextMenu();
  77. if (menu !== null) {
  78. this.showMenu(menu, x, y);
  79. }
  80. }else{
  81. var menu = this.getContextMenu();
  82. if (menu !== null) {
  83. this.showMenu(menu, x, y);
  84. }
  85. }
  86. };
  87. draw2d.MyCanvas.prototype.getXMLHeader=function(){
  88. var xml='<?xml version="1.0" encoding="UTF-8"?>\n';
  89. return xml;
  90. };
  91. draw2d.MyCanvas.prototype.getDefinitionsStartXML=function(){
  92. var xml = '<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" '
  93. +'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" '
  94. +'xmlns:activiti="http://activiti.org/bpmn" '
  95. +'xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" '
  96. +'xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" '
  97. +'xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" '
  98. +'typeLanguage="http://www.w3.org/2001/XMLSchema" '
  99. +'expressionLanguage="http://www.w3.org/1999/XPath" '
  100. +'targetNamespace="'+this.process.category+'">\n';
  101. return xml;
  102. };
  103. draw2d.MyCanvas.prototype.getDefinitionsEndXML=function(){
  104. var xml='</definitions>\n';
  105. return xml;
  106. };
  107. draw2d.MyCanvas.prototype.toXML=function(){
  108. var xml = this.getXMLHeader();
  109. xml = xml+this.getDefinitionsStartXML();
  110. xml=xml+'<process id="'+this.process.id+'" name="'+this.process.name+'">\n';
  111. xml=xml+this.process.getDocumentationXML();
  112. xml=xml+this.process.getExtensionElementsXML();
  113. var bpmnDigramXml='<bpmndi:BPMNDiagram id="BPMNDiagram_'+this.process.id+'">\n'
  114. bpmnDigramXml=bpmnDigramXml+'<bpmndi:BPMNPlane bpmnElement="'+this.process.id+'" id="BPMNPlane_'+this.process.id+'">\n'
  115. var models = this.getFigures();
  116. for(var i=0;i<models.getSize();i++){
  117. var model=models.get(i);
  118. for(var j=0;j<DefaultModelTypeEnum.length;j++){
  119. if(DefaultModelTypeEnum[j]==model.type){
  120. //alert(model.type);
  121. xml=xml+model.toXML();
  122. bpmnDigramXml=bpmnDigramXml+model.toBpmnDI();
  123. break;
  124. }
  125. }
  126. }
  127. var lines = this.getLines();
  128. for(var i=0;i<lines.getSize();i++){
  129. var line = lines.get(i);
  130. for(var j=0;j<DefaultModelTypeEnum.length;j++){
  131. if(DefaultModelTypeEnum[j]==line.type){
  132. //alert(line.type);
  133. xml=xml+line.toXML();
  134. bpmnDigramXml=bpmnDigramXml+line.toBpmnDI();
  135. break;
  136. }
  137. }
  138. }
  139. xml=xml+'</process>\n';
  140. bpmnDigramXml=bpmnDigramXml+'</bpmndi:BPMNPlane>\n'
  141. bpmnDigramXml=bpmnDigramXml+'</bpmndi:BPMNDiagram>\n';
  142. xml=xml+bpmnDigramXml;
  143. xml=xml+this.getDefinitionsEndXML();
  144. xml=formatXml(xml);
  145. return xml;
  146. };