From c8e4535e8b7228a38d4a0f9bbfc1522605010d1d Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 13 Jan 2014 21:30:42 -0700 Subject: [PATCH] Move WorkspaceView::openSync to the Workspace model --- src/workspace-view.coffee | 34 +--------------------------------- src/workspace.coffee | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 34 deletions(-) diff --git a/src/workspace-view.coffee b/src/workspace-view.coffee index 048e3ba28..a2816dc46 100644 --- a/src/workspace-view.coffee +++ b/src/workspace-view.coffee @@ -45,7 +45,7 @@ class WorkspaceView extends View Delegator.includeInto(this) @delegatesProperty 'fullScreen', 'destroyedItemUris', toProperty: 'model' - @delegatesMethods 'open', 'itemOpened', toProperty: 'model' + @delegatesMethods 'open', 'openSync', 'itemOpened', toProperty: 'model' @version: 4 @@ -153,38 +153,6 @@ class WorkspaceView extends View confirmClose: -> @panes.confirmClose() - # Private: Only used in specs - openSync: (uri, {changeFocus, initialLine, pane, split}={}) -> - changeFocus ?= true - pane ?= @getActivePane() - uri = atom.project.relativize(uri) - - if pane - if uri - paneItem = pane.itemForUri(uri) ? atom.project.openSync(uri, {initialLine}) - else - paneItem = atom.project.openSync() - - if split == 'right' - panes = @getPanes() - if panes.length == 1 - pane = panes[0].splitRight() - else - pane = _.last(panes) - else if split == 'left' - pane = @getPanes()[0] - - pane.activateItem(paneItem) - else - paneItem = atom.project.openSync(uri, {initialLine}) - pane = new PaneView(paneItem) - @panes.setRoot(pane) - - @itemOpened(paneItem) - - pane.activate() if changeFocus - paneItem - openSingletonSync: (uri, {changeFocus, initialLine, split}={}) -> changeFocus ?= true uri = atom.project.relativize(uri) diff --git a/src/workspace.coffee b/src/workspace.coffee index 2709008f7..dd8669cab 100644 --- a/src/workspace.coffee +++ b/src/workspace.coffee @@ -1,4 +1,4 @@ -{remove} = require 'underscore-plus' +{remove, last} = require 'underscore-plus' {Model} = require 'theorist' Q = require 'q' Serializable = require 'serializable' @@ -12,6 +12,7 @@ class Workspace extends Model Serializable.includeInto(this) @delegatesProperty 'activePane', toProperty: 'paneContainer' + @delegatesMethod 'getPanes', toProperty: 'paneContainer' @properties paneContainer: -> new PaneContainer @@ -60,6 +61,38 @@ class Workspace extends Model .catch (error) -> console.error(error.stack ? error) + # Private: Only used in specs + openSync: (uri, {changeFocus, initialLine, pane, split}={}) -> + changeFocus ?= true + pane ?= @activePane + uri = atom.project.relativize(uri) + + if pane + if uri + paneItem = pane.itemForUri(uri) ? atom.project.openSync(uri, {initialLine}) + else + paneItem = atom.project.openSync() + + if split == 'right' + panes = @getPanes() + if panes.length == 1 + pane = panes[0].splitRight() + else + pane = last(panes) + else if split == 'left' + pane = @getPanes()[0] + + pane.activateItem(paneItem) + else + paneItem = atom.project.openSync(uri, {initialLine}) + pane = new Pane(items: [paneItem]) + @paneContainer.root = pane + + @itemOpened(paneItem) + + pane.activate() if changeFocus + paneItem + # Private: Removes the item's uri from the list of potential items to reopen. itemOpened: (item) -> if uri = item.getUri?()