mirror of
https://github.com/pulsar-edit/pulsar.git
synced 2024-09-21 16:08:24 +03:00
7f8ab72f53
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
90 lines
2.2 KiB
CoffeeScript
90 lines
2.2 KiB
CoffeeScript
{deprecate} = require 'grim'
|
|
Delegator = require 'delegato'
|
|
{CompositeDisposable} = require 'event-kit'
|
|
{$, View, callAttachHooks} = require './space-pen-extensions'
|
|
PaneView = require './pane-view'
|
|
PaneContainer = require './pane-container'
|
|
|
|
# Manages the list of panes within a {WorkspaceView}
|
|
module.exports =
|
|
class PaneContainerView extends View
|
|
Delegator.includeInto(this)
|
|
|
|
@delegatesMethod 'saveAll', toProperty: 'model'
|
|
|
|
@content: ->
|
|
@div class: 'panes'
|
|
|
|
constructor: (@element) ->
|
|
super
|
|
@subscriptions = new CompositeDisposable
|
|
|
|
setModel: (@model) ->
|
|
@subscriptions.add @model.onDidChangeActivePaneItem(@onActivePaneItemChanged)
|
|
|
|
getRoot: ->
|
|
view = atom.views.getView(@model.getRoot())
|
|
view.__spacePenView ? view
|
|
|
|
onActivePaneItemChanged: (activeItem) =>
|
|
@trigger 'pane-container:active-pane-item-changed', [activeItem]
|
|
|
|
confirmClose: ->
|
|
@model.confirmClose()
|
|
|
|
getPaneViews: ->
|
|
@find('atom-pane').views()
|
|
|
|
indexOfPane: (paneView) ->
|
|
@getPaneViews().indexOf(paneView.view())
|
|
|
|
paneAtIndex: (index) ->
|
|
@getPaneViews()[index]
|
|
|
|
eachPaneView: (callback) ->
|
|
callback(paneView) for paneView in @getPaneViews()
|
|
paneViewAttached = (e) -> callback($(e.target).view())
|
|
@on 'pane:attached', paneViewAttached
|
|
off: => @off 'pane:attached', paneViewAttached
|
|
|
|
getFocusedPane: ->
|
|
@find('atom-pane:has(:focus)').view()
|
|
|
|
getActivePane: ->
|
|
deprecate("Use PaneContainerView::getActivePaneView instead.")
|
|
@getActivePaneView()
|
|
|
|
getActivePaneView: ->
|
|
atom.views.getView(@model.getActivePane()).__spacePenView
|
|
|
|
getActivePaneItem: ->
|
|
@model.getActivePaneItem()
|
|
|
|
getActiveView: ->
|
|
@getActivePaneView()?.activeView
|
|
|
|
paneForUri: (uri) ->
|
|
atom.views.getView(@model.paneForURI(uri)).__spacePenView
|
|
|
|
focusNextPaneView: ->
|
|
@model.activateNextPane()
|
|
|
|
focusPreviousPaneView: ->
|
|
@model.activatePreviousPane()
|
|
|
|
focusPaneViewAbove: ->
|
|
@element.focusPaneViewAbove()
|
|
|
|
focusPaneViewBelow: ->
|
|
@element.focusPaneViewBelow()
|
|
|
|
focusPaneViewOnLeft: ->
|
|
@element.focusPaneViewOnLeft()
|
|
|
|
focusPaneViewOnRight: ->
|
|
@element.focusPaneViewOnRight()
|
|
|
|
getPanes: ->
|
|
deprecate("Use PaneContainerView::getPaneViews() instead")
|
|
@getPaneViews()
|