StatusBar.initialize appends a status bar view to every current and future editor pane

This commit is contained in:
Nathan Sobo 2012-04-17 11:37:01 -06:00
parent 5b67feff54
commit a5a573d732
4 changed files with 46 additions and 1 deletions

View File

@ -0,0 +1,19 @@
$ = require 'jquery'
RootView = require 'root-view'
StatusBar = require 'status-bar'
describe "StatusBar", ->
rootView = null
beforeEach ->
rootView = new RootView
rootView.simulateDomAttachment()
StatusBar.initialize(rootView)
describe "@initialize", ->
it "appends a status bar to all existing and new editors", ->
expect(rootView.panes.find('.pane').length).toBe 1
expect(rootView.panes.find('.pane > .status-bar').length).toBe 1
rootView.activeEditor().splitRight()
expect(rootView.find('.pane').length).toBe 2
expect(rootView.panes.find('.pane > .status-bar').length).toBe 2

View File

@ -124,6 +124,9 @@ $.fn.enableKeymap = ->
$.fn.attachToDom = ->
$('#jasmine-content').append(this)
$.fn.simulateDomAttachment = ->
$('<html>').append(this)
$.fn.textInput = (data) ->
event = document.createEvent 'TextEvent'
event.initTextEvent('textInput', true, true, window, data)

View File

@ -39,6 +39,7 @@ class Editor extends View
softTabs: true
tabText: ' '
editSessions: null
attached: false
@deserialize: (viewState) ->
new Editor(viewState)
@ -188,11 +189,14 @@ class Editor extends View
else
@gutter.addClass('drop-shadow')
@on 'attach', =>
@on 'attach', (e) =>
return if @attached or e.target != this[0]
@attached = true
@calculateDimensions()
@hiddenInput.width(@charWidth)
@setMaxLineLength() if @softWrap
@focus() if @isFocused
@trigger 'editor-open', [this]
rootView: ->
@parents('#root-view').view()

19
src/app/status-bar.coffee Normal file
View File

@ -0,0 +1,19 @@
{View} = require 'space-pen'
module.exports =
class StatusBar extends View
@initialize: (rootView) ->
for editor in rootView.editors()
@appendToEditorPane(editor)
rootView.on 'editor-open', (e, editor) =>
@appendToEditorPane(editor)
@appendToEditorPane: (editor) ->
if pane = editor.pane()
pane.append(new StatusBar(editor))
@content: ->
@div class: 'status-bar'
initialize: (@editor) ->