Merge remote-tracking branch 'origin/router'

Conflicts:
	src/atom/project.coffee
This commit is contained in:
Chris Wanstrath
2011-11-28 20:09:41 -08:00
12 changed files with 37 additions and 32 deletions

View File

@@ -7,7 +7,7 @@ Extension = require 'extension'
module.exports =
class CompileCoffee extends Editor
window.resourceTypes.push this
atom.router.add this
running: true

View File

@@ -6,7 +6,7 @@ Browser = require 'browser'
module.exports =
class Docs extends Browser
window.resourceTypes.push this
atom.router.add this
running: true

View File

@@ -10,7 +10,7 @@ ModalSelector = require 'modal-selector'
module.exports =
class FindInProject extends Browser
window.resourceTypes.push this
atom.router.add this
running: true

View File

@@ -10,7 +10,7 @@ Base64 = require 'gist/base64'
module.exports =
class Gist extends Editor
window.resourceTypes.push this
atom.router.add this
settings:
username: ''

View File

@@ -9,7 +9,7 @@ converter = new Showdown.converter
module.exports =
class Markdownpreview extends Browser
window.resourceTypes.push this
atom.router.add this
running: true

View File

@@ -6,7 +6,7 @@ Browser = require 'browser'
module.exports =
class Showkeybindings extends Browser
window.resourceTypes.push this
atom.router.add this
constructor: ->
@running = true

View File

@@ -6,7 +6,7 @@ Resource = require 'resource'
# browser:close (browser) -> Called when a browser is closed.
module.exports =
class Browser extends Resource
window.resourceTypes.push this
atom.router.add this
open: (url) ->
return false if not /^https?:/.test url

View File

@@ -12,7 +12,7 @@ EditorPane = require 'editor-pane'
# editor:close (editor) -> Called when an editor is closed.
module.exports =
class Editor extends Resource
window.resourceTypes.push this
atom.router.add this
dirty: false

View File

@@ -14,7 +14,7 @@ Resource = require 'resource'
# in a project.
module.exports =
class Project extends Resource
window.resourceTypes.push this
atom.router.add this
settings:
# Regexp used to ignore paths.
@@ -54,17 +54,11 @@ class Project extends Resource
@setActiveResource resource
resource.show()
true
else
# Try to open all others
for resourceType in window.resourceTypes
resource = new resourceType
break if success = resource.open url
if success
@resources[url] = resource
atom.trigger 'project:resource:open', this, resource
@setActiveResource resource
true
else if resource = atom.router.open url
@resources[url] = resource
atom.trigger 'project:resource:open', this, resource
@setActiveResource resource
true
close: (url) ->
if url

15
src/atom/router.coffee Normal file
View File

@@ -0,0 +1,15 @@
module.exports =
class Router
resources: []
add: (resource) ->
@resources.unshift resource
open: (url) ->
success = false
for resourceType in @resources
resource = new resourceType
break if success = resource.open url
resource if success

View File

@@ -7,19 +7,13 @@ _ = require 'underscore'
# Events:
# window:load - Same as window.onLoad. Final event of app startup.
windowAdditions =
resourceTypes: []
url: $atomController.url?.toString()
startup: ->
atom.trigger 'window:load', this
success = false
for resourceType in @resourceTypes.reverse()
@resource = new resourceType
break if success = @resource.open @url
throw "I DON'T KNOW ABOUT #{@url}" if not success
if not @resource = atom.router.open @url
throw "I DON'T KNOW ABOUT #{@url}"
shutdown: ->
$atomController.close

View File

@@ -4,14 +4,11 @@ require 'window'
window.atom = {}
App = require 'app'
Browser = require 'browser'
Editor = require 'editor'
Event = require 'event'
ExtensionManager = require 'extension-manager'
KeyBinder = require 'key-binder'
Native = require 'native'
Project = require 'project'
Resource = require 'resource'
Router = require 'router'
Settings = require 'settings'
Storage = require 'storage'
@@ -23,8 +20,13 @@ for name, method of atom.event
atom.native = new Native
atom.storage = new Storage
atom.keybinder = new KeyBinder
atom.router = new Router
atom.settings = new Settings
Browser = require 'browser'
Editor = require 'editor'
Project = require 'project'
atom.extensions = {}
atom.extensionManager = new ExtensionManager