From e0e40e327ba92308be620d93f87ab3eeb961c5f4 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Thu, 12 Apr 2012 21:25:24 -0700 Subject: [PATCH] PaneColumn and PaneRow inherit from PaneDivision. Yes, I hate the name PaneDivision too. --- src/app/pane-column.coffee | 26 ++++++-------------------- src/app/pane-division.coffee | 24 ++++++++++++++++++++++++ src/app/pane-row.coffee | 27 +++++++-------------------- 3 files changed, 37 insertions(+), 40 deletions(-) create mode 100644 src/app/pane-division.coffee diff --git a/src/app/pane-column.coffee b/src/app/pane-column.coffee index 3a9854fa7..016f2b0ed 100644 --- a/src/app/pane-column.coffee +++ b/src/app/pane-column.coffee @@ -1,26 +1,14 @@ $ = require 'jquery' _ = require 'underscore' -{View} = require 'space-pen' -Pane = require 'pane' +PaneDivision = require 'pane-division' module.exports = -class PaneColumn extends View +class PaneColumn extends PaneDivision @content: -> @div class: 'column' - @deserialize: ({children}, rootView) -> - childViews = children.map (child) -> rootView.deserializeView(child) - new PaneColumn(childViews) - - initialize: (children=[]) -> - @append(children...) - - serialize: -> - viewClass: "PaneColumn" - children: @childViewStates() - - childViewStates: -> - $(child).view().serialize() for child in @children() + className: -> + "PaneColumn" adjustDimensions: -> totalUnits = @verticalGridUnits() @@ -38,9 +26,7 @@ class PaneColumn extends View unitsSoFar += childUnits horizontalGridUnits: -> - childUnits = ($(child).view().horizontalGridUnits() for child in @children()) - Math.max(childUnits...) + Math.max(@horizontalChildUnits()...) verticalGridUnits: -> - childUnits = ($(child).view().verticalGridUnits() for child in @children()) - _.sum(childUnits) \ No newline at end of file + _.sum(@verticalChildUnits()) \ No newline at end of file diff --git a/src/app/pane-division.coffee b/src/app/pane-division.coffee new file mode 100644 index 000000000..79d38712c --- /dev/null +++ b/src/app/pane-division.coffee @@ -0,0 +1,24 @@ +$ = require 'jquery' +{View} = require 'space-pen' + +module.exports = +class PaneDivision extends View + @deserialize: ({children}, rootView) -> + childViews = children.map (child) -> rootView.deserializeView(child) + new this(childViews) + + initialize: (children=[]) -> + @append(children...) + + serialize: -> + viewClass: @className() + children: @childViewStates() + + childViewStates: -> + $(child).view().serialize() for child in @children() + + horizontalChildUnits: -> + $(child).view().horizontalGridUnits() for child in @children() + + verticalChildUnits: -> + $(child).view().verticalGridUnits() for child in @children() diff --git a/src/app/pane-row.coffee b/src/app/pane-row.coffee index 38775fd0c..a193e57d0 100644 --- a/src/app/pane-row.coffee +++ b/src/app/pane-row.coffee @@ -1,26 +1,14 @@ $ = require 'jquery' _ = require 'underscore' -{View} = require 'space-pen' -Pane = require 'pane' +PaneDivision = require 'pane-division' module.exports = -class PaneRow extends View +class PaneRow extends PaneDivision @content: -> @div class: 'row' - @deserialize: ({children}, rootView) -> - childViews = children.map (child) -> rootView.deserializeView(child) - new PaneRow(childViews) - - initialize: (children=[]) -> - @append(children...) - - serialize: -> - viewClass: "PaneRow" - children: @childViewStates() - - childViewStates: -> - $(child).view().serialize() for child in @children() + className: -> + "PaneRow" adjustDimensions: -> totalUnits = @horizontalGridUnits() @@ -33,13 +21,12 @@ class PaneRow extends View height: '100%' top: 0 left: "#{unitsSoFar / totalUnits * 100}%" + child.adjustDimensions() unitsSoFar += childUnits horizontalGridUnits: -> - childUnits = ($(child).view().horizontalGridUnits() for child in @children()) - _.sum(childUnits) + _.sum(@horizontalChildUnits()) verticalGridUnits: -> - childUnits = ($(child).view().verticalGridUnits() for child in @children()) - Math.max(childUnits...) + Math.max(@verticalChildUnits()...)