Store Pane items in PaneModel

This commit is contained in:
Corey Johnson & Nathan Sobo
2014-01-07 15:42:23 -07:00
parent 1d04cbf584
commit c99e211144
3 changed files with 15 additions and 7 deletions

View File

@@ -51,7 +51,8 @@
"temp": "0.5.0",
"text-buffer": "0.9.0",
"underscore-plus": "0.6.1",
"theorist": "~0.7.0"
"theorist": "~0.7.0",
"delegato": "~0.4.0"
},
"packageDependencies": {
"atom-dark-syntax": "0.10.0",

5
src/pane-model.coffee Normal file
View File

@@ -0,0 +1,5 @@
{Model} = require 'theorist'
module.exports =
class PaneModel extends Model
constructor: ({@items}) ->

View File

@@ -2,7 +2,9 @@
{$, View} = require './space-pen-extensions'
_ = require 'underscore-plus'
Serializable = require 'serializable'
Delegator = require 'delegato'
PaneModel = require './pane-model'
PaneRow = require './pane-row'
PaneColumn = require './pane-column'
@@ -15,6 +17,7 @@ PaneColumn = require './pane-column'
module.exports =
class Pane extends View
Serializable.includeInto(this)
Delegator.includeInto(this)
@version: 1
@@ -22,18 +25,17 @@ class Pane extends View
@div class: 'pane', tabindex: -1, =>
@div class: 'item-views', outlet: 'itemViews'
@delegatesProperty 'items', toProperty: 'model'
activeItem: null
items: null
viewsByItem: null # Views without a setModel() method are stored here
# Private:
initialize: (args...) ->
if args[0]?.items # deserializing
{@items, activeItemUri, @focusOnAttach} = args[0]
{items, activeItemUri, @focusOnAttach} = args[0]
@model = new PaneModel({items})
else
@items = args
@items ?= []
@model = new PaneModel(items: args)
@handleItemEvents(item) for item in @items