# panel: panel item\r
-# operators: operators\r
# spot: no opacity element\r
-class Pettanr.Views.Panel.Body extends Backbone.View\r
+class Pettanr.Views.Panel.Body extends Pettanr.View\r
tagName: 'div'\r
- className: 'pettanr-comic-panel'\r
\r
initialize: (options) ->\r
@panel = options.panel\r
- @operators = options.operators\r
@spot = options.spot\r
+ @class_name = 'pettanr-comic-panel'\r
+ @views = []\r
+ if @is_visible()\r
+ _.each @panel.zorderd_elements(), (element) =>\r
+ @add_element(element)\r
\r
render: () ->\r
- attr = {style: Pettanr.to_style(@style())}\r
- this.$el.attr(attr)\r
- if @panel.is_visible(@operators)\r
- this.$el.html('')\r
- _this = this\r
- _.each @panel.scenario_elements(), (element) ->\r
- c = Pettanr[element.singular()].Element\r
- tag = new c({element: element, root: _this.panel, spot: _this.spot})\r
- _this.$el.append(tag.render().el)\r
- else\r
- tag = new Pettanr.Tag.Div({\r
+ this.$el.addClass(@class_name)\r
+ @restyle()\r
+ #this.$el.html('')\r
+ if not @is_visible()\r
+ tag = new Tag.Div({\r
content: I18n.t('panels.hidden'), \r
class_name: 'hidden'\r
})\r
this.$el.html(tag.render().el)\r
this\r
\r
+ restyle: () ->\r
+ attr = {style: Pettanr.to_style(@style())}\r
+ this.$el.attr(attr)\r
+ \r
+ is_visible: () ->\r
+ @panel.is_visible()\r
+ \r
+ render_element: (index) ->\r
+ \r
+ add_element: (element) ->\r
+ index = element.get('z') - 1\r
+ c = @element_class(element)\r
+ view = new c({element: element, root: @panel, spot: @spot})\r
+ @add_event(view)\r
+ @views.splice(index, 0, view)\r
+ if @is_visible()\r
+ this.$el.append(view.render().el)\r
+ view\r
+ \r
+ add_event: (view) ->\r
+ @listenTo(view, 'http_get', @http_get)\r
+ \r
+ remove_element: (element) ->\r
+ _.each @views, (view) =>\r
+ if view.element.cid == element.cid\r
+ view.remove()\r
+ \r
+ element_class: (element) ->\r
+ Pettanr.Views[element.singular()].Element\r
+ \r
+ disp: (value) ->\r
+ Pettanr.to_s(value) + 'px'\r
+ \r
style: () ->\r
{\r
- 'width': Pettanr.to_s(@panel.get('width')) + 'px', \r
- 'height': Pettanr.to_s(@panel.get('height')) + 'px', \r
+ 'width': @disp(@panel.get('width')), \r
+ 'height': @disp(@panel.get('height')), \r
'border-style': 'solid', \r
- 'border-width': Pettanr.to_s(@panel.get('border')) + 'px', \r
+ 'border-width': @disp(@panel.get('border')), \r
'border-color': 'black', \r
'background-color': 'white'\r
}\r
+ \r
+ http_get: (url) ->\r
+ @trigger('http_get', url)\r
+ \r
+class Pettanr.Views.Panel.Body.Edit extends Pettanr.Views.Panel.Body\r
+ \r
+ initialize: (options) ->\r
+ super(options)\r
+ @listenTo(@panel, 'input:width', @restyle)\r
+ @listenTo(@panel, 'input:height', @restyle)\r
+ @listenTo(@panel, 'input:border', @restyle)\r
+ @listenTo(@panel, 'active', @active)\r
+ @listenTo(@panel, 'inactive', @inactive)\r
+ @listenTo(this, 'active', @active)\r
+ @listenTo(this, 'inactive', @inactive)\r
+ \r
+ render: () ->\r
+ super()\r
+ this.$el.resizable {\r
+ stop: (event, ui) =>\r
+ w = parseInt(this.$el.width())\r
+ h = parseInt(this.$el.height())\r
+ @panel.set({width: w, height: h}, {silent: true})\r
+ @panel.trigger('resize')\r
+ , autoHide: false\r
+ }\r
+ @inactive()\r
+ _this = this\r
+ this.$el.mouseover -> \r
+ _this.trigger('active')\r
+ this.$el.mouseout -> \r
+ _this.trigger('inactive')\r
+ this\r
+ \r
+ is_visible: () ->\r
+ true # show everytime as editor\r
+ \r
+ active: () ->\r
+ n = @class_name\r
+ $('.ui-resizable-handle', this.el).map ->\r
+ if $(@).parent().hasClass(n)\r
+ $(@).css('display', 'block')\r
+ \r
+ inactive: () ->\r
+ n = @class_name\r
+ $('.ui-resizable-handle', this.el).map ->\r
+ if $(@).parent().hasClass(n)\r
+ $(@).css('display', 'none')\r
+ \r
+ element_class: (element) ->\r
+ Pettanr.Views[element.singular()].Element.Edit\r
+ \r
+ # stop listen link msg\r
+ add_event: (view) ->\r
+ \r