These were some changes we had made. I want to contribute them back to the
project. My comments are in bold.


mohan.shenoy wrote:
> 
> 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
> 
> I thought it would be better to do localization at a higher level like
> wicket.markup.html.form.IChoiceRenderer implementation.
> 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("\"");
> 
> This adds a convinience method to clear all selections 
> 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("");
> +     }
>  
>  }
> 
> This adds a convinience method to get and set the "required" property
> 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();
> +     }
>  
>  
>       /**
> 
> 
> This adds 2 translation comments
> NLS_MESSAGEFORMAT_VAR Strings which contain replacement variables are
> processed by the MessageFormat class (single quote must be coded as 2
> consecutive single quotes ''). Strings which do NOT contain replacement
> variables are NOT processed by the MessageFormat class (single quote must
> be coded as 1 single quote ').  
> NLS_ENCODING Specifies the encoding used
> 
> 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}.
>  
> Add support for Bookmarkable Page Link
> 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");
> 
> 
> Catches user error in form component lookup.
> Gets Palette selection working with FormTester
> 
> 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>.
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Wicket-1.3-tp14664035p14707596.html
Sent from the Wicket - Dev mailing list archive at Nabble.com.

Reply via email to