Package org.apache.wicket.threadtest.apps.app1

Source Code of org.apache.wicket.threadtest.apps.app1.Home$ActionPanel

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.wicket.threadtest.apps.app1;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Locale;

import org.apache.wicket.AttributeModifier;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Check;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.form.CheckGroup;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.ImageButton;
import org.apache.wicket.markup.html.form.ListMultipleChoice;
import org.apache.wicket.markup.html.form.Radio;
import org.apache.wicket.markup.html.form.RadioChoice;
import org.apache.wicket.markup.html.form.RadioGroup;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.image.Image;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.FeedbackPanel;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.model.AbstractReadOnlyModel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.protocol.http.WebRequest;
import org.apache.wicket.util.convert.ConversionException;
import org.apache.wicket.util.convert.IConverter;
import org.apache.wicket.util.convert.MaskConverter;
import org.apache.wicket.validation.validator.NumberValidator;
import org.apache.wicket.version.undo.Change;

public class Home extends WebPage
{

  private class ActionPanel extends Panel
  {
    /**
     * @param id
     *            component id
     * @param model
     *            model for contact
     */
    public ActionPanel(String id, IModel model)
    {
      super(id, model);
      add(new Link("select")
      {
        public void onClick()
        {
          Home.this.selected = (Contact)getParent().getModelObject();
        }
      });
    }
  }

  /**
   * Form for collecting input.
   */
  private class InputForm extends Form
  {
    /**
     * Construct.
     *
     * @param name
     *            Component name
     */
    public InputForm(String name)
    {
      super(name, new CompoundPropertyModel(new FormInputModel()));
      add(new LocaleDropDownChoice("localeSelect"));
      add(new Link("defaultLocaleLink")
      {
        public void onClick()
        {
          WebRequest request = (WebRequest)getRequest();
          setLocale(request.getLocale());
        }
      });
      TextField stringTextField = new TextField("stringProperty");
      stringTextField.setLabel(new Model("String"));
      add(stringTextField);
      TextField integerTextField = new TextField("integerProperty", Integer.class);
      add(integerTextField.add(NumberValidator.POSITIVE));
      add(new TextField("doubleProperty", Double.class));
      WebMarkupContainer dateLabel = new WebMarkupContainer("dateLabel");
      add(dateLabel);
      TextField datePropertyTextField = new TextField("dateProperty", Date.class);
      add(datePropertyTextField);
      add(new TextField("integerInRangeProperty", Integer.class).add(NumberValidator.range(0,
          100)));
      add(new CheckBox("booleanProperty"));
      RadioChoice rc = new RadioChoice("numberRadioChoice", NUMBERS).setSuffix("");
      rc.setLabel(new Model("number"));
      add(rc);

      RadioGroup group = new RadioGroup("numbersGroup");
      add(group);
      ListView persons = new ListView("numbers", NUMBERS)
      {
        protected void populateItem(ListItem item)
        {
          item.add(new Radio("radio", item.getModel()));
          item.add(new Label("number", item.getModelObjectAsString()));
        };
      };
      group.add(persons);

      CheckGroup checks = new CheckGroup("numbersCheckGroup");
      add(checks);
      ListView checksList = new ListView("numbers", NUMBERS)
      {
        protected void populateItem(ListItem item)
        {
          item.add(new Check("check", item.getModel()));
          item.add(new Label("number", item.getModelObjectAsString()));
        };
      };
      checks.add(checksList);

      add(new ListMultipleChoice("siteSelection", SITES));

      add(new TextField("urlProperty", URL.class)
      {
        public IConverter getConverter(Class clazz)
        {
          return new IConverter()
          {
            /**
             * @see org.apache.wicket.util.convert.IConverter#convertToObject(java.lang.String,
             *      java.util.Locale)
             */
            public Object convertToObject(String value, Locale locale)
            {
              try
              {
                return new URL(value.toString());
              }
              catch (MalformedURLException e)
              {
                throw new ConversionException("'" + value + "' is not a valid URL");
              }
            }

            /**
             * @see org.apache.wicket.util.convert.IConverter#convertToString(java.lang.Object,
             *      java.util.Locale)
             */
            public String convertToString(Object value, Locale locale)
            {
              return value != null ? value.toString() : null;
            }
          };
        }
      });

      add(new TextField("phoneNumberUS", UsPhoneNumber.class)
      {
        public IConverter getConverter(Class clazz)
        {
          return new MaskConverter("(###) ###-####", UsPhoneNumber.class);
        }
      });

      add(new LinesListView("lines"));

      add(new ImageButton("saveButton"));

      add(new Link("resetButtonLink")
      {
        public void onClick()
        {
          InputForm.this.modelChanged();
        }
      }.add(new Image("resetButtonImage")));
    }

