Updated Branches:
  refs/heads/master a5e7f57f3 -> a9b9207cb

WICKET-1197 add/remove all buttons in Palette component

(cherry picked from commit 1f07c6e19fd7d741db54229f2058773c6b79e1ae)


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/a9b9207c
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/a9b9207c
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/a9b9207c

Branch: refs/heads/master
Commit: a9b9207cb9088b7679390906063461338172046b
Parents: a5e7f57
Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org>
Authored: Wed Dec 18 17:44:13 2013 +0200
Committer: Martin Tzvetanov Grigorov <mgrigo...@apache.org>
Committed: Wed Dec 18 17:51:15 2013 +0200

----------------------------------------------------------------------
 .../wicket/examples/compref/PalettePage.html    |   3 +-
 .../wicket/examples/compref/PalettePage.java    |   2 +-
 .../markup/html/form/palette/Palette.html       |  12 +--
 .../markup/html/form/palette/Palette.java       |  89 ++++++++++++++++++-
 .../extensions/markup/html/form/palette/add.gif | Bin 155 -> 0 bytes
 .../markup/html/form/palette/down.gif           | Bin 159 -> 0 bytes
 .../markup/html/form/palette/palette.css        |  45 +++++++---
 .../markup/html/form/palette/palette.js         |  32 +++++++
 .../markup/html/form/palette/remove.gif         | Bin 152 -> 0 bytes
 .../extensions/markup/html/form/palette/up.gif  | Bin 158 -> 0 bytes
 10 files changed, 162 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/a9b9207c/wicket-examples/src/main/java/org/apache/wicket/examples/compref/PalettePage.html
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/compref/PalettePage.html
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/compref/PalettePage.html
index 41ac8c6..4f0b8ce 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/compref/PalettePage.html
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/compref/PalettePage.html
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml"; 
xmlns:wicket="http://wicket.apache.org";>
 <head>
     <title>Wicket Examples - component reference</title>
@@ -9,7 +10,7 @@
        table.palette td.pane { width: 100px; text-align: center; }
        table.palette td.pane select { width: 200px;  }
        table.palette td.buttons { text-align: center; padding-left: 10px; 
padding-right: 10px; }
-       table.palette td.buttons button { width: 40px; height: 40px; }
+       table.palette td.buttons button { width: 28px; height: 28px; }
 </style>
 </head>
 <body>

http://git-wip-us.apache.org/repos/asf/wicket/blob/a9b9207c/wicket-examples/src/main/java/org/apache/wicket/examples/compref/PalettePage.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/compref/PalettePage.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/compref/PalettePage.java
index cc5e081..095623b 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/compref/PalettePage.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/compref/PalettePage.java
@@ -47,8 +47,8 @@ public class PalettePage extends WicketExamplePage
                IChoiceRenderer<Person> renderer = new 
ChoiceRenderer<>("fullName", "fullName");
 
                final Palette<Person> palette = new Palette<Person>("palette", 
new ListModel<Person>(
-                       new ArrayList<Person>()), new 
CollectionModel<>(persons), renderer, 10, true);
 
