Remove empty panes when PaneContainer deserializes

This commit is contained in:
Corey Johnson & Nathan Sobo
2013-03-08 11:45:20 -08:00
parent 8ca8841f9e
commit 06c9a3ac86
3 changed files with 16 additions and 3 deletions

View File

@@ -9,6 +9,7 @@ class PaneContainer extends View
@deserialize: ({root}) ->
container = new PaneContainer
container.append(deserialize(root)) if root
container.removeEmptyPanes()
container
@content: ->
@@ -93,5 +94,9 @@ class PaneContainer extends View
root.css(width: '100%', height: '100%', top: 0, left: 0)
root.adjustDimensions()
removeEmptyPanes: ->
for pane in @getPanes() when pane.getItems().length == 0
pane.remove()
afterAttach: ->
@adjustPaneDimensions()

View File

@@ -11,7 +11,8 @@ class Pane extends View
@div class: 'item-views', outlet: 'itemViews'
@deserialize: ({items, focused, activeItemUri}) ->
pane = new Pane(items.map((item) -> deserialize(item))...)
deserializedItems = _.compact(items.map((item) -> deserialize(item)))
pane = new Pane(deserializedItems...)
pane.showItemForUri(activeItemUri) if activeItemUri
pane.focusOnAttach = true if focused
pane
@@ -21,7 +22,7 @@ class Pane extends View
initialize: (@items...) ->
@viewsByClassName = {}
@showItem(@items[0])
@showItem(@items[0]) if @items.length > 0
@command 'core:close', @destroyActiveItem
@command 'core:save', @saveActiveItem
@@ -46,7 +47,7 @@ class Pane extends View
@command 'pane:split-down', => @splitDown()
@command 'pane:close', => @destroyItems()
@command 'pane:close-other-items', => @destroyInactiveItems()
@on 'focus', => @activeView.focus(); false
@on 'focus', => @activeView?.focus(); false
@on 'focusin', => @makeActive()
@on 'focusout', => @autosaveActiveItem()