Class 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:
    Serialized Form
    • 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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected String buildJSCall​(String funcName)
      builds javascript handler call
      void convertInput()  
      String getAddAllOnClickJS()  
      protected Map<String,​String> getAdditionalAttributesForChoices​(Object choice)  
      protected Map<String,​String> getAdditionalAttributesForSelection​(Object choice)  
      String getAddOnClickJS()  
      org.apache.wicket.markup.html.form.IChoiceRenderer<? super T> getChoiceRenderer()  
      Collection<? extends T> getChoices()  
      protected org.apache.wicket.Component getChoicesComponent()  
      String getChoicesOnFocusJS()  
      String getDownOnClickJS()  
      Collection<T> getModelCollection()  
      Recorder<T> getRecorderComponent()
      Returns recorder component.
      String getRemoveAllOnClickJS()  
      String getRemoveOnClickJS()  
      int getRows()  
      Iterator<T> getSelectedChoices()  
      protected org.apache.wicket.Component getSelectionComponent()  
      String getSelectionOnFocusJS()  
      Iterator<T> getUnselectedChoices()  
      String getUpOnClickJS()  
      boolean isPaletteEnabled()
      Return true if the palette is enabled, false otherwise
      protected boolean localizeDisplayValues()
      Override this method if you do not want to localize the display values of the generated options.
      protected org.apache.wicket.Component newAddAllComponent()
      factory method for the addAll component
      protected org.apache.wicket.Component newAddComponent()
      factory method for the addcomponent
      protected org.apache.wicket.Component newAvailableHeader​(String componentId)
      factory method for the available items header
      protected org.apache.wicket.Component newChoicesComponent()
      factory method for the available items component
      protected org.apache.wicket.Component newDownComponent()
      factory method for the move down component
      protected Recorder<T> newRecorderComponent()
      factory method to create the tracker component
      protected org.apache.wicket.Component newRemoveAllComponent()
      factory method for the removeAll component
      protected org.apache.wicket.Component newRemoveComponent()
      factory method for the remove component
      protected org.apache.wicket.Component newSelectedHeader​(String componentId)
      factory method for the selected items header
      protected org.apache.wicket.Component newSelectionComponent()
      factory method for the selected items component
      protected org.apache.wicket.Component newUpComponent()
      factory method for the move up component
      protected void onBeforeRender()  
      protected void onDetach()  
      void renderHead​(org.apache.wicket.markup.head.IHeaderResponse response)
      Renders header contributions
      void updateModel()
      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, 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, 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 interface org.apache.wicket.IGenericComponent

        getDefaultModel, getDefaultModelObject, getModel, getModelObject, setDefaultModel, setDefaultModelObject, setModel, setModelObject
      • Methods inherited from interface org.apache.wicket.IQueueRegion

        dequeue, getRegionMarkup, newDequeueContext
    • Constructor Detail

      • 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 Detail

      • 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
      • 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
      • 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
      • getRecorderComponent

        public final Recorder<TgetRecorderComponent()
        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 TgetChoices()
        Returns:
        collection representing all available items
      • getChoiceRenderer

        public org.apache.wicket.markup.html.form.IChoiceRenderer<? super TgetChoiceRenderer()
        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
      • 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 -