+                       new ArrayList<Person>()), new 
CollectionModel<>(persons), renderer, 10, true, true);
 
                Form<Void> form = new Form<Void>("form")
                {

http://git-wip-us.apache.org/repos/asf/wicket/blob/a9b9207c/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.html
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.html
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.html
index 56e9346..79e6497 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.html
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.html
@@ -31,10 +31,12 @@
                <select wicket:id="choices" 
class="choicesSelect">[choices]</select>    
        </td>
        <td class="buttons">
-               <button type="button" wicket:id="addButton" class="button 
add"><div/></button><br/>
-               <button type="button" wicket:id="removeButton" class="button 
remove"><div/></button><br/>
-               <button type="button" wicket:id="moveUpButton" class="button 
up"><div/></button><br/>
-               <button type="button" wicket:id="moveDownButton" class="button 
down"><div/></button><br/>
+               <button type="button" wicket:id="addButton" class="button 
add"><div></div></button><br/>
+               <button type="button" wicket:id="removeButton" class="button 
remove"><div></div></button><br/>
+               <button type="button" wicket:id="moveUpButton" class="button 
up"><div></div></button><br/>
+               <button type="button" wicket:id="moveDownButton" class="button 
down"><div></div></button><br/>
+               <button type="button" wicket:id="addAllButton" class="button 
addAll"><div></div></button><br/>
+               <button type="button" wicket:id="removeAllButton" class="button 
removeAll"><div></div></button><br/>
        </td>
        <td class="pane selection">
                <select class="selectionSelect" 
wicket:id="selection">[selection]</select>      
@@ -43,4 +45,4 @@
 </table>
 </wicket:panel>
 </body>
-</html>
\ No newline at end of file
+</html>

http://git-wip-us.apache.org/repos/asf/wicket/blob/a9b9207c/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
index 523e09b..5784043 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
@@ -41,6 +41,7 @@ import org.apache.wicket.model.ResourceModel;
 import org.apache.wicket.request.resource.CssResourceReference;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
 import org.apache.wicket.request.resource.ResourceReference;
+import org.apache.wicket.resource.JQueryPluginResourceReference;
 
 
 /**
@@ -96,6 +97,9 @@ public class Palette<T> extends 
FormComponentPanel<Collection<T>>
        /** if reordering of selected items is allowed in */
        private final boolean allowOrder;
 
+       /** if add all and remove all are allowed */
+       private final boolean allowMoveAll;
+
        /**
         * recorder component used to track user's selection. it is updated by 
javascript on changes.
         */
@@ -114,7 +118,7 @@ public class Palette<T> extends 
FormComponentPanel<Collection<T>>
        private Component selectionComponent;
 
        /** reference to the palette's javascript resource */
-       private static final ResourceReference JAVASCRIPT = new 
JavaScriptResourceReference(
+       private static final ResourceReference JAVASCRIPT = new 
JQueryPluginResourceReference(
                Palette.class, "palette.js");
 
        /** reference to the palette's css resource */
@@ -160,12 +164,38 @@ public class Palette<T> extends 
FormComponentPanel<Collection<T>>
                final IModel<? extends Collection<? extends T>> choicesModel,
                final IChoiceRenderer<T> choiceRenderer, final int rows, final 
boolean allowOrder)
        {
+               this(id, model, choicesModel, choiceRenderer, rows, allowOrder, 
false);
+       }
+
+       /**
+        * Constructor.
+        *
+        * @param id
+        *            Component id
+        * @param choicesModel
+        *            Model representing collection of all available choices
+        * @param choiceRenderer
+        *            Render used to render choices. This must use unique IDs 
for the objects, not the
+        *            index.
+        * @param rows
+        *            Number of choices to be visible on the screen with out 
scrolling
+        * @param allowOrder
+        *            Allow user to move selections up and down
+        * @param allowMoveAll
+        *            Allow user to add or remove all items at once
+        */
+       public Palette(final String id, final IModel<? extends Collection<T>> 
model,
+                      final IModel<? extends Collection<? extends T>> 
choicesModel,
+                      final IChoiceRenderer<T> choiceRenderer, final int rows, 
final boolean allowOrder,
+                      boolean allowMoveAll)
+       {
                super(id, (IModel<Collection<T>>)model);
 
                this.choicesModel = choicesModel;
                this.choiceRenderer = choiceRenderer;
                this.rows = rows;
                this.allowOrder = allowOrder;
+               this.allowMoveAll = allowMoveAll;
        }
 
        @Override
@@ -199,6 +229,8 @@ public class Palette<T> extends 
FormComponentPanel<Collection<T>>
                add(newRemoveComponent());
                add(newUpComponent().setVisible(allowOrder));
                add(newDownComponent().setVisible(allowOrder));
+               add(newAddAllComponent().setVisible(allowMoveAll));
+               add(newRemoveAllComponent().setVisible(allowMoveAll));
 
                add(newAvailableHeader(AVAILABLE_HEADER_ID));
                add(newSelectedHeader(SELECTED_HEADER_ID));
@@ -387,6 +419,45 @@ public class Palette<T> extends 
FormComponentPanel<Collection<T>>
        }
 
        /**
+        * factory method for the addAll component
+        *
+        * @return addAll component
+        */
+       protected Component newAddAllComponent()
+       {
+               return new PaletteButton("addAllButton")
+               {
+                       private static final long serialVersionUID = 1L;
+
+                       protected void onComponentTag(ComponentTag tag)
+                       {
+                               super.onComponentTag(tag);
+                               tag.getAttributes().put("onclick", 
Palette.this.getAddAllOnClickJS());
+                       }
+               };
+       }
+
+
+       /**
+        * factory method for the removeAll component
+        *
+        * @return removeAll component
+        */
+       protected Component newRemoveAllComponent()
+       {
+               return new PaletteButton("removeAllButton")
+               {
+                       private static final long serialVersionUID = 1L;
+
+                       protected void onComponentTag(ComponentTag tag)
+                       {
+                               super.onComponentTag(tag);
+                               tag.getAttributes().put("onclick", 
Palette.this.getRemoveAllOnClickJS());
+                       }
+               };
+       }
+
+       /**
         * @param choice
         * @return null
         * @see 
org.apache.wicket.extensions.markup.html.form.palette.component.Selection#getAdditionalAttributes(Object)
@@ -589,6 +660,22 @@ public class Palette<T> extends 
FormComponentPanel<Collection<T>>
                return buildJSCall("Wicket.Palette.moveDown");
        }
 
+       /**
+        * @return addAll action javascript handler
+        */
+       public String getAddAllOnClickJS()
+       {
+               return buildJSCall("Wicket.Palette.addAll");
+       }
+
+       /**
+        * @return removeAll action javascript handler
+        */
+       public String getRemoveAllOnClickJS()
+       {
+               return buildJSCall("Wicket.Palette.removeAll");
+       }
+
        @Override
        protected void onDetach()
        {

http://git-wip-us.apache.org/repos/asf/wicket/blob/a9b9207c/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/add.gif
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/add.gif
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/add.gif
deleted file mode 100644
index 58b3969..0000000
Binary files 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/add.gif
 and /dev/null differ

http://git-wip-us.apache.org/repos/asf/wicket/blob/a9b9207c/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/down.gif
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/down.gif
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/down.gif
deleted file mode 100644
index 46299cc..0000000
Binary files 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/down.gif
 and /dev/null differ

http://git-wip-us.apache.org/repos/asf/wicket/blob/a9b9207c/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.css
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.css
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.css
index c37e5da..a445088 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.css
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.css
@@ -50,31 +50,50 @@ table.palette td.buttons button {
 }
 
 button.button.add div {
-       background: url("add.gif"); 
-       height: 15px; 
+       height: 15px;
        width: 15px;
 }
+button.button.add div:after {
+       content: '\21D2';
+}
 
 button.button.remove div {
-       background: url("remove.gif"); 
-       height: 15px; 
+       height: 15px;
        width: 15px;
 }
+button.button.remove div:after {
+       content: '\21D0';
+}
 
 button.button.up div {
-       background: url("up.gif"); 
-       height: 15px; 
+       height: 15px;
        width: 15px;
 }
+button.button.up div:after {
+       content: '\21D1';
+}
 
 button.button.down div {
-       background: url("down.gif"); 
-       height: 15px; 
+       height: 15px;
+       width: 15px;
+}
+button.button.down div:after {
+       content: '\21D3';
+}
+
+button.button.addAll div {
+       height: 15px;
        width: 15px;
 }
 
-/* Fix a firefox (2.0.0.4) bug : 
https://bugzilla.mozilla.org/show_bug.cgi?id=382600 */
-select::-moz-dummy-option { 
-       visibility: hidden; 
-       content: ""; 
-}
\ No newline at end of file
+button.button.addAll div:after {
+       content: '\21DB';
+}
+
+button.button.removeAll div {
+       height: 15px;
+       width: 15px;
+}
+button.button.removeAll div:after {
+       content: '\21DA';
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/a9b9207c/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.js
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.js
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.js
index 96292bb..5c4d477 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.js
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.js
@@ -132,4 +132,36 @@
                        box.options[i].selected=false;
                }
        };
