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