java.lang.Object
org.apache.wicket.Component
org.apache.wicket.MarkupContainer
org.apache.wicket.markup.html.WebMarkupContainer
org.apache.wicket.markup.html.form.LabeledWebMarkupContainer
org.apache.wicket.markup.html.form.FormComponent<T>
org.apache.wicket.markup.html.form.FormComponentPanel<Collection<T>>
org.apache.wicket.extensions.markup.html.form.palette.Palette<T>
Type Parameters:
T - Type of model object
All Implemented Interfaces:
Serializable, Iterable<org.apache.wicket.Component>, org.apache.wicket.event.IEventSink, org.apache.wicket.event.IEventSource, org.apache.wicket.feedback.IFeedbackContributor, org.apache.wicket.IConverterLocator, org.apache.wicket.IGenericComponent<Collection<T>,org.apache.wicket.markup.html.form.FormComponent<Collection<T>>>, org.apache.wicket.IMetadataContext<Serializable,org.apache.wicket.Component>, org.apache.wicket.IQueueRegion, org.apache.wicket.markup.html.form.IFormModelUpdateListener, org.apache.wicket.markup.html.form.IFormVisitorParticipant, org.apache.wicket.markup.html.form.ILabelProvider<String>, org.apache.wicket.markup.html.IHeaderContributor, org.apache.wicket.request.component.IRequestableComponent, org.apache.wicket.util.IHierarchical<org.apache.wicket.Component>, org.apache.wicket.util.io.IClusterable

public class Palette<T> extends org.apache.wicket.markup.html.form.FormComponentPanel<Collection<T>>
Palette is a component that allows the user to easily select and order multiple items by moving them from one select box into another.

When creating a Palette object make sure your IChoiceRenderer returns a specific ID, not the index.

Ajaxifying the palette: If you want to update a Palette with an AjaxFormComponentUpdatingBehavior, you have to attach it to the contained Recorder by overriding newRecorderComponent() and calling FormComponent.processInput():


  Palette palette=new Palette(...) {
    protected Recorder newRecorderComponent()
    {
      Recorder recorder=super.newRecorderComponent();     
      recorder.add(new AjaxFormComponentUpdatingBehavior("change") {
        protected void onUpdate(AjaxRequestTarget target) {
          processInput(); // let Palette process input too

          ...
        }
      });
      return recorder;
    }
  }
 
