$Container.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. MWF.xApplication.process.FormDesigner.Module = MWF.xApplication.process.FormDesigner.Module || {};
  2. MWF.xDesktop.requireApp("process.FormDesigner", "Module.$Module", null, false);
  3. MWF.xApplication.process.FormDesigner.Module.$Container = MWF.FC$Container = new Class({
  4. Extends: MWF.FC$Module,
  5. Implements: [Options, Events],
  6. _setNodeProperty: function(){
  7. this.node.store("module", this);
  8. if (this.form.moduleList.indexOf(this)==-1) this.form.moduleList.push(this);
  9. if (this.form.moduleNodeList.indexOf(this.node)==-1) this.form.moduleNodeList.push(this.node);
  10. if (this.form.moduleContainerNodeList.indexOf(this.node)==-1) this.form.moduleContainerNodeList.push(this.node);
  11. this.node.store("module", this);
  12. },
  13. _dragIn: function(module){
  14. if (!this.Component) module.inContainer = this;
  15. module.parentContainer = this;
  16. module.nextModule = null;
  17. this.node.setStyles({"border": "1px solid #ffa200"});
  18. var copyNode = module._getCopyNode();
  19. copyNode.inject(this.node);
  20. },
  21. _dragOut: function(module){
  22. module.inContainer = null;
  23. module.parentContainer = null;
  24. module.nextModule = null;
  25. this.node.setStyles(this.css.moduleNode);
  26. // this.node.setStyles(this.json.styles);
  27. this.setCustomStyles();
  28. var copyNode = module._getCopyNode();
  29. copyNode.setStyle("display", "none");
  30. },
  31. _dragDrop: function(module){
  32. this.node.setStyles(this.css.moduleNode);
  33. //this.node.setStyles(this.json.styles);
  34. this.setCustomStyles();
  35. this.parentContainer.node.setStyles(this.css.moduleNode);
  36. //this.node.setStyles(this.json.styles);
  37. this.parentContainer.setCustomStyles();
  38. },
  39. _dragInLikeElement: function(module){
  40. module.parentContainer = this.parentContainer;
  41. module.nextModule = this;
  42. this.parentContainer.node.setStyles({"border": "1px solid #ffa200"});
  43. var copyNode = module._getCopyNode();
  44. copyNode.inject(this.node, "before");
  45. },
  46. _getSubModule: function(){
  47. var modules = [];
  48. var subNode = this.node.getFirst();
  49. while (subNode){
  50. var module = subNode.retrieve("module");
  51. if (module) {
  52. modules.push(module);
  53. // if (module.moduleType=="container"){
  54. // modules = modules.concat(module._getSubModule());
  55. // }
  56. }
  57. subNode = subNode.getNext();
  58. }
  59. return modules;
  60. },
  61. load : function(json, node, parent){
  62. this.json = json;
  63. this.node= node;
  64. this.node.store("module", this);
  65. this.node.setStyles(this.css.moduleNode);
  66. this._loadNodeStyles();
  67. this._loadNodeCustomStyles();
  68. this._initModule();
  69. this._loadTreeNode(parent);
  70. this.parseModules();
  71. this.parentContainer = this.treeNode.parentNode.module;
  72. this._setEditStyle_custom("id");
  73. this.json.moduleName = this.moduleName;
  74. },
  75. parseModules: function(){
  76. var subDom = this.node.getFirst();
  77. while (subDom){
  78. if (subDom.get("MWFtype")){
  79. var json = this.form.getDomjson(subDom);
  80. module = this.form.loadModule(json, subDom, this);
  81. }
  82. subDom = subDom.getNext();
  83. }
  84. },
  85. destroy: function(){
  86. var modules = this._getSubModule();
  87. modules.each(function(module){
  88. //module._deleteModule();
  89. module.destroy();
  90. });
  91. this._deleteModule();
  92. },
  93. _deleteModule: function(){
  94. this.form.moduleList.erase(this);
  95. this.form.moduleNodeList.erase(this.node);
  96. this.form.moduleElementNodeList.erase(this.node);
  97. if (this.form.scriptDesigner){
  98. this.form.scriptDesigner.removeModule(this.json);
  99. }
  100. if (this.property) this.property.destroy();
  101. this.node.destroy();
  102. this.actionArea.destroy();
  103. delete this.form.json.moduleList[this.json.id];
  104. this.json = null;
  105. delete this.json;
  106. this.treeNode.destroy();
  107. o2.release(this);
  108. },
  109. copy: function(e){
  110. //var newNode = this.node.clone(true, true);
  111. //var newModuleJson = Object.clone(this.json);
  112. //
  113. //var className = this.moduleName.capitalize();
  114. //var newTool = new MWF["FC"+className](this.form);
  115. //newModuleJson.id = newTool._getNewId();
  116. //newNode.set("id", newModuleJson.id);
  117. this.copySubModule().move(e);
  118. //newTool.load(newModuleJson, newNode, this.form);
  119. //
  120. //newTool.move(e);
  121. },
  122. copyTo: function(node){
  123. if (!node) node = this.form;
  124. var newNode = this.node.clone(false, true);
  125. var newModuleJson = Object.clone(this.json);
  126. newNode.inject(node.node);
  127. var className = this.moduleName.capitalize();
  128. var prefix = (this.form.moduleType=="page") ? "PC" : "FC";
  129. var newTool = new MWF[prefix+className](this.form);
  130. newModuleJson.id = newTool._getNewId();
  131. newNode.set("id", newModuleJson.id);
  132. this.form.json.moduleList[newModuleJson.id] = newModuleJson;
  133. if (this.form.scriptDesigner) this.form.scriptDesigner.createModuleScript(newModuleJson);
  134. newTool.load(newModuleJson, newNode, node);
  135. return newTool;
  136. },
  137. copySubModule: function(node){
  138. var newModule = this.copyTo(node);
  139. var modules = this._getSubModule();
  140. modules.each(function(module){
  141. //module._deleteModule();
  142. if (module.moduleType=="container"){
  143. module.copySubModule(newModule);
  144. }
  145. if (module.moduleType=="element"){
  146. module.copyTo(newModule);
  147. }
  148. if (module.moduleType=="component"){
  149. module.copyTo(newModule);
  150. }
  151. });
  152. return newModule
  153. //var subNode = node.getFirst();
  154. //while (subNode){
  155. //
  156. // var type = subNode.get("MWFType");
  157. // if (type){
  158. // var newModuleJson = Object.clone(this.form.getDomjson(subNode));
  159. // newModuleJson.id = this._getNewId("", newModuleJson.type.toLowerCase());
  160. // subNode.set("id", newModuleJson.id);
  161. // this.form.json.moduleList[newModuleJson.id] = newModuleJson;
  162. //
  163. // //subNode.eliminate("module");
  164. //
  165. // // if (module.moduleType=="container"){
  166. // this.copySubModule(subNode);
  167. // // }
  168. // }
  169. // subNode = subNode.getNext();
  170. //}
  171. }
  172. });