From 2d58d9c8b5d5fa0bb565bf949a9cdbcbb080224b Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 27 Aug 2014 10:22:14 -0600 Subject: [PATCH] Add Pane::onDidActivate --- spec/pane-spec.coffee | 23 +++++++++++++++++++++++ src/pane-container.coffee | 2 ++ src/pane.coffee | 4 ++++ 3 files changed, 29 insertions(+) diff --git a/spec/pane-spec.coffee b/spec/pane-spec.coffee index ab9ba7661..2fb011124 100644 --- a/spec/pane-spec.coffee +++ b/spec/pane-spec.coffee @@ -28,6 +28,29 @@ describe "Pane", -> expect(pane.getItems().length).toBe 2 expect(pane.getActiveItem()).toBe pane.itemAtIndex(0) + describe "::activate()", -> + [container, pane1, pane2] = [] + + beforeEach -> + container = new PaneContainer(root: new Pane) + container.getRoot().splitRight() + [pane1, pane2] = container.getPanes() + + it "changes the active pane on the container", -> + expect(container.getActivePane()).toBe pane2 + pane1.activate() + expect(container.getActivePane()).toBe pane1 + pane2.activate() + expect(container.getActivePane()).toBe pane2 + + it "invokes ::onDidActivate() observers", -> + eventCount = 0 + pane1.onDidActivate -> eventCount++ + pane1.activate() + pane1.activate() + pane2.activate() + expect(eventCount).toBe 2 + describe "::addItem(item, index)", -> it "adds the item at the given index", -> pane = new Pane(items: [new Item("A"), new Item("B")]) diff --git a/src/pane-container.coffee b/src/pane-container.coffee index 07083263a..2a3271eb5 100644 --- a/src/pane-container.coffee +++ b/src/pane-container.coffee @@ -36,6 +36,8 @@ class PaneContainer extends Model root: @root?.serialize() activePaneId: @activePane.id + getRoot: -> @root + replaceChild: (oldChild, newChild) -> throw new Error("Replacing non-existent child") if oldChild isnt @root @root = newChild diff --git a/src/pane.coffee b/src/pane.coffee index fc8fee05e..e81d2f7d1 100644 --- a/src/pane.coffee +++ b/src/pane.coffee @@ -94,6 +94,9 @@ class Pane extends Model # Called by the view layer to construct a view for this model. getViewClass: -> PaneView ?= require './pane-view' + onDidActivate: (fn) -> + @emitter.on 'did-activate', fn + onDidAddItem: (fn) -> @emitter.on 'did-add-item', fn @@ -123,6 +126,7 @@ class Pane extends Model activate: -> @container?.activePane = this @emit 'activated' + @emitter.emit 'did-activate' getPanes: -> [this]