Pressing 'm' in tree view brings up a move dialog

This commit is contained in:
Corey Johnson
2012-04-26 17:12:56 -07:00
parent fbcd8e43a0
commit 0a39ca25a9
4 changed files with 82 additions and 0 deletions

View File

@@ -2,4 +2,5 @@ window.keymap.bindKeys '.tree-view'
'right': 'tree-view:expand-directory'
'left': 'tree-view:collapse-directory'
'enter': 'tree-view:open-selected-entry'
'm': 'tree-view:move'

View File

@@ -25,6 +25,7 @@ class TreeView extends View
@on 'tree-view:expand-directory', => @expandDirectory()
@on 'tree-view:collapse-directory', => @collapseDirectory()
@on 'tree-view:open-selected-entry', => @openSelectedEntry()
@on 'tree-view:move', => @move()
@rootView.on 'active-editor-path-change', => @selectActiveFile()
deactivate: ->
@@ -70,6 +71,15 @@ class TreeView extends View
else if selectedEntry.is('.file')
@rootView.open(selectedEntry.attr('path'))
move: ->
entry = @selectedEntry()
dialog = new MoveDialog(@rootView.project, entry.attr('path'))
@append dialog
dialog.css
top: entry.position().top + entry.outerHeight() + @scrollTop()
left: 0
selectedEntry: ->
@find('.selected')
@@ -144,3 +154,20 @@ class DirectoryView extends View
view = $(this).view()
view.entryStates = childEntryStates
view.expand()
Editor = require 'editor'
fs = require 'fs'
class MoveDialog extends View
@content: ->
@div class: 'move-dialog', =>
@subview 'editor', new Editor(mini: true)
initialize: (@project, path) ->
@editor.focus()
@editor.on 'focusout', => @remove()
relativePath = @project.relativize(path)
@editor.setText(relativePath)
baseName = fs.base(path)
range = [[0, relativePath.length - baseName.length], [0, relativePath.length]]
@editor.setSelectionBufferRange(range)