From c0f45b241492e5a58c66aa1c3d4f667a6a12a1fe Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Tue, 12 Feb 2013 23:55:36 -0800 Subject: [PATCH 01/53] add self-contained animated svg spinner --- static/atom.css | 12 ++++++++++++ static/images/spinner.svg | 30 ++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 static/images/spinner.svg diff --git a/static/atom.css b/static/atom.css index 382352314..02bd9be48 100644 --- a/static/atom.css +++ b/static/atom.css @@ -60,4 +60,16 @@ html, body { src: url("octicons-regular-webfont.woff") format("woff"); font-weight: normal; font-style: normal; +} + +.is-loading { + background-image: url(images/spinner.svg); + background-repeat: no-repeat; + width: 14px; + height: 14px; + opacity: 0.5; + background-size: contain; + position: relative; + display: inline-block; + padding-left: 19px; } \ No newline at end of file diff --git a/static/images/spinner.svg b/static/images/spinner.svg new file mode 100644 index 000000000..90d8297c5 --- /dev/null +++ b/static/images/spinner.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From d95ffe80210f1ed0afc04e97129993adac704493 Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Tue, 12 Feb 2013 23:55:54 -0800 Subject: [PATCH 02/53] toggleLoading for command panel --- .../command-panel/lib/command-panel-view.coffee | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/packages/command-panel/lib/command-panel-view.coffee b/src/packages/command-panel/lib/command-panel-view.coffee index 0cb7c1e1a..ca3ec20aa 100644 --- a/src/packages/command-panel/lib/command-panel-view.coffee +++ b/src/packages/command-panel/lib/command-panel-view.coffee @@ -11,6 +11,7 @@ module.exports = class CommandPanelView extends View @content: -> @div class: 'command-panel tool-panel', => + @div class: 'loading', outlet: 'loadingMessage' @div outlet: 'previewCount', class: 'preview-count' @subview 'previewList', new PreviewList(rootView) @ul class: 'error-messages', outlet: 'errorMessages' @@ -77,6 +78,16 @@ class CommandPanelView extends View else @miniEditor.focus() + toggleLoading: -> + if @loadingMessage.hasClass 'is-loading' + @loadingMessage.removeClass 'is-loading' + @loadingMessage.html '' + @loadingMessage.hide() + else + @loadingMessage.addClass 'is-loading' + @loadingMessage.html 'Searching...' + @loadingMessage.show() + attach: (text='', options={}) -> @errorMessages.hide() @@ -96,10 +107,12 @@ class CommandPanelView extends View @miniEditor.getText() execute: (command=@escapedCommand())-> + @toggleLoading() @errorMessages.empty() try @commandInterpreter.eval(command, rootView.getActiveEditSession()).done ({operationsToPreview, errorMessages}) => + @toggleLoading() @history.push(command) @historyIndex = @history.length From bca46fdf6cfbdc39d7a22977451a505e9ac931be Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Tue, 12 Feb 2013 23:56:09 -0800 Subject: [PATCH 03/53] special loading styles for command panel --- static/command-panel.css | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/static/command-panel.css b/static/command-panel.css index 3fa292585..50a806b44 100644 --- a/static/command-panel.css +++ b/static/command-panel.css @@ -3,6 +3,20 @@ position: relative; } +.command-panel .is-loading { + display: block; + margin: 0 auto 10px auto; + width: 100px; + background-color: #111; + background-size: auto; + background-position: 5px 5px; + padding: 5px 5px 10px 30px; + border-radius: 3px; + border: 1px solid rgba(255, 255, 255, 0.1); + border-top: 1px solid rgba(0, 0, 0, 1); + border-left: 1px solid rgba(0, 0, 0, 1); +} + .command-panel .preview-list { max-height: 300px; overflow: auto; From 21eb956839f401d9a1f414790bd2125b8815212e Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 00:04:10 -0800 Subject: [PATCH 04/53] kill prompt icon for now --- static/command-panel.css | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/static/command-panel.css b/static/command-panel.css index 50a806b44..eeb565268 100644 --- a/static/command-panel.css +++ b/static/command-panel.css @@ -79,19 +79,8 @@ padding: 1px; } -.command-panel .prompt-and-editor .prompt:before { - color: #969696; - content: '\f078'; - font-family: 'Octicons Regular'; - position: relative; - top: 0; - left: -5px; - -webkit-font-smoothing: antialiased; -} - .command-panel .prompt-and-editor .editor { position: relative; - left: -4px; margin-right: -4px; } From ee64cd17d35afae1a0f75d10498fd54d84d3844b Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 10:12:25 -0800 Subject: [PATCH 05/53] better spacing for preview list --- static/command-panel.css | 5 ++--- themes/atom-dark-ui/command-panel.css | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/static/command-panel.css b/static/command-panel.css index eeb565268..95f889e41 100644 --- a/static/command-panel.css +++ b/static/command-panel.css @@ -1,6 +1,6 @@ .command-panel { - padding: 5px; position: relative; + padding: 0; } .command-panel .is-loading { @@ -20,7 +20,7 @@ .command-panel .preview-list { max-height: 300px; overflow: auto; - margin: 10px 0 10px 10px; + margin: 0 0 10px 0; position: relative; cursor: default; } @@ -81,7 +81,6 @@ .command-panel .prompt-and-editor .editor { position: relative; - margin-right: -4px; } .command-panel .prompt-and-editor { diff --git a/themes/atom-dark-ui/command-panel.css b/themes/atom-dark-ui/command-panel.css index f2c6648ba..a28525d6c 100644 --- a/themes/atom-dark-ui/command-panel.css +++ b/themes/atom-dark-ui/command-panel.css @@ -9,7 +9,7 @@ .command-panel .preview-list { background-color: #19191b; color: #C5C8C6; - border: 1px solid rgba(0, 0, 0, 0.5); + border: 1px solid rgba(0, 0, 0, 0.2); border-bottom: 1px solid rgba(255, 255, 255, 0.05); border-right: 1px solid rgba(255, 255, 255, 0.05); } From bdf3f480cb36204182ae6134d544bc09edb336d1 Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 10:13:27 -0800 Subject: [PATCH 06/53] bump position of preview count --- static/command-panel.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/static/command-panel.css b/static/command-panel.css index 95f889e41..ade984aac 100644 --- a/static/command-panel.css +++ b/static/command-panel.css @@ -30,7 +30,7 @@ text-align: right; position: absolute; right: 15px; - top: 24px; + top: 15px; z-index: 9999; } From f536d21ca64f292266621e75f4181b1bb4537c7b Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 10:23:57 -0800 Subject: [PATCH 07/53] cleanup look of command panel results --- themes/atom-dark-ui/command-panel.css | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/themes/atom-dark-ui/command-panel.css b/themes/atom-dark-ui/command-panel.css index a28525d6c..9f8f3948f 100644 --- a/themes/atom-dark-ui/command-panel.css +++ b/themes/atom-dark-ui/command-panel.css @@ -8,7 +8,7 @@ .command-panel .preview-list { background-color: #19191b; - color: #C5C8C6; + color: #6d736f; border: 1px solid rgba(0, 0, 0, 0.2); border-bottom: 1px solid rgba(255, 255, 255, 0.05); border-right: 1px solid rgba(255, 255, 255, 0.05); @@ -22,23 +22,29 @@ } .command-panel .preview-list li.selected, .command-panel .preview-list li.operation:hover { - background-color: rgba(255, 255, 255, .13); + background-color: rgba(255, 255, 255, 0.05); } .command-panel .preview-list:focus li.selected { - background-color: rgba(255, 255, 255, .2); + background-color: rgba(255, 255, 255, 0.05); } .command-panel .preview-list .path { - color: #fff; + color: #999; + border-top: 1px solid rgba(255, 255, 255, 0.05); +} + +.command-panel .preview-list .path:first-child { + border-top: none; } .command-panel .preview-list .line-number { - color: rgba(255, 255, 255, .3); + color: rgba(255, 255, 255, 0.3); + font-family: monospace; } .command-panel .preview-list .path-match-number { - color: rgba(255, 255, 255, .3); + color: rgba(255, 255, 255, 0.3); } .command-panel .preview-list .preview { @@ -46,6 +52,6 @@ } .command-panel .preview-list .preview .match { - background-color: rgba(255, 255, 255, .2); - color: yellow; + background-color: rgba(255, 255, 255, 0.1); + color: #cca300; } From 112e3893068e48e26b568e6a0ce4e9e159d7e6d8 Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 10:38:00 -0800 Subject: [PATCH 08/53] wrap matches in their own list --- .../command-panel/lib/preview-list.coffee | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index f496f7509..66f0c98dd 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -40,14 +40,15 @@ class PreviewList extends ScrollView @li class: classes.join(' '), => @span path @span "(#{ops.length})", class: 'path-match-number' - for operation in ops - {prefix, suffix, match, range} = operation.preview() - @li 'data-index': operation.index, class: 'operation', => - @span range.start.row + 1, class: 'line-number' - @span class: 'preview', => - @span prefix - @span match, class: 'match' - @span suffix + @ul class: 'matches', => + for operation in ops + {prefix, suffix, match, range} = operation.preview() + @li 'data-index': operation.index, class: 'operation', => + @span range.start.row + 1, class: 'line-number' + @span class: 'preview', => + @span prefix + @span match, class: 'match' + @span suffix @setSelectedOperationIndex(0) @show() @@ -69,8 +70,8 @@ class PreviewList extends ScrollView setSelectedOperationIndex: (index, scrollToOperation=true) -> index = Math.max(0, index) index = Math.min(@operations.length - 1, index) - @children(".selected").removeClass('selected') - element = @children("li.operation:eq(#{index})") + @find('li.selected').removeClass('selected') + element = @find("ul.matches li.operation:eq(#{index})") element.addClass('selected') if scrollToOperation From cc3982a08fc745ae5534cfa5d28ad864ff19763e Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 10:58:53 -0800 Subject: [PATCH 09/53] basic expand/collapse working --- src/packages/command-panel/lib/preview-list.coffee | 10 ++++++++++ themes/atom-dark-ui/command-panel.css | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 66f0c98dd..2f4b89e2b 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -22,6 +22,16 @@ class PreviewList extends ScrollView @setSelectedOperationIndex(parseInt($(e.target).closest('li').data('index'))) @executeSelectedOperation() + @on 'click', 'li.path', @onPathSelected + + onPathSelected: (event) => + e = $(event.target) + e = e.parent() if e.parent().hasClass 'path' + return unless e.hasClass 'path' + e.children('ul.matches').toggle 100, (e) -> + $(this).closest('li.path').toggleClass 'is-collapsed' + + destroy: -> @destroyOperations() if @operations diff --git a/themes/atom-dark-ui/command-panel.css b/themes/atom-dark-ui/command-panel.css index 9f8f3948f..1d5c17036 100644 --- a/themes/atom-dark-ui/command-panel.css +++ b/themes/atom-dark-ui/command-panel.css @@ -31,7 +31,7 @@ .command-panel .preview-list .path { color: #999; - border-top: 1px solid rgba(255, 255, 255, 0.05); + border-top: 1px solid rgba(255, 255, 255, 0.02); } .command-panel .preview-list .path:first-child { From 539c000bcd8ab3327815122d74adc504ff82d6a8 Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 11:19:08 -0800 Subject: [PATCH 10/53] add expand/collapse indicators --- .../command-panel/lib/preview-list.coffee | 3 +-- static/command-panel.css | 19 ++++++++++++++++++- themes/atom-dark-ui/command-panel.css | 19 ++++++++++++++++++- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 2f4b89e2b..2aac89408 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -31,7 +31,6 @@ class PreviewList extends ScrollView e.children('ul.matches').toggle 100, (e) -> $(this).closest('li.path').toggleClass 'is-collapsed' - destroy: -> @destroyOperations() if @operations @@ -48,7 +47,7 @@ class PreviewList extends ScrollView classes = ['path'] classes.push('readme') if fs.isReadmePath(path) @li class: classes.join(' '), => - @span path + @span class: 'path-name', path @span "(#{ops.length})", class: 'path-match-number' @ul class: 'matches', => for operation in ops diff --git a/static/command-panel.css b/static/command-panel.css index ade984aac..40e34e0aa 100644 --- a/static/command-panel.css +++ b/static/command-panel.css @@ -36,9 +36,26 @@ .command-panel .preview-list .path { padding-left: 5px; + position: relative; } .command-panel .preview-list .path:before { + font-family: 'Octicons Regular'; + font-size: 12px; + width: 12px; + height: 12px; + margin-right: 5px; + -webkit-font-smoothing: antialiased; + content: "\f05b"; + position: relative; + top: 0; +} + +.command-panel .preview-list .path.is-collapsed:before { + content: "\f05a"; +} + +.command-panel .preview-list .path-name:before { font-family: 'Octicons Regular'; font-size: 16px; width: 16px; @@ -50,7 +67,7 @@ top: 1px; } -.command-panel .preview-list .path.readme:before { +.command-panel .preview-list .path.readme .path-name:before { content: "\f007"; } diff --git a/themes/atom-dark-ui/command-panel.css b/themes/atom-dark-ui/command-panel.css index 1d5c17036..75039fc54 100644 --- a/themes/atom-dark-ui/command-panel.css +++ b/themes/atom-dark-ui/command-panel.css @@ -21,7 +21,8 @@ border-radius: 3px; } -.command-panel .preview-list li.selected, .command-panel .preview-list li.operation:hover { +.command-panel .preview-list li.selected, +.command-panel .preview-list li.operation:hover { background-color: rgba(255, 255, 255, 0.05); } @@ -34,6 +35,22 @@ border-top: 1px solid rgba(255, 255, 255, 0.02); } +.command-panel .preview-list .path:hover { + background-color: rgba(255, 255, 255, 0.02); +} + +.command-panel .preview-list .path:hover .path-name { + color: #fff; +} + +.command-panel .preview-list .path:before { + color: #555; +} + +.command-panel .preview-list .path:hover:before { + color: #fff; +} + .command-panel .preview-list .path:first-child { border-top: none; } From b5cccc0060734378894d443914159c7fb50ebb3e Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 12:38:06 -0800 Subject: [PATCH 11/53] add a header view to the command panel preview list --- src/packages/command-panel/lib/command-panel-view.coffee | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/packages/command-panel/lib/command-panel-view.coffee b/src/packages/command-panel/lib/command-panel-view.coffee index ca3ec20aa..1b6bb0057 100644 --- a/src/packages/command-panel/lib/command-panel-view.coffee +++ b/src/packages/command-panel/lib/command-panel-view.coffee @@ -12,7 +12,12 @@ class CommandPanelView extends View @content: -> @div class: 'command-panel tool-panel', => @div class: 'loading', outlet: 'loadingMessage' - @div outlet: 'previewCount', class: 'preview-count' + @div class: 'header', => + @ul outlet: 'expandCollapse', class: 'expand-collapse', => + @li class: 'expand', 'Expand All' + @li class: 'collapse', 'Collapse All' + @span outlet: 'previewCount', class: 'preview-count' + @subview 'previewList', new PreviewList(rootView) @ul class: 'error-messages', outlet: 'errorMessages' @div class: 'prompt-and-editor', => From 84ff844f17ed0a43e20d70635819dbf69ff7b443 Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 12:38:17 -0800 Subject: [PATCH 12/53] styles for preview list header --- static/command-panel.css | 23 +++++++++++------ themes/atom-dark-ui/command-panel.css | 36 +++++++++++++++++++++++++-- 2 files changed, 50 insertions(+), 9 deletions(-) diff --git a/static/command-panel.css b/static/command-panel.css index 40e34e0aa..e149f9d35 100644 --- a/static/command-panel.css +++ b/static/command-panel.css @@ -25,13 +25,22 @@ cursor: default; } -.command-panel .preview-count { - font-size: 11px; - text-align: right; - position: absolute; - right: 15px; - top: 15px; - z-index: 9999; +.command-panel .header:after { + content: "."; + display: block; + visibility: hidden; + clear: both; + height: 0; +} + +.command-panel .expand-collapse { + float: right; + display: inline-block; +} + +.command-panel .expand-collapse li { + display: inline-block; + padding: 5px; } .command-panel .preview-list .path { diff --git a/themes/atom-dark-ui/command-panel.css b/themes/atom-dark-ui/command-panel.css index 75039fc54..bcb522f98 100644 --- a/themes/atom-dark-ui/command-panel.css +++ b/themes/atom-dark-ui/command-panel.css @@ -6,6 +6,18 @@ padding: 10px; } +.command-panel .header { + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.05)); + border: 1px solid rgba(0, 0, 0, 0.5); + padding: 5px; + box-shadow: + inset 0 1px 0 rgba(255, 255, 255, 0.05), + inset 0 -1px 0 rgba(255, 255, 255, 0.02); + margin-bottom: 0; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + .command-panel .preview-list { background-color: #19191b; color: #6d736f; @@ -15,10 +27,30 @@ } .command-panel .preview-count { + display: inline-block; + margin-top: 5px; color: #969696; - background: #161719; - padding: 5px; + text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.05); +} + +.command-panel .expand-collapse { + color: #969696; +} + +.command-panel .expand-collapse li { + background: -webkit-linear-gradient(#19191a, #1a1b1c); + margin-left: 5px; + padding: 5px 10px; + cursor: pointer; + font-size: 11px; border-radius: 3px; + box-shadow: + inset -1px -1px 0 rgba(255, 255, 255, 0.1), + inset 1px 1px rgba(0, 0, 0, 0.1); +} + +.command-panel .expand-collapse li:hover { + color: #fff; } .command-panel .preview-list li.selected, From f86e23e7059a6acb12cfdda1fab4de5e49d50451 Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 12:52:01 -0800 Subject: [PATCH 13/53] hookup expand-collapse --- .../command-panel/lib/command-panel-view.coffee | 10 ++++++++++ src/packages/command-panel/lib/preview-list.coffee | 8 ++++++++ static/command-panel.css | 2 +- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/packages/command-panel/lib/command-panel-view.coffee b/src/packages/command-panel/lib/command-panel-view.coffee index 1b6bb0057..067bd8a91 100644 --- a/src/packages/command-panel/lib/command-panel-view.coffee +++ b/src/packages/command-panel/lib/command-panel-view.coffee @@ -46,6 +46,9 @@ class CommandPanelView extends View rootView.command 'command-panel:repeat-relative-address-in-reverse', => @repeatRelativeAddressInReverse() rootView.command 'command-panel:set-selection-as-regex-address', => @setSelectionAsLastRelativeAddress() + @on 'click', '.expand', @onExpandAll + @on 'click', '.collapse', @onCollapseAll + @previewList.hide() @previewCount.hide() @errorMessages.hide() @@ -93,6 +96,12 @@ class CommandPanelView extends View @loadingMessage.html 'Searching...' @loadingMessage.show() + onExpandAll: (event) => + @previewList.expandAllPaths() + + onCollapseAll: (event) => + @previewList.collapseAllPaths() + attach: (text='', options={}) -> @errorMessages.hide() @@ -118,6 +127,7 @@ class CommandPanelView extends View try @commandInterpreter.eval(command, rootView.getActiveEditSession()).done ({operationsToPreview, errorMessages}) => @toggleLoading() + @expandCollapse.show() @history.push(command) @historyIndex = @history.length diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 2aac89408..04e18e924 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -31,6 +31,14 @@ class PreviewList extends ScrollView e.children('ul.matches').toggle 100, (e) -> $(this).closest('li.path').toggleClass 'is-collapsed' + expandAllPaths: -> + @find('ul.matches').show() + @find('.path').removeClass 'is-collapsed' + + collapseAllPaths: -> + @find('ul.matches').hide() + @find('.path').addClass 'is-collapsed' + destroy: -> @destroyOperations() if @operations diff --git a/static/command-panel.css b/static/command-panel.css index e149f9d35..7690a82e8 100644 --- a/static/command-panel.css +++ b/static/command-panel.css @@ -35,7 +35,7 @@ .command-panel .expand-collapse { float: right; - display: inline-block; + display: none; } .command-panel .expand-collapse li { From 28e1fb1a7535f38d560e78b44a9d1803a64405a5 Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 13:00:52 -0800 Subject: [PATCH 14/53] tweak look of preview header in atom-light-ui --- static/command-panel.css | 2 ++ themes/atom-dark-ui/command-panel.css | 2 -- themes/atom-light-ui/command-panel.css | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/static/command-panel.css b/static/command-panel.css index 7690a82e8..0ce21ef3f 100644 --- a/static/command-panel.css +++ b/static/command-panel.css @@ -41,6 +41,8 @@ .command-panel .expand-collapse li { display: inline-block; padding: 5px; + cursor: pointer; + font-size: 11px; } .command-panel .preview-list .path { diff --git a/themes/atom-dark-ui/command-panel.css b/themes/atom-dark-ui/command-panel.css index bcb522f98..d8535a435 100644 --- a/themes/atom-dark-ui/command-panel.css +++ b/themes/atom-dark-ui/command-panel.css @@ -41,8 +41,6 @@ background: -webkit-linear-gradient(#19191a, #1a1b1c); margin-left: 5px; padding: 5px 10px; - cursor: pointer; - font-size: 11px; border-radius: 3px; box-shadow: inset -1px -1px 0 rgba(255, 255, 255, 0.1), diff --git a/themes/atom-light-ui/command-panel.css b/themes/atom-light-ui/command-panel.css index 34ced33e7..b17c7654a 100644 --- a/themes/atom-light-ui/command-panel.css +++ b/themes/atom-light-ui/command-panel.css @@ -2,6 +2,21 @@ background-color: #f4f4f4; border-top: 1px solid #979797; color: #ededed; + padding: 10px; +} + +.command-panel .header { + padding: 5px; + background-image: -webkit-linear-gradient(#e7e7e7, #cfcfcf); + border: 1px solid rgba(0, 0, 0, 0.1); + border-bottom: none; + padding: 5px; + border-top-right-radius: 3px; + border-top-left-radius: 3px; +} + +.command-panel .expand-collapse { + color: #333; } .command-panel .preview-list { From 9a2bd6e3749c42c32c3c083a30944a8b31ce95d6 Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 13:42:25 -0800 Subject: [PATCH 15/53] swap to mousedown, see if this fixes the tests --- src/packages/command-panel/lib/preview-list.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 04e18e924..80dfafe13 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -22,7 +22,7 @@ class PreviewList extends ScrollView @setSelectedOperationIndex(parseInt($(e.target).closest('li').data('index'))) @executeSelectedOperation() - @on 'click', 'li.path', @onPathSelected + @on 'mousedown', 'li.path', @onPathSelected onPathSelected: (event) => e = $(event.target) From 1e325fe28ea301b215a29fcc5343a02ff7e9aae4 Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 13:44:03 -0800 Subject: [PATCH 16/53] need a hand with these specs --- .../command-panel/spec/command-panel-spec.coffee | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index 99f886b03..7f068dbe3 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -128,6 +128,9 @@ describe "CommandPanel", -> beforeEach -> expect(commandPanel.previewList).toBeVisible() + it "shows the expand and collapse all buttons", -> + expect(commandPanel.find('.expand-collapse')).toBeVisible() + describe "when the preview list is focused", -> it "hides the command panel", -> expect(commandPanel.previewList).toMatchSelector(':focus') @@ -465,3 +468,12 @@ describe "CommandPanel", -> expect(editSession.buffer.getPath()).toBe project.resolve(operation.getPath()) expect(editSession.getSelectedBufferRange()).toEqual operation.getBufferRange() expect(previewList.focus).toHaveBeenCalled() + + describe "when a path in the preview list is clicked", -> + it "shows and hides the matches for that path", -> + previewList.find('li.path:first-child').mousedown() + expect(previewList.find('li.path:first-child ul.matches')).toBeHidden() + + previewList.find('li.path:first-child').mousedown() + expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() + From 7b1f9c86ad52f2738df7aabb849c092b842c8735 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 14:00:58 -0800 Subject: [PATCH 17/53] Only select child spans in spec selector --- src/packages/command-panel/spec/command-panel-spec.coffee | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index 7f068dbe3..b1277171c 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -293,7 +293,7 @@ describe "CommandPanel", -> expect(commandPanel.previewList).toBeVisible() expect(commandPanel.previewList).toMatchSelector ':focus' previewItem = commandPanel.previewList.find("li:contains(sample.js):first") - expect(previewItem.text()).toBe "sample.js(1)" + expect(previewItem.find('> span').text()).toBe "sample.js(1)" expect(previewItem.next().find('.preview').text()).toBe "var quicksort = function () {" expect(previewItem.next().find('.preview > .match').text()).toBe "quicksort" @@ -476,4 +476,3 @@ describe "CommandPanel", -> previewList.find('li.path:first-child').mousedown() expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() - From 636bb21bbcca277b46fcf4327cb485a99509dc01 Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 14:16:20 -0800 Subject: [PATCH 18/53] :lipstick: --- .../command-panel/spec/command-panel-spec.coffee | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index b1277171c..41def36e7 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -469,10 +469,10 @@ describe "CommandPanel", -> expect(editSession.getSelectedBufferRange()).toEqual operation.getBufferRange() expect(previewList.focus).toHaveBeenCalled() - describe "when a path in the preview list is clicked", -> - it "shows and hides the matches for that path", -> - previewList.find('li.path:first-child').mousedown() - expect(previewList.find('li.path:first-child ul.matches')).toBeHidden() + describe "when a path in the preview list is clicked", -> + it "shows and hides the matches for that path", -> + previewList.find('li.path:first-child').mousedown() + expect(previewList.find('li.path:first-child ul.matches')).toBeHidden() - previewList.find('li.path:first-child').mousedown() - expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() + previewList.find('li.path:first-child').mousedown() + expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() From fdd57d5e64fb54a037a0232486b19d026655baab Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 14:16:32 -0800 Subject: [PATCH 19/53] hide controls when deatching command panel --- src/packages/command-panel/lib/command-panel-view.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/src/packages/command-panel/lib/command-panel-view.coffee b/src/packages/command-panel/lib/command-panel-view.coffee index 067bd8a91..516b475db 100644 --- a/src/packages/command-panel/lib/command-panel-view.coffee +++ b/src/packages/command-panel/lib/command-panel-view.coffee @@ -115,6 +115,7 @@ class CommandPanelView extends View rootView.focus() @previewList.hide() @previewCount.hide() + @expandCollapse.hide() super escapedCommand: -> From 936324a75fd031eac166ac502fcf2efe157002db Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 15:36:39 -0800 Subject: [PATCH 20/53] use offset instead of position --- src/packages/command-panel/lib/preview-list.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 80dfafe13..1f9bd1faf 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -121,8 +121,8 @@ class PreviewList extends ScrollView @operations[@selectedOperationIndex] scrollToElement: (element) -> - top = @scrollTop() + element.position().top - bottom = top + element.outerHeight() + top = @scrollTop() + element.offset().top + bottom = top - element.outerHeight() if bottom > @scrollBottom() @scrollBottom(bottom) From 307be184c8fa34f933449f1c938089bd054dcd13 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 15:50:35 -0800 Subject: [PATCH 21/53] Collapse/expand all with ctrl-{} --- src/packages/command-panel/keymaps/command-panel.cson | 4 ++++ src/packages/command-panel/lib/preview-list.coffee | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/packages/command-panel/keymaps/command-panel.cson b/src/packages/command-panel/keymaps/command-panel.cson index 90b1d19fa..e1c9ab1db 100644 --- a/src/packages/command-panel/keymaps/command-panel.cson +++ b/src/packages/command-panel/keymaps/command-panel.cson @@ -12,3 +12,7 @@ 'meta-e': 'command-panel:set-selection-as-regex-address' 'meta-f': 'command-panel:find-in-file' 'meta-F': 'command-panel:find-in-project' + +'.command-panel': + 'ctrl-{': 'command-panel:collapse-all' + 'ctrl-}': 'command-panel:expand-all' diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 1f9bd1faf..d98a11b99 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -23,6 +23,8 @@ class PreviewList extends ScrollView @executeSelectedOperation() @on 'mousedown', 'li.path', @onPathSelected + @command 'command-panel:collapse-all', => @collapseAllPaths() + @command 'command-panel:expand-all', => @expandAllPaths() onPathSelected: (event) => e = $(event.target) From 64203b63611a7b6d3b7dce9db0ea4b914321c443 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 16:07:44 -0800 Subject: [PATCH 22/53] Always hide/show preview list and header together --- .../command-panel/lib/command-panel-view.coffee | 13 ++++++------- .../command-panel/spec/command-panel-spec.coffee | 8 ++++---- static/command-panel.css | 1 - 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/packages/command-panel/lib/command-panel-view.coffee b/src/packages/command-panel/lib/command-panel-view.coffee index 516b475db..5a05a999c 100644 --- a/src/packages/command-panel/lib/command-panel-view.coffee +++ b/src/packages/command-panel/lib/command-panel-view.coffee @@ -12,7 +12,7 @@ class CommandPanelView extends View @content: -> @div class: 'command-panel tool-panel', => @div class: 'loading', outlet: 'loadingMessage' - @div class: 'header', => + @div class: 'header', outlet: 'previewHeader', => @ul outlet: 'expandCollapse', class: 'expand-collapse', => @li class: 'expand', 'Expand All' @li class: 'collapse', 'Collapse All' @@ -50,7 +50,7 @@ class CommandPanelView extends View @on 'click', '.collapse', @onCollapseAll @previewList.hide() - @previewCount.hide() + @previewHeader.hide() @errorMessages.hide() @prompt.iconSize(@miniEditor.getFontSize()) @@ -75,14 +75,14 @@ class CommandPanelView extends View togglePreview: -> if @previewList.is(':focus') @previewList.hide() - @previewCount.hide() + @previewHeader.hide() @detach() rootView.focus() else @attach() unless @hasParent() if @previewList.hasOperations() @previewList.show().focus() - @previewCount.show() + @previewHeader.show() else @miniEditor.focus() @@ -114,8 +114,7 @@ class CommandPanelView extends View detach: -> rootView.focus() @previewList.hide() - @previewCount.hide() - @expandCollapse.hide() + @previewHeader.hide() super escapedCommand: -> @@ -128,7 +127,6 @@ class CommandPanelView extends View try @commandInterpreter.eval(command, rootView.getActiveEditSession()).done ({operationsToPreview, errorMessages}) => @toggleLoading() - @expandCollapse.show() @history.push(command) @historyIndex = @history.length @@ -138,6 +136,7 @@ class CommandPanelView extends View @errorMessages.append $$ -> @li errorMessage for errorMessage in errorMessages else if operationsToPreview?.length + @previewHeader.show() @previewList.populate(operationsToPreview) @previewList.focus() @previewCount.text("#{_.pluralize(operationsToPreview.length, 'match', 'matches')} in #{_.pluralize(@previewList.getPathCount(), 'file')}").show() diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index 41def36e7..4d52a24db 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -174,19 +174,19 @@ describe "CommandPanel", -> expect(commandPanel.hasParent()).toBeTruthy() describe "when the mini editor is focused", -> - it "retains focus on the mini editor and does not show the preview list or preview count", -> + it "retains focus on the mini editor and does not show the preview list or preview header", -> expect(commandPanel.miniEditor.isFocused).toBeTruthy() rootView.trigger 'command-panel:toggle-preview' expect(commandPanel.previewList).toBeHidden() - expect(commandPanel.previewCount).toBeHidden() + expect(commandPanel.previewHeader).toBeHidden() expect(commandPanel.miniEditor.isFocused).toBeTruthy() describe "when the mini editor is not focused", -> - it "focuses the mini editor and does not show the preview list or preview count", -> + it "focuses the mini editor and does not show the preview list or preview header", -> rootView.focus() rootView.trigger 'command-panel:toggle-preview' expect(commandPanel.previewList).toBeHidden() - expect(commandPanel.previewCount).toBeHidden() + expect(commandPanel.previewHeader).toBeHidden() expect(commandPanel.miniEditor.isFocused).toBeTruthy() describe "when the command panel is not visible", -> diff --git a/static/command-panel.css b/static/command-panel.css index 0ce21ef3f..b33938c3c 100644 --- a/static/command-panel.css +++ b/static/command-panel.css @@ -35,7 +35,6 @@ .command-panel .expand-collapse { float: right; - display: none; } .command-panel .expand-collapse li { From 894ed139a02c0274e0c49650675d4f6054d57571 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 16:12:59 -0800 Subject: [PATCH 23/53] Remove dangling function --- src/packages/command-panel/lib/preview-list.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index d98a11b99..989ee67ed 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -7,7 +7,7 @@ fs = require 'fs' module.exports = class PreviewList extends ScrollView @content: -> - @ol class: 'preview-list', tabindex: -1, -> + @ol class: 'preview-list', tabindex: -1 selectedOperationIndex: 0 operations: null From de2b1a87701ad7743946fab6456438a535e41d6e Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 16:13:04 -0800 Subject: [PATCH 24/53] fix preview list automatic scrolling --- src/packages/command-panel/lib/preview-list.coffee | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 989ee67ed..579c5315b 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -123,13 +123,13 @@ class PreviewList extends ScrollView @operations[@selectedOperationIndex] scrollToElement: (element) -> - top = @scrollTop() + element.offset().top - bottom = top - element.outerHeight() + top = @scrollTop() + + element.position().top + + element.closest('li.path').position().top + bottom = top + element.outerHeight() - if bottom > @scrollBottom() - @scrollBottom(bottom) - if top < @scrollTop() - @scrollTop(top) + @scrollBottom(bottom) if bottom > @scrollBottom() + @scrollTop(top) if top < @scrollTop() scrollToBottom: -> super() From 107d1e2c93e9689672a6f443059f2241bda00d4d Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 16:25:17 -0800 Subject: [PATCH 25/53] kill distracting hover styles --- static/command-panel.css | 1 + themes/atom-dark-ui/command-panel.css | 15 +++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/static/command-panel.css b/static/command-panel.css index b33938c3c..bac4b119d 100644 --- a/static/command-panel.css +++ b/static/command-panel.css @@ -47,6 +47,7 @@ .command-panel .preview-list .path { padding-left: 5px; position: relative; + -webkit-user-select: none; } .command-panel .preview-list .path:before { diff --git a/themes/atom-dark-ui/command-panel.css b/themes/atom-dark-ui/command-panel.css index d8535a435..beb471813 100644 --- a/themes/atom-dark-ui/command-panel.css +++ b/themes/atom-dark-ui/command-panel.css @@ -51,8 +51,7 @@ color: #fff; } -.command-panel .preview-list li.selected, -.command-panel .preview-list li.operation:hover { +.command-panel .preview-list li.selected { background-color: rgba(255, 255, 255, 0.05); } @@ -65,10 +64,6 @@ border-top: 1px solid rgba(255, 255, 255, 0.02); } -.command-panel .preview-list .path:hover { - background-color: rgba(255, 255, 255, 0.02); -} - .command-panel .preview-list .path:hover .path-name { color: #fff; } @@ -102,3 +97,11 @@ background-color: rgba(255, 255, 255, 0.1); color: #cca300; } + +.command-panel .preview-list li.operation:hover, +.command-panel li.operation.selected .preview { + color: #fff; +} + { + color: #fff; +} From d7b6b282a5cac1ad93936d55061be905c99dc7eb Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 16:51:47 -0800 Subject: [PATCH 26/53] Subtract preview list offset from top --- src/packages/command-panel/lib/preview-list.coffee | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 579c5315b..e473000ed 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -123,9 +123,7 @@ class PreviewList extends ScrollView @operations[@selectedOperationIndex] scrollToElement: (element) -> - top = @scrollTop() + - element.position().top + - element.closest('li.path').position().top + top = @scrollTop() + element.offset().top - @offset().top bottom = top + element.outerHeight() @scrollBottom(bottom) if bottom > @scrollBottom() From fcba61f2d1ba27314331fd8fcd6fb0ee9902c742 Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Wed, 13 Feb 2013 16:55:42 -0800 Subject: [PATCH 27/53] use different color for path and operation --- static/command-panel.css | 1 + themes/atom-dark-ui/command-panel.css | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/static/command-panel.css b/static/command-panel.css index bac4b119d..75b7bfbe8 100644 --- a/static/command-panel.css +++ b/static/command-panel.css @@ -85,6 +85,7 @@ .command-panel .preview-list .operation { padding-top: 2px; padding-bottom: 2px; + padding-left: 10px; } .command-panel .preview-list .line-number { diff --git a/themes/atom-dark-ui/command-panel.css b/themes/atom-dark-ui/command-panel.css index beb471813..8e25aed1d 100644 --- a/themes/atom-dark-ui/command-panel.css +++ b/themes/atom-dark-ui/command-panel.css @@ -60,7 +60,7 @@ } .command-panel .preview-list .path { - color: #999; + color: #bbb; border-top: 1px solid rgba(255, 255, 255, 0.02); } @@ -98,6 +98,10 @@ color: #cca300; } +.command-panel .preview-list li.operation { + color: #777; +} + .command-panel .preview-list li.operation:hover, .command-panel li.operation.selected .preview { color: #fff; From 1922034df58648e876318170ad51dfdc6a5928e7 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 17:12:22 -0800 Subject: [PATCH 28/53] Disable jquery fx in specs --- spec/spec-helper.coffee | 1 + src/packages/gists/spec/gists-spec.coffee | 7 +------ 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/spec/spec-helper.coffee b/spec/spec-helper.coffee index 5a5d39136..259392d10 100644 --- a/spec/spec-helper.coffee +++ b/spec/spec-helper.coffee @@ -28,6 +28,7 @@ window.loadTextMatePackages = -> window.loadTextMatePackages() beforeEach -> + jQuery.fx.off = true window.fixturesProject = new Project(require.resolve('fixtures')) window.resetTimeouts() atom.atomPackageStates = {} diff --git a/src/packages/gists/spec/gists-spec.coffee b/src/packages/gists/spec/gists-spec.coffee index 5382fb33f..1ff01a112 100644 --- a/src/packages/gists/spec/gists-spec.coffee +++ b/src/packages/gists/spec/gists-spec.coffee @@ -19,15 +19,10 @@ describe "Gists package", -> [request, originalFxOffValue] = [] beforeEach -> - originalFxOffValue = $.fx.off - $.fx.off = true editor.trigger 'gist:create' expect($.ajax).toHaveBeenCalled() request = $.ajax.argsForCall[0][0] - afterEach -> - $.fx.off = originalFxOffValue - it "creates an Ajax request to api.github.com with the entire buffer contents as the Gist's content", -> expect(request.url).toBe 'https://api.github.com/gists' expect(request.type).toBe 'POST' @@ -46,7 +41,7 @@ describe "Gists package", -> expect(rootView.find('.notification')).toExist() expect(rootView.find('.notification .title').text()).toBe 'Gist 1 created' advanceClock(2000) - expect(rootView.find('.gist-notification')).not.toExist() + expect(rootView.find('.notification')).not.toExist() describe "when the editor has a selection", -> beforeEach -> From 1a8bba4d70509979831f1b3eb6f30e7ebc439634 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 17:12:40 -0800 Subject: [PATCH 29/53] Attach to DOM before checking visibility --- src/packages/command-panel/spec/command-panel-spec.coffee | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index 4d52a24db..aab4f3d22 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -471,6 +471,8 @@ describe "CommandPanel", -> describe "when a path in the preview list is clicked", -> it "shows and hides the matches for that path", -> + rootView.attachToDom() + expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() previewList.find('li.path:first-child').mousedown() expect(previewList.find('li.path:first-child ul.matches')).toBeHidden() From a42a82c8c0e72999e9abaabe28ad2a59d21ded94 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 17:27:53 -0800 Subject: [PATCH 30/53] Collapse selected path with left arrow --- src/packages/command-panel/keymaps/command-panel.cson | 3 +++ src/packages/command-panel/lib/preview-list.coffee | 7 +++++++ src/packages/command-panel/spec/command-panel-spec.coffee | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/src/packages/command-panel/keymaps/command-panel.cson b/src/packages/command-panel/keymaps/command-panel.cson index e1c9ab1db..d0c7f1b58 100644 --- a/src/packages/command-panel/keymaps/command-panel.cson +++ b/src/packages/command-panel/keymaps/command-panel.cson @@ -16,3 +16,6 @@ '.command-panel': 'ctrl-{': 'command-panel:collapse-all' 'ctrl-}': 'command-panel:expand-all' + +'.command-panel .preview-list': + 'left': 'command-panel:collapse-result' diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index e473000ed..23b653069 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -25,6 +25,13 @@ class PreviewList extends ScrollView @on 'mousedown', 'li.path', @onPathSelected @command 'command-panel:collapse-all', => @collapseAllPaths() @command 'command-panel:expand-all', => @expandAllPaths() + @command 'command-panel:collapse-result', @collapseSelectedPath + + collapseSelectedPath: (event) => + e = $('.selected').closest('.path') + return if e.hasClass 'is-collapsed' + e.children('ul.matches').hide 100, (e) -> + $(this).closest('li.path').add 'is-collapsed' onPathSelected: (event) => e = $(event.target) diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index aab4f3d22..797fc0c33 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -478,3 +478,10 @@ describe "CommandPanel", -> previewList.find('li.path:first-child').mousedown() expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() + + describe "when command-panel:collapse-result is triggered", -> + it "collapses the path of the selected operation", -> + rootView.attachToDom() + expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() + previewList.trigger 'command-panel:collapse-result' + expect(previewList.find('li.path:first-child ul.matches')).toBeHidden() From e67843635edebe59cc963a77c41fa037afd09d21 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 17:36:49 -0800 Subject: [PATCH 31/53] Use addClass instead of add --- src/packages/command-panel/lib/preview-list.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 23b653069..716cad7a5 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -31,7 +31,7 @@ class PreviewList extends ScrollView e = $('.selected').closest('.path') return if e.hasClass 'is-collapsed' e.children('ul.matches').hide 100, (e) -> - $(this).closest('li.path').add 'is-collapsed' + $(this).closest('li.path').addClass 'is-collapsed' onPathSelected: (event) => e = $(event.target) From 72bbe3323b1f87808b1d81d087a1726ba081c7a7 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 18:11:28 -0800 Subject: [PATCH 32/53] Create views for path and operations The CommandPanelView is becoming bloated and this is the beginning of breaking out some of the logic into separate views. --- .../command-panel/lib/operation-view.coffee | 12 ++++++++++ .../command-panel/lib/path-view.coffee | 15 ++++++++++++ .../command-panel/lib/preview-list.coffee | 24 +++++-------------- 3 files changed, 33 insertions(+), 18 deletions(-) create mode 100644 src/packages/command-panel/lib/operation-view.coffee create mode 100644 src/packages/command-panel/lib/path-view.coffee diff --git a/src/packages/command-panel/lib/operation-view.coffee b/src/packages/command-panel/lib/operation-view.coffee new file mode 100644 index 000000000..8f231ab75 --- /dev/null +++ b/src/packages/command-panel/lib/operation-view.coffee @@ -0,0 +1,12 @@ +{View} = require 'space-pen' + +module.exports = +class OperationView extends View + @content: ({operation} = {}) -> + {prefix, suffix, match, range} = operation.preview() + @li 'data-index': operation.index, class: 'operation', => + @span range.start.row + 1, class: 'line-number' + @span class: 'preview', => + @span prefix + @span match, class: 'match' + @span suffix diff --git a/src/packages/command-panel/lib/path-view.coffee b/src/packages/command-panel/lib/path-view.coffee new file mode 100644 index 000000000..e954fad70 --- /dev/null +++ b/src/packages/command-panel/lib/path-view.coffee @@ -0,0 +1,15 @@ +{View} = require 'space-pen' +fs = require 'fs' +OperationView = require './operation-view' + +module.exports = +class PathView extends View + @content: ({path, operations} = {}) -> + classes = ['path'] + classes.push('readme') if fs.isReadmePath(path) + @li class: classes.join(' '), => + @span class: 'path-name', path + @span "(#{operations.length})", class: 'path-match-number' + @ul class: 'matches', => + for operation in operations + @subview "operation#{operation.index}", new OperationView({operation}) diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 716cad7a5..373f42e62 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -3,6 +3,7 @@ $ = require 'jquery' ScrollView = require 'scroll-view' _ = require 'underscore' fs = require 'fs' +PathView = require './path-view' module.exports = class PreviewList extends ScrollView @@ -57,24 +58,11 @@ class PreviewList extends ScrollView @destroyOperations() if @operations @operations = operations @empty() - @html $$$ -> - operation.index = index for operation, index in operations - operationsByPath = _.groupBy(operations, (operation) -> operation.getPath()) - for path, ops of operationsByPath - classes = ['path'] - classes.push('readme') if fs.isReadmePath(path) - @li class: classes.join(' '), => - @span class: 'path-name', path - @span "(#{ops.length})", class: 'path-match-number' - @ul class: 'matches', => - for operation in ops - {prefix, suffix, match, range} = operation.preview() - @li 'data-index': operation.index, class: 'operation', => - @span range.start.row + 1, class: 'line-number' - @span class: 'preview', => - @span prefix - @span match, class: 'match' - @span suffix + + operation.index = index for operation, index in operations + operationsByPath = _.groupBy(operations, (operation) -> operation.getPath()) + for path, operations of operationsByPath + @append new PathView({path, operations}) @setSelectedOperationIndex(0) @show() From e03a669413f62aedd9bf5f1f2e0379f6ad4c5fa6 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 18:20:22 -0800 Subject: [PATCH 33/53] Collapse/expand views directly --- src/packages/command-panel/lib/path-view.coffee | 10 +++++++++- src/packages/command-panel/lib/preview-list.coffee | 6 ++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/packages/command-panel/lib/path-view.coffee b/src/packages/command-panel/lib/path-view.coffee index e954fad70..682236b64 100644 --- a/src/packages/command-panel/lib/path-view.coffee +++ b/src/packages/command-panel/lib/path-view.coffee @@ -10,6 +10,14 @@ class PathView extends View @li class: classes.join(' '), => @span class: 'path-name', path @span "(#{operations.length})", class: 'path-match-number' - @ul class: 'matches', => + @ul outlet: 'matches', class: 'matches', => for operation in operations @subview "operation#{operation.index}", new OperationView({operation}) + + expand: -> + @matches.show() + @removeClass 'is-collapsed' + + collapse: -> + @matches.hide() + @addClass 'is-collapsed' diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 373f42e62..8e289f178 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -42,12 +42,10 @@ class PreviewList extends ScrollView $(this).closest('li.path').toggleClass 'is-collapsed' expandAllPaths: -> - @find('ul.matches').show() - @find('.path').removeClass 'is-collapsed' + @children().each (index, element) -> $(element).view().expand() collapseAllPaths: -> - @find('ul.matches').hide() - @find('.path').addClass 'is-collapsed' + @children().each (index, element) -> $(element).view().collapse() destroy: -> @destroyOperations() if @operations From 9dcb124ff7d1af62d5f6dc95f7034f3d3dca896b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 18:30:08 -0800 Subject: [PATCH 34/53] Move path selection to view class --- src/packages/command-panel/lib/path-view.coffee | 10 ++++++++++ src/packages/command-panel/lib/preview-list.coffee | 8 -------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/packages/command-panel/lib/path-view.coffee b/src/packages/command-panel/lib/path-view.coffee index 682236b64..930c1d9d3 100644 --- a/src/packages/command-panel/lib/path-view.coffee +++ b/src/packages/command-panel/lib/path-view.coffee @@ -1,6 +1,7 @@ {View} = require 'space-pen' fs = require 'fs' OperationView = require './operation-view' +$ = require 'jquery' module.exports = class PathView extends View @@ -14,6 +15,15 @@ class PathView extends View for operation in operations @subview "operation#{operation.index}", new OperationView({operation}) + initialize: -> + @on 'mousedown', @onPathSelected + + onPathSelected: (event) => + e = $(event.target) + e = e.parent() if e.parent().hasClass 'path' + if e.hasClass 'path' + @matches.toggle 100, => @toggleClass 'is-collapsed' + expand: -> @matches.show() @removeClass 'is-collapsed' diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 8e289f178..0d6b4898f 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -23,7 +23,6 @@ class PreviewList extends ScrollView @setSelectedOperationIndex(parseInt($(e.target).closest('li').data('index'))) @executeSelectedOperation() - @on 'mousedown', 'li.path', @onPathSelected @command 'command-panel:collapse-all', => @collapseAllPaths() @command 'command-panel:expand-all', => @expandAllPaths() @command 'command-panel:collapse-result', @collapseSelectedPath @@ -34,13 +33,6 @@ class PreviewList extends ScrollView e.children('ul.matches').hide 100, (e) -> $(this).closest('li.path').addClass 'is-collapsed' - onPathSelected: (event) => - e = $(event.target) - e = e.parent() if e.parent().hasClass 'path' - return unless e.hasClass 'path' - e.children('ul.matches').toggle 100, (e) -> - $(this).closest('li.path').toggleClass 'is-collapsed' - expandAllPaths: -> @children().each (index, element) -> $(element).view().expand() From 5b1acb518809e7ab74c551752e8ab5bb6e2c2126 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 18:47:15 -0800 Subject: [PATCH 35/53] Move collapse result command to PathView --- .../command-panel/lib/path-view.coffee | 29 ++++++++++++++----- .../command-panel/lib/preview-list.coffee | 7 ----- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/packages/command-panel/lib/path-view.coffee b/src/packages/command-panel/lib/path-view.coffee index 930c1d9d3..941bc2b1a 100644 --- a/src/packages/command-panel/lib/path-view.coffee +++ b/src/packages/command-panel/lib/path-view.coffee @@ -17,17 +17,30 @@ class PathView extends View initialize: -> @on 'mousedown', @onPathSelected + rootView.command 'command-panel:collapse-result', (e) => + @collapse(true) if @find('.selected').length onPathSelected: (event) => e = $(event.target) e = e.parent() if e.parent().hasClass 'path' - if e.hasClass 'path' - @matches.toggle 100, => @toggleClass 'is-collapsed' + @toggle(true) if e.hasClass 'path' - expand: -> - @matches.show() - @removeClass 'is-collapsed' + toggle: (animate) -> + if @hasClass('is-collapsed') + @expand(animate) + else + @collapse(animate) - collapse: -> - @matches.hide() - @addClass 'is-collapsed' + expand: (animate=false) -> + if animate + @matches.show 100, => @removeClass 'is-collapsed' + else + @matches.show() + @removeClass 'is-collapsed' + + collapse: (animate=false) -> + if animate + @matches.hide 100, => @addClass 'is-collapsed' + else + @matches.hide() + @addClass 'is-collapsed' diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 0d6b4898f..9db65e474 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -25,13 +25,6 @@ class PreviewList extends ScrollView @command 'command-panel:collapse-all', => @collapseAllPaths() @command 'command-panel:expand-all', => @expandAllPaths() - @command 'command-panel:collapse-result', @collapseSelectedPath - - collapseSelectedPath: (event) => - e = $('.selected').closest('.path') - return if e.hasClass 'is-collapsed' - e.children('ul.matches').hide 100, (e) -> - $(this).closest('li.path').addClass 'is-collapsed' expandAllPaths: -> @children().each (index, element) -> $(element).view().expand() From 7c4c44df5a7deb6a28da800a27f756e916b769f9 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 18:49:39 -0800 Subject: [PATCH 36/53] Subscribe to collapse event in PathView --- src/packages/command-panel/lib/path-view.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/packages/command-panel/lib/path-view.coffee b/src/packages/command-panel/lib/path-view.coffee index 941bc2b1a..05d28ecde 100644 --- a/src/packages/command-panel/lib/path-view.coffee +++ b/src/packages/command-panel/lib/path-view.coffee @@ -17,7 +17,7 @@ class PathView extends View initialize: -> @on 'mousedown', @onPathSelected - rootView.command 'command-panel:collapse-result', (e) => + @subscribe rootView, 'command-panel:collapse-result', => @collapse(true) if @find('.selected').length onPathSelected: (event) => From 61481fc1d89dd47f97d332f43db2733407ccdac5 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 19:13:23 -0800 Subject: [PATCH 37/53] Execute operation from OperationView --- .../command-panel/lib/operation-view.coffee | 15 +++++++++++++++ src/packages/command-panel/lib/path-view.coffee | 8 ++++---- .../command-panel/lib/preview-list.coffee | 13 ++----------- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/packages/command-panel/lib/operation-view.coffee b/src/packages/command-panel/lib/operation-view.coffee index 8f231ab75..580c2a037 100644 --- a/src/packages/command-panel/lib/operation-view.coffee +++ b/src/packages/command-panel/lib/operation-view.coffee @@ -10,3 +10,18 @@ class OperationView extends View @span prefix @span match, class: 'match' @span suffix + + initialize: ({@previewList, @operation}) -> + @previewList.on 'core:confirm', => + if @hasClass('selected') + @executeOperation() + false + @on 'mousedown', (e) => + @executeOperation() + @addClass('selected') + + executeOperation: -> + editSession = rootView.open(@operation.getPath()) + bufferRange = @operation.execute(editSession) + editSession.setSelectedBufferRange(bufferRange, autoscroll: true) if bufferRange + @previewList.focus() diff --git a/src/packages/command-panel/lib/path-view.coffee b/src/packages/command-panel/lib/path-view.coffee index 05d28ecde..de7672618 100644 --- a/src/packages/command-panel/lib/path-view.coffee +++ b/src/packages/command-panel/lib/path-view.coffee @@ -5,7 +5,7 @@ $ = require 'jquery' module.exports = class PathView extends View - @content: ({path, operations} = {}) -> + @content: ({path, operations, previewList} = {}) -> classes = ['path'] classes.push('readme') if fs.isReadmePath(path) @li class: classes.join(' '), => @@ -13,11 +13,11 @@ class PathView extends View @span "(#{operations.length})", class: 'path-match-number' @ul outlet: 'matches', class: 'matches', => for operation in operations - @subview "operation#{operation.index}", new OperationView({operation}) + @subview "operation#{operation.index}", new OperationView({operation, previewList}) - initialize: -> + initialize: ({previewList}) -> @on 'mousedown', @onPathSelected - @subscribe rootView, 'command-panel:collapse-result', => + previewList.command 'command-panel:collapse-result', => @collapse(true) if @find('.selected').length onPathSelected: (event) => diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 9db65e474..2620b5cec 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -15,13 +15,12 @@ class PreviewList extends ScrollView initialize: (@rootView) -> super + @on 'core:move-down', => @selectNextOperation(); false @on 'core:move-up', => @selectPreviousOperation(); false - @on 'core:confirm', => @executeSelectedOperation() @on 'mousedown', 'li.operation', (e) => @setSelectedOperationIndex(parseInt($(e.target).closest('li').data('index'))) - @executeSelectedOperation() @command 'command-panel:collapse-all', => @collapseAllPaths() @command 'command-panel:expand-all', => @expandAllPaths() @@ -45,7 +44,7 @@ class PreviewList extends ScrollView operation.index = index for operation, index in operations operationsByPath = _.groupBy(operations, (operation) -> operation.getPath()) for path, operations of operationsByPath - @append new PathView({path, operations}) + @append new PathView({path, operations, previewList: this}) @setSelectedOperationIndex(0) @show() @@ -79,14 +78,6 @@ class PreviewList extends ScrollView @selectedOperationIndex = index - executeSelectedOperation: -> - operation = @getSelectedOperation() - editSession = @rootView.open(operation.getPath()) - bufferRange = operation.execute(editSession) - editSession.setSelectedBufferRange(bufferRange, autoscroll: true) if bufferRange - @focus() - false - getPathCount: -> _.keys(_.groupBy(@operations, (operation) -> operation.getPath())).length From 4088d33dc9d4b6609d1e01d9896f82becaa759bf Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 21:42:39 -0800 Subject: [PATCH 38/53] Allow paths to be selected This will allow them to be navigated to with the keyboard and collapsed or expanded. --- .../command-panel/lib/operation-view.coffee | 1 + .../command-panel/lib/preview-list.coffee | 49 ++++++++++--------- .../spec/command-panel-spec.coffee | 16 +++--- 3 files changed, 35 insertions(+), 31 deletions(-) diff --git a/src/packages/command-panel/lib/operation-view.coffee b/src/packages/command-panel/lib/operation-view.coffee index 580c2a037..b4cdb7845 100644 --- a/src/packages/command-panel/lib/operation-view.coffee +++ b/src/packages/command-panel/lib/operation-view.coffee @@ -18,6 +18,7 @@ class OperationView extends View false @on 'mousedown', (e) => @executeOperation() + @previewList.find('.selected').removeClass('selected') @addClass('selected') executeOperation: -> diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 2620b5cec..04ca0ef21 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -4,13 +4,13 @@ ScrollView = require 'scroll-view' _ = require 'underscore' fs = require 'fs' PathView = require './path-view' +OperationView = require './operation-view' module.exports = class PreviewList extends ScrollView @content: -> @ol class: 'preview-list', tabindex: -1 - selectedOperationIndex: 0 operations: null initialize: (@rootView) -> @@ -19,9 +19,6 @@ class PreviewList extends ScrollView @on 'core:move-down', => @selectNextOperation(); false @on 'core:move-up', => @selectPreviousOperation(); false - @on 'mousedown', 'li.operation', (e) => - @setSelectedOperationIndex(parseInt($(e.target).closest('li').data('index'))) - @command 'command-panel:collapse-all', => @collapseAllPaths() @command 'command-panel:expand-all', => @expandAllPaths() @@ -46,8 +43,8 @@ class PreviewList extends ScrollView for path, operations of operationsByPath @append new PathView({path, operations, previewList: this}) - @setSelectedOperationIndex(0) @show() + @find('.operation:first').addClass('selected') @setLineNumberWidth() setLineNumberWidth: -> @@ -58,25 +55,29 @@ class PreviewList extends ScrollView lineNumbers.width(maxWidth) selectNextOperation: -> - @setSelectedOperationIndex(@selectedOperationIndex + 1) + selectedView = @find('.selected').view() + + if selectedView instanceof PathView + nextView = selectedView.find('.operation:first') + else + nextView = selectedView.next().view() ? selectedView.closest('.path').next().view() + if nextView? + selectedView.removeClass('selected') + nextView.addClass('selected') + @scrollToElement(nextView) selectPreviousOperation: -> - @setSelectedOperationIndex(@selectedOperationIndex - 1) + selectedView = @find('.selected').view() - setSelectedOperationIndex: (index, scrollToOperation=true) -> - index = Math.max(0, index) - index = Math.min(@operations.length - 1, index) - @find('li.selected').removeClass('selected') - element = @find("ul.matches li.operation:eq(#{index})") - element.addClass('selected') + if selectedView instanceof PathView + previousView = selectedView.prev().find('.operation:last').view() + else + previousView = selectedView.prev().view() ? selectedView.closest('.path').view() - if scrollToOperation - if index is 0 - @scrollToTop() - else - @scrollToElement(element) - - @selectedOperationIndex = index + if previousView? + selectedView.removeClass('selected') + previousView.addClass('selected') + @scrollToElement(previousView) getPathCount: -> _.keys(_.groupBy(@operations, (operation) -> operation.getPath())).length @@ -89,7 +90,7 @@ class PreviewList extends ScrollView @operations = null getSelectedOperation: -> - @operations[@selectedOperationIndex] + @find('.operation.selected').view()?.operation scrollToElement: (element) -> top = @scrollTop() + element.offset().top - @offset().top @@ -101,9 +102,11 @@ class PreviewList extends ScrollView scrollToBottom: -> super() - @setSelectedOperationIndex(Infinity, false) + @find('.selected').removeClass('selected') + @find('.operation:last').addClass('selected') scrollToTop: -> super() - @setSelectedOperationIndex(0, false) + @find('.selected').removeClass('selected') + @find('.path:first').addClass('selected') diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index 797fc0c33..cd562961c 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -395,29 +395,29 @@ describe "CommandPanel", -> expect(previewList.find('li.operation:eq(1)')).toHaveClass 'selected' expect(previewList.getSelectedOperation()).toBe previewList.getOperations()[1] - _.times previewList.getOperations().length - 2, -> previewList.trigger 'core:move-down' + _.times previewList.getOperations().length + previewList.getPathCount(), -> previewList.trigger 'core:move-down' expect(previewList.find("li.operation:last")).toHaveClass 'selected' expect(previewList.getSelectedOperation()).toBe _.last(previewList.getOperations()) expect(previewList.scrollBottom()).toBeCloseTo previewList.prop('scrollHeight'), -1 - _.times previewList.getOperations().length, -> previewList.trigger 'core:move-up' + _.times previewList.getOperations().length + previewList.getPathCount(), -> previewList.trigger 'core:move-up' expect(previewList.scrollTop()).toBe 0 it "doesn't bubble up the event and the command panel text doesn't change", -> rootView.attachToDom() commandPanel.miniEditor.setText "command" previewList.focus() - previewList.trigger 'core:move-up' - expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' - expect(commandPanel.miniEditor.getText()).toBe 'command' previewList.trigger 'core:move-down' expect(previewList.find('li.operation:eq(1)')).toHaveClass 'selected' expect(commandPanel.miniEditor.getText()).toBe 'command' + previewList.trigger 'core:move-up' + expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' + expect(commandPanel.miniEditor.getText()).toBe 'command' describe "when move-to-top and move-to-bottom are triggered on the preview list", -> - it "selects the first/last operation", -> + it "selects the first path or last operation", -> rootView.attachToDom() expect(previewList.getOperations().length).toBeGreaterThan 0 expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' @@ -428,8 +428,8 @@ describe "CommandPanel", -> expect(previewList.getSelectedOperation()).toBe _.last(previewList.getOperations()) previewList.trigger 'core:move-to-top' - expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' - expect(previewList.getSelectedOperation()).toBe previewList.getOperations()[0] + expect(previewList.find('li.path:eq(0)')).toHaveClass 'selected' + expect(previewList.getSelectedOperation()).toBeUndefined() describe "when core:confirm is triggered on the preview list", -> it "opens the operation's buffer, selects and scrolls to the search result, and refocuses the preview list", -> From 20d7956cc14da99017572ae643fb77a39342aa20 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 21:49:48 -0800 Subject: [PATCH 39/53] Expand result with right arrow key --- src/packages/command-panel/keymaps/command-panel.cson | 1 + src/packages/command-panel/lib/path-view.coffee | 7 ++++++- src/packages/command-panel/spec/command-panel-spec.coffee | 6 ++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/packages/command-panel/keymaps/command-panel.cson b/src/packages/command-panel/keymaps/command-panel.cson index d0c7f1b58..1225c4582 100644 --- a/src/packages/command-panel/keymaps/command-panel.cson +++ b/src/packages/command-panel/keymaps/command-panel.cson @@ -19,3 +19,4 @@ '.command-panel .preview-list': 'left': 'command-panel:collapse-result' + 'right': 'command-panel:expand-result' diff --git a/src/packages/command-panel/lib/path-view.coffee b/src/packages/command-panel/lib/path-view.coffee index de7672618..a22a02267 100644 --- a/src/packages/command-panel/lib/path-view.coffee +++ b/src/packages/command-panel/lib/path-view.coffee @@ -18,7 +18,12 @@ class PathView extends View initialize: ({previewList}) -> @on 'mousedown', @onPathSelected previewList.command 'command-panel:collapse-result', => - @collapse(true) if @find('.selected').length + @collapse(true) if @isSelected() + previewList.command 'command-panel:expand-result', => + @expand(true) if @isSelected() + + isSelected: -> + @hasClass('selected') or @find('.selected').length onPathSelected: (event) => e = $(event.target) diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index cd562961c..dc4250ce3 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -479,9 +479,11 @@ describe "CommandPanel", -> previewList.find('li.path:first-child').mousedown() expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() - describe "when command-panel:collapse-result is triggered", -> - it "collapses the path of the selected operation", -> + describe "when command-panel:collapse-result and command-panel:expand-result are triggered", -> + it "collapses and expands the path of the selection", -> rootView.attachToDom() expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() previewList.trigger 'command-panel:collapse-result' expect(previewList.find('li.path:first-child ul.matches')).toBeHidden() + previewList.trigger 'command-panel:expand-result' + expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() From 1cc6429dc7281c5cb09444d18392a74358bade6e Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 21:57:42 -0800 Subject: [PATCH 40/53] Select path when collapsed via command --- .../command-panel/lib/path-view.coffee | 19 +++++++++++++------ .../spec/command-panel-spec.coffee | 4 +++- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/packages/command-panel/lib/path-view.coffee b/src/packages/command-panel/lib/path-view.coffee index a22a02267..2d64de407 100644 --- a/src/packages/command-panel/lib/path-view.coffee +++ b/src/packages/command-panel/lib/path-view.coffee @@ -15,16 +15,20 @@ class PathView extends View for operation in operations @subview "operation#{operation.index}", new OperationView({operation, previewList}) - initialize: ({previewList}) -> + initialize: ({@previewList}) -> @on 'mousedown', @onPathSelected - previewList.command 'command-panel:collapse-result', => - @collapse(true) if @isSelected() - previewList.command 'command-panel:expand-result', => + @previewList.command 'command-panel:collapse-result', => + @collapse(true, true) if @isSelected() + @previewList.command 'command-panel:expand-result', => @expand(true) if @isSelected() isSelected: -> @hasClass('selected') or @find('.selected').length + setSelected: -> + @previewList.find('.selected').removeClass('selected') + @addClass('selected') + onPathSelected: (event) => e = $(event.target) e = e.parent() if e.parent().hasClass 'path' @@ -43,9 +47,12 @@ class PathView extends View @matches.show() @removeClass 'is-collapsed' - collapse: (animate=false) -> + collapse: (animate=false, select=false) -> if animate - @matches.hide 100, => @addClass 'is-collapsed' + @matches.hide 100, => + @addClass 'is-collapsed' + @setSelected() if select else @matches.hide() @addClass 'is-collapsed' + @setSelected() if select diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index dc4250ce3..52796cb32 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -480,10 +480,12 @@ describe "CommandPanel", -> expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() describe "when command-panel:collapse-result and command-panel:expand-result are triggered", -> - it "collapses and expands the path of the selection", -> + it "collapses and selects the path, and then expands the selected path", -> rootView.attachToDom() expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() previewList.trigger 'command-panel:collapse-result' expect(previewList.find('li.path:first-child ul.matches')).toBeHidden() + expect(previewList.find('li.path:first-child')).toHaveClass 'selected' previewList.trigger 'command-panel:expand-result' expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() + expect(previewList.find('li.path:first-child')).toHaveClass 'selected' From b626ce91a9c7d8c7b4bbe0e0718a2971a727a765 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 22:06:00 -0800 Subject: [PATCH 41/53] Don't select operations if path is collapsed --- src/packages/command-panel/lib/preview-list.coffee | 8 ++++++-- .../command-panel/spec/command-panel-spec.coffee | 9 +++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 04ca0ef21..bd83211b0 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -58,7 +58,10 @@ class PreviewList extends ScrollView selectedView = @find('.selected').view() if selectedView instanceof PathView - nextView = selectedView.find('.operation:first') + if selectedView.hasClass('is-collapsed') + nextView = selectedView.next().view() + else + nextView = selectedView.find('.operation:first') else nextView = selectedView.next().view() ? selectedView.closest('.path').next().view() if nextView? @@ -70,7 +73,8 @@ class PreviewList extends ScrollView selectedView = @find('.selected').view() if selectedView instanceof PathView - previousView = selectedView.prev().find('.operation:last').view() + previousView = selectedView.prev() + previousView = previousView.find('.operation:last').view() unless previousView.hasClass('is-collapsed') else previousView = selectedView.prev().view() ? selectedView.closest('.path').view() diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index 52796cb32..6570f69dd 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -416,6 +416,15 @@ describe "CommandPanel", -> expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' expect(commandPanel.miniEditor.getText()).toBe 'command' + it "doesn't select collapsed operations", -> + rootView.attachToDom() + previewList.trigger 'command-panel:collapse-result' + expect(previewList.find('li.path:eq(0)')).toHaveClass 'selected' + previewList.trigger 'core:move-down' + expect(previewList.find('li.path:eq(1)')).toHaveClass 'selected' + previewList.trigger 'core:move-up' + expect(previewList.find('li.path:eq(0)')).toHaveClass 'selected' + describe "when move-to-top and move-to-bottom are triggered on the preview list", -> it "selects the first path or last operation", -> rootView.attachToDom() From 59a613de73e8ce1c8a24d029a34dd720c61b5653 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 22:08:30 -0800 Subject: [PATCH 42/53] Focus preview list after expanding/collapsing all --- src/packages/command-panel/lib/command-panel-view.coffee | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/packages/command-panel/lib/command-panel-view.coffee b/src/packages/command-panel/lib/command-panel-view.coffee index 5a05a999c..949182ab9 100644 --- a/src/packages/command-panel/lib/command-panel-view.coffee +++ b/src/packages/command-panel/lib/command-panel-view.coffee @@ -98,9 +98,11 @@ class CommandPanelView extends View onExpandAll: (event) => @previewList.expandAllPaths() + @previewList.focus() onCollapseAll: (event) => - @previewList.collapseAllPaths() + @previewList.collapseAllPaths() + @previewList.focus() attach: (text='', options={}) -> @errorMessages.hide() From 2d4ea98c0aef15d7501141330da3c638a3114dc2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 22:09:13 -0800 Subject: [PATCH 43/53] Always retain selection on path node when collapsing --- src/packages/command-panel/lib/path-view.coffee | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/packages/command-panel/lib/path-view.coffee b/src/packages/command-panel/lib/path-view.coffee index 2d64de407..4e0fddae9 100644 --- a/src/packages/command-panel/lib/path-view.coffee +++ b/src/packages/command-panel/lib/path-view.coffee @@ -18,7 +18,7 @@ class PathView extends View initialize: ({@previewList}) -> @on 'mousedown', @onPathSelected @previewList.command 'command-panel:collapse-result', => - @collapse(true, true) if @isSelected() + @collapse(true) if @isSelected() @previewList.command 'command-panel:expand-result', => @expand(true) if @isSelected() @@ -47,12 +47,12 @@ class PathView extends View @matches.show() @removeClass 'is-collapsed' - collapse: (animate=false, select=false) -> + collapse: (animate=false) -> if animate @matches.hide 100, => @addClass 'is-collapsed' - @setSelected() if select + @setSelected() if @isSelected() else @matches.hide() @addClass 'is-collapsed' - @setSelected() if select + @setSelected() if @isSelected() From cc10ae4bdb79880a16b28d7ebca83374a468e4ac Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 22:30:19 -0800 Subject: [PATCH 44/53] Only set selected background on path details Previously the background of the entire li was changed when selected. --- src/packages/command-panel/lib/path-view.coffee | 5 +++-- static/command-panel.css | 4 ++-- themes/atom-dark-ui/command-panel.css | 6 ++++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/packages/command-panel/lib/path-view.coffee b/src/packages/command-panel/lib/path-view.coffee index 4e0fddae9..b9022b6e9 100644 --- a/src/packages/command-panel/lib/path-view.coffee +++ b/src/packages/command-panel/lib/path-view.coffee @@ -9,8 +9,9 @@ class PathView extends View classes = ['path'] classes.push('readme') if fs.isReadmePath(path) @li class: classes.join(' '), => - @span class: 'path-name', path - @span "(#{operations.length})", class: 'path-match-number' + @div class: 'path-details', => + @span class: 'path-name', path + @span "(#{operations.length})", class: 'path-match-number' @ul outlet: 'matches', class: 'matches', => for operation in operations @subview "operation#{operation.index}", new OperationView({operation, previewList}) diff --git a/static/command-panel.css b/static/command-panel.css index 75b7bfbe8..9bc024fee 100644 --- a/static/command-panel.css +++ b/static/command-panel.css @@ -50,7 +50,7 @@ -webkit-user-select: none; } -.command-panel .preview-list .path:before { +.command-panel .preview-list .path-details:before { font-family: 'Octicons Regular'; font-size: 12px; width: 12px; @@ -62,7 +62,7 @@ top: 0; } -.command-panel .preview-list .path.is-collapsed:before { +.command-panel .preview-list .is-collapsed .path-details:before { content: "\f05a"; } diff --git a/themes/atom-dark-ui/command-panel.css b/themes/atom-dark-ui/command-panel.css index 8e25aed1d..0014608b7 100644 --- a/themes/atom-dark-ui/command-panel.css +++ b/themes/atom-dark-ui/command-panel.css @@ -51,11 +51,13 @@ color: #fff; } -.command-panel .preview-list li.selected { +.command-panel .preview-list .path.selected .path-details, +.command-panel .preview-list li.operation.selected { background-color: rgba(255, 255, 255, 0.05); } -.command-panel .preview-list:focus li.selected { +.command-panel .preview-list:focus .path.selected .path-details, +.command-panel .preview-list:focus li.operation.selected { background-color: rgba(255, 255, 255, 0.05); } From 528050adbb35113ae6ba60b9b9ceb5e26989af42 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 22:33:56 -0800 Subject: [PATCH 45/53] Remove unneeded rootView ivar --- src/packages/command-panel/lib/preview-list.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index bd83211b0..0abdf6dfa 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -13,7 +13,7 @@ class PreviewList extends ScrollView operations: null - initialize: (@rootView) -> + initialize: -> super @on 'core:move-down', => @selectNextOperation(); false From df227cbfc83c64015d66e56bac14cba01266ab13 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 22:36:00 -0800 Subject: [PATCH 46/53] Disable selection in preview count and buttons --- static/command-panel.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/static/command-panel.css b/static/command-panel.css index 9bc024fee..313f137f4 100644 --- a/static/command-panel.css +++ b/static/command-panel.css @@ -44,6 +44,11 @@ font-size: 11px; } +.command-panel .preview-count, +.command-panel .expand-collapse { + -webkit-user-select: none; +} + .command-panel .preview-list .path { padding-left: 5px; position: relative; From 156d96a2e7200ae5b15af229fdc85476e02394b4 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 22:47:01 -0800 Subject: [PATCH 47/53] Toggle expansion on core:confirm event --- src/packages/command-panel/lib/path-view.coffee | 4 ++++ .../command-panel/spec/command-panel-spec.coffee | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/src/packages/command-panel/lib/path-view.coffee b/src/packages/command-panel/lib/path-view.coffee index b9022b6e9..970fc49b4 100644 --- a/src/packages/command-panel/lib/path-view.coffee +++ b/src/packages/command-panel/lib/path-view.coffee @@ -22,6 +22,10 @@ class PathView extends View @collapse(true) if @isSelected() @previewList.command 'command-panel:expand-result', => @expand(true) if @isSelected() + @previewList.command 'core:confirm', => + if @hasClass('selected') + @toggle(true) + false isSelected: -> @hasClass('selected') or @find('.selected').length diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index 6570f69dd..649a5fa92 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -465,6 +465,15 @@ describe "CommandPanel", -> expect(executeHandler).not.toHaveBeenCalled() + it "toggles the expansion state when a path is selected", -> + rootView.attachToDom() + previewList.trigger 'core:move-to-top' + expect(previewList.find('li.path:first')).toHaveClass 'selected' + expect(previewList.find('li.path:first')).not.toHaveClass 'is-collapsed' + previewList.trigger 'core:confirm' + expect(previewList.find('li.path:first')).toHaveClass 'selected' + expect(previewList.find('li.path:first')).toHaveClass 'is-collapsed' + describe "when an operation in the preview list is clicked", -> it "opens the operation's buffer, selects the search result, and refocuses the preview list", -> spyOn(previewList, 'focus') From 122e0e5f91a5ef3cf0f88af8c4260936f6d66f35 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 22:49:34 -0800 Subject: [PATCH 48/53] Use pathDetails outlet for mousedown event --- src/packages/command-panel/lib/path-view.coffee | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/packages/command-panel/lib/path-view.coffee b/src/packages/command-panel/lib/path-view.coffee index 970fc49b4..dad950c81 100644 --- a/src/packages/command-panel/lib/path-view.coffee +++ b/src/packages/command-panel/lib/path-view.coffee @@ -9,7 +9,7 @@ class PathView extends View classes = ['path'] classes.push('readme') if fs.isReadmePath(path) @li class: classes.join(' '), => - @div class: 'path-details', => + @div outlet: 'pathDetails', class: 'path-details', => @span class: 'path-name', path @span "(#{operations.length})", class: 'path-match-number' @ul outlet: 'matches', class: 'matches', => @@ -17,7 +17,7 @@ class PathView extends View @subview "operation#{operation.index}", new OperationView({operation, previewList}) initialize: ({@previewList}) -> - @on 'mousedown', @onPathSelected + @pathDetails.on 'mousedown', => @toggle(true) @previewList.command 'command-panel:collapse-result', => @collapse(true) if @isSelected() @previewList.command 'command-panel:expand-result', => @@ -34,11 +34,6 @@ class PathView extends View @previewList.find('.selected').removeClass('selected') @addClass('selected') - onPathSelected: (event) => - e = $(event.target) - e = e.parent() if e.parent().hasClass 'path' - @toggle(true) if e.hasClass 'path' - toggle: (animate) -> if @hasClass('is-collapsed') @expand(animate) From 5ec2fb6866142c335dbf71c53274f4a1dc624702 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 22:52:28 -0800 Subject: [PATCH 49/53] Update specs for new path view layout --- src/packages/command-panel/spec/command-panel-spec.coffee | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index 649a5fa92..f3e66f441 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -293,7 +293,7 @@ describe "CommandPanel", -> expect(commandPanel.previewList).toBeVisible() expect(commandPanel.previewList).toMatchSelector ':focus' previewItem = commandPanel.previewList.find("li:contains(sample.js):first") - expect(previewItem.find('> span').text()).toBe "sample.js(1)" + expect(previewItem.find('.path-details').text()).toBe "sample.js(1)" expect(previewItem.next().find('.preview').text()).toBe "var quicksort = function () {" expect(previewItem.next().find('.preview > .match').text()).toBe "quicksort" @@ -491,10 +491,10 @@ describe "CommandPanel", -> it "shows and hides the matches for that path", -> rootView.attachToDom() expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() - previewList.find('li.path:first-child').mousedown() + previewList.find('li.path:first-child .path-details').mousedown() expect(previewList.find('li.path:first-child ul.matches')).toBeHidden() - previewList.find('li.path:first-child').mousedown() + previewList.find('li.path:first-child .path-details').mousedown() expect(previewList.find('li.path:first-child ul.matches')).toBeVisible() describe "when command-panel:collapse-result and command-panel:expand-result are triggered", -> From fd2edb1d4d3dfb6752f989788728fbed8138295d Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 23:02:02 -0800 Subject: [PATCH 50/53] Only select last operation if path is expanded --- src/packages/command-panel/lib/preview-list.coffee | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/packages/command-panel/lib/preview-list.coffee b/src/packages/command-panel/lib/preview-list.coffee index 0abdf6dfa..908b28971 100644 --- a/src/packages/command-panel/lib/preview-list.coffee +++ b/src/packages/command-panel/lib/preview-list.coffee @@ -107,7 +107,11 @@ class PreviewList extends ScrollView super() @find('.selected').removeClass('selected') - @find('.operation:last').addClass('selected') + lastPath = @find('.path:last') + if lastPath.hasClass('is-collapsed') + lastPath.addClass('selected') + else + lastPath.find('.operation:last').addClass('selected') scrollToTop: -> super() From 48407da6aa7098ce30c96de9c50e76686b93d1f4 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 13 Feb 2013 23:05:21 -0800 Subject: [PATCH 51/53] Subscribe to preview list events --- src/packages/command-panel/lib/operation-view.coffee | 2 +- src/packages/command-panel/lib/path-view.coffee | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/packages/command-panel/lib/operation-view.coffee b/src/packages/command-panel/lib/operation-view.coffee index b4cdb7845..2655a4fba 100644 --- a/src/packages/command-panel/lib/operation-view.coffee +++ b/src/packages/command-panel/lib/operation-view.coffee @@ -12,7 +12,7 @@ class OperationView extends View @span suffix initialize: ({@previewList, @operation}) -> - @previewList.on 'core:confirm', => + @subscribe @previewList, 'core:confirm', => if @hasClass('selected') @executeOperation() false diff --git a/src/packages/command-panel/lib/path-view.coffee b/src/packages/command-panel/lib/path-view.coffee index dad950c81..b4f2ba151 100644 --- a/src/packages/command-panel/lib/path-view.coffee +++ b/src/packages/command-panel/lib/path-view.coffee @@ -18,11 +18,11 @@ class PathView extends View initialize: ({@previewList}) -> @pathDetails.on 'mousedown', => @toggle(true) - @previewList.command 'command-panel:collapse-result', => + @subscribe @previewList, 'command-panel:collapse-result', => @collapse(true) if @isSelected() - @previewList.command 'command-panel:expand-result', => + @subscribe @previewList, 'command-panel:expand-result', => @expand(true) if @isSelected() - @previewList.command 'core:confirm', => + @subscribe @previewList, 'core:confirm', => if @hasClass('selected') @toggle(true) false From ea34ad06087f86057a7eaefaa960f5f11794b343 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 14 Feb 2013 09:30:57 -0800 Subject: [PATCH 52/53] Expand/collapse result with ctrl-[] --- src/packages/command-panel/keymaps/command-panel.cson | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/packages/command-panel/keymaps/command-panel.cson b/src/packages/command-panel/keymaps/command-panel.cson index 1225c4582..8fb5a304e 100644 --- a/src/packages/command-panel/keymaps/command-panel.cson +++ b/src/packages/command-panel/keymaps/command-panel.cson @@ -19,4 +19,6 @@ '.command-panel .preview-list': 'left': 'command-panel:collapse-result' + 'ctrl-[': 'command-panel:collapse-result' 'right': 'command-panel:expand-result' + 'ctrl-]': 'command-panel:expand-result' From f3b41e4321814404bdf00887e1b509a60b2399eb Mon Sep 17 00:00:00 2001 From: Justin Palmer Date: Thu, 14 Feb 2013 09:56:31 -0800 Subject: [PATCH 53/53] command panel styles for atom-light-ui --- themes/atom-light-ui/command-panel.css | 31 ++++++++++++++++++++------ 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/themes/atom-light-ui/command-panel.css b/themes/atom-light-ui/command-panel.css index b17c7654a..aac964ac4 100644 --- a/themes/atom-light-ui/command-panel.css +++ b/themes/atom-light-ui/command-panel.css @@ -8,8 +8,7 @@ .command-panel .header { padding: 5px; background-image: -webkit-linear-gradient(#e7e7e7, #cfcfcf); - border: 1px solid rgba(0, 0, 0, 0.1); - border-bottom: none; + border: 1px solid rgba(0, 0, 0, 0.2); padding: 5px; border-top-right-radius: 3px; border-top-left-radius: 3px; @@ -22,7 +21,7 @@ .command-panel .preview-list { background-color: #e7e7e7; color: #222; - border: 1px solid #989898; + border: 1px solid #ccc; } .command-panel .preview-count { @@ -34,11 +33,24 @@ } .command-panel .preview-list .path { - color: #3D5075; + color: #999; + border-top: 1px solid #ddd; +} + +.command-panel .preview-list .path-name { + color: #555; +} + +.command-panel .preview-list .path:before { + color: #555; +} + +.command-panel .preview-list .path:hover:before { + color: #000; } .command-panel .preview-list .line-number { - color: #3D5075; + color: #999; } .command-panel .preview-list .path-match-number { @@ -46,5 +58,10 @@ } .command-panel .preview-list .preview .match { - background-color: #c8d4d7; -} \ No newline at end of file + background-color: #bbb; + color: #333; +} + +.command-panel .preview-list li.operation { + color: #777; +}