+
+       Wicket.Palette.addAll = function(choicesId, selectionId, recorderId) {
+               var palette = Wicket.Palette;
+               var choices = palette.$(choicesId);
+               var selection = palette.$(selectionId);
+
+               if (palette.moveAllHelper(choices, selection)) {
+                       var recorder = palette.$(recorderId);
+                       palette.updateRecorder(selection, recorder);
+               }
+       }
+
+       Wicket.Palette.removeAll = function(choicesId, selectionId, recorderId) 
{
+               var palette = Wicket.Palette;
+               var choices = palette.$(choicesId);
+               var selection = palette.$(selectionId);
+
+               if (palette.moveAllHelper(selection, choices)) {
+                       var recorder = palette.$(recorderId);
+                       palette.updateRecorder(selection, recorder);
+               }
+       }
+
+       Wicket.Palette.moveAllHelper = function(source, dest) {
+               var dirty = false;
+               for (var i = 0;i < source.options.length; i++) {
+                       dest.appendChild(source.options[i]);
+                       i--;
+                       dirty = true;
+               }
+               return dirty;
+       }
 })();

http://git-wip-us.apache.org/repos/asf/wicket/blob/a9b9207c/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/remove.gif
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/remove.gif
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/remove.gif
deleted file mode 100644
index dc05e63..0000000
Binary files 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/remove.gif
 and /dev/null differ

http://git-wip-us.apache.org/repos/asf/wicket/blob/a9b9207c/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/up.gif
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/up.gif
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/up.gif
deleted file mode 100644
index 6b1ba97..0000000
Binary files 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/up.gif
 and /dev/null differ

Reply via email to