add methods to determine if we should allow dragging and dropping

This commit is contained in:
Justin Palmer
2013-02-10 10:46:02 -08:00
parent ccb8688a43
commit 9c99369c10
2 changed files with 16 additions and 2 deletions

View File

@@ -14,6 +14,8 @@ class SortableList extends View
@on 'drop', '.sortable', @onDrop
onDragStart: (event) =>
return false if !@shouldAllowDrag()
el = @getSortableElement(event)
el.addClass 'is-dragging'
event.originalEvent.dataTransfer.setData 'sortable-index', el.index()
@@ -32,9 +34,16 @@ class SortableList extends View
@getSortableElement(event).removeClass 'is-drop-target'
onDrop: (event) =>
return false if !@shouldAllowDrop()
event.stopPropagation()
@find('.is-drop-target').removeClass 'is-drop-target'
shouldAllowDrag: ->
true
shouldAllowDrop: ->
true
getDroppedElement: (event) ->
idx = event.originalEvent.dataTransfer.getData 'sortable-index'
@find ".sortable:eq(#{idx})"

View File

@@ -45,6 +45,10 @@ class Tabs extends SortableList
removeTabAtIndex: (index) ->
@find(".tab:eq(#{index})").remove()
shouldAllowDrag: ->
panes = rootView.find('.pane')
panes.length == 1 && panes.find('.sortable').length > 0
onDragStart: (event) =>
super
pane = $(event.target).closest('.pane')
@@ -75,10 +79,11 @@ class Tabs extends SortableList
draggedTab.insertAfter(droppedNearTab)
currentDraggedTabIndex = draggedTab.index()
#console.log ".#{Tabs.viewClass()} .sortable:eq(#{previousDraggedTabIndex})"
toEditor.editSessions.splice(currentDraggedTabIndex, 0, fromEditor.editSessions.splice(previousDraggedTabIndex, 1)[0])
@setActiveTab(currentDraggedTabIndex)
fromEditor.setActiveEditSessionIndex(0)
console.log fromPaneIndex, toPaneIndex, currentDraggedTabIndex
fromEditor.setActiveEditSessionIndex(0) if fromPaneIndex != toPaneIndex
toEditor.setActiveEditSessionIndex(currentDraggedTabIndex)
toEditor.focus()