From bb7b3b8a6dec22d1f18a4755cd092762da304ca4 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 11 Dec 2012 16:46:30 -0800 Subject: [PATCH] Add close icon to tabs --- src/app/editor.coffee | 9 ++++++--- src/extensions/tabs/spec/tabs-spec.coffee | 15 +++++++++++++++ src/extensions/tabs/src/tab.coffee | 3 ++- src/extensions/tabs/src/tabs.coffee | 5 +++++ src/extensions/tabs/src/tabs.css | 22 +++++++++++++++++++++- 5 files changed, 49 insertions(+), 5 deletions(-) diff --git a/src/app/editor.coffee b/src/app/editor.coffee index 019c4efd3..5fdc1118d 100644 --- a/src/app/editor.coffee +++ b/src/app/editor.coffee @@ -408,12 +408,15 @@ class Editor extends View getBuffer: -> @activeEditSession.buffer destroyActiveEditSession: -> + @destroyEditSessionIndex(@getActiveEditSessionIndex()) + + destroyEditSessionIndex: (index) -> if @editSessions.length == 1 @remove() else - editSession = @activeEditSession - index = @getActiveEditSessionIndex() - @loadPreviousEditSession() + editSession = @editSessions[index] + if index is @getActiveEditSessionIndex() + @loadPreviousEditSession() _.remove(@editSessions, editSession) editSession.destroy() @trigger 'editor:edit-session-removed', [editSession, index] diff --git a/src/extensions/tabs/spec/tabs-spec.coffee b/src/extensions/tabs/spec/tabs-spec.coffee index 54bd80a58..4df375f29 100644 --- a/src/extensions/tabs/spec/tabs-spec.coffee +++ b/src/extensions/tabs/spec/tabs-spec.coffee @@ -95,3 +95,18 @@ describe "Tabs", -> fs.move(oldPath, newPath) waitsFor "file to be renamed", -> tabFileName.text() == "renamed-file.txt" + + describe "when the close icon is clicked", -> + it "closes the selected non-active edit session", -> + activeSession = editor.activeEditSession + expect(editor.getActiveEditSessionIndex()).toBe 1 + tabs.find('.tab .close-icon:eq(0)').click() + expect(editor.getActiveEditSessionIndex()).toBe 0 + expect(editor.activeEditSession).toBe activeSession + + it "closes the selected active edit session", -> + firstSession = editor.getEditSessions()[0] + expect(editor.getActiveEditSessionIndex()).toBe 1 + tabs.find('.tab .close-icon:eq(1)').click() + expect(editor.getActiveEditSessionIndex()).toBe 0 + expect(editor.activeEditSession).toBe firstSession diff --git a/src/extensions/tabs/src/tab.coffee b/src/extensions/tabs/src/tab.coffee index 515ce1d80..67935a3d5 100644 --- a/src/extensions/tabs/src/tab.coffee +++ b/src/extensions/tabs/src/tab.coffee @@ -4,7 +4,8 @@ module.exports = class Tab extends View @content: (editSession) -> @div class: 'tab', => - @div class: 'file-name', outlet: 'fileName' + @span class: 'file-name', outlet: 'fileName' + @span class: 'close-icon' initialize: (@editSession) -> @updateFileName() diff --git a/src/extensions/tabs/src/tabs.coffee b/src/extensions/tabs/src/tabs.coffee index 558c3793f..19ee9046b 100644 --- a/src/extensions/tabs/src/tabs.coffee +++ b/src/extensions/tabs/src/tabs.coffee @@ -32,6 +32,11 @@ class Tabs extends View @on 'click', '.tab', (e) => @editor.setActiveEditSessionIndex($(e.target).closest('.tab').index()) + @on 'click', '.tab .close-icon', (e) => + index = $(e.target).closest('.tab').index() + @editor.destroyEditSessionIndex(index) + false + addTabForEditSession: (editSession) -> @append(new Tab(editSession)) diff --git a/src/extensions/tabs/src/tabs.css b/src/extensions/tabs/src/tabs.css index f6bc4f408..1338ac9c3 100644 --- a/src/extensions/tabs/src/tabs.css +++ b/src/extensions/tabs/src/tabs.css @@ -23,4 +23,24 @@ .tab:last-child { margin-right: 4px; -} \ No newline at end of file +} + +.tab .file-name { + margin-right: 5px; +} + +.tab .close-icon { + font-family: 'Octicons Regular'; + font-size: 14px; + width: 14px; + height: 14px; + color: #aaa; +} + +.tab .close-icon:before { + content: "\f050"; +} + +.tab .close-icon:hover { + color: white; +}