You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2014/01/09 14:04:10 UTC

[24/50] [abbrv] git commit: WICKET-1197 add/remove all buttons in Palette component

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/sandbox/WICKET-4686
Commit: a9b9207cb9088b7679390906063461338172046b
Parents: a5e7f57
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed Dec 18 17:44:13 2013 +0200
Committer: Martin Tzvetanov Grigorov <mg...@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