Skip to content
This repository has been archived by the owner on Dec 15, 2022. It is now read-only.

Commit

Permalink
Use atom-space-pen-views instead of deprecated atom exports
Browse files Browse the repository at this point in the history
Signed-off-by: Nathan Sobo <nathan@github.com>
  • Loading branch information
maxbrunsfeld authored and Nathan Sobo committed Nov 28, 2014
1 parent d12b678 commit dadca08
Show file tree
Hide file tree
Showing 4 changed files with 192 additions and 185 deletions.
20 changes: 10 additions & 10 deletions lib/dialog.coffee
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
{$, EditorView, View} = require 'atom'
{$, TextEditorView, View} = require 'atom-space-pen-views'
path = require 'path'

module.exports =
class Dialog extends View
@content: ({prompt} = {}) ->
@div class: 'tree-view-dialog', =>
@label prompt, class: 'icon', outlet: 'promptText'
@subview 'miniEditor', new EditorView(mini: true)
@subview 'miniEditor', new TextEditorView(mini: true)
@div class: 'error-message', outlet: 'errorMessage'

initialize: ({initialPath, select, iconClass} = {}) ->
@promptText.addClass(iconClass) if iconClass
@on 'core:confirm', => @onConfirm(@miniEditor.getText())
@on 'core:cancel', => @cancel()
@miniEditor.hiddenInput.on 'focusout', => @remove()
@miniEditor.getEditor().getBuffer().on 'changed', => @showError()

@miniEditor.setText(initialPath)
atom.commands.add @element,
'core:confirm': => @onConfirm(@miniEditor.getText())
'core:cancel': => @cancel()
@miniEditor.on 'blur', => @remove()
@miniEditor.getModel().getBuffer().on 'changed', => @showError()
@miniEditor.getModel().setText(initialPath)

if select
extension = path.extname(initialPath)
Expand All @@ -26,12 +26,12 @@ class Dialog extends View
else
selectionEnd = initialPath.length - extension.length
range = [[0, initialPath.length - baseName.length], [0, selectionEnd]]
@miniEditor.getEditor().setSelectedBufferRange(range)
@miniEditor.getModel().setSelectedBufferRange(range)

attach: ->
@panel = atom.workspace.addModalPanel(item: this.element)
@miniEditor.focus()
@miniEditor.scrollToCursorPosition()
@miniEditor.getModel().scrollToCursorPosition()

close: ->
@panel.destroy()
Expand Down
101 changes: 53 additions & 48 deletions lib/tree-view.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ path = require 'path'
shell = require 'shell'

_ = require 'underscore-plus'
{$, BufferedProcess, ScrollView} = require 'atom'
{BufferedProcess, CompositeDisposable} = require 'atom'
{$, View} = require 'atom-space-pen-views'
fs = require 'fs-plus'

AddDialog = null # Defer requiring until actually needed
Expand All @@ -16,7 +17,7 @@ FileView = require './file-view'
LocalStorage = window.localStorage

module.exports =
class TreeView extends ScrollView
class TreeView extends View
panel: null

@content: ->
Expand All @@ -26,8 +27,7 @@ class TreeView extends ScrollView
@div class: 'tree-view-resize-handle', outlet: 'resizeHandle'

initialize: (state) ->
super

@disposables = new CompositeDisposable
@focusAfterAttach = false
@root = null
@scrollLeftAfterAttach = -1
Expand All @@ -40,9 +40,9 @@ class TreeView extends ScrollView
process.nextTick =>
@onStylesheetsChanged()
onStylesheetsChanged = _.debounce(@onStylesheetsChanged, 100)
@subscribe atom.styles.onDidAddStyleElement(onStylesheetsChanged)
@subscribe atom.styles.onDidRemoveStyleElement(onStylesheetsChanged)
@subscribe atom.styles.onDidUpdateStyleElement(onStylesheetsChanged)
@disposables.add atom.styles.onDidAddStyleElement(onStylesheetsChanged)
@disposables.add atom.styles.onDidRemoveStyleElement(onStylesheetsChanged)
@disposables.add atom.styles.onDidUpdateStyleElement(onStylesheetsChanged)

@updateRoot(state.directoryExpansionStates)
@selectEntry(@root) if @root?
Expand All @@ -55,12 +55,12 @@ class TreeView extends ScrollView
@width(state.width) if state.width > 0
@attach() if state.attached

