Package com.inmethod.grid.column.editable

Source Code of com.inmethod.grid.column.editable.DropDownChoicePanel$DefaultDropDownChoice

/**
*
*/
package com.inmethod.grid.column.editable;

import java.util.List;

import org.apache.wicket.feedback.FeedbackMessage;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.FormComponent;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.model.IModel;

import com.inmethod.grid.column.AbstractColumn;

/**
* Backing Panel for {@link DropDownChoiceColumn} with a {@link DropDownChoice}
* that updates the property of the row immediately after the user leaves the field.
*
* @author Tom Burton
*/
public class DropDownChoicePanel<M, I, P, S> extends EditableCellPanel<M, I, P, S>
{ //Does serialVersionUID really need to be explicitly set
  private static final long serialVersionUID = 1L;

  private static final String DropDownChoice_ID = "DropDownChoice";

  protected class DefaultDropDownChoice<P> extends DropDownChoice<P>
  {
    private static final long serialVersionUID = 1L;

    /** {@inheritDoc} */
    protected DefaultDropDownChoice(String id, IModel<P> object,
                                    IModel<? extends List<P>> choices)
    {
      super(id, object, choices);
    }

    /** {@inheritDoc} */
    protected DefaultDropDownChoice(String id, IModel<P> object,
                                    IModel<? extends List<P>> choices,
                                    IChoiceRenderer<P> renderer)
    {
      super(id, object, choices, renderer);
    }

    /** {@inheritDoc} */
    @Override
    protected void onComponentTag(ComponentTag tag)
    {
      super.onComponentTag(tag);

      if (!isValid())
      {
        tag.put("class", "imxt-invalid");
        FeedbackMessage message = getFeedbackMessages().first();
        if (message != null)
        {
          tag.put("title", message.getMessage().toString());
        }
      }
    }
  }

  /**
   * Constructor
   * @param id
   *     component id
   * @param model
   *     model for the field
   * @param rowModel
   *    model for the data row
   * @param column
   *     column to which this panel belongs
   * @param choices
   *    choices for displaying in the drop down list
   * @param renderer
   *    how to display the data in the drop down
   */
  public DropDownChoicePanel(String id, final IModel<P> model, IModel<I> rowModel, AbstractColumn<M, I, S> column,
    IModel<? extends List<P>> choices, IChoiceRenderer<P> renderer)
  {
    super(id, column, rowModel);
   
    DropDownChoice<P> ddc;
    if ( null == renderer )
    {
      ddc = newDropDownChoice(DropDownChoice_ID, model, choices);
    }
    else
    {
      ddc = newDropDownChoice(DropDownChoice_ID, model, choices, renderer);
    }
    ddc.setOutputMarkupId(true);
    ddc.setLabel(column.getHeaderModel());
    add(ddc);
  }

  /** newDropDownChoice
   *  @param id component id
   *  @param model field model
   *  @param choices options to display in the drop down
   *  @return  DropDownChoice FormComponent
   */
  protected DropDownChoice<P> newDropDownChoice(String id, IModel<P> model, IModel<? extends List<P>> choices)
  {
    return new DefaultDropDownChoice<P>(id, model, choices);
  }

  /** newDropDownChoice
   * @param id component id
   * @param model field model
   * @param choices options to display in the drop down
   * @param renderer how to display the data
   * @return  DropDownChoice FormComponent
   */
  protected DropDownChoice<P> newDropDownChoice(String id, IModel<P> model,
                                             IModel<? extends List<P>> choices,
                                             IChoiceRenderer<P> renderer)
  {
    return new DefaultDropDownChoice<P>(id, model, choices, renderer);
  }

  /** {@inheritDoc} */
  @Override
  public FormComponent<P> getEditComponent()
  {
    return (FormComponent<P>) get(DropDownChoice_ID);
  }

}
TOP

Related Classes of com.inmethod.grid.column.editable.DropDownChoicePanel$DefaultDropDownChoice

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.