class Editor.PanelEditor extends Backbone.View tagName: 'div' className: 'panel-editor' initialize: (options) -> @panel = options.root_item @operators = options.operators @dialog = new Editor.PanelEditor.Dialog({ parent: this }) @body = new Pettanr.Views.Panel.Body.Edit({ panel: @root_item(), operators: @operators, spot: null }) @dock = new Editor.PanelEditor.Dock({parent: this}) @credits = new Pettanr.Views.Panel.Show.Credits({pictures: {}}) list = @panel.zorderd_elements() _.each list, (element) => element.fetch({cache: true}).done => @add_element(element) #@dock.add_new_tab() @body.on('panel:resize', @panel_resize) @listenTo(@dock, 'put', @put) add_element: (element) -> console.log(element) panel_element_view = @body.add_element(element) element_form = @dock.add_element(element) @dig(element, panel_element_view, element_form) if element.constructor.has_picture() @credits.add_picture(element.picture()) dig: (element, panel_element_view, element_form) -> console.log(element.elements_items()) _.each element.elements_items(), (child_element) => console.log(child_element) child_element.fetch({cache: true}).done => child_panel_element_view = panel_element_view.add_element(child_element) child_element_form = element_form.add_element(child_element) @dig(child_element, child_panel_element_view, child_element_form) remove_element: (element) -> render: () -> this.$el.html('') this.$el.append(@dialog.render().el) @dialog.$el.dialog({ autoOpen: false, width: 640, height: 560 }) this.$el.append(@body.render().el) this.$el.append(@dock.render().el) @dock.element_bay.add_new_tab() this.$el.append(@credits.render().el) rb = new Tag.RowBreak() this.$el.append(rb.render().el) this.$el.tabs() window.editor = this # enable leave cancel flag on unsave this panel_resize: () -> my = @body.$el w = parseInt(my.width()) h = parseInt(my.height()) #$(trace + 'width').val(w) #$(trace + 'height').val(h) quit: () -> @dialog.$el.dialog('destroy') window.editor = null # release editor put: () -> success = (data, textStatus) => window.editor = null # release editor @dock.valid() error = (data, textStatus) => @dock.invalid() @dock.save({success: success, error: error}) false root_item: () -> @panel dom_id: () -> 'editor-' + Pettanr.to_s(@root_item().get('id')) dom_class: () -> 'editor' class Editor.PanelEditor.Dialog extends Backbone.View tagName: 'div' className: 'panel-editor-dialog' initialize: (options) -> @parent = options.parent render: () -> this.$el.html('') this