afterAttach: (onDom) ->
attached: ->
@focus() if @focusAfterAttach
@scroller.scrollLeft(@scrollLeftAfterAttach) if @scrollLeftAfterAttach > 0
@scrollTop(@scrollTopAfterAttach) if @scrollTopAfterAttach > 0

beforeRemove: ->
detached: ->
@resizeStopped()

serialize: ->
Expand All @@ -74,6 +74,7 @@ class TreeView extends ScrollView

deactivate: ->
@root?.directory.destroy()
@disposables.dispose()
@detach() if @panel?

handleEvents: ->
Expand All @@ -87,47 +88,49 @@ class TreeView extends ScrollView
@on 'mousedown', '.entry', (e) =>
@onMouseDown(e)

# turn off default scrolling behavior from ScrollView
@off 'core:move-up'
@off 'core:move-down'

@on 'mousedown', '.tree-view-resize-handle', (e) => @resizeStarted(e)
@command 'core:move-up', => @moveUp()
@command 'core:move-down', => @moveDown()
@command 'tree-view:expand-directory', => @expandDirectory()
@command 'tree-view:recursive-expand-directory', => @expandDirectory(true)
@command 'tree-view:collapse-directory', => @collapseDirectory()
@command 'tree-view:recursive-collapse-directory', => @collapseDirectory(true)
@command 'tree-view:open-selected-entry', => @openSelectedEntry(true)
@command 'tree-view:move', => @moveSelectedEntry()
@command 'tree-view:copy', => @copySelectedEntries()
@command 'tree-view:cut', => @cutSelectedEntries()
@command 'tree-view:paste', => @pasteEntries()
@command 'tree-view:copy-full-path', => @copySelectedEntryPath(false)
@command 'tree-view:show-in-file-manager', => @showSelectedEntryInFileManager()
@command 'tree-view:open-in-new-window', => @openSelectedEntryInNewWindow()
@command 'tree-view:copy-project-path', => @copySelectedEntryPath(true)
@command 'tool-panel:unfocus', => @unfocus()
@command 'tree-view:toggle-vcs-ignored-files', -> atom.config.toggle 'tree-view.hideVcsIgnoredFiles'
@command 'tree-view:toggle-ignored-names', -> atom.config.toggle 'tree-view.hideIgnoredNames'

atom.commands.add @element,
'core:move-up': @moveUp.bind(this)
'core:move-down': @moveDown.bind(this)
'core:page-up': => @pageUp()
'core:page-down': => @pageDown()
'core:move-to-top': => @scrollToTop()
'core:move-to-bottom': => @scrollToBottom()
'tree-view:expand-directory': => @expandDirectory()
'tree-view:recursive-expand-directory': => @expandDirectory(true)
'tree-view:collapse-directory': => @collapseDirectory()
'tree-view:recursive-collapse-directory': => @collapseDirectory(true)
'tree-view:open-selected-entry': => @openSelectedEntry(true)
'tree-view:move': => @moveSelectedEntry()
'tree-view:copy': => @copySelectedEntries()
'tree-view:cut': => @cutSelectedEntries()
'tree-view:paste': => @pasteEntries()
'tree-view:copy-full-path': => @copySelectedEntryPath(false)
'tree-view:show-in-file-manager': => @showSelectedEntryInFileManager()
'tree-view:open-in-new-window': => @openSelectedEntryInNewWindow()
'tree-view:copy-project-path': => @copySelectedEntryPath(true)
'tool-panel:unfocus': => @unfocus()
'tree-view:toggle-vcs-ignored-files', -> atom.config.toggle 'tree-view.hideVcsIgnoredFiles'
'tree-view:toggle-ignored-names', -> atom.config.toggle 'tree-view.hideIgnoredNames'

@on 'tree-view:directory-modified', =>
if @hasFocus()
@selectEntryForPath(@selectedPath) if @selectedPath
else
@selectActiveFile()

