org.apache.wicket.markup.html.form
Class ListMultipleChoice<T>

java.lang.Object
  extended by org.apache.wicket.Component
      extended by org.apache.wicket.MarkupContainer
          extended by org.apache.wicket.markup.html.WebMarkupContainer
              extended by org.apache.wicket.markup.html.form.LabeledWebMarkupContainer
                  extended by org.apache.wicket.markup.html.form.FormComponent<T>
                      extended by org.apache.wicket.markup.html.form.AbstractChoice<Collection<T>,T>
                          extended by org.apache.wicket.markup.html.form.ListMultipleChoice<T>
Type Parameters:
T - The model object type
All Implemented Interfaces:
Serializable, IClusterable, IConverterLocator, IFormModelUpdateListener, IFormVisitorParticipant, ILabelProvider<String>
Direct Known Subclasses:
CheckBoxMultipleChoice

public class ListMultipleChoice<T>
extends AbstractChoice<Collection<T>,T>

A multiple choice list component.

Author:
Jonathan Locke, Johan Compagner, Martijn Dashorst
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.wicket.markup.html.form.FormComponent
FormComponent.AbstractVisitor, FormComponent.IVisitor
 
Nested classes/interfaces inherited from class org.apache.wicket.Component
Component.ComponentModelChange, Component.EnabledChange, Component.VisibilityChange
 
Field Summary
 
Fields inherited from class org.apache.wicket.markup.html.form.FormComponent
FLAG_CONVERT_EMPTY_INPUT_STRING_TO_NULL, VALUE_SEPARATOR
 
Fields inherited from class org.apache.wicket.Component
ENABLE, FLAG_CONFIGURED, FLAG_INITIALIZED, FLAG_REMOVING_FROM_HIERARCHY, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED6, FLAG_RESERVED7, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER
 
Constructor Summary
ListMultipleChoice(String id)
           
ListMultipleChoice(String id, IModel<? extends Collection<T>> model, IModel<? extends List<? extends T>> choices)
           
ListMultipleChoice(String id, IModel<? extends Collection<T>> model, IModel<? extends List<? extends T>> choices, IChoiceRenderer<? super T> renderer)
           
ListMultipleChoice(String id, IModel<? extends Collection<T>> object, List<? extends T> choices)
           
ListMultipleChoice(String id, IModel<? extends Collection<T>> object, List<? extends T> choices, IChoiceRenderer<? super T> renderer)
           
ListMultipleChoice(String id, IModel<? extends List<? extends T>> choices)
           
ListMultipleChoice(String id, IModel<? extends List<? extends T>> choices, IChoiceRenderer<? super T> renderer)
           
ListMultipleChoice(String id, List<? extends T> choices)
           
ListMultipleChoice(String id, List<? extends T> choices, IChoiceRenderer<? super T> renderer)
           
ListMultipleChoice(String id, List<? extends T> choices, int maxRows)
          Creates a multiple choice list with a maximum number of visible rows.
 
Method Summary
protected  List<T> convertChoiceIdsToChoices(String[] ids)
          Converts submitted choice ids to choice objects.
protected  Collection<T> convertValue(String[] ids)
          Subclasses should overwrite this if the conversion is not done through the type field and the IConverter.
protected static int getDefaultMaxRows()
          Gets the default maximum number of rows to display.
 String getModelValue()
           
 boolean isRetainDisabledSelected()
          If true, choices that were selected in the model but disabled in rendering will be retained in the model after a form submit.
protected  boolean isSelected(T choice, int index, String selected)
          Gets whether the given value represents the current selection.
protected  void onComponentTag(ComponentTag tag)
          Processes the component tag.
protected static void setDefaultMaxRows(int defaultMaxRows)
          Sets the default maximum number of rows to display.
 ListMultipleChoice<T> setMaxRows(int maxRows)
          Sets the number of visible rows in the listbox.
 ListMultipleChoice<T> setRetainDisabledSelected(boolean retain)
           
 void updateModel()
          If the model object exists, it is assumed to be a Collection, and it is modified in-place.
 
Methods inherited from class org.apache.wicket.markup.html.form.AbstractChoice
appendOptionHtml, detachModel, escapeOptionHtml, getChoiceRenderer, getChoices, getDefaultChoice, isDisabled, localizeDisplayValues, onComponentTagBody, setChoiceRenderer, setChoices, setChoices, supportsPersistence
 
