Move pane size adjustment code into Pane objects

This commit is contained in:
Corey Johnson & Nathan Sobo
2012-04-12 18:38:26 -07:00
parent dac91d1f29
commit 1779032df6
4 changed files with 62 additions and 51 deletions

View File

@@ -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()
$(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)

View File

@@ -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()
$(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...)

View File

@@ -11,4 +11,13 @@ class Pane extends View
serialize: ->
viewClass: "Pane"
wrappedView: @wrappedView.serialize()
wrappedView: @wrappedView.serialize()
adjustDimensions: ->
horizontalGridUnits: ->
1
verticalGridUnits: ->
1

View File

@@ -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