@subscribe atom.workspace.onDidChangeActivePaneItem =>
@disposables.add atom.workspace.onDidChangeActivePaneItem =>
@selectActiveFile()
@subscribe atom.project.onDidChangePaths =>
@disposables.add atom.project.onDidChangePaths =>
@updateRoot()
@subscribe atom.config.onDidChange 'tree-view.hideVcsIgnoredFiles', =>
@disposables.add atom.config.onDidChange 'tree-view.hideVcsIgnoredFiles', =>
@updateRoot()
@subscribe atom.config.onDidChange 'tree-view.hideIgnoredNames', =>
@disposables.add atom.config.onDidChange 'tree-view.hideIgnoredNames', =>
@updateRoot()
@subscribe atom.config.onDidChange 'core.ignoredNames', =>
@disposables.add atom.config.onDidChange 'core.ignoredNames', =>
@updateRoot() if atom.config.get('tree-view.hideIgnoredNames')
@subscribe atom.config.onDidChange 'tree-view.showOnRightSide', ({newValue}) =>
@disposables.add atom.config.onDidChange 'tree-view.showOnRightSide', ({newValue}) =>
@onSideToggled(newValue)

toggle: ->
Expand Down Expand Up @@ -246,7 +249,7 @@ class TreeView extends ScrollView
})
@root = new DirectoryView()
@root.initialize(directory)
@list.element.appendChild(@root)
@list[0].appendChild(@root)

if @attachAfterProjectPathSet
@attach()
Expand Down Expand Up @@ -290,7 +293,7 @@ class TreeView extends ScrollView

entryForPath: (entryPath) ->
bestMatchEntry = @root
for entry in @list.element.querySelectorAll('.entry')
for entry in @list[0].querySelectorAll('.entry')
if entry.isPathEqual(entryPath)
bestMatchEntry = entry
break
Expand All @@ -302,7 +305,8 @@ class TreeView extends ScrollView
selectEntryForPath: (entryPath) ->
@selectEntry(@entryForPath(entryPath))

moveDown: ->
moveDown: (event) ->
event.stopImmediatePropagation()
selectedEntry = @selectedEntry()
if selectedEntry?
if selectedEntry instanceof DirectoryView
Expand All @@ -319,7 +323,8 @@ class TreeView extends ScrollView

@scrollToEntry(@selectedEntry())

moveUp: ->
moveUp: (event) ->
event.stopImmediatePropagation()
selectedEntry = @selectedEntry()
if selectedEntry?
selectedEntry = $(selectedEntry)
Expand Down Expand Up @@ -545,7 +550,7 @@ class TreeView extends ScrollView
dialog.attach()

selectedEntry: ->
@list.element.querySelector('.selected')
@list[0].querySelector('.selected')

selectEntry: (entry) ->
return unless entry?
Expand All @@ -559,7 +564,7 @@ class TreeView extends ScrollView
entry

getSelectedEntries: ->
@list.element.querySelectorAll('.selected')
@list[0].querySelectorAll('.selected')

deselect: (elementsToDeselect=@getSelectedEntries()) ->
selected.classList.remove('selected') for selected in elementsToDeselect
Expand Down Expand Up @@ -681,19 +686,19 @@ class TreeView extends ScrollView
#
# Returns noop
showFullMenu: ->
@list.element.classList.remove('multi-select')
@list.element.classList.add('full-menu')
@list[0].classList.remove('multi-select')
@list[0].classList.add('full-menu')

# Public: Toggle multi-select class on the main list element to display the the
# menu with only items that make sense for multi select functionality
#
# Returns noop
showMultiSelectMenu: ->
@list.element.classList.remove('full-menu')
@list.element.classList.add('multi-select')
@list[0].classList.remove('full-menu')
@list[0].classList.add('multi-select')

# Public: Check for multi-select class on the main list
#
# Returns boolean
multiSelectEnabled: ->
@list.element.classList.contains('multi-select')
@list[0].classList.contains('multi-select')
9 changes: 5 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,13 @@
},
"private": true,
"dependencies": {
"atom-space-pen-views": "^0.20.0",
"event-kit": "~0.7.0",
"fs-plus": "^2.3.0",
"minimatch": "~0.3.0",
"pathwatcher": "^2.0.12",
"temp": "~0.7.0",
"underscore-plus": "1.x",
"wrench": "1.5.x",
"pathwatcher": "^2.0.12",
"event-kit": "~0.7.0",
"minimatch": "~0.3.0"
"wrench": "1.5.x"
}
}
Loading

0 comments on commit dadca08

Please sign in to comment.