You can add a DefaultTheme to style this component in a left to right fashion.
Author:
Igor Vaynberg ( ivaynberg )
See Also:
  • 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_INITIALIZED, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER, RFLAG_CONTAINER_DEQUEING, RFLAG_CONTAINER_HAS_REMOVALS
  • Constructor Summary

    Constructors
    Constructor
    Description
    Palette(String id, org.apache.wicket.model.IModel<? extends Collection<T>> choicesModel, org.apache.wicket.markup.html.form.IChoiceRenderer<? super T> choiceRenderer, int rows, boolean allowOrder)
     
    Palette(String id, org.apache.wicket.model.IModel<? extends Collection<T>> model, org.apache.wicket.model.IModel<? extends Collection<? extends T>> choicesModel, org.apache.wicket.markup.html.form.IChoiceRenderer<? super T> choiceRenderer, int rows, boolean allowOrder)
     
    Palette(String id, org.apache.wicket.model.IModel<? extends Collection<T>> model, org.apache.wicket.model.IModel<? extends Collection<? extends T>> choicesModel, org.apache.wicket.markup.html.form.IChoiceRenderer<? super T> choiceRenderer, int rows, boolean allowOrder, boolean allowMoveAll)
    Constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected String
    buildJSCall(String funcName)
    builds javascript handler call
    void
     
     
    protected Map<String,String>
     
    protected Map<String,String>
     
     
    org.apache.wicket.markup.html.form.IChoiceRenderer<? super T>
     
    Collection<? extends T>
     
    protected org.apache.wicket.Component
     
     
     
     
    final Recorder<T>
    Returns recorder component.
     
     
    int
     
     
    protected org.apache.wicket.Component
     
     
     
     
    final boolean
    Return true if the palette is enabled, false otherwise
    protected boolean
    Override this method if you do not want to localize the display values of the generated options.
    protected org.apache.wicket.Component
    factory method for the addAll component
    protected org.apache.wicket.Component
    factory method for the addcomponent
    protected org.apache.wicket.Component
    factory method for the available items header
    protected org.apache.wicket.Component
    factory method for the available items component
    protected org.apache.wicket.Component
    factory method for the move down component
    protected Recorder<T>
    factory method to create the tracker component
    protected org.apache.wicket.Component
    factory method for the removeAll component
    protected org.apache.wicket.Component
    factory method for the remove component
    protected org.apache.wicket.Component
    factory method for the selected items header
    protected org.apache.wicket.Component
    factory method for the selected items component
    protected org.apache.wicket.Component
    factory method for the move up component
    protected void
     
    protected void
     
    void
    renderHead(org.apache.wicket.markup.head.IHeaderResponse response)
    Renders header contributions
    final void
    The model object is assumed to be a Collection, and it is modified in-place.

    Methods inherited from class org.apache.wicket.markup.html.form.FormComponentPanel

    checkRequired, clearInput, newMarkupSourcingStrategy, onComponentTag

    Methods inherited from class org.apache.wicket.markup.html.form.FormComponent

    add, add, convertValue, error, getConvertedInput, getDefaultLabel, getDefaultLabel, getForm, getInput, getInputAsArray, getInputName, getModelValue, getParameterValues, getRawInput, getType, getValidatorKeyPrefix, getValidators, getValue, hasRawInput, inputAsInt, inputAsInt, inputAsIntArray, inputChanged, internalOnModelChanged, invalid, isFormParticipant, isInputNullable, isMultiPart, isRequired, isValid, newValidatable, newValidationError, onDisabled, onInvalid, onValid, processChildren, processInput, remove, reportRequiredError, setConvertedInput, setLabel, setModelValue, setRequired, setType, shouldTrimInput, trim, updateAutoLabels, updateAutoLabels, updateCollectionModel, valid, validate, validateRequired, validateValidators, visitComponentsPostOrder, visitFormComponentsPostOrder

    Methods inherited from class org.apache.wicket.markup.html.form.LabeledWebMarkupContainer

    getLabel

    Methods inherited from class org.apache.wicket.markup.html.WebMarkupContainer

    getWebApplication, getWebPage, getWebRequest, getWebResponse, getWebSession

    Methods inherited from class org.apache.wicket.MarkupContainer

    add, addDequeuedComponent, addOrReplace, autoAdd, canDequeueTag, contains, dequeue, dequeue, dequeuePreamble, findChildComponent, findComponentToDequeue, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, getRegionMarkup, internalAdd, internalInitialize, iterator, iterator, newDequeueContext, onComponentTagBody, onInitialize, onRender, queue, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, stream, streamChildren, toString, toString, visitChildren, visitChildren

    Methods inherited from class org.apache.wicket.Component

    add, addStateChange, beforeRender, canCallListener, canCallListenerAfterExpiry, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, clearOriginalDestination, configure, continueToOriginalDestination, createConverter, debug, detach, detachModel, detachModels, determineVisibility, error, exceptionMessage, fatal, findMarkupStream, findPage, findParent, findParentWithAssociatedMarkup, getAjaxRegionMarkupId, getApplication, getBehaviorById, getBehaviorId, getBehaviors, getBehaviors, getClassRelativePath, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessages, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkup, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdFromMarkup, getMarkupIdImpl, getMarkupSourcingStrategy, getMarkupTag, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getRequestFlag, getResponse, getSession, getSizeInBytes, getStatelessHint, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, initModel, internalRenderComponent, internalRenderHead, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isInitialized, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, onAfterRender, onConfigure, onEvent, onModelChanged, onModelChanging, onReAdd, onRemove, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderPart, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlForListener, urlForListener, visitParents, visitParents, warn, wrap

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface org.apache.wicket.IGenericComponent

    getDefaultModel, getDefaultModelObject, getModel, getModelObject, setDefaultModel, setDefaultModelObject, setModel, setModelObject

    Methods inherited from interface org.apache.wicket.IQueueRegion

    dequeue, getRegionMarkup, newDequeueContext

    Methods inherited from interface java.lang.Iterable

    forEach, spliterator
  • Constructor Details

    • Palette

      public Palette(String id, org.apache.wicket.model.IModel<? extends Collection<T>> choicesModel, org.apache.wicket.markup.html.form.IChoiceRenderer<? super T> choiceRenderer, int rows, boolean allowOrder)
      Parameters:
      id - Component id
      choicesModel - Model representing collection of all available choices
      choiceRenderer - Render used to render choices. This must use unique IDs for the objects, not the index.
      rows - Number of choices to be visible on the screen with out scrolling
      allowOrder - Allow user to move selections up and down
    • Palette

      public Palette(String id, org.apache.wicket.model.IModel<? extends Collection<T>> model, org.apache.wicket.model.IModel<? extends Collection<? extends T>> choicesModel, org.apache.wicket.markup.html.form.IChoiceRenderer<? super T> choiceRenderer, int rows, boolean allowOrder)
      Parameters:
      id - Component id
      model - Model representing collection of user's selections
      choicesModel - Model representing collection of all available choices
      choiceRenderer - Render used to render choices. This must use unique IDs for the objects, not the index.
      rows - Number of choices to be visible on the screen with out scrolling
      allowOrder - Allow user to move selections up and down
    • Palette

      public Palette(String id, org.apache.wicket.model.IModel<? extends Collection<T>> model, org.apache.wicket.model.IModel<? extends Collection<? extends T>> choicesModel, org.apache.wicket.markup.html.form.IChoiceRenderer<? super T> choiceRenderer, int rows, boolean allowOrder, boolean allowMoveAll)
      Constructor.
      Parameters:
      id - Component id
      choicesModel - Model representing collection of all available choices
      choiceRenderer - Render used to render choices. This must use unique IDs for the objects, not the index.
      rows - Number of choices to be visible on the screen with out scrolling
      allowOrder - Allow user to move selections up and down
      allowMoveAll - Allow user to add or remove all items at once
  • Method Details

    • onBeforeRender

      protected void onBeforeRender()
      Overrides:
      onBeforeRender in class org.apache.wicket.markup.html.form.FormComponent<Collection<T>>
    • isPaletteEnabled

      public final boolean isPaletteEnabled()
      Return true if the palette is enabled, false otherwise
      Returns:
      true if the palette is enabled, false otherwise
    • getSelectedChoices

      Returns:
      iterator over selected choices
    • getUnselectedChoices

      Returns:
      iterator over unselected choices
    • newRecorderComponent

      factory method to create the tracker component
      Returns:
      tracker component
    • newAvailableHeader

      protected org.apache.wicket.Component newAvailableHeader(String componentId)
      factory method for the available items header
      Parameters:
      componentId - component id of the returned header component
      Returns:
      available items component
    • newSelectedHeader

      protected org.apache.wicket.Component newSelectedHeader(String componentId)
      factory method for the selected items header
      Parameters:
      componentId - component id of the returned header component
      Returns:
      header component
    • newDownComponent

      protected org.apache.wicket.Component newDownComponent()
      factory method for the move down component
      Returns:
      move down component
    • newUpComponent

      protected org.apache.wicket.Component newUpComponent()
      factory method for the move up component
      Returns:
      move up component
    • newRemoveComponent

      protected org.apache.wicket.Component newRemoveComponent()
      factory method for the remove component
      Returns:
      remove component
    • newAddComponent

      protected org.apache.wicket.Component newAddComponent()
      factory method for the addcomponent
      Returns:
      add component
    • newSelectionComponent

      protected org.apache.wicket.Component newSelectionComponent()
      factory method for the selected items component
      Returns:
      selected items component
    • newAddAllComponent

      protected org.apache.wicket.Component newAddAllComponent()
      factory method for the addAll component
      Returns:
      addAll component
    • newRemoveAllComponent

      protected org.apache.wicket.Component newRemoveAllComponent()
      factory method for the removeAll component
      Returns:
      removeAll component
    • getAdditionalAttributesForSelection

      Parameters:
      choice -
      Returns:
      null
      See Also:
    • newChoicesComponent

      protected org.apache.wicket.Component newChoicesComponent()
      factory method for the available items component
      Returns:
      available items component
    • localizeDisplayValues

      protected boolean localizeDisplayValues()
      Override this method if you do not want to localize the display values of the generated options. By default true is returned.
      Returns:
      true If you want to localize the display values, default == true
    • getAdditionalAttributesForChoices

      Parameters:
      choice -
      Returns:
      null
      See Also:
    • getChoicesComponent

      protected org.apache.wicket.Component getChoicesComponent()
    • getSelectionComponent

      protected org.apache.wicket.Component getSelectionComponent()
    • getRecorderComponent

      public final Recorder<T> getRecorderComponent()
      Returns recorder component. Recorder component is a form component used to track the selection of the palette. It receives onchange javascript event whenever a change in selection occurs.
      Returns:
      recorder component
    • getChoices

      public Collection<? extends T> getChoices()
      Returns:
      collection representing all available items
    • getModelCollection

      Returns:
      collection representing selected items
    • getChoiceRenderer

      public org.apache.wicket.markup.html.form.IChoiceRenderer<? super T> getChoiceRenderer()
      Returns:
      choice renderer
    • getRows

      public int getRows()
      Returns:
      items visible without scrolling
    • convertInput

      public void convertInput()
      Overrides:
      convertInput in class org.apache.wicket.markup.html.form.FormComponent<Collection<T>>
    • updateModel

      public final void updateModel()
      The model object is assumed to be a Collection, and it is modified in-place. Then Model.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 org.apache.wicket.markup.html.form.IFormModelUpdateListener
      Overrides:
      updateModel in class org.apache.wicket.markup.html.form.FormComponent<Collection<T>>
      See Also:
      • FormComponent.updateModel()
    • buildJSCall

      protected String buildJSCall(String funcName)
      builds javascript handler call
      Parameters:
      funcName - name of javascript function to call
      Returns:
      string representing the call tho the function with palette params
    • getChoicesOnFocusJS

      Returns:
      choices component on focus javascript handler
    • getSelectionOnFocusJS

      Returns:
      selection component on focus javascript handler
    • getAddOnClickJS

      Returns:
      add action javascript handler
    • getRemoveOnClickJS

      Returns:
      remove action javascript handler
    • getUpOnClickJS

      Returns:
      move up action javascript handler
    • getDownOnClickJS

      Returns:
      move down action javascript handler
    • getAddAllOnClickJS

      Returns:
      addAll action javascript handler
    • getRemoveAllOnClickJS

      Returns:
      removeAll action javascript handler
    • onDetach

      protected void onDetach()
      Overrides:
      onDetach in class org.apache.wicket.markup.html.form.FormComponent<Collection<T>>
    • renderHead

      public void renderHead(org.apache.wicket.markup.head.IHeaderResponse response)
      Renders header contributions
      Specified by:
      renderHead in interface org.apache.wicket.markup.html.IHeaderContributor
      Overrides:
      renderHead in class org.apache.wicket.Component
      Parameters:
      response -