From 1779032df6a37e189e5c9acb5eea949db87cb30b Mon Sep 17 00:00:00 2001 From: Corey Johnson & Nathan Sobo Date: Thu, 12 Apr 2012 18:38:26 -0700 Subject: [PATCH] Move pane size adjustment code into Pane objects --- src/app/pane-column.coffee | 26 ++++++++++++++++++- src/app/pane-row.coffee | 25 ++++++++++++++++++- src/app/pane.coffee | 11 +++++++- src/app/root-view.coffee | 51 +++----------------------------------- 4 files changed, 62 insertions(+), 51 deletions(-) diff --git a/src/app/pane-column.coffee b/src/app/pane-column.coffee index 226ad025f..3a9854fa7 100644 --- a/src/app/pane-column.coffee +++ b/src/app/pane-column.coffee @@ -1,4 +1,5 @@ $ = require 'jquery' +_ = require 'underscore' {View} = require 'space-pen' Pane = require 'pane' @@ -19,4 +20,27 @@ class PaneColumn extends View children: @childViewStates() childViewStates: -> - $(child).view().serialize() for child in @children() \ No newline at end of file + $(child).view().serialize() for child in @children() + + adjustDimensions: -> + totalUnits = @verticalGridUnits() + unitsSoFar = 0 + for child in @children() + child = $(child).view() + childUnits = child.verticalGridUnits() + child.css + width: '100%' + height: "#{childUnits / totalUnits * 100}%" + top: "#{unitsSoFar / totalUnits * 100}%" + left: 0 + + child.adjustDimensions() + unitsSoFar += childUnits + + horizontalGridUnits: -> + childUnits = ($(child).view().horizontalGridUnits() for child in @children()) + Math.max(childUnits...) + + verticalGridUnits: -> + childUnits = ($(child).view().verticalGridUnits() for child in @children()) + _.sum(childUnits) \ No newline at end of file diff --git a/src/app/pane-row.coffee b/src/app/pane-row.coffee index 300f30145..38775fd0c 100644 --- a/src/app/pane-row.coffee +++ b/src/app/pane-row.coffee @@ -1,4 +1,5 @@ $ = require 'jquery' +_ = require 'underscore' {View} = require 'space-pen' Pane = require 'pane' @@ -19,4 +20,26 @@ class PaneRow extends View children: @childViewStates() childViewStates: -> - $(child).view().serialize() for child in @children() \ No newline at end of file + $(child).view().serialize() for child in @children() + + adjustDimensions: -> + totalUnits = @horizontalGridUnits() + unitsSoFar = 0 + for child in @children() + child = $(child).view() + childUnits = child.horizontalGridUnits() + child.css + width: "#{childUnits / totalUnits * 100}%" + height: '100%' + top: 0 + left: "#{unitsSoFar / totalUnits * 100}%" + child.adjustDimensions() + unitsSoFar += childUnits + + horizontalGridUnits: -> + childUnits = ($(child).view().horizontalGridUnits() for child in @children()) + _.sum(childUnits) + + verticalGridUnits: -> + childUnits = ($(child).view().verticalGridUnits() for child in @children()) + Math.max(childUnits...) diff --git a/src/app/pane.coffee b/src/app/pane.coffee index 6d2fe08f6..be5d8551c 100644 --- a/src/app/pane.coffee +++ b/src/app/pane.coffee @@ -11,4 +11,13 @@ class Pane extends View serialize: -> viewClass: "Pane" - wrappedView: @wrappedView.serialize() \ No newline at end of file + wrappedView: @wrappedView.serialize() + + adjustDimensions: -> + + horizontalGridUnits: -> + 1 + + verticalGridUnits: -> + 1 + diff --git a/src/app/root-view.coffee b/src/app/root-view.coffee index fe8c781ad..73e9c2473 100644 --- a/src/app/root-view.coffee +++ b/src/app/root-view.coffee @@ -114,54 +114,9 @@ class RootView extends View @adjustSplitPanes() view - adjustSplitPanes: (element = @panes.children(':first'))-> - if element.hasClass('row') - totalUnits = @horizontalGridUnits(element) - unitsSoFar = 0 - for child in element.children() - child = $(child) - childUnits = @horizontalGridUnits(child) - child.css - width: "#{childUnits / totalUnits * 100}%" - height: '100%' - top: 0 - left: "#{unitsSoFar / totalUnits * 100}%" - @adjustSplitPanes(child) - unitsSoFar += childUnits - - else if element.hasClass('column') - totalUnits = @verticalGridUnits(element) - unitsSoFar = 0 - for child in element.children() - child = $(child) - childUnits = @verticalGridUnits(child) - child.css - width: '100%' - height: "#{childUnits / totalUnits * 100}%" - top: "#{unitsSoFar / totalUnits * 100}%" - left: 0 - @adjustSplitPanes(child) - unitsSoFar += childUnits - - horizontalGridUnits: (element) -> - if element.is('.row, .column') - childUnits = (@horizontalGridUnits($(child)) for child in element.children()) - if element.hasClass('row') - _.sum(childUnits) - else # it's a column - Math.max(childUnits...) - else - 1 - - verticalGridUnits: (element) -> - if element.is('.row, .column') - childUnits = (@verticalGridUnits($(child)) for child in element.children()) - if element.hasClass('column') - _.sum(childUnits) - else # it's a row - Math.max(childUnits...) - else - 1 + adjustSplitPanes: -> + view = @panes.children().first().view() + view.adjustDimensions() if view toggleFileFinder: -> return unless @project