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                         // make sure it's initialized..
61                         _this.panel.menu = Roo.factory(_this.panel.menu);
62                         
63                         _this.panel.menu.show(e.getTarget(), 'tr');
64                     },
65                     beforeedit : function (e)
66                     {
67                        Roo.log('beforeedit');
68                        Roo.log(e.record.data);
69                        var key = e.record.data.name;
70                        var val = e.record.data.value;
71                        // source code edit..
72                        if (key.match(/^\|/) || key.match(/^\!/)) {
73                             Pman.Dialog.BuilderSourceEdit.show( { value :  val }, function(d) {
74                                 // perhaps we should eval it..
75                             
76                                 _this.grid.currentNode.elConfig[key] = d.value;
77                                 _this.grid.setSourceFromNode(_this.grid.currentNode.elConfig);
78                                 _this.grid.fireEvent('propertychange', 
79                                     Pman.Tab.BuilderProps.grid, key, d.value, false
80                                 );
81                             });
82                             e.cancel = true;
83                             return;
84                        }
85                     },
86                     propertychange : function (grid, id, v, oldval)
87                     {
88                         if (v == 'false') {
89                             v = false;
90                         }
91                         if (v == 'true') {
92                             v = true;
93                         }
94                         _this.grid.currentNode.elConfig[id] = v;
95                         var bp = Pman.Tab.BuilderView.panel;
96                         bp.redraw.defer(100,bp, [true]);
97                         _this.grid.currentNode.setText(
98                             Pman.Tab.BuilderTree.tree.configToText(_this.grid.currentNode.elConfig)
99                         );
100                     }
101                 },
102                 setCurrrentNode : function(node) {
103                    
104                     
105                     this.view.el.unmask();
106                     
107                     if (!node || !node.elConfig) {
108                         this.currentNode = false;
109                         this.setSourceFromNode({});
110                         this.view.el.mask('select a node');
111                     } else {
112                         this.currentNode = node;
113                         this.setSourceFromNode(this.currentNode.elConfig);
114                         
115                     }
116                     
117                 },
118                 setSourceFromNode : function(config) {
119                    
120                         
121                     var cfg = {};
122                     for (var k in config) {
123                         //if (k.charAt(0) == '*') {
124                         //    continue; // dont show props..
125                         //}
126                         
127                         if (k  == 'listeners') {
128                             for (var kk in config[k]) {
129                                 cfg['!' + kk ] = config[k][kk];
130                             }
131                             
132                             continue;
133                         }
134                         if (k  == 'items') {
135                             continue;
136                         }
137                         
138                         if (typeof config[k] == 'object') {
139                             
140                             try {
141                                 var ec = Roo.encode(config[k]);
142                                 cfg[k] = ec;
143                             } catch(e) {}
144                             continue;
145                         }
146                         cfg[k] = config[k];
147                     }
148                     
149                     if (!cfg.xtype) {
150                         return;
151                     }
152                 
153                     this.setSource(cfg);
154                 
155                     
156                       
157                 }
158             },
159             menu : {
160                 xtype: 'Menu',
161                 xns: Roo.menu,
162                 items : [
163                     {
164                         xtype: 'Item',
165                         xns: Roo.menu,
166                         listeners : {
167                             activate : function (_self)
168                             {
169                             
170                             },
171                             click : function (_self, e)
172                             {
173                              var rc = _this.grid.getSelectionModel().getSelectedCell();
174                                  var n = _this.grid.getDataSource().getAt(rc[0]).data.name;
175                                  if (n == 'xtype') {
176                                     return;
177                                 }
178                                 if (n[0] == '!') {
179                                     delete _this.grid.currentNode.elConfig.listeners[n.substring(1)];
180                                 } else {
181                                     delete _this.grid.currentNode.elConfig[n];
182                                 }
183                                 // reloads      
184                                 _this.grid.setCurrrentNode(_this.grid.currentNode);
185                                 var bp = Pman.Tab.BuilderView.panel;
186                                 bp.redraw.defer(100,bp, [true]);
187                                 // update the tree's  text
188                                 _this.currentNode.setText(
189                                     Pman.Tab.BuilderTree.tree.configToText(_this.currentNode.elConfig)
190                                 );
191                             }
192                         },
193                         text : "Delete Property / Event"
194                     }
195                 ]
196             }
197         });
198         this.layout = this.panel.layout;
199
200     }
201 });