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>.

Reply via email to