$Container.js 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  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. this.node.destroy();
  101. this.actionArea.destroy();
  102. delete this.form.json.moduleList[this.json.id];
  103. this.json = null;
  104. delete this.json;
  105. this.treeNode.destroy();
  106. },
  107. copy: function(e){
  108. //var newNode = this.node.clone(true, true);
  109. //var newModuleJson = Object.clone(this.json);
  110. //
  111. //var className = this.moduleName.capitalize();
  112. //var newTool = new MWF["FC"+className](this.form);
  113. //newModuleJson.id = newTool._getNewId();
  114. //newNode.set("id", newModuleJson.id);
  115. this.copySubModule().move(e);
  116. //newTool.load(newModuleJson, newNode, this.form);
  117. //
  118. //newTool.move(e);
  119. },
  120. copyTo: function(node){
  121. if (!node) node = this.form;
  122. var newNode = this.node.clone(false, true);
  123. var newModuleJson = Object.clone(this.json);
  124. newNode.inject(node.node);
  125. var className = this.moduleName.capitalize();
  126. var prefix = (this.form.moduleType=="page") ? "PC" : "FC";
  127. var newTool = new MWF[prefix+className](this.form);
  128. newModuleJson.id = newTool._getNewId();
  129. newNode.set("id", newModuleJson.id);
  130. this.form.json.moduleList[newModuleJson.id] = newModuleJson;
  131. if (this.form.scriptDesigner) this.form.scriptDesigner.createModuleScript(newModuleJson);
  132. newTool.load(newModuleJson, newNode, node);
  133. return newTool;
  134. },
  135. copySubModule: function(node){
  136. var newModule = this.copyTo(node);
  137. var modules = this._getSubModule();
  138. modules.each(function(module){
  139. //module._deleteModule();
  140. if (module.moduleType=="container"){
  141. module.copySubModule(newModule);
  142. }
  143. if (module.moduleType=="element"){
  144. module.copyTo(newModule);
  145. }
  146. if (module.moduleType=="component"){
  147. module.copyTo(newModule);
  148. }
  149. });
  150. return newModule
  151. //var subNode = node.getFirst();
  152. //while (subNode){
  153. //
  154. // var type = subNode.get("MWFType");
  155. // if (type){
  156. // var newModuleJson = Object.clone(this.form.getDomjson(subNode));
  157. // newModuleJson.id = this._getNewId("", newModuleJson.type.toLowerCase());
  158. // subNode.set("id", newModuleJson.id);
  159. // this.form.json.moduleList[newModuleJson.id] = newModuleJson;
  160. //
  161. // //subNode.eliminate("module");
  162. //
  163. // // if (module.moduleType=="container"){
  164. // this.copySubModule(subNode);
  165. // // }
  166. // }
  167. // subNode = subNode.getNext();
  168. //}
  169. }
  170. });