    /**
     * @see org.apache.wicket.markup.html.form.Form#onSubmit()
     */
    public void onSubmit()
    {
      info("Saved model " + getModelObject());
    }
  }

  /** list view to be nested in the form. */
  private static final class LinesListView extends ListView
  {

    /**
     * Construct.
     *
     * @param id
     */
    public LinesListView(String id)
    {
      super(id);
      setReuseItems(true);
    }

    protected void populateItem(ListItem item)
    {
      item.add(new TextField("lineEdit", new PropertyModel(item.getModel(), "text")));
    }
  }

  /**
   * Choice for a locale.
   */
  private final class LocaleChoiceRenderer extends ChoiceRenderer
  {
    /**
     * Constructor.
     */
    public LocaleChoiceRenderer()
    {
    }

    /**
     * @see org.apache.wicket.markup.html.form.IChoiceRenderer#getDisplayValue(Object)
     */
    public Object getDisplayValue(Object object)
    {
      Locale locale = (Locale)object;
      String display = locale.getDisplayName(getLocale());
      return display;
    }
  }

  /**
   * Dropdown with Locales.
   */
  private final class LocaleDropDownChoice extends DropDownChoice
  {
    /**
     * Construct.
     *
     * @param id
     *            component id
     */
    public LocaleDropDownChoice(String id)
    {
      super(id, LOCALES, new LocaleChoiceRenderer());
      setModel(new PropertyModel(Home.this, "locale"));
    }

    /**
     * @see org.apache.wicket.markup.html.form.DropDownChoice#onSelectionChanged(java.lang.Object)
     */
    public void onSelectionChanged(Object newSelection)
    {
    }

    /**
     * @see org.apache.wicket.markup.html.form.DropDownChoice#wantOnSelectionChangedNotifications()
     */
    protected boolean wantOnSelectionChangedNotifications()
    {
      return true;
    }
  }

  /** Relevant locales wrapped in a list. */
  private static final List LOCALES = Arrays.asList(new Locale[] { Locale.ENGLISH,
      new Locale("nl"), Locale.GERMAN, Locale.SIMPLIFIED_CHINESE, Locale.JAPANESE,
      new Locale("pt", "BR"), new Locale("fa", "IR"), new Locale("da", "DK") });

  /** available sites for the multiple select. */
  private static final List SITES = Arrays.asList(new String[] { "The Server Side", "Java Lobby",
      "Java.Net" });

  /** available numbers for the radio selection. */
  static final List NUMBERS = Arrays.asList(new String[] { "1", "2", "3" });

  private Contact selected;

  public Home()
  {

    add(new Link("link")
    {
      int i = 0;

      @Override
      public void onClick()
      {
        i++;
        addStateChange(new Change()
        {
          @Override
          public void undo()
          {
          }
        });
      }
    });

    add(new Label("selectedLabel", new PropertyModel(this, "selectedContactLabel")));

    add(new DataView("simple", new ContactDataProvider())
    {
      protected void populateItem(final Item item)
      {
        Contact contact = (Contact)item.getModelObject();
        item.add(new ActionPanel("actions", item.getModel()));
        item.add(new Label("contactid", String.valueOf(contact.getId())));
        item.add(new Label("firstname", contact.getFirstName()));
        item.add(new Label("lastname", contact.getLastName()));
        item.add(new Label("homephone", contact.getHomePhone()));
        item.add(new Label("cellphone", contact.getCellPhone()));

        item.add(new AttributeModifier("class", true, new AbstractReadOnlyModel()
        {
          public Object getObject()
          {
            return (item.getIndex() % 2 == 1) ? "even" : "odd";
          }
        }));
      }
    });

    final FeedbackPanel feedback = new FeedbackPanel("feedback");
    add(feedback);
    add(new InputForm("inputForm"));
  }

  /**
   * @return string representation of selceted contact property
   */
  public String getSelectedContactLabel()
  {
    if (selected == null)
    {
      return "No Contact Selected";
    }
    else
    {
      return selected.getFirstName() + " " + selected.getLastName();
    }
  }

  /**
   * Sets locale for the user's session (getLocale() is inherited from
   * Component)
   *
   * @param locale
   *            The new locale
   */
  public void setLocale(Locale locale)
  {
    if (locale != null)
    {
      getSession().setLocale(locale);
    }
  }
}
TOP

Related Classes of org.apache.wicket.threadtest.apps.app1.Home$ActionPanel

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.