Java tutorial
/******************************************************************************* * Copyright (c) 2012-2013 RelationWare, Benno Luthiger * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * RelationWare, Benno Luthiger ******************************************************************************/ package org.ripla.web.demo.widgets.views; import org.ripla.interfaces.IMessages; import org.ripla.web.demo.widgets.Activator; import org.ripla.web.demo.widgets.data.CountryBean; import org.ripla.web.demo.widgets.data.CountryData; import com.vaadin.data.Item; import com.vaadin.data.util.IndexedContainer; import com.vaadin.data.util.filter.SimpleStringFilter; import com.vaadin.event.FieldEvents; import com.vaadin.event.FieldEvents.TextChangeEvent; import com.vaadin.shared.ui.datefield.Resolution; import com.vaadin.ui.AbstractTextField.TextChangeEventMode; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.PasswordField; import com.vaadin.ui.PopupDateField; import com.vaadin.ui.RichTextArea; import com.vaadin.ui.Table; import com.vaadin.ui.Table.ColumnHeaderMode; import com.vaadin.ui.TextArea; import com.vaadin.ui.TextField; import com.vaadin.ui.VerticalLayout; /** * The view to display the Vaadin input widgets. * * @author Luthiger */ @SuppressWarnings("serial") public class InputWidgetsView extends AbstractWidgetsView { private static final int WIDTH_FIELD = 25; private static final int WIDTH_AREA = 38; private static final int FILTER_WIDTH = 170; public InputWidgetsView() { super(); final IMessages lMessages = Activator.getMessages(); final VerticalLayout lLayout = initLayout(lMessages, "widgets.title.page.input"); //$NON-NLS-1$ final HorizontalLayout lColumns = new HorizontalLayout(); lColumns.setSpacing(true); lLayout.addComponent(lColumns); final VerticalLayout lCol1 = new VerticalLayout(); lCol1.setSizeUndefined(); lColumns.addComponent(lCol1); final VerticalLayout lCol2 = new VerticalLayout(); lCol2.setSizeUndefined(); lColumns.addComponent(lCol2); final VerticalLayout lCol3 = new VerticalLayout(); lCol3.setSizeUndefined(); lColumns.addComponent(lCol3); lColumns.setExpandRatio(lCol3, 1); // classic input fields lCol1.addComponent(getSubtitle(lMessages.getMessage("widgets.input.subtitle.input.normal"))); //$NON-NLS-1$ final TextField lTextField = new TextField(); lTextField.setColumns(WIDTH_FIELD); lCol1.addComponent(lTextField); lCol1.addComponent(getSubtitle(lMessages.getMessage("widgets.input.subtitle.input.prompt"))); //$NON-NLS-1$ final TextField lTextField2 = new TextField(); lTextField2.setInputPrompt(lMessages.getMessage("widgets.input.input.prompt")); //$NON-NLS-1$ lTextField2.setColumns(WIDTH_FIELD); lCol1.addComponent(lTextField2); lCol1.addComponent(getSubtitle(lMessages.getMessage("widgets.input.subtitle.input.password"))); //$NON-NLS-1$ final PasswordField lPassword = new PasswordField(); lPassword.setColumns(WIDTH_FIELD); lCol1.addComponent(lPassword); lCol1.addComponent(getSubtitle(lMessages.getMessage("widgets.input.subtitle.date"))); //$NON-NLS-1$ final PopupDateField lDate1 = new PopupDateField(lMessages.getMessage("widgets.input.popup.date")); //$NON-NLS-1$ lDate1.setResolution(Resolution.DAY); lDate1.setDateFormat("dd. MMMM yyyy"); //$NON-NLS-1$ lDate1.setWidth(160, Unit.PIXELS); lDate1.setValue(new java.util.Date()); lCol1.addComponent(lDate1); // text areas lCol2.addComponent(getSubtitle(lMessages.getMessage("widgets.input.subtitle.text.area"))); //$NON-NLS-1$ final TextArea lArea = new TextArea(); lArea.setColumns(WIDTH_AREA); lArea.setRows(7); lCol2.addComponent(lArea); lCol2.addComponent(getSubtitle(lMessages.getMessage("widgets.input.subtitle.rich.text"))); //$NON-NLS-1$ final RichTextArea lRichText = new RichTextArea(); lRichText.setWidth(WIDTH_AREA, Unit.EM); lRichText.setHeight(15, Unit.EM); lCol2.addComponent(lRichText); // text input with filter final CountryContainer lCountries = new CountryContainer(); lCol3.addComponent(getSubtitle(lMessages.getMessage("widgets.input.subtitle.input.filter"))); //$NON-NLS-1$ final TextField lFilter = new TextField(); lFilter.setTextChangeEventMode(TextChangeEventMode.LAZY); lFilter.setTextChangeTimeout(200); lFilter.addTextChangeListener(new FieldEvents.TextChangeListener() { @Override public void textChange(final TextChangeEvent inEvent) { lCountries.removeAllContainerFilters(); lCountries.addContainerFilter( new SimpleStringFilter(CountryContainer.PROPERTY_NAME, inEvent.getText(), true, true)); } }); lFilter.setWidth(FILTER_WIDTH, Unit.PIXELS); final Table lTable = new Table(null, lCountries); lTable.setColumnHeaderMode(ColumnHeaderMode.HIDDEN); lTable.setWidth(FILTER_WIDTH, Unit.PIXELS); lTable.setPageLength(18); lCol3.addComponent(lFilter); lCol3.addComponent(lTable); } private static class CountryContainer extends IndexedContainer { protected static final String PROPERTY_NAME = "name"; //$NON-NLS-1$ @SuppressWarnings("unchecked") protected CountryContainer() { super(); addContainerProperty(PROPERTY_NAME, String.class, ""); //$NON-NLS-1$ for (final CountryBean lCountry : CountryData.INSTANCE.getCountryContainer().getItemIds()) { final Item lItem = addItem(lCountry); lItem.getItemProperty(CountryContainer.PROPERTY_NAME).setValue(lCountry.getName()); } } } }