class Editor.Player.PanelInsertDialog extends Editor.Dialog\r
className: 'player-insert-dialog'\r
\r
- start: (panel) ->\r
- this.$el.dialog({title: I18n.t('scroll_panels.player.dialog')})\r
- body = new Pettanr.Views.Panel.Body({\r
- panel: panel,\r
- spot: null\r
+ initialize: (options) ->\r
+ super(options)\r
+ @parent = options.parent\r
+ @binder = options.binder\r
+ @target_model = options.target_model\r
+ @insert_point = options.insert_point\r
+ \r
+ render: () ->\r
+ this.$el.html('')\r
+ launcher = new Pettanr.Views[@target_model.singular()].NewElementLauncher({\r
+ parent: this, model: @target_model\r
+ })\r
+ @listenTo(launcher, 'http_get', @http_get) # http_get func already defined\r
+ this.$el.append(launcher.render().el)\r
+ this\r
+ \r
+ start: () ->\r
+ this.$el.dialog({title: I18n.t('scroll_panels.player.insert_dialog')})\r
+ _this = this\r
+ this.$el.dialog({\r
+ autoOpen: false,\r
+ width: 750, \r
+ height: 700,\r
+ close: (ui, event) ->\r
+ _this.close()\r
})\r
- @refresh(body.render())\r
this.$el.dialog('open')\r
\r
stop: () ->\r
this.$el.dialog('close')\r
\r
+ ready: (view) ->\r
+ @listenTo(view, 'http_get', @http_get)\r
+ # @listenTo(view, 'http_post', @http_post)\r
+ @listenTo(view, 'pick', @pick)\r
+ if view['is_pickable'] and view.is_pickable()\r
+ view.add_pick(@target_model)\r
+ @refresh(view)\r
+ \r
+ pick: (item) ->\r
+ if item.item_name() == @target_model.item_name()\r
+ # Inspire\r
+ else if @target_model.is_traceable(item.item_name())\r
+ # Trace\r
+ else if item.item_name() == @target_model.pick_item_name()\r
+ # Pick resource_picture to panel_picture\r
+ new_item = new @target_model()\r
+ new_item.set(new_item.pick(item), {silent: true})\r
+ t = if @insert_point\r
+ # insert before insert_point's panel_view\r
+ @insert_point.scroll_panel.get('t')\r
+ else\r
+ # insert before appender\r
+ null\r
+ new_item.set({scroll_id: @binder.get('id'), t: t}, {silent: true})\r
+ @listenTo(new_item, 'save:success', @success)\r
+ @listenTo(new_item, 'save:fail', @fail)\r
+ new_item.save()\r
+ \r
+ success: (model, response) ->\r
+ # item is new\r
+ model.url = model.default_url()\r
+ Pettanr.cache.store(model)\r
+ @trigger('pick', model, @insert_point)\r
+ @close()\r
+ @quit()\r
+ \r
+ fail: (model, response) ->\r
+ @trigger('fail', response)\r
+ \r
+ close: () ->\r
+ @trigger('close')\r
+ \r
+ quit: () ->\r
+ @remove()\r
+ \r
+ is_catch: () ->\r
+ false\r
+ \r