OSDN Git Service

Merge branch 'v06' of git.sourceforge.jp:/gitroot/pettanr/pettanr into v06
[pettanr/pettanr.git] / app / assets / javascripts / editor / panel_editor / dock.js.coffee
1 class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase\r
2   tagName: 'div'\r
3   className: 'dock'\r
4   \r
5   initialize: (options) ->\r
6     super(options)\r
7     @root_bay = new Editor.EditorModule.DockModule.RootBay({\r
8       parent: this, index: 0, name: 'panel'\r
9     })\r
10     @add_tab(\r
11       @root_bay, \r
12       new Editor.EditorModule.DockModule.TabModule.RootBayLabel({\r
13         parent: @root_bay, caption: 'panel'\r
14       }), \r
15       new Editor.EditorModule.DockModule.TabModule.RootBayBody({\r
16         parent: @root_bay\r
17       })\r
18     )\r
19     @element_bay = new Editor.EditorModule.DockModule.ElementBay({\r
20       parent: this, index: 1, name: 'elements'\r
21     })\r
22     @add_tab(\r
23       @element_bay, \r
24       new Editor.EditorModule.DockModule.TabModule.ElementBayLabel({\r
25         parent: @element_bay, caption: 'elements'\r
26       }), \r
27       new Editor.EditorModule.DockModule.TabModule.ElementBayBody({\r
28         parent: @element_bay\r
29       })\r
30     )\r
31     @scenario_bay = new Editor.EditorModule.DockModule.ScenarioBay({\r
32       parent: this, index: 2, name: 'scenario'\r
33     })\r
34     @add_tab(\r
35       @scenario_bay, \r
36       new Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel({\r
37         parent: @scenario_bay, caption: 'scenario'\r
38       }), \r
39       new Editor.EditorModule.DockModule.TabModule.ScenarioBayBody({\r
40         parent: @scenario_bay\r
41       })\r
42     )\r
43     @listenTo(@root_bay.body, 'put', @put)\r
44   \r
45   render: () ->\r
46     this.$el.html('')\r
47     l = _.map @tabs, (tab) ->\r
48       tab.label\r
49     labels = new Tag.Ul({contents: l, class_name: @dom_labels_class()})\r
50     this.$el.append(labels.render().el)\r
51     _.each @tabs, (tab) =>\r
52       this.$el.append(tab.render().el)\r
53     this\r
54   \r
55   add_element: (element) ->\r
56     @element_bay.add_element(element)\r
57   \r
58   editor: () ->\r
59     @parent\r
60   \r
61   dom_id: () ->\r
62     @editor().dom_id() + '-dock'\r
63   \r
64   dom_class: () ->\r
65     @editor().dom_class() + '-dock'\r
66   \r
67   dom_labels_class: () ->\r
68     @dom_class() + '-labels'\r
69   \r
70   put: () ->\r
71     @trigger('put')\r
72     false\r
73   \r
74   save: (options) ->\r
75     attrs = @save_data()\r
76     @root_bay.body.form.save(attrs, options)\r
77   \r
78   save_data: () ->\r
79     attrs = @root_bay.save_data()\r
80     _.extend(attrs, @element_bay.save_data())\r
81     attrs\r
82   \r
83   valid: () ->\r
84     @root_bay.body.form.valid()\r
85   \r
86   invalid: () ->\r
87     @root_bay.body.form.invalid()\r
88   \r
89 class Editor.EditorModule.DockModule.RootBay extends Editor.EditorModule.DockModule.SimpleBay\r
90   \r
91   render: () ->\r
92     @body.render()\r
93   \r
94   save_data: () ->\r
95     @body.form.save_data()\r
96   \r
97 class Editor.EditorModule.DockModule.TabModule.RootBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
98   \r
99 class Editor.EditorModule.DockModule.TabModule.RootBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
100   \r
101   initialize: (options) ->\r
102     super(options)\r
103     @form = Locmare.Form.factory({\r
104       form_name: @root_item().item_name(), \r
105       use_name: 'default' \r
106       item: @root_item(), \r
107       mounted: @mounted(), \r
108       submit: 'default' \r
109       operators: @dock().editor().operators,\r
110       action: '/' + @root_item().table_name() + '/' + Pettanr.to_s(@root_item().get('id'))\r
111     })\r
112     @listenTo(@form, 'put', @put)\r
113   \r
114   render: () ->\r
115     super()\r
116     @el.className = @bay().body.dom_class()\r
117     this.$el.html(@form.render().el)\r
118     this\r
119   \r
120   mounted: () ->\r
121     true\r
122   \r
123   dock: () ->\r
124     @parent.dock()\r
125   \r
126   root_item: () ->\r
127     @dock().root_item()\r
128   \r
129   put: () ->\r
130     @trigger('put')\r
131     false\r
132   \r
133 class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.DockModule.BoardBay\r
134   \r
135   initialize: (options) ->\r
136     super(options)\r
137     @elements_tabs = new Editor.EditorModule.DockModule.ElementBay.ElementsTabs({\r
138     })\r
139     @listenTo(@elements_tabs, 'sorted', @sorted)\r
140   \r
141   add_element: (element) ->\r
142     index = element.get('z') - 1\r
143     tab = new Editor.EditorModule.DockModule.ElementBoard({\r
144       parent: this, index: index, name: element.item_name(), element: element\r
145     })\r
146     bb = new Editor.EditorModule.DockModule.TabModule.ElementBoardBody({parent: tab})\r
147     @add_tab(\r
148       tab, \r
149       new Editor.EditorModule.DockModule.TabModule.ElementBoardLabel({parent: tab, name: element.item_name()}), \r
150       bb\r
151     )\r
152     @elements_tabs.add_element_tab(tab)\r
153     @elements_tabs.$el.tabs('refresh')\r
154     bb.form\r
155   \r
156   add_new_tab: () ->\r
157     tab = new Editor.EditorModule.DockModule.NewElementBoard({\r
158       parent: this, index: 0, name: 'new'\r
159     })\r
160     bb = new Editor.EditorModule.DockModule.TabModule.NewElementBoardBody({parent: tab})\r
161     @add_tab(\r
162       tab, \r
163       new Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel({parent: tab}), \r
164       bb\r
165     )\r
166     @elements_tabs.add_element_tab(tab)\r
167   \r
168   render: () ->\r
169     this.$el.html('')\r
170     this.$el.attr('id', @body.dom_id())\r
171     this.$el.append(@elements_tabs.render().el)\r
172     @elements_tabs.$el.tabs()\r
173     # @add_new_tab()\r
174     this\r
175   \r
176   sorted: () ->\r
177     # data-z copy to model\r
178     _.each @tabs, (tab) ->\r
179       if tab.element   # without new_tab\r
180         z = parseInt(tab.label.$el.attr('data-z'))\r
181         tab.element.set({\r
182           z: z\r
183         }, {silent: true})\r
184         tab.element.trigger('sort')\r
185   \r
186   panel_body: () ->\r
187     @dock().editor().body\r
188   \r
189   save_data: () ->\r
190     attrs = {}\r
191     _.each @tabs, (tab) ->\r
192       return if not tab.element  # without new element tab\r
193       form = tab.body.form\r
194       name = form.item.table_name() + '_attributes'\r
195       attrs[name] ||= []\r
196       attrs[name].push(form.save_data())\r
197     attrs\r
198   \r
199 class Editor.EditorModule.DockModule.ElementBay.ElementsTabs extends Backbone.View\r
200   tagName: 'div'\r
201   className: 'elements_tabs ui-tabs-vertical ui-helper-clearfix'\r
202   \r
203   initialize: (options) ->\r
204     super(options)\r
205     @inner_elements_tabs = new Editor.EditorModule.DockModule.ElementBay.InnerElementsTabs({\r
206     })\r
207     @listenTo(@inner_elements_tabs, 'sorted', @sorted)\r
208   \r
209   render: () ->\r
210     this.$el.html('')\r
211     this.$el.append(@inner_elements_tabs.render().$el)\r
212     this\r
213   \r
214   add_element_tab: (tab) ->\r
215     @inner_elements_tabs.add_label(tab.label)\r
216     this.$el.append(tab.body.render().$el)\r
217   \r
218   sorted: () ->\r
219     # data-z copy to model\r
220     @trigger('sorted')\r
221   \r
222 class Editor.EditorModule.DockModule.ElementBay.InnerElementsTabs extends Backbone.View\r
223   tagName: 'ul'\r
224   \r
225   initialize: (options) ->\r
226     super(options)\r
227     @labels = []\r
228   \r
229   render: () ->\r
230     this.$el.html('')\r
231     this.$el.addClass('inner-elements-tabs')\r
232     _.each @zorderd_labels(), (label) =>\r
233       this.$el.append(label.render().$el)\r
234     _this = this\r
235     this.$el.sortable {\r
236       update: (event, ui) ->\r
237         z = 1\r
238         $('.z-label', $(@)).map ->\r
239           $(@).attr('data-z', z)\r
240           z++\r
241         _this.trigger('sorted')\r
242     }\r
243     this\r
244   \r
245   zorderd_labels: () ->\r
246     res = []\r
247     _.each @labels, (label) =>\r
248       res[label.z()] = label\r
249     res\r
250   \r
251   add_label: (label) ->\r
252     #z = label.z()\r
253     @labels.push(label) # insert array\r
254     @render()\r
255     label.add_label()\r
256   \r
257 class Editor.EditorModule.DockModule.TabModule.ElementBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
258   \r
259 class Editor.EditorModule.DockModule.TabModule.ElementBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
260   \r
261   render: () ->\r
262     @body.render()\r
263   \r
264 class Editor.EditorModule.DockModule.ElementBoard extends Editor.EditorModule.DockModule.Board\r
265   \r
266   initialize: (options) ->\r
267     super(options)\r
268     @element = options.element\r
269   \r
270   dom_id: () ->\r
271     super() + '-' + @element.get('id')  # use tab index\r
272   \r
273 class Editor.EditorModule.DockModule.TabModule.ElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
274   \r
275   render: () ->\r
276     super()\r
277     this.$el.attr('data-z', @z())\r
278     this.$el.removeClass('ui-corner-top')\r
279     this.$el.addClass('ui-corner-left z-label')\r
280     _this = this\r
281     this.$el.mouseover -> \r
282       _this.element().trigger('active')\r
283     this.$el.mouseout -> \r
284       _this.element().trigger('inactive')\r
285     this\r
286   \r
287   z: () ->\r
288     @element().get('z')\r
289   \r
290   add_label: () ->\r
291     this.$el.attr('id', @dom_id())\r
292   \r
293 class Editor.EditorModule.DockModule.TabModule.ElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
294   \r
295   initialize: (options) ->\r
296     super(options)\r
297     @form = Locmare.Form.factory({\r
298       form_name: @element().item_name(), \r
299       use_name: 'default' \r
300       item: @element(), \r
301       mounted: @mounted(), \r
302       submit: null, \r
303       operators: @dock().editor().operators,\r
304       action: '/' + @element().table_name() + '/' + Pettanr.to_s(@element().get('id'))\r
305     })\r
306   \r
307   render: () ->\r
308     this.$el.attr('id', @dom_id())\r
309     this.$el.html(@form.render().el)\r
310     this\r
311   \r
312   add_element: (element) ->\r
313     @form.add_element(element)\r
314   \r
315   mounted: () ->\r
316     true\r
317   \r
318   element: () ->\r
319     @parent.element\r
320   \r
321 class Editor.EditorModule.DockModule.NewElementBoard extends Editor.EditorModule.DockModule.Board\r
322   \r
323   initialize: (options) ->\r
324     super(options)\r
325     @panel = @parent.dock().editor().panel\r
326   \r
327 class Editor.EditorModule.DockModule.TabModule.NewElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
328   \r
329   render: () ->\r
330     super()\r
331     this.$el.attr('data-z', @z())\r
332     this.$el.removeClass('ui-corner-top')\r
333     this.$el.addClass('ui-corner-left')\r
334     this\r
335   \r
336   face: () ->\r
337     this.$el.append()\r
338     icon = new Pettanr.Image.SymbolImg({attr: {src: '/images/new.gif'}})\r
339     linked_elements_tab = new Tag.A({\r
340       attr: {href: '#' + @board().body.dom_id() },\r
341       content: icon.render().el\r
342     })\r
343     this.$el.append(linked_elements_tab.render().el)\r
344   \r
345   z: () ->\r
346     0\r
347   \r
348   add_label: () ->\r
349     this.$el.attr('id', @dom_id())\r
350   \r
351 class Editor.EditorModule.DockModule.TabModule.NewElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
352   className: 'new-element-board-body'\r
353   \r
354   initialize: (options) ->\r
355     super(options)\r
356   \r
357   render: () ->\r
358     this.$el.attr('id', @dom_id())\r
359     @buttons = new Editor.EditorModule.DockModule.NewElementButtons({\r
360       parent: this, element_models: @element_models()\r
361     })\r
362     @form_wrapper = new Editor.EditorModule.DockModule.NewElementFormWrapper({\r
363       parent: this\r
364     })\r
365     this.$el.append(@buttons.render().el)\r
366     this.$el.append(@form_wrapper.clear().el)\r
367     this\r
368   \r
369   panel: () ->\r
370     @parent.panel\r
371   \r
372   element_models: () ->\r
373     @panel().my_class().child_models()\r
374   \r
375 class Editor.EditorModule.DockModule.NewElementButtons extends Backbone.View\r
376   tagName: 'div'\r
377   className: 'new-element-buttons'\r
378   \r
379   initialize: (options) ->\r
380     super(options)\r
381     @parent = options.parent\r
382     @element_models = options.element_models\r
383   \r
384   render: () ->\r
385     _.each @element_models, (model) =>\r
386       button = new Editor.EditorModule.DockModule.NewElementButton({\r
387         parent: this, model: model\r
388       })\r
389       this.$el.append(button.render().el)\r
390     this\r
391   \r
392 class Editor.EditorModule.DockModule.NewElementButton extends Backbone.View\r
393   tagName: 'div'\r
394   \r
395   initialize: (options) ->\r
396     super(options)\r
397     @parent = options.parent\r
398     @model = options.model\r
399   \r
400   render: () ->\r
401     this.$el.html('')\r
402     icon = new Pettanr.Image.Icon({item: @model})\r
403     linked_icon = new Editor.EditorModule.DockModule.NewElementLinkedButton({\r
404       attr: {href: '#event' },\r
405       content: icon.render().el,\r
406       handler_name: 'click'\r
407     })\r
408     @listenTo(linked_icon, 'click', @click)\r
409     this.$el.append(linked_icon.render().el)\r
410     this\r
411   \r
412   click: () ->\r
413     @set_dialog()\r
414     @set_form()\r
415     @dialog().$el.dialog('open')\r
416   \r
417   set_dialog: () ->\r
418     @params = {\r
419       controller: @model.path_name(), action: 'index',\r
420       page_size: 6\r
421     }\r
422     @list = Locmare.ListGroup.list(\r
423       @model.path_name(), 'index', @operators(), @params\r
424     )\r
425     @list.open(() =>\r
426       pager = Locmare.ListGroupModule.LibModule.Pager.factory(@list.page_status, @params)\r
427       f = new Locmare.Filer({\r
428         el: @dialog().$el,\r
429         item_name: @model.item_name(), \r
430         items: @list.items(), \r
431         pager: pager, \r
432         operators: @operators()\r
433       })\r
434     )\r
435     this\r
436   \r
437   set_form: () ->\r
438     @form_wrapper().select(@model)\r
439   \r
440   operators: () ->\r
441     @editor().operators\r
442   \r
443   form_wrapper: () ->\r
444     @parent.parent.form_wrapper\r
445   \r
446   dock: () ->\r
447     @parent.parent.dock()\r
448   \r
449   dialog: () ->\r
450     @editor().dialog\r
451   \r
452   editor: () ->\r
453     @dock().parent\r
454   \r
455 class Editor.EditorModule.DockModule.NewElementLinkedButton extends Tag.A\r
456   \r
457   click: () ->\r
458     @trigger('click')\r
459     return false\r
460   \r
461 class Editor.EditorModule.DockModule.NewElementFormWrapper extends Backbone.View\r
462   tagName: 'div'\r
463   \r
464   initialize: (options) ->\r
465     super(options)\r
466     @parent = options.parent\r
467   \r
468   clear: () ->\r
469     this.$el.html('new form')\r
470     this\r
471   \r
472   render: () ->\r
473     this.$el.html(@model.item_name())\r
474   \r
475   select: (model) ->\r
476     @model = model\r
477     @render()\r
478   \r
479 class Editor.EditorModule.DockModule.ScenarioBay extends Editor.EditorModule.DockModule.BoardBay\r
480   \r
481   initialize: (options) ->\r
482     super(options)\r
483     i = 0\r
484     _.each @elements(), (element) =>\r
485       tab = new Editor.EditorModule.DockModule.ScenarioBoard({\r
486         parent: this, index: i, name: element.item_name(), element: element\r
487       })\r
488       @add_tab(\r
489         tab, \r
490         new Editor.EditorModule.DockModule.TabModule.ScenarioBoardLabel({parent: tab, caption: element.item_name()}), \r
491         new Editor.EditorModule.DockModule.TabModule.ScenarioBoardBody({parent: tab})\r
492       )\r
493       i++\r
494   \r
495   render: () ->\r
496     this.$el.html('')\r
497     this.$el.attr('id', @body.dom_id())\r
498     elements_tabs = new Editor.EditorModule.DockModule.ScenarioBay.ScenarioTabs({\r
499       tabs: @tabs\r
500     })\r
501     this.$el.append(elements_tabs.render().el)\r
502     _.each @tabs, (tab) =>\r
503       this.$el.append(tab.body.render().el)\r
504     elements_tabs.$el.tabs()\r
505     this\r
506   \r
507   elements: () ->\r
508     @root_item().scenario_elements()\r
509   \r
510   class_name: () ->\r
511     "tsort-box"\r
512   \r
513 class Editor.EditorModule.DockModule.ScenarioBay.ScenarioTabs extends Backbone.View\r
514   tagName: 'ul'\r
515   className: 'tsort'\r
516   \r
517   initialize: (options) ->\r
518     super(options)\r
519     @tabs = options.tabs\r
520   \r
521   render: () ->\r
522     this.$el.html('')\r
523     _.each @tabs, (tab) =>\r
524       this.$el.append(tab.label.render().el)\r
525     this\r
526   \r
527 class Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
528   \r
529 class Editor.EditorModule.DockModule.TabModule.ScenarioBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
530   \r
531   initialize: (options) ->\r
532     super(options)\r
533   \r
534 class Editor.EditorModule.DockModule.ScenarioBoard extends Editor.EditorModule.DockModule.Board\r
535   \r
536   initialize: (options) ->\r
537     super(options)\r
538     @element = options.element\r
539   \r
540 class Editor.EditorModule.DockModule.TabModule.ScenarioBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
541   \r
542   with_destroy_button: () ->\r
543     false\r
544   \r
545 class Editor.EditorModule.DockModule.TabModule.ScenarioBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
546   \r
547   initialize: (options) ->\r
548     super(options)\r
549     @bucket = new Editor.EditorModule.DockModule.ScenarioBucket({\r
550       parent: this\r
551     })\r
552   \r
553 class Editor.EditorModule.DockModule.PriorityBay extends Editor.EditorModule.DockModule.BoardBay\r
554   \r
555   initialize: (options) ->\r
556     super(options)\r
557     i = 0\r
558     _.each @elements(), (element) =>\r
559       tab = new Editor.EditorModule.DockModule.PriorityBoard({\r
560         parent: this, index: i, name: element.item_name(), element: element\r
561       })\r
562       @add_tab(\r
563         tab, \r
564         new Editor.EditorModule.DockModule.TabModule.PriorityBoardLabel({parent: tab, name: element.item_name()}), \r
565         new Editor.EditorModule.DockModule.TabModule.PriorityBoardBody({parent: tab})\r
566       )\r
567       i++\r
568   \r
569   render: () ->\r
570     this.$el.html('')\r
571     this.$el.attr('id', @body.dom_id())\r
572     elements_tabs = new Editor.EditorModule.DockModule.PriorityBay.PriorityTabs({\r
573       tabs: @tabs\r
574     })\r
575     this.$el.append(elements_tabs.render().el)\r
576     _.each @tabs, (tab) =>\r
577       this.$el.append(tab.body.render().el)\r
578     elements_tabs.$el.tabs()\r
579     this\r
580   \r
581   elements: () ->\r
582     @root_item().scenario_elements()\r
583   \r
584   class_name: () ->\r
585     "zsort-box"\r
586   \r
587 class Editor.EditorModule.DockModule.PriorityBay.PriorityTabs extends Backbone.View\r
588   tagName: 'ul'\r
589   className: 'zsort'\r
590   \r
591   initialize: (options) ->\r
592     super(options)\r
593     @tabs = options.tabs\r
594   \r
595   render: () ->\r
596     this.$el.html('')\r
597     _.each @tabs, (tab) =>\r
598       this.$el.append(tab.label.render().el)\r
599     this\r
600   \r
601 class Editor.EditorModule.DockModule.TabModule.PriorityBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
602   \r
603 class Editor.EditorModule.DockModule.TabModule.PriorityBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
604   \r
605   initialize: (options) ->\r
606     super(options)\r
607   \r
608 class Editor.EditorModule.DockModule.PriorityBoard extends Editor.EditorModule.DockModule.Board\r
609   \r
610   initialize: (options) ->\r
611     super(options)\r
612     @element = options.element\r
613   \r
614   mounted: () ->\r
615     false\r
616   \r
617 class Editor.EditorModule.DockModule.TabModule.PriorityBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
618   \r
619   with_destroy_button: () ->\r
620     false\r
621   \r
622 class Editor.EditorModule.DockModule.TabModule.PriorityBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
623   \r
624   initialize: (options) ->\r
625     super(options)\r
626     @bucket = new Editor.EditorModule.DockModule.PriorityBucket({\r
627       parent: this\r
628     })\r
629     \r
630 #    form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]\r
631 #    form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted\r
632 #    bucket = Bucket.new self,form\r
633   \r
634 class Editor.EditorModule.DockModule.NewBay extends Editor.EditorModule.DockModule.BoardBay\r
635   \r
636 \r
637 class Editor.EditorModule.DockModule.TabModule.NewBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
638   \r
639 \r
640 class Editor.EditorModule.DockModule.TabModule.NewBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
641   \r
642   initialize: (options) ->\r
643     super(options)\r
644   \r
645 class Editor.EditorModule.DockModule.NewBoard extends Editor.EditorModule.DockModule.Board\r
646   \r
647 class Editor.EditorModule.DockModule.TabModule.NewBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
648   \r
649 class Editor.EditorModule.DockModule.TabModule.NewBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
650   \r
651   initialize: (options) ->\r
652     super(options)\r
653 #    form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]\r
654 #    form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted\r
655 #    bucket = Bucket.new self,form\r
656   \r