From 5bf951d96f846558f5a4cf4f037d2b730fce6785 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Fri, 12 Oct 2012 08:47:48 -0700 Subject: [PATCH] Create ScrollView super class Binds support for page up, page down, move to top, and move to bottom in the initialize method. --- src/app/scroll-view.coffee | 8 ++++++++ src/extensions/command-panel/command-panel.coffee | 5 ----- src/extensions/command-panel/preview-list.coffee | 6 ++++-- .../keybindings-view/keybindings-view.coffee | 10 ++++------ .../markdown-preview/markdown-preview.coffee | 9 +++------ src/extensions/tree-view/tree-view.coffee | 8 +++----- 6 files changed, 22 insertions(+), 24 deletions(-) create mode 100644 src/app/scroll-view.coffee diff --git a/src/app/scroll-view.coffee b/src/app/scroll-view.coffee new file mode 100644 index 000000000..f89a5c5da --- /dev/null +++ b/src/app/scroll-view.coffee @@ -0,0 +1,8 @@ +{View} = require 'space-pen' +module.exports = +class ScrollView extends View + initialize: -> + @on 'core:page-up', => @pageUp() + @on 'core:page-down', => @pageDown() + @on 'core:move-to-top', => @scrollToTop() + @on 'core:move-to-bottom', => @scrollToBottom() diff --git a/src/extensions/command-panel/command-panel.coffee b/src/extensions/command-panel/command-panel.coffee index 399c08379..ea5912b2f 100644 --- a/src/extensions/command-panel/command-panel.coffee +++ b/src/extensions/command-panel/command-panel.coffee @@ -65,11 +65,6 @@ class CommandPanel extends View @on 'core:move-up', => @navigateBackwardInHistory() @on 'core:move-down', => @navigateForwardInHistory() - @previewList.on 'core:page-up', => @previewList.pageUp() - @previewList.on 'core:page-down', => @previewList.pageDown() - @previewList.on 'core:move-to-top', => @previewList.scrollToTop() - @previewList.on 'core:move-to-bottom', => @previewList.scrollToBottom() - @previewList.hide() destroy: -> diff --git a/src/extensions/command-panel/preview-list.coffee b/src/extensions/command-panel/preview-list.coffee index 733749b0c..e150952a8 100644 --- a/src/extensions/command-panel/preview-list.coffee +++ b/src/extensions/command-panel/preview-list.coffee @@ -1,8 +1,9 @@ $ = require 'jquery' -{$$$, View} = require 'space-pen' +{$$$} = require 'space-pen' +ScrollView = require 'scroll-view' module.exports = -class PreviewList extends View +class PreviewList extends ScrollView @content: -> @ol class: 'preview-list', tabindex: -1, -> @@ -10,6 +11,7 @@ class PreviewList extends View operations: null initialize: (@rootView) -> + super @on 'core:move-down', => @selectNextOperation() @on 'core:move-up', => @selectPreviousOperation() @on 'command-panel:execute', => @executeSelectedOperation() diff --git a/src/extensions/keybindings-view/keybindings-view.coffee b/src/extensions/keybindings-view/keybindings-view.coffee index 2a55e7c1d..de51dda39 100644 --- a/src/extensions/keybindings-view/keybindings-view.coffee +++ b/src/extensions/keybindings-view/keybindings-view.coffee @@ -1,7 +1,8 @@ -{View, $$} = require 'space-pen' +{$$} = require 'space-pen' +ScrollView = require 'scroll-view' module.exports = -class KeybindingsView extends View +class KeybindingsView extends ScrollView @activate: (rootView, state) -> requireStylesheet 'keybinding-view.css' @instance = new this(rootView) @@ -11,12 +12,9 @@ class KeybindingsView extends View @ul outlet: 'keybindingList' initialize: (@rootView) -> + super @rootView.on 'keybindings-view:attach', => @attach() @on 'keybindings-view:detach', => @detach() - @on 'core:page-up', => @pageUp() - @on 'core:page-down', => @pageDown() - @on 'core:move-to-top', => @scrollToTop() - @on 'core:move-to-bottom', => @scrollToBottom() attach: -> @keybindingList.empty() diff --git a/src/extensions/markdown-preview/markdown-preview.coffee b/src/extensions/markdown-preview/markdown-preview.coffee index 3d260285e..a6cbe9404 100644 --- a/src/extensions/markdown-preview/markdown-preview.coffee +++ b/src/extensions/markdown-preview/markdown-preview.coffee @@ -1,9 +1,9 @@ -{View} = require 'space-pen' +ScrollView = require 'scroll-view' fs = require 'fs' $ = require 'jquery' module.exports = -class MarkdownPreview extends View +class MarkdownPreview extends ScrollView @activate: (rootView, state) -> requireStylesheet 'markdown-preview.css' @instance = new this(rootView) @@ -14,15 +14,12 @@ class MarkdownPreview extends View @div class: 'markdown-spinner', outlet: 'markdownSpinner' initialize: (@rootView) -> + super @rootView.on 'markdown-preview:attach', => path = rootView.getActiveEditor()?.getPath() @attach() if @isMarkdownFile(path) @on 'markdown-preview:detach', => @detach() - @on 'core:page-up', => @pageUp() - @on 'core:page-down', => @pageDown() - @on 'core:move-to-top', => @scrollToTop() - @on 'core:move-to-bottom', => @scrollToBottom() attach: -> @rootView.append(this) diff --git a/src/extensions/tree-view/tree-view.coffee b/src/extensions/tree-view/tree-view.coffee index a3caff950..4a17f51f0 100644 --- a/src/extensions/tree-view/tree-view.coffee +++ b/src/extensions/tree-view/tree-view.coffee @@ -1,4 +1,5 @@ {View, $$} = require 'space-pen' +ScrollView = require 'scroll-view' Directory = require 'directory' DirectoryView = require 'tree-view/directory-view' FileView = require 'tree-view/file-view' @@ -9,7 +10,7 @@ $ = require 'jquery' _ = require 'underscore' module.exports = -class TreeView extends View +class TreeView extends ScrollView @activate: (rootView, state) -> requireStylesheet 'tree-view.css' @@ -45,13 +46,10 @@ class TreeView extends View selectedPath: null initialize: (@rootView) -> + super @on 'click', '.entry', (e) => @entryClicked(e) @on 'core:move-up', => @moveUp() @on 'core:move-down', => @moveDown() - @on 'core:move-to-top', => @scrollToTop() - @on 'core:move-to-bottom', => @scrollToBottom() - @on 'core:page-up', => @pageUp() - @on 'core:page-down', => @pageDown() @on 'tree-view:expand-directory', => @expandDirectory() @on 'tree-view:collapse-directory', => @collapseDirectory() @on 'tree-view:open-selected-entry', => @openSelectedEntry(true)