Pane emits 'pane:item-removed' events

This commit is contained in:
Nathan Sobo 2013-02-25 17:15:00 -07:00 committed by probablycorey
parent dd120663b7
commit 5240d9989f
2 changed files with 11 additions and 0 deletions

View File

@ -99,6 +99,13 @@ describe "Pane", ->
expect(pane.getItems()).toEqual [editSession1, view2] expect(pane.getItems()).toEqual [editSession1, view2]
expect(pane.activeItem).toBe editSession1 expect(pane.activeItem).toBe editSession1
it "triggers 'pane:item-removed' with the item and its former index", ->
itemRemovedHandler = jasmine.createSpy("itemRemovedHandler")
pane.on 'pane:item-removed', itemRemovedHandler
pane.removeItem(editSession1)
expect(itemRemovedHandler).toHaveBeenCalled()
expect(itemRemovedHandler.argsForCall[0][1..2]).toEqual [editSession1, 1]
it "removes the pane when its last item is removed", -> it "removes the pane when its last item is removed", ->
pane.removeItem(item) for item in pane.getItems() pane.removeItem(item) for item in pane.getItems()
expect(pane.hasParent()).toBeFalsy() expect(pane.hasParent()).toBeFalsy()

View File

@ -94,10 +94,14 @@ class Pane extends View
false false
removeItem: (item) -> removeItem: (item) ->
index = @items.indexOf(item)
return if index == -1
@showNextItem() if item is @activeItem and @items.length > 1 @showNextItem() if item is @activeItem and @items.length > 1
_.remove(@items, item) _.remove(@items, item)
item.destroy?() item.destroy?()
@cleanupItemView(item) @cleanupItemView(item)
@trigger 'pane:item-removed', [item, index]
@remove() unless @items.length @remove() unless @items.length
itemForPath: (path) -> itemForPath: (path) ->