From a891dec09330657b92ae21ff4804fa8f89e07de9 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 4 Jan 2013 08:59:20 -0800 Subject: [PATCH] Wrap around the preview-list when moving up/down --- .../spec/command-panel-spec.coffee | 23 +++++++++++++------ .../command-panel/src/preview-list.coffee | 10 ++++++-- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/packages/command-panel/spec/command-panel-spec.coffee b/src/packages/command-panel/spec/command-panel-spec.coffee index 6de6ff56e..2938e9043 100644 --- a/src/packages/command-panel/spec/command-panel-spec.coffee +++ b/src/packages/command-panel/spec/command-panel-spec.coffee @@ -383,10 +383,6 @@ describe "CommandPanel", -> expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' expect(previewList.getSelectedOperation()).toBe previewList.getOperations()[0] - previewList.trigger 'core:move-up' - expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' - expect(previewList.getSelectedOperation()).toBe previewList.getOperations()[0] - previewList.trigger 'core:move-down' expect(previewList.find('li.operation:eq(1)')).toHaveClass 'selected' expect(previewList.getSelectedOperation()).toBe previewList.getOperations()[1] @@ -399,7 +395,7 @@ describe "CommandPanel", -> expect(previewList.find('li.operation:eq(1)')).toHaveClass 'selected' expect(previewList.getSelectedOperation()).toBe previewList.getOperations()[1] - _.times previewList.getOperations().length, -> previewList.trigger 'core:move-down' + _.times previewList.getOperations().length - 2, -> previewList.trigger 'core:move-down' expect(previewList.find("li.operation:last")).toHaveClass 'selected' expect(previewList.getSelectedOperation()).toBe _.last(previewList.getOperations()) @@ -408,15 +404,28 @@ describe "CommandPanel", -> _.times previewList.getOperations().length, -> previewList.trigger 'core:move-up' + it "wraps around when the list is at the beginning or end", -> + rootView.attachToDom() + expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' + expect(previewList.getSelectedOperation()).toBe previewList.getOperations()[0] + + previewList.trigger 'core:move-up' + expect(previewList.find('li.operation:last')).toHaveClass 'selected' + expect(previewList.getSelectedOperation()).toBe _.last(previewList.getOperations()) + + previewList.trigger 'core:move-down' + expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' + expect(previewList.getSelectedOperation()).toBe previewList.getOperations()[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(previewList.find('li.operation:last')).toHaveClass 'selected' expect(commandPanel.miniEditor.getText()).toBe 'command' previewList.trigger 'core:move-down' - expect(previewList.find('li.operation:eq(1)')).toHaveClass 'selected' + expect(previewList.find('li.operation:eq(0)')).toHaveClass 'selected' expect(commandPanel.miniEditor.getText()).toBe 'command' describe "when core:confirm is triggered on the preview list", -> diff --git a/src/packages/command-panel/src/preview-list.coffee b/src/packages/command-panel/src/preview-list.coffee index b8030de31..d64308309 100644 --- a/src/packages/command-panel/src/preview-list.coffee +++ b/src/packages/command-panel/src/preview-list.coffee @@ -56,10 +56,16 @@ class PreviewList extends ScrollView lineNumbers.width(maxWidth) selectNextOperation: -> - @setSelectedOperationIndex(@selectedOperationIndex + 1) + if @selectedOperationIndex is @operations.length - 1 + @setSelectedOperationIndex(0) + else + @setSelectedOperationIndex(@selectedOperationIndex + 1) selectPreviousOperation: -> - @setSelectedOperationIndex(@selectedOperationIndex - 1) + if @selectedOperationIndex is 0 + @setSelectedOperationIndex(@operations.length - 1) + else + @setSelectedOperationIndex(@selectedOperationIndex - 1) setSelectedOperationIndex: (index) -> index = Math.max(0, index)