Pman.Tab.BuilderProps.js
[Pman.Builder] / Pman.Tab.BuilderProps.js
1 //<script type="text/javascript">
2
3 // Auto generated file - created by app.Builder.js- do not edit directly (at present!)
4
5
6
7 // register the module first
8 Pman.on('beforeload', function()
9 {
10     Pman.register({
11         modKey : '001-Pman.Tab.BuilderProps',
12         module : Pman.Tab.BuilderProps,
13         region : 'center',
14         parent : Pman.Tab.BuilderTree,
15         name : "Pman.Tab.BuilderProps",
16         disabled : false, 
17         permname: '' 
18     });
19 });
20
21 Pman.Tab.BuilderProps = new Roo.util.Observable({
22
23     panel : false,
24     disabled : false,
25     parentLayout:  false,
26
27     add : function(parentLayout, region)
28     {
29
30         var _this = this;
31         this.parentLayout = parentLayout;
32
33         this.panel = parentLayout.addxtype({
34             xtype: 'GridPanel',
35             xns: Roo,
36             region : 'south',
37             grid : {
38                 xtype: 'PropertyGrid',
39                 xns: Roo.grid,
40                 listeners : {
41                     render : function (grid)
42                     {
43                         _this.grid = grid;
44                     },
45                     afteredit : function (e)
46                     {
47                        // change this..
48                        //this.currentNode.elConfig
49                        
50                        
51                     },
52                     cellclick : function (_self, rowIndex, ci, e)
53                     {
54                          if (ci != 0) {
55                             return;
56                         }
57                         //console.log(e);
58                         // click on left col..
59                         // show menu..
60                         _this.panel.menu.show(e.getTarget(), 'tr');
61                     },
62                     beforeedit : function (e)
63                     {
64                        Roo.log('beforeedit');
65                        Roo.log(e.record.data);
66                        var key = e.record.data.name;
67                        var val = e.record.data.value;
68                        if (key.match(/^\|/) || key.match(/^\!/)) {
69                             Pman.Dialog.BuilderSourceEdit.show( { value :  val }, function(d) {
70                                 _this.grid.currentNode.elConfig[key] = val;
71                                 _this.grid.setSourceFromNode(_this.grid.currentNode.elConfig);
72                                 _this.grid.fireEvent('propertychange', 
73                                     Pman.Tab.BuilderProps.grid, key, val, false
74                                 );
75                             });
76                             e.cancel = true;
77                             return;
78                        }
79                     },
80                     propertychange : function (grid, id, v, oldval)
81                     {
82                         if (v == 'false') {
83                             v = false;
84                         }
85                         if (v == 'true') {
86                             v = true;
87                         }
88                         _this.grid.currentNode.elConfig[id] = v;
89                         var bp = Pman.Tab.BuilderView.panel;
90                         bp.redraw.defer(100,bp, [true]);
91                         _this.grid.currentNode.setText(
92                             Pman.Tab.BuilderTree.tree.configToText(_this.grid.currentNode.elConfig)
93                         );
94                     }
95                 },
96                 setCurrrentNode : function(node) {
97                    
98                     
99                     this.view.el.unmask();
100                     
101                     if (!node || !node.elConfig) {
102                         this.currentNode = false;
103                         this.setSourceFromNode({});
104                         this.view.el.mask('select a node');
105                     } else {
106                         this.currentNode = node;
107                         this.setSourceFromNode(this.currentNode.elConfig);
108                         
109                     }
110                     
111                 },
112                 setSourceFromNode : function(config) {
113                    
114                         
115                     var cfg = {};
116                     for (var k in config) {
117                         //if (k.charAt(0) == '*') {
118                         //    continue; // dont show props..
119                         //}
120                         
121                         if (k  == 'listeners') {
122                             for (var kk in config[k]) {
123                                 cfg['!' + kk ] = config[k][kk];
124                             }
125                             
126                             continue;
127                         }
128                         if (k  == 'items') {
129                             continue;
130                         }
131                         
132                         if (typeof config[k] == 'object') {
133                             
134                             try {
135                                 var ec = Roo.encode(config[k]);
136                                 cfg[k] = ec;
137                             } catch(e) {}
138                             continue;
139                         }
140                         cfg[k] = config[k];
141                     }
142                     
143                     if (!cfg.xtype) {
144                         return;
145                     }
146                 
147                     this.setSource(cfg);
148                 
149                     
150                       
151                 }
152             },
153             menu : {
154                 xtype: 'Menu',
155                 xns: Roo.menu,
156                 items : [
157                     {
158                         xtype: 'Item',
159                         xns: Roo.menu,
160                         listeners : {
161                             click : function (_self, e)
162                             {
163                                  var rc = _this.grid.getSelectionModel().getSelectedCell();
164                                  var n = _this.grid.getDataSource().getAt(rc[0]).data.name;
165                                  if (n == 'xtype') {
166                                     return;
167                                 }
168                                 if (n[0] == '!') {
169                                     delete _this.grid.currentNode.elConfig.listeners[n.substring(1)];
170                                 } else {
171                                     delete _this.grid.currentNode.elConfig[n];
172                                 }
173                                 // reloads      
174                                 _this.grid.setCurrrentNode(_this.currentNode);
175                                 var bp = Pman.Tab.BuilderView.panel;
176                                 bp.redraw.defer(100,bp, [true]);
177                                 // update the tree's  text
178                                 _this.currentNode.setText(
179                                     Pman.Tab.BuilderTree.tree.configToText(_this.currentNode.elConfig)
180                                 );
181                             }
182                         },
183                         text : "Delete Property / Event"
184                     }
185                 ]
186             }
187         });
188         this.layout = this.panel.layout;
189
190     }
191 });