diff --git a/plugins/modes/modes.coffee b/plugins/modes/modes.coffee index cc7b41da7..bf51e9248 100644 --- a/plugins/modes/modes.coffee +++ b/plugins/modes/modes.coffee @@ -5,11 +5,8 @@ Plugin = require 'plugin' module.exports = class Modes extends Plugin load: -> - # NO! Do not use editor to handle events! - editor = @window.document - - editor.ace.on 'open', ({filename}) => @setMode(filename) - editor.ace.on 'save', ({filename}) => @setMode(filename) + @window.on 'open', ({filename}) => @setMode(filename) + @window.on 'save', ({filename}) => @setMode(filename) modeMap: js: 'javascript' diff --git a/plugins/project/project.coffee b/plugins/project/project.coffee index 83f4b0324..90d7ca434 100644 --- a/plugins/project/project.coffee +++ b/plugins/project/project.coffee @@ -18,9 +18,7 @@ class Project extends Plugin @pane = new ProjectPane @window, @ @pane.toggle() - # NO! Do not use editor to handle events! - editor = @window.document - editor.ace.on 'open', ({filename}) => + @window.on 'open', ({filename}) => if File.isDirectory filename @pane.reload filename # I don't think this can ever happen. else @@ -29,7 +27,7 @@ class Project extends Plugin openedPaths.push filename @set 'openedPaths', openedPaths - editor.ace.on 'close', ({filename}) => + @window.on 'close', ({filename}) => if File.isFile filename openedPaths = @get 'openedPaths', [] openedPaths = _.without openedPaths, filename diff --git a/plugins/tabs/tabs.coffee b/plugins/tabs/tabs.coffee index ca2555dbf..0f68d1fe5 100644 --- a/plugins/tabs/tabs.coffee +++ b/plugins/tabs/tabs.coffee @@ -29,13 +29,11 @@ class Tabs extends Plugin @pane = new TabsPane @window, @ @pane.toggle() - # NO! Do not use editor to handle events! - @editor = @window.document - @editor.ace.on 'open', ({filename}) => + @window.on 'open', ({filename}) => return if File.isDirectory filename # Ignore directories @pane.addTab filename - @editor.ace.on 'close', ({filename}) => + @window.on 'close', ({filename}) => @pane.removeTab filename # Move all of this methods below to pane? I think so diff --git a/src/editor.coffee b/src/editor.coffee index aebd7a747..3f0e1f629 100644 --- a/src/editor.coffee +++ b/src/editor.coffee @@ -66,7 +66,7 @@ class Editor extends Pane File.write @filename, @code() @sessions[@filename] = @ace.getSession() @window.setDirty false - @ace._emit 'save', { @filename } + @window._emit 'save', { @filename } open: (path) -> path = Chrome.openPanel() if not path @@ -87,11 +87,11 @@ class Editor extends Pane @ace.setSession @sessions[@filename] @window.setDirty false - @ace._emit 'open', { @filename } + @window._emit 'open', { @filename } close: (path) -> @deleteSession path - @ace._emit 'close', { filename : path } + @window._emit 'close', { filename : path } saveAs: -> if file = Chrome.savePanel() diff --git a/src/window.coffee b/src/window.coffee index 6f9fbdffd..9051af18f 100644 --- a/src/window.coffee +++ b/src/window.coffee @@ -4,6 +4,8 @@ File = require 'fs' Chrome = require 'chrome' {bindKey} = require 'keybinder' +oop = require "pilot/oop" +{EventEmitter} = require "pilot/event_emitter" module.exports = class Window @@ -20,6 +22,8 @@ class Window 'Command-Ctrl-M' : @reload constructor: (options={}) -> + oop.implement @, EventEmitter + for option, value of options @[option] = value @@ -28,7 +32,7 @@ class Window @nswindow = @controller?.window @loadPlugins() - @document.ace._emit "loaded" + @._emit "loaded" loadPlugins: -> Editor = require 'editor' @@ -38,7 +42,7 @@ class Window @plugins = [] App = require 'app' - for pluginPath in File.list(App.root + "/plugins") + for pluginPath in File.list(App.root + "/plugins") if File.isDirectory pluginPath try plugin = require pluginPath