You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Timo Rantalaiho (JIRA)" <ji...@apache.org> on 2009/02/24 13:06:02 UTC

[jira] Assigned: (WICKET-2104) FormTester does not toggle selected values when using selectMultiple

     [ https://issues.apache.org/jira/browse/WICKET-2104?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Timo Rantalaiho reassigned WICKET-2104:
---------------------------------------

    Assignee: Timo Rantalaiho

> FormTester does not toggle selected values when using selectMultiple
> --------------------------------------------------------------------
>
>                 Key: WICKET-2104
>                 URL: https://issues.apache.org/jira/browse/WICKET-2104
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.3.5
>         Environment: Ubuntu 8.04, Java 1.6
>            Reporter: ray bon
>            Assignee: Timo Rantalaiho
>
> FormTester.selectMultiple only appends values, there is no way to replace or 'uncheck' items in a multiple select. This is contrary to the documentation in the source which does mention a toggle.
> This is different from issue WICKET-1893. The solution there affects the model prior to submit().
> Following are three methods that could be added to implement the toggle capability:
> add to inner class
> 	protected abstract class ChoiceSelector :
> 		/**
> 		 * Implements removal of current selection(s) to allow toggle behaviour of assignValueToFormComponent.
> 		 * 
> 		 * @param formComponent
> 		 *            a <code>FormComponent</code>
> 		 */
> 		protected void doUnSelect()	// should this be final?
> 		{
> 			// multiple selectable should remove unselected option(s)
> 			removeFormComponentValues(formComponent);
> 		}
> add to FormTester
> 	/**
> 	 * Simulates selecting multiple options for the <code>FormComponent</code>. The
> 	 * method only support multiple selectable <code>FormComponent</code>s.
> 	 * 
> 	 * @see #select(String, int)
> 	 * 
> 	 * @param formComponentId
> 	 *            relative path (from <code>Form</code>) to the selectable
> 	 *            <code>FormComponent</code>
> 	 * @param indexes
> 	 *            index of the selectable option, starting from 0
> 	 * @param toggle
> 	 *            set to <code>true</code> to clear existing selected option(s)
> 	 *            set to <code>false</code> to append to existing selected option(s)
> 	 */
> 	public void selectMultiple(String formComponentId, int[] indexes, boolean toggle)
> 	{
> 		checkClosed();
> 		ChoiceSelector choiceSelector = choiceSelectorFactory.createForMultiple((FormComponent)workingForm.get(formComponentId));
> 		
> 		if (toggle)
> 		{
> 			choiceSelector.doUnSelect();
> 		}
> 		selectMultiple(formComponentId, indexes);
> 	}
> add to FormTester
> 	/**
> 	 * Removes <code>FormComponent</code>'s values from request parameter.
> 	 * 
> 	 * @param formComponent
> 	 *            a <code>FormComponent</code>
> 	 */
> 	private void removeFormComponentValues(FormComponent formComponent)
> 	{
> 		if (parameterExist(formComponent))
> 		{
> 			Map newParameters = new HashMap();	// could also get parameters from request and clear()
> 			newParameters.put(formComponent.getInputName(), new String[0]);
> 			baseWicketTester.getServletRequest().setParameters(newParameters);
> 		}
> 	}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.