Methods inherited from class org.apache.wicket.markup.html.form.FormComponent
add, add, checkRequired, clearInput, convertInput, error, getConvertedInput, getDefaultLabel, getDefaultLabel, getForm, getInput, getInputAsArray, getInputName, getModel, getModelObject, getRawInput, getType, getValidatorKeyPrefix, getValidators, getValue, hasRawInput, inputAsInt, inputAsInt, inputAsIntArray, inputChanged, internalOnModelChanged, invalid, isInputNullable, isMultiPart, isPersistent, isRequired, isValid, newValidatable, onDetach, onDisabled, onInvalid, onValid, processChildren, processInput, setConvertedInput, setLabel, setModel, setModelObject, setModelValue, setModelValue, setPersistent, setRequired, setType, shouldTrimInput, trim, valid, validate, validateRequired, validateValidators, visitComponentsPostOrder, visitFormComponentsPostOrder
 
Methods inherited from class org.apache.wicket.markup.html.form.LabeledWebMarkupContainer
getLabel, setLabelInternal
 
Methods inherited from class org.apache.wicket.markup.html.WebMarkupContainer
getMarkupType, getWebPage, getWebRequest
 
Methods inherited from class org.apache.wicket.MarkupContainer
add, addOrReplace, autoAdd, autoAdd, contains, findMarkupStream, get, get, getAssociatedMarkupStream, getMarkupStream, hasAssociatedMarkup, internalAdd, isTransparentResolver, iterator, iterator, newMarkupResourceStream, onAfterRenderChildren, onRender, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderComponentTagBody, renderNext, replace, setDefaultModel, setMarkupStream, size, swap, toString, toString, visitChildren, visitChildren
 
Methods inherited from class org.apache.wicket.Component
add, addStateChange, afterRender, beforeRender, callOnBeforeRenderIfNotVisible, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, configure, continueToOriginalDestination, debug, detach, detachBehaviors, detachModels, determineVisibility, error, exceptionMessage, fatal, findPage, findParent, findParentWithAssociatedMarkup, getAjaxRegionMarkupId, getApplication, getBehaviors, getBehaviors, getBehaviorsRawList, getClassRelativePath, getComponentBorder, getConverter, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessage, getFlag, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdImpl, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getResponse, getSession, getSizeInBytes, getStatelessHint, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, initModel, internalAttach, internalDetach, internalOnAttach, internalOnDetach, isActionAuthorized, isAncestorOf, isAttached, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isRenderAllowed, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, locateMarkupStream, markAttached, markRendering, modelChanged, modelChanging, onAfterRender, onAttach, onBeforeRender, onBeginRequest, onConfigure, onEndRequest, onInitialize, onModelChanged, onModelChanging, onRemove, prepareForRender, prepareForRender, redirectToInterceptPage, remove, remove, render, render, renderComponent, renderComponent, renderComponentTag, rendered, renderHead, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, setAuto, setComponentBorder, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setFlag, setIgnoreAttributeModifier, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setRedirect, setRenderBodyOnly, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, urlFor, urlFor, urlFor, urlFor, urlFor, urlFor, visitParents, warn, wrap
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

ListMultipleChoice

public ListMultipleChoice(String id)
See Also:
AbstractChoice.AbstractChoice(String)

ListMultipleChoice

public ListMultipleChoice(String id,
                          List<? extends T> choices)
See Also:
AbstractChoice.AbstractChoice(String, List)

ListMultipleChoice

public ListMultipleChoice(String id,
                          List<? extends T> choices,
                          int maxRows)
Creates a multiple choice list with a maximum number of visible rows.

Parameters:
id - component id
choices - list of choices
maxRows - the maximum number of visible rows.
See Also:
AbstractChoice.AbstractChoice(String, List)

ListMultipleChoice

public ListMultipleChoice(String id,
                          List<? extends T> choices,
                          IChoiceRenderer<? super T> renderer)
See Also:
AbstractChoice.AbstractChoice(String, List,IChoiceRenderer)

ListMultipleChoice

public ListMultipleChoice(String id,
                          IModel<? extends Collection<T>> object,
                          List<? extends T> choices)
See Also:
AbstractChoice.AbstractChoice(String, IModel, List)

ListMultipleChoice

public ListMultipleChoice(String id,
                          IModel<? extends Collection<T>> object,
                          List<? extends T> choices,
                          IChoiceRenderer<? super T> renderer)
See Also:
AbstractChoice.AbstractChoice(String, IModel, List,IChoiceRenderer)

ListMultipleChoice

public ListMultipleChoice(String id,
                          IModel<? extends List<? extends T>> choices)
See Also:
AbstractChoice.AbstractChoice(String, IModel)

ListMultipleChoice

public ListMultipleChoice(String id,
                          IModel<? extends Collection<T>> model,
                          IModel<? extends List<? extends T>> choices)
See Also:
AbstractChoice.AbstractChoice(String, IModel,IModel)

ListMultipleChoice

public ListMultipleChoice(String id,
                          IModel<? extends List<? extends T>> choices,
                          IChoiceRenderer<? super T> renderer)
See Also:
AbstractChoice.AbstractChoice(String, IModel,IChoiceRenderer)

ListMultipleChoice

public ListMultipleChoice(String id,
                          IModel<? extends Collection<T>> model,
                          IModel<? extends List<? extends T>> choices,
                          IChoiceRenderer<? super T> renderer)
See Also:
AbstractChoice.AbstractChoice(String, IModel, IModel,IChoiceRenderer)
Method Detail

getDefaultMaxRows

protected static int getDefaultMaxRows()
Gets the default maximum number of rows to display.

Returns:
Returns the defaultMaxRows.

setDefaultMaxRows

protected static void setDefaultMaxRows(int defaultMaxRows)
Sets the default maximum number of rows to display.

Parameters:
defaultMaxRows - The defaultMaxRows to set.

setMaxRows

public final ListMultipleChoice<T> setMaxRows(int maxRows)
Sets the number of visible rows in the listbox.

Parameters:
maxRows - the number of visible rows
Returns:
this

getModelValue

public final String getModelValue()
Overrides:
getModelValue in class FormComponent<Collection<T>>
Returns:
Value to return when model value is needed
See Also:
FormComponent.getModelValue()

isSelected

protected final boolean isSelected(T choice,
                                   int index,
                                   String selected)
Description copied from class: AbstractChoice
Gets whether the given value represents the current selection.

Specified by:
isSelected in class AbstractChoice<Collection<T>,T>
Parameters:
choice - The object to check
index - The index in the choices collection this object is in.
selected - The currently selected string value
Returns:
Whether the given value represents the current selection
See Also:
AbstractChoice.isSelected(Object,int, String)

onComponentTag

protected void onComponentTag(ComponentTag tag)
Description copied from class: FormComponent
Processes the component tag.

Overrides:
onComponentTag in class FormComponent<Collection<T>>
Parameters:
tag - Tag to modify
See Also:
Component.onComponentTag(ComponentTag)

convertValue

protected Collection<T> convertValue(String[] ids)
                              throws ConversionException
Description copied from class: FormComponent
Subclasses should overwrite this if the conversion is not done through the type field and the IConverter. WARNING: this method may be removed in future versions. If conversion fails then a ConversionException should be thrown

Overrides:
convertValue in class FormComponent<Collection<T>>
Parameters:
ids - The value can be the getInput() or through a cookie
Returns:
The converted value. default returns just the given value
Throws:
ConversionException - If input can't be converted
See Also:
FormComponent.convertValue(String[])

convertChoiceIdsToChoices

protected List<T> convertChoiceIdsToChoices(String[] ids)
Converts submitted choice ids to choice objects.

Parameters:
ids - choice ids. this array is nonnull and always contains at least one id.
Returns:
list of choices.

updateModel

public void updateModel()
If the model object exists, it is assumed to be a Collection, and it is modified in-place. Then IModel.setObject(Object) is called with the same instance: it allows the Model to be notified of changes even when Model.getObject() returns a different Collection at every invocation.

Specified by:
updateModel in interface IFormModelUpdateListener
Overrides:
updateModel in class FormComponent<Collection<T>>
Throws:
UnsupportedOperationException - if the model object Collection cannot be modified
See Also:
FormComponent.updateModel()

isRetainDisabledSelected

public boolean isRetainDisabledSelected()
If true, choices that were selected in the model but disabled in rendering will be retained in the model after a form submit. Example: Choices are [1, 2, 3, 4]. Model collection is [2, 4]. In rendering, choices 2 and 3 are disabled (AbstractChoice.isDisabled(Object, int, String)). That means that four checkboxes are rendered, checkboxes 2 and 4 are checked, but 2 and 3 are not clickable. User checks 1 and unchecks 4. If this flag is off, the model will be updated to [1]. This is because the browser does not re-submit a disabled checked checkbox: it only submits [1]. Therefore Wicket will only see the [1] and update the model accordingly. If you set this flag to true, Wicket will check the model before updating to find choices that were selected but disabled. These choices will then be retained, leading to a new model value of [1, 2] as (probably) expected by the user. Note that this will lead to additional calls to AbstractChoice.isDisabled(Object, int, String).

Returns:
flag

setRetainDisabledSelected

public ListMultipleChoice<T> setRetainDisabledSelected(boolean retain)
Parameters:
retain - flag
Returns:
this
See Also:
isRetainDisabledSelected()


Copyright © 2004-2011 Apache Software Foundation. All Rights Reserved.