I have made some improvements in my working copy. I am attaching the diff
file.
I am looking forward to your questions and comments.
Thanks,
Mohan
Index:
E:/svn/wicket/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/component/AbstractOptions.java
===================================================================
---
E:/svn/wicket/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/component/AbstractOptions.java
(revision 609566)
+++
E:/svn/wicket/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/component/AbstractOptions.java
(working copy)
@@ -78,7 +78,6 @@
Object displayValue = renderer.getDisplayValue(choice);
Class displayClass = displayValue == null ? null :
displayValue.getClass();
String value =
getConverter(displayClass).convertToString(displayValue, getLocale());
- value = getLocalizer().getString(id + "." + value,
this, value);
buffer.append("\n<option
value=\"").append(id).append("\"");
Index:
E:/svn/wicket/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/component/Recorder.java
===================================================================
---
E:/svn/wicket/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/component/Recorder.java
(revision 609566)
+++
E:/svn/wicket/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/component/Recorder.java
(working copy)
@@ -205,5 +205,13 @@
ids = value.split(",");
}
}
+
+ /**
+ * Clears all the selections
+ */
+ public void clearSelections()
+ {
+ updateIds("");
+ }
}
Index:
E:/svn/wicket/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
===================================================================
---
E:/svn/wicket/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
(revision 609566)
+++
E:/svn/wicket/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
(working copy)
@@ -252,6 +252,22 @@
{
return getRecorderComponent().getUnselectedChoices();
}
+
+ /**
+ * Mark this palette as required on the form, which means that
+ * items must be selected.
+ * <p>
+ * This just sets the required flag on the underlying recorder field.
+ */
+ public void setRequired(boolean required)
+ {
+ getRecorderComponent().setRequired(required);
+ }
+
+ public boolean isRequired()
+ {
+ return getRecorderComponent().isRequired();
+ }
/**
Index:
E:/svn/wicket/jdk-1.4/wicket/src/main/java/org/apache/wicket/Application.properties
===================================================================
---
E:/svn/wicket/jdk-1.4/wicket/src/main/java/org/apache/wicket/Application.properties
(revision 609566)
+++
E:/svn/wicket/jdk-1.4/wicket/src/main/java/org/apache/wicket/Application.properties
(working copy)
@@ -12,6 +12,10 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
+
+# NLS_MESSAGEFORMAT_VAR
+# NLS_ENCODING=UNICODE
+
Required=Field '${label}' is required.
IConverter='${input}' is not a valid ${type}.
Index:
E:/svn/wicket/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
===================================================================
---
E:/svn/wicket/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
(revision 609566)
+++
E:/svn/wicket/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
(working copy)
@@ -506,7 +506,13 @@
*/
public Result isPageLink(String path, Class expectedPageClass)
{
- PageLink pageLink =
(PageLink)getComponentFromLastRenderedPage(path);
+ Link link = (Link)getComponentFromLastRenderedPage(path);
+ if (link instanceof BookmarkablePageLink)
+ {
+ return isEqual(expectedPageClass,
((BookmarkablePageLink) link).getPageClass());
+ }
+
+ PageLink pageLink = (PageLink) link;
try
{
Field iPageLinkField =
pageLink.getClass().getDeclaredField("pageLink");
Index:
E:/svn/wicket/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java
===================================================================
---
E:/svn/wicket/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java
(revision 609566)
+++
E:/svn/wicket/jdk-1.4/wicket/src/main/java/org/apache/wicket/util/tester/FormTester.java
(working copy)
@@ -19,6 +19,7 @@
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
@@ -476,6 +477,10 @@
{
checkClosed();
FormComponent component =
(FormComponent)workingForm.get(formComponentId);
+ if (component == null)
+ {
+ throw new IllegalArgumentException("No such component
'" + formComponentId + "' in form: " + workingForm);
+ }
ChoiceSelector choiceSelector =
choiceSelectorFactory.create(component);
choiceSelector.doSelect(index);
@@ -516,13 +521,53 @@
{
checkClosed();
- ChoiceSelector choiceSelector =
choiceSelectorFactory.createForMultiple((FormComponent)workingForm.get(formComponentId));
+ // This is a hack to get Palette selection working with
FormTester.
+ // Note we can't reference the palette class directly since
FormTester
+ // is in wicket and Palette is in wicket-extensions so we need
to do
+ // some acrobatics to deal with this.
+ Component c = (Component) workingForm.get(formComponentId);
+ if (!(c instanceof FormComponent))
+ {
+ // Palette is not a FormComponent
+ FormComponent recorder = (FormComponent)
workingForm.get(formComponentId + ":recorder");
+ String recorderValue = recorder.getValue();
+ IChoiceRenderer renderer =
(IChoiceRenderer)callGetter(c, "getChoiceRenderer");
+ Collection choices = (Collection)callGetter(c,
"getChoices");
+ List choiceList = new ArrayList(choices);
+ for (int i = 0; i < indexes.length; i++)
+ {
+ int j = indexes[i];
+ Object value = choiceList.get(j);
+ String val = renderer.getIdValue(value, j);
+ recorderValue += val;
+ if (i + 1 < indexes.length)
+ {
+ recorderValue += ",";
+ }
+ }
+ setFormComponentValue(recorder, recorderValue);
+ return;
+ }
+ FormComponent fc = (FormComponent) c;
+ ChoiceSelector choiceSelector =
choiceSelectorFactory.createForMultiple(fc);
for (int i = 0; i < indexes.length; i++)
{
choiceSelector.doSelect(indexes[i]);
}
}
+
+ private Object callGetter(Object self, String method) {
+ try
+ {
+ Method m = self.getClass().getMethod(method, null);
+ return m.invoke(self, null);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
/**
* Simulates filling in a field on a <code>Form</code>.