OSDN Git Service

test editor event
[pettanr/pettanr.git] / app / assets / javascripts / views / panels / body.js.coffee
index ed7049c..70af2ff 100644 (file)
@@ -11,16 +11,13 @@ class Pettanr.Views.Panel.Body extends Backbone.View
     @spot = options.spot\r
   \r
   render: () ->\r
-    attr = {style: Pettanr.to_style(@style())}\r
-    this.$el.attr(attr)\r
+    @restyle()\r
     if @panel.is_visible(@operators)\r
       this.$el.html('')\r
       _this = this\r
       l = @panel.scenario_elements()\r
-      _.each l, (element) ->\r
-        c = Pettanr.Views[element.singular()].Element\r
-        tag = new c({element: element, root: _this.panel, spot: _this.spot})\r
-        _this.$el.append(tag.render().el)\r
+      _.each l, (element) =>\r
+        @add_element(element)\r
     else\r
       tag = new Tag.Div({\r
         content: I18n.t('panels.hidden'), \r
@@ -29,16 +26,56 @@ class Pettanr.Views.Panel.Body extends Backbone.View
       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
+  render_element: (element) ->\r
+  \r
+  element_class: (element) ->\r
+    Pettanr.Views[element.singular()].Element\r
+  \r
+  add_element: (element) ->\r
+    c = @element_class(element)\r
+    tag = new c({element: element, root: @panel, spot: @spot})\r
+    this.$el.append(tag.render().el)\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
+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
+  \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: true\r
+    }\r
+    this\r
+  \r
+  element_class: (element) ->\r
+    Pettanr.Views[element.singular()].Element.Edit\r
+  \r
 class Pettanr.Views.Panel.Footer extends Backbone.View\r
   tagName: 'table'\r
   className: 'no-border'\r