You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2012/11/07 20:48:10 UTC
[2/12] git commit: Finish work on move up / move down
Finish work on move up / move down
Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/853bf70c
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/853bf70c
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/853bf70c
Branch: refs/heads/5.4-js-rewrite
Commit: 853bf70c5fbe6a932a4f1878e7506129682a6728
Parents: a3c3cea
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Wed Nov 7 11:47:38 2012 -0800
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Wed Nov 7 11:47:38 2012 -0800
----------------------------------------------------------------------
.../META-INF/modules/core/palette.coffee | 52 +++++++++++++--
1 files changed, 45 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/853bf70c/tapestry-core/src/main/coffeescript/META-INF/modules/core/palette.coffee
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/coffeescript/META-INF/modules/core/palette.coffee b/tapestry-core/src/main/coffeescript/META-INF/modules/core/palette.coffee
index 9bbb85f..c435045 100644
--- a/tapestry-core/src/main/coffeescript/META-INF/modules/core/palette.coffee
+++ b/tapestry-core/src/main/coffeescript/META-INF/modules/core/palette.coffee
@@ -69,6 +69,10 @@ define ["core/dom", "_"],
for option in movers
@selected.element.add option
+ updateAfterChange: ->
+ @updateHidden()
+ @updateButtons()
+
updateHidden: ->
values = _.pluck(@selected.element.options, "value")
@hidden.value JSON.stringify values
@@ -94,6 +98,15 @@ define ["core/dom", "_"],
@doDeselect()
return false
+ if @reorder
+ @moveUp.on "click", =>
+ @doMoveUp()
+ return false
+
+ @moveDown.on "click", =>
+ @doMoveDown()
+ return false
+
updateButtons: ->
@select.element.disabled = @available.element.selectedIndex < 0
@@ -102,13 +115,37 @@ define ["core/dom", "_"],
@deselect.element.disabled = nothingSelected
if @reorder
- @moveUp.disabled = nothingSelected or @allSelectionsAtTop()
- @moveDown.disabled = nothingSelected or @allSelectionsAtBottom()
+ @moveUp.element.disabled = nothingSelected or @allSelectionsAtTop()
+ @moveDown.element.disabled = nothingSelected or @allSelectionsAtBottom()
doSelect: -> @transferOptions @available, @selected, @reorder
doDeselect: -> @transferOptions @selected, @available, false
+ doMoveUp: ->
+ e = @selected.element
+ pos = e.selectedIndex - 1
+ movers = @removeSelectedOptions @selected
+ before = e.options[if pos < 0 then 0 else pos]
+
+ @reorderOptions movers, before
+
+ doMoveDown: ->
+ e = @selected.element
+ lastSelected = _.chain(e.options).toArray().reverse().find((o) -> o.selected).value()
+
+ lastPos = lastSelected.index
+ before = e.options[lastPos + 2]
+
+ movers = @removeSelectedOptions @selected
+
+ @reorderOptions movers, before
+
+ reorderOptions: (movers, before) ->
+ for mover in movers
+ @addOption @selected, mover, before
+ @updateAfterChange()
+
transferOptions: (from, to, atEnd) ->
if from.element.selectedIndex is -1
return
@@ -136,8 +173,7 @@ define ["core/dom", "_"],
_.each movers, (o) =>
@moveOption o, to, atEnd
- @updateHidden()
- @updateButtons()
+ @updateAfterChange()
moveOption: (option, to, atEnd) ->
before = null
@@ -165,7 +201,7 @@ define ["core/dom", "_"],
if e.selectedIndex < 0
return -1
- for i in [(e.options.length -1)..(e.selectedIndex + 1)] by -1
+ for i in [(e.options.length - 1)..(e.selectedIndex)] by -1
if e.options[i].selected
return i
@@ -173,12 +209,14 @@ define ["core/dom", "_"],
allSelectionsAtTop: ->
last = @indexOfLastSelection @selected
- options = @selected.options
+ options = _.toArray @selected.element.options
_(options[0..last]).all (o) -> o.selected
allSelectionsAtBottom: ->
- last = @selected.element.selectedIndex
+ e = @selected.element
+ last = e.selectedIndex
+ options = _.toArray e.options
_(options[last..]).all (o) -> o.selected