com.vaadin.data.Property - java examples

Here are the examples of the java api com.vaadin.data.Property taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

33 Examples 7

19 View Complete Implementation : DecimalField.java
Copyright Apache License 2.0
Author : andersonfreitas
@SuppressWarnings("rawtypes")
@Override
public void setPropertyDataSource(Property newDataSource) {
    if (newDataSource != null) {
        if (!Number.clreplaced.isreplacedignableFrom(newDataSource.getType())) {
            throw new IllegalArgumentException("This field is compatible with number datasources only");
        }
        super.setPropertyDataSource(newDataSource);
    }
}

19 View Complete Implementation : MaskedTextField.java
Copyright Apache License 2.0
Author : andersonfreitas
@SuppressWarnings("rawtypes")
@Override
public void setPropertyDataSource(Property newDataSource) {
    if (newDataSource != null) {
        super.setPropertyDataSource(newDataSource);
        if (Number.clreplaced.isreplacedignableFrom(newDataSource.getType())) {
            validateNumberPropertyWithMask();
            setConverter(new MaskNumberConverter());
        } else if (char.clreplaced.isreplacedignableFrom(newDataSource.getType()) || String.clreplaced.isreplacedignableFrom(newDataSource.getType())) {
            setConverter(new UnmaskModelConverter(this));
        }
    }
}

19 View Complete Implementation : BeanWrapperItem.java
Copyright Apache License 2.0
Author : chelu
@Override
@SuppressWarnings("rawtypes")
public boolean addItemProperty(Object id, Property property) throws UnsupportedOperationException {
    this.properties.add((String) id);
    return true;
}

19 View Complete Implementation : BindSecurityGroupWindow.java
Copyright Apache License 2.0
Author : opensecuritycontroller
@SuppressWarnings({ "rawtypes" })
private void serviceTableClicked(long itemId) {
    ComboBox policyComboBox = (ComboBox) this.serviceTable.getContainerProperty(itemId, PROPERTY_ID_POLICY).getValue();
    ComboBox failurePolicyComboBox = (ComboBox) this.serviceTable.getContainerProperty(itemId, PROPERTY_ID_FAILURE_POLICY).getValue();
    Property itemProperty = this.serviceTable.getContainerProperty(itemId, PROPERTY_ID_ENABLED);
    boolean currentValue = (boolean) itemProperty.getValue();
    if (policyComboBox.getContainerDataSource().size() > 0) {
        if (isBindedWithMultiplePolicies(itemId)) {
            policyComboBox.setEnabled(false);
        } else {
            policyComboBox.setEnabled(currentValue);
        }
    }
    if (failurePolicyComboBox.getData() != null) {
        failurePolicyComboBox.setEnabled(currentValue);
    }
}

19 View Complete Implementation : DataBoundButton.java
Copyright GNU General Public License v3.0
Author : rlsutton1
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void setPropertyDataSource(Property newDataSource) {
    logger.info("data source set");
    this.dataSource = newDataSource;
    value = dataSource.getValue();
}

19 View Complete Implementation : UsingSessionAndUIScopeView.java
Copyright The Unlicense
Author : rolandkrueger
public clreplaced UsingSessionAndUIScopeView extends TranslatedCustomLayout {

    private final MessageProvider messageProvider;

    private final UriActionMapperTreeService uriActionMapperTreeService;

    /**
     * Textfield for changing the UI-scoped variable.
     */
    private TextField uiScopedValueTF;

    /**
     * Textfield for changing the session-scoped variable.
     */
    private TextField sessionScopedValueTF;

    /**
     * Property that contains the HTML code for the table which gives an overview
     * of all UI-scoped variables that are currently active for the current
     * session. For the sake of simplicity, we're putting this data in a simple
     * HTML table.
     */
    private Property<String> overviewTableProperty;

    public UsingSessionAndUIScopeView(MessageProvider messageProvider, UriActionMapperTreeService uriActionMapperTreeService, TemplateData layoutData) {
        super(layoutData);
        this.messageProvider = messageProvider;
        this.uriActionMapperTreeService = uriActionMapperTreeService;
        // create the data property for the overview table
        overviewTableProperty = new ObjectProperty<>("");
        // update the contents of the overview table
        refreshOverviewTable();
    }

    @Override
    public View buildLayout() {
        super.buildLayout();
        VerticalLayout layout = new VerticalLayout();
        layout.setSpacing(true);
        layout.setMargin(true);
        UriPathSegmentActionMapper demoActionMapper = DemoUI.getCurrent().getUriActionMapperTreeService().getActionMapperForName(UsingSessionAndUIScopeDemo.DEMO_NAME);
        // we add a label that contains a link to the demo application itself.
        // When this link is opened in a new browser window or tab, a new UI
        // object for this window will be created by the framework. All field
        // variables of this clreplaced live in this new UI object and are thus
        // multiplied in memory for every new UI object.
        layout.addComponent(new Label(messageProvider.getMessage("UsingSessionAndUIScope.openThisApplication", new Object[] { uriActionMapperTreeService.getUriActionMapperTree().replacedembleUriFragment(demoActionMapper) }), ContentMode.HTML));
        DemoUI.getCurrentUIScopedVariable().addValueChangeListener(new ValueChangeListener() {

            @Override
            public void valueChange(ValueChangeEvent event) {
                refreshOverviewTable();
            }
        });
        // Print the ID of the current UI. This ID is automatically replacedigned by
        // Vaadin to new UI objects.
        layout.addComponent(new Label(messageProvider.getMessage("UsingSessionAndUIScope.currentUIsID") + String.valueOf(UI.getCurrent().getUIId())));
        layout.addComponent(createFormLayout());
        layout.addComponent(new Label(overviewTableProperty, ContentMode.HTML));
        // Add a refresh button that will update the overview table with the
        // most current values from each currently active UI object.
        Button refreshBtn = new Button(messageProvider.getMessage("refresh"));
        refreshBtn.addClickListener(new Button.ClickListener() {

            @Override
            public void buttonClick(ClickEvent event) {
                refreshOverviewTable();
            }
        });
        layout.addComponent(refreshBtn);
        getLayout().addComponent(layout, "mainPanel");
        return this;
    }

    /**
     * Updates the contents of the overview table. This table displays the
     * contents of each UI-scoped variable that is currently active in the
     * session. Using {@link VaadinSession#getUIs()} we're getting a handle on
     * each {@link UI} object in the current session. We iterate over all UI
     * objects and print the UI-scoped variable for each individual UI object in
     * the table. Each time a new UI is opened, a new row will be added to the
     * table.
     */
    private void refreshOverviewTable() {
        StringBuilder buf = new StringBuilder();
        buf.append(messageProvider.getMessage("UsingSessionAndUIScope.overviewHeadline"));
        // add the number of currently active UI objects
        buf.append(messageProvider.getMessage("UsingSessionAndUIScope.activeUIobjects", new Object[] { VaadinSession.getCurrent().getUIs().size(), VaadinSession.getCurrent().getSession().getId() }));
        // add a table showing the UI-scoped variable values for each currently
        // active UI object
        buf.append("<table>");
        for (UI ui : VaadinSession.getCurrent().getUIs()) {
            buf.append("<tr><td>");
            buf.append("UI ID ").append(ui.getUIId()).append(": ");
            buf.append("</td><td>");
            // cast the UI object to our UI subclreplaced and get the UI-scoped
            // variable with the non-static method getUIScopedVariable(). We
            // can't use the static version here as this will always return the
            // variable for the current UI.
            buf.append(((DemoUI) ui).getUIScopedVariable().getValue());
            buf.append("</td></tr>");
        }
        buf.append("</table>");
        // update the label with the new table contents
        overviewTableProperty.setValue(buf.toString());
    }

    /**
     * Creates the form layout that contains the two textfields to edit the
     * session and UI-scoped variables.
     */
    private FormLayout createFormLayout() {
        FormLayout formLayout = new FormLayout();
        formLayout.setCaption(messageProvider.getMessage("UsingSessionAndUIScope.editVariables"));
        uiScopedValueTF = new TextField(messageProvider.getMessage("UsingSessionAndUIScope.uiScopedValue"), DemoUI.getCurrentUIScopedVariable());
        sessionScopedValueTF = new TextField(messageProvider.getMessage("UsingSessionAndUIScope.sessionScopedValue"), DemoUI.getSessionScopedVariable());
        uiScopedValueTF.setImmediate(true);
        sessionScopedValueTF.setImmediate(true);
        formLayout.addComponent(uiScopedValueTF);
        formLayout.addComponent(sessionScopedValueTF);
        return formLayout;
    }
}

19 View Complete Implementation : MyBeanItem.java
Copyright Mozilla Public License 2.0
Author : sensiasoft
@Override
@SuppressWarnings("rawtypes")
public boolean addItemProperty(Object id, Property property) throws UnsupportedOperationException {
    properties.put(id, property);
    return true;
}

19 View Complete Implementation : SOSConfigForm.java
Copyright Mozilla Public License 2.0
Author : sensiasoft
@Override
public void build(String replacedle, MyBeanItem<? extends Object> beanItem) {
    super.build(replacedle, beanItem);
    // add link to capabilities
    Property<?> endPointProp = beanItem.gereplacedemProperty(PROP_ENDPOINT);
    if (endPointProp != null) {
        String baseUrl = ((String) endPointProp.getValue()).substring(1);
        String href = baseUrl + "?service=SOS&version=2.0&request=GetCapabilities";
        Link link = new Link("Link to capabilities", new ExternalResource(href), "_blank", 0, 0, null);
        this.addComponent(link, 0);
    }
}

18 View Complete Implementation : ConfigurableTable.java
Copyright Apache License 2.0
Author : chelu
/**
 * {@inheritDoc}
 */
@SuppressWarnings("rawtypes")
@Override
protected Object getPropertyValue(Object rowId, Object colId, Property property) {
    Column column = columnMap.get(colId);
    if (column != null) {
        if (isEditable()) {
            Clreplaced<? extends Component> editorClreplaced = column.getCellEditor();
            if (editorClreplaced == null)
                return super.getPropertyValue(rowId, colId, property);
            else {
                return getComponentForProperty(property, editorClreplaced);
            }
        }
        // Test cell component
        Clreplaced<? extends Component> cellComponentClreplaced = column.getCellComponent();
        if (cellComponentClreplaced != null) {
            return getComponentForProperty(property, cellComponentClreplaced);
        }
        // Last try, test property editor
        PropertyEditor pe = column.getPropertyEditor();
        if (pe != null) {
            pe.setValue(property.getValue());
            return pe.getAsText();
        }
    }
    // Default behavior
    return super.getPropertyValue(rowId, colId, property);
}

18 View Complete Implementation : DateColumnGenerator.java
Copyright GNU General Public License v3.0
Author : nfrankel
@Override
public Object generateCell(Table source, Object itemId, Object columnId) {
    Item item = source.gereplacedem(itemId);
    Property<Date> property = item.gereplacedemProperty(columnId);
    Date date = property.getValue();
    if (date == null) {
        return "";
    }
    DateFormat dateFormat = new SimpleDateFormat();
    return dateFormat.format(date);
}

18 View Complete Implementation : BindSecurityGroupWindow.java
Copyright Apache License 2.0
Author : opensecuritycontroller
@SuppressWarnings("unchecked")
protected void moveItem(boolean moveUp) {
    if (this.serviceTable.getValue() != null) {
        long selectedItemId = (long) this.serviceTable.getValue();
        Property<Long> selectedItemChainProperty = this.serviceTable.getContainerProperty(selectedItemId, PROPERTY_ID_CHAIN_ORDER);
        Long currentOrderValue = selectedItemChainProperty.getValue();
        Object nexreplacedemIdObj = this.serviceTable.nexreplacedemId(selectedItemId);
        Object previousItemIdObj = this.serviceTable.prevItemId(selectedItemId);
        if (moveUp && previousItemIdObj != null) {
            Property<Long> previousItemChainProperty = this.serviceTable.getContainerProperty(previousItemIdObj, PROPERTY_ID_CHAIN_ORDER);
            Long previousItemOrderValue = previousItemChainProperty.getValue();
            selectedItemChainProperty.setValue(previousItemOrderValue);
            previousItemChainProperty.setValue(currentOrderValue);
            sortByChainOrder();
        } else if (!moveUp && nexreplacedemIdObj != null) {
            Property<Long> nexreplacedemChainProperty = this.serviceTable.getContainerProperty(nexreplacedemIdObj, PROPERTY_ID_CHAIN_ORDER);
            Long nexreplacedemOrderValue = nexreplacedemChainProperty.getValue();
            selectedItemChainProperty.setValue(nexreplacedemOrderValue);
            nexreplacedemChainProperty.setValue(currentOrderValue);
            sortByChainOrder();
        }
    }
}

18 View Complete Implementation : MultiSelectConverter.java
Copyright GNU General Public License v3.0
Author : rlsutton1
private void removeBackReference(T enreplacedy) {
    if (!isOwningSide()) {
        Property<Object> itemProperty = getBackReferenceItemProperty(enreplacedy);
        Object property = itemProperty.getValue();
        if (property instanceof Collection) {
            // many to many
            @SuppressWarnings("rawtypes")
            Collection c = (Collection) property;
            c.remove(getPropertyDataSource().gereplacedem().getEnreplacedy());
            itemProperty.setValue(c);
        } else {
            // one to many
            itemProperty.setValue(null);
        }
    }
}

18 View Complete Implementation : DateColumnGenerator.java
Copyright GNU General Public License v3.0
Author : rlsutton1
@Override
public Object generateCell(Table source, Object itemId, Object columnId) {
    Item item = source.gereplacedem(itemId);
    if (item != null) {
        Property<?> itemProperty = item.gereplacedemProperty(propertyId);
        if (itemProperty != null) {
            Object value = itemProperty.getValue();
            if (value != null) {
                return new Label(sdf.format(value));
            }
        }
    }
    return new Label("");
}

18 View Complete Implementation : DataBoundButton.java
Copyright GNU General Public License v3.0
Author : rlsutton1
public clreplaced DataBoundButton<T> extends Button implements Field<T> {

    /**
     */
    private static final long serialVersionUID = 2137449474336770169L;

    private Property<T> dataSource;

    private boolean required = false;

    private String requiredMessage = "";

    private T value;

    final Clreplaced<T> type;

    private boolean invalidCommitted = false;

    private boolean buffered = false;

    Set<Validator> validators = new HashSet<>();

    private boolean invalidAllowed = true;

    transient Logger logger = LogManager.getLogger(DataBoundButton.clreplaced);

    ListenerManager<ValueChangeListener> listeners = ListenerManagerFactory.createListenerManager("DataBoundButton", 10);

    DataBoundButton(Clreplaced<T> type) {
        super();
        this.type = type;
    }

    public DataBoundButton(String fieldLabel, Clreplaced<T> type2) {
        super(fieldLabel);
        type = type2;
    }

    @Override
    public boolean isInvalidCommitted() {
        return invalidCommitted;
    }

    @Override
    public void setInvalidCommitted(boolean isCommitted) {
        invalidCommitted = isCommitted;
    }

    @Override
    public void commit() throws SourceException, InvalidValueException {
        dataSource.setValue(value);
    }

    @Override
    public void discard() throws SourceException {
        value = dataSource.getValue();
    }

    @Override
    public void setBuffered(boolean buffered) {
        this.buffered = buffered;
    }

    @Override
    public boolean isBuffered() {
        return buffered;
    }

    @Override
    public boolean isModified() {
        return false;
    }

    @Override
    public void addValidator(Validator validator) {
        validators.add(validator);
    }

    @Override
    public void removeValidator(Validator validator) {
        validators.remove(validator);
    }

    @Override
    public void removeAllValidators() {
        validators.clear();
    }

    @Override
    public Collection<Validator> getValidators() {
        return validators;
    }

    @Override
    public boolean isValid() {
        return true;
    }

    @Override
    public void validate() throws InvalidValueException {
    }

    @Override
    public boolean isInvalidAllowed() {
        return invalidAllowed;
    }

    @Override
    public void setInvalidAllowed(boolean invalidValueAllowed) throws UnsupportedOperationException {
        invalidAllowed = invalidValueAllowed;
    }

    @Override
    public T getValue() {
        logger.info(value);
        return value;
    }

    @Override
    public void setValue(T newValue) throws ReadOnlyException {
        logger.info(value);
        value = newValue;
    }

    @Override
    public Clreplaced<T> getType() {
        return type;
    }

    @Override
    public void addValueChangeListener(ValueChangeListener listener) {
        listeners.addListener(listener);
    }

    @Override
    public void addListener(ValueChangeListener listener) {
        listeners.addListener(listener);
    }

    @Override
    public void removeValueChangeListener(ValueChangeListener listener) {
        listeners.removeListener(listener);
    }

    @Override
    public void removeListener(ValueChangeListener listener) {
        listeners.removeListener(listener);
    }

    @Override
    public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {
        logger.info("Value changed");
    }

    @SuppressWarnings({ "rawtypes", "unchecked" })
    @Override
    public void setPropertyDataSource(Property newDataSource) {
        logger.info("data source set");
        this.dataSource = newDataSource;
        value = dataSource.getValue();
    }

    @Override
    public Property<T> getPropertyDataSource() {
        return dataSource;
    }

    @Override
    public boolean isRequired() {
        return required;
    }

    @Override
    public void setRequired(boolean required) {
        this.required = required;
    }

    @Override
    public void setRequiredError(String requiredMessage) {
        this.requiredMessage = requiredMessage;
    }

    @Override
    public String getRequiredError() {
        return requiredMessage;
    }

    @Override
    public boolean isEmpty() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void clear() {
    // TODO Auto-generated method stub
    }
}

18 View Complete Implementation : OrderingListSelect.java
Copyright GNU General Public License v3.0
Author : rlsutton1
@SuppressWarnings({ "unchecked", "deprecation" })
public void save() {
    for (Object itemId : container.gereplacedemIds()) {
        Item item = container.gereplacedem(itemId);
        Long pk = (Long) item.gereplacedemProperty(pkProperty).getValue();
        Property<Long> sortOrder = item.gereplacedemProperty(sortProperty);
        int index = getIndex(pk);
        sortOrder.setValue(new Long(index));
    }
    container.commit();
    setModified(false);
    if (listener != null) {
        listSelect.removeListener(listener);
    }
}

18 View Complete Implementation : PoJoTable.java
Copyright GNU General Public License v3.0
Author : rlsutton1
public void addRow(T pojo) {
    Item item = this.gereplacedem(pojo);
    // If the same item is sent again we just update it.
    if (item == null)
        item = this.addItem(pojo);
    for (Column column : columns) {
        try {
            @SuppressWarnings("unchecked")
            Property<Object> property = item.gereplacedemProperty(column.name);
            property.setValue(column.getValue(pojo));
        } catch (RuntimeException e) {
            logger.error(e, e);
            throw e;
        }
    }
}

18 View Complete Implementation : DayOfWeekCheckBoxes.java
Copyright GNU General Public License v3.0
Author : rlsutton1
@SuppressWarnings("unchecked")
@Override
public void setPropertyDataSource(@SuppressWarnings("rawtypes") Property newDataSource) {
    datasource = newDataSource;
    if (datasource != null) {
        setValue(datasource.getValue());
    } else {
        setValue(null);
    }
}

18 View Complete Implementation : DayOfWeekCheckBoxes.java
Copyright GNU General Public License v3.0
Author : rlsutton1
public clreplaced DayOfWeekCheckBoxes extends HorizontalLayout implements Field<String> {

    // Logger logger = org.apache.logging.log4j.LogManager.getLogger();
    private static final long serialVersionUID = -3339061540299550077L;

    private Property<String> datasource;

    List<CheckBox> boxes = new LinkedList<CheckBox>();

    private boolean required;

    /**
     * days of week as per DateTimeConstants mon = 1 , sun = 7
     */
    public DayOfWeekCheckBoxes() {
        setSpacing(true);
        setSizeFull();
        String[] days1 = new String[] { "Mon", "Tue", "Wed", "Thur", "Fri", "Sat", "Sun" };
        int ctr = 1;
        for (String day : days1) {
            CheckBox dayCheck = new CheckBox(day);
            dayCheck.setData(ctr++);
            addComponent(dayCheck);
            boxes.add(dayCheck);
        }
    }

    public void focus() {
        super.focus();
    }

    @Override
    public boolean isInvalidCommitted() {
        return false;
    }

    @Override
    public void setInvalidCommitted(boolean isCommitted) {
    }

    @Override
    public void commit() throws SourceException, InvalidValueException {
        datasource.setValue(getValue());
    }

    @Override
    public void discard() throws SourceException {
        setValue(datasource.getValue());
    }

    @Override
    public void setBuffered(boolean buffered) {
    // TODO Auto-generated method stub
    }

    @Override
    public boolean isBuffered() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public boolean isModified() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void addValidator(Validator validator) {
    // TODO Auto-generated method stub
    }

    @Override
    public void removeValidator(Validator validator) {
    // TODO Auto-generated method stub
    }

    @Override
    public void removeAllValidators() {
    // TODO Auto-generated method stub
    }

    @Override
    public Collection<Validator> getValidators() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public boolean isValid() {
        return true;
    }

    @Override
    public void validate() throws InvalidValueException {
        if (isVisible() && getValue().length() == 0) {
            throw new InvalidValueException("You must select at least one day");
        }
    }

    @Override
    public boolean isInvalidAllowed() {
        return false;
    }

    @Override
    public void setInvalidAllowed(boolean invalidValueAllowed) throws UnsupportedOperationException {
    }

    @Override
    public String getValue() {
        String value = "";
        int i = 1;
        for (CheckBox box : boxes) {
            if (box.getValue()) {
                if (value.length() > 0) {
                    value += ",";
                }
                value += i;
            }
            i++;
        }
        return value;
    }

    @Override
    public void setValue(String newValue) throws com.vaadin.data.Property.ReadOnlyException {
        for (CheckBox box : boxes) {
            box.setValue(false);
        }
        if (newValue != null && newValue.length() > 0) {
            String[] values = newValue.split(",");
            for (String value : values) {
                int index = Integer.parseInt(value);
                if (index > 0) {
                    boxes.get(index - 1).setValue(true);
                }
            }
        }
    }

    @Override
    public Clreplaced<? extends String> getType() {
        return String.clreplaced;
    }

    @Override
    public void addValueChangeListener(com.vaadin.data.Property.ValueChangeListener listener) {
    // TODO Auto-generated method stub
    }

    @Override
    public void addListener(com.vaadin.data.Property.ValueChangeListener listener) {
    // TODO Auto-generated method stub
    }

    @Override
    public void removeValueChangeListener(com.vaadin.data.Property.ValueChangeListener listener) {
    // TODO Auto-generated method stub
    }

    @Override
    public void removeListener(com.vaadin.data.Property.ValueChangeListener listener) {
    // TODO Auto-generated method stub
    }

    @Override
    public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {
    // TODO Auto-generated method stub
    }

    @SuppressWarnings("unchecked")
    @Override
    public void setPropertyDataSource(@SuppressWarnings("rawtypes") Property newDataSource) {
        datasource = newDataSource;
        if (datasource != null) {
            setValue(datasource.getValue());
        } else {
            setValue(null);
        }
    }

    @SuppressWarnings("rawtypes")
    @Override
    public Property getPropertyDataSource() {
        return datasource;
    }

    @Override
    public int getTabIndex() {
        return 0;
    }

    @Override
    public void setTabIndex(int tabIndex) {
    }

    @Override
    public boolean isRequired() {
        return required;
    }

    @Override
    public void setRequired(boolean required) {
        this.required = required;
    }

    @Override
    public void setRequiredError(String requiredMessage) {
    // TODO Auto-generated method stub
    }

    @Override
    public String getRequiredError() {
        return "You must select at least one day";
    }

    @Override
    public boolean isEmpty() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void clear() {
    // TODO Auto-generated method stub
    }
}

18 View Complete Implementation : TimePicker.java
Copyright GNU General Public License v3.0
Author : rlsutton1
@SuppressWarnings("unchecked")
@Override
public void setPropertyDataSource(Property newDataSource) {
    clearValue();
    datasource = newDataSource;
    if (datasource != null && datasource.getValue() != null) {
        setValues(datasource.getValue());
    }
}

18 View Complete Implementation : TimePicker24.java
Copyright GNU General Public License v3.0
Author : rlsutton1
@SuppressWarnings("unchecked")
@Override
public void setPropertyDataSource(Property newDataSource) {
    clearValue();
    datasource = newDataSource;
    if (datasource.getValue() != null) {
        setValues(datasource.getValue());
    }
}

18 View Complete Implementation : MainApplicationUI.java
Copyright The Unlicense
Author : rolandkrueger
/**
 * <p>
 * This demo application demonstrates the two different scopes of a Vaadin 7
 * session. These are the common session scope and the new UI scope. The UI
 * scope represents the data needed for the contents of one browser window or
 * tab opened from the same session.
 * </p>
 * <p>
 * To demonstrate Vaadin's UI scope, a new UI object can be opened for the
 * current session by clicking a link that links to the application itself. This
 * link can be opened in a new browser window or tab. By opening a new
 * tab/window, a new UI object is created that lives in its own section of the
 * current session. You can change the UI-scoped variable for this object
 * without affecting the UI-scoped variables of the other UI objects. When you
 * edit the session-scoped variable, you'll see that the new value is shared
 * across all active UI objects. You have to reload a browser window or click
 * the refresh button to see the effect of editing the session-scoped variable
 * in a different tab.
 * </p>
 */
// We're using @PreserveOnRefresh so that no new UI object will be created if
// the we only reload the page.
@PreserveOnRefresh
public clreplaced MainApplicationUI extends UI {

    private final static String SESSION_SCOPED_VALUE_ID = "sessionScopedValue";

    /**
     * The UI-scoped variable.
     */
    private ObjectProperty<String> uiScopedVariable;

    /**
     * Textfield for changing the UI-scoped variable.
     */
    private TextField uiScopedValueTF;

    /**
     * Textfield for changing the session-scoped variable.
     */
    private TextField sessionScopedValueTF;

    /**
     * Property that contains the HTML code for the table which gives an
     * overview of all UI-scoped variables that are currently active for the
     * current session. For the sake of simplicity, we're putting this data in a
     * simple HTML table.
     */
    private Property<String> overviewTableProperty;

    @Override
    protected void init(VaadinRequest request) {
        initSessionScopedVariable();
        initUIScopedVariable();
        VerticalLayout layout = new VerticalLayout();
        layout.setSpacing(true);
        layout.setMargin(true);
        String headlineText = "<h1>Using Vaadin's Session and UI Scope</h1><hr/>";
        layout.addComponent(new Label(headlineText, ContentMode.HTML));
        // we add a label that contains a link to the demo application itself.
        // When this link is opened in a new browser window or tab, a new UI
        // object for this window will be created by the framework. All field
        // variables of this clreplaced live in this new UI object and are thus
        // multiplied in memory for every new UI object.
        layout.addComponent(new Label("Open this application in a new browser window/tab <a href=\"#\" target=\"_blank\" style=\"color: red;\">with this link</a> and" + " refresh the browser contents after having edited the scoped variables.", ContentMode.HTML));
        MainApplicationUI.getCurrentUIScopedVariable().addValueChangeListener(new ValueChangeListener() {

            @Override
            public void valueChange(ValueChangeEvent event) {
                refreshOverviewTable();
            }
        });
        // Print the ID of the current UI. This ID is automatically replacedigned by
        // Vaadin to new UI objects.
        layout.addComponent(new Label("Current UI's ID: " + String.valueOf(UI.getCurrent().getUIId())));
        layout.addComponent(createFormLayout());
        layout.addComponent(new Label(overviewTableProperty, ContentMode.HTML));
        // Add a refresh button that will update the overview table with the
        // most current values from each currently active UI object.
        Button refreshBtn = new Button("Refresh");
        refreshBtn.addClickListener(new Button.ClickListener() {

            @Override
            public void buttonClick(ClickEvent event) {
                refreshOverviewTable();
            }
        });
        layout.addComponent(refreshBtn);
        setContent(layout);
    }

    /**
     * Our own version of {@link UI#getCurrent()} with its return type narrowed
     * down to our own subclreplaced of UI. Using this method from our application
     * allows us to access all data from this UI clreplaced in a static way. This is
     * similar to the ThreadLocal pattern which we need not use any more in
     * Vaadin 7.
     */
    public static MainApplicationUI getCurrent() {
        return (MainApplicationUI) UI.getCurrent();
    }

    /**
     * Initializes the UI-scoped variable for this {@link UI}. In this method,
     * we don't have to check whether this variable has already been initialized
     * as it is local to the current {@link UI}. This differs to the
     * initialization of the session-scoped variable where we first have to
     * check whether the value has already been initialized by another
     * UI-object.
     */
    private void initUIScopedVariable() {
        // create the instance for the UI-scoped variable
        uiScopedVariable = new ObjectProperty<String>("");
        // create the data property for the overview table
        overviewTableProperty = new ObjectProperty<String>("");
        // update the contents of the overview table
        refreshOverviewTable();
    }

    /**
     * Initialize a session-scoped variable whose value can be changed with a
     * textfield. This method demonstrates the typical process of how the shared
     * session data has to be accessed. When changing session data the session
     * object has to be locked prior to accessing the data. After the data has
     * been changed, the lock must be released. To release the lock safely, it
     * is advised to do that in a finally-block.
     */
    private void initSessionScopedVariable() {
        // only initialize the variable if that has not already been done by
        // another UI
        if (MainApplicationUI.getSessionScopedVariable() == null) {
            try {
                // lock the current HTTP session in a try-finally-block
                VaadinSession.getCurrent().getLockInstance().lock();
                // Initialize a session-scoped variable with the name given by
                // the constant SESSION_SCOPED_VALUE_ID. We're using a Vaadin
                // property as the data of the session variable so that the data
                // can be changed with a textfield and displayed in a label.
                VaadinSession.getCurrent().setAttribute(SESSION_SCOPED_VALUE_ID, new ObjectProperty<String>(""));
            } finally {
                // safely unlock the session in a finally block
                VaadinSession.getCurrent().getLockInstance().unlock();
            }
        }
    }

    /**
     * Provides our session-scoped variable. This is implemented as a static
     * method so that the variable can be accessed from anywhere in the
     * application similar to a ThreadLocal variable. As the variable is fetched
     * from the current session (using {@link VaadinSession#getCurrent()}) it is
     * guaranteed that this method always returns the correct instance for the
     * current session.
     */
    @SuppressWarnings("unchecked")
    public static Property<String> getSessionScopedVariable() {
        Object value = VaadinSession.getCurrent().getAttribute(SESSION_SCOPED_VALUE_ID);
        return value == null ? null : (Property<String>) value;
    }

    /**
     * Returns the UI-scoped variable for this {@link UI} instance.
     */
    public ObjectProperty<String> getUIScopedVariable() {
        return uiScopedVariable;
    }

    /**
     * Returns the UI-scoped variable for this {@link UI} instance in a static
     * way. This method can be used like a common ThreadLocal variable from
     * anywhere in the the application:
     * <code>MainApplicationUI.getCurrentUIScopedVariable();</code> It is
     * guaranteed that this method will always return the correct instance for
     * the current UI.
     */
    public static ObjectProperty<String> getCurrentUIScopedVariable() {
        return MainApplicationUI.getCurrent().getUIScopedVariable();
    }

    /**
     * Creates the form layout that contains the two textfields to edit the
     * session and UI-scoped variables.
     */
    private FormLayout createFormLayout() {
        FormLayout formLayout = new FormLayout();
        formLayout.setCaption("Edit session/UI scoped variables:");
        uiScopedValueTF = new TextField("UI-scoped value:", MainApplicationUI.getCurrentUIScopedVariable());
        sessionScopedValueTF = new TextField("Session-scoped value:", getSessionScopedVariable());
        uiScopedValueTF.setImmediate(true);
        sessionScopedValueTF.setImmediate(true);
        formLayout.addComponent(uiScopedValueTF);
        formLayout.addComponent(sessionScopedValueTF);
        return formLayout;
    }

    /**
     * Updates the contents of the overview table. This table displays the
     * contents of each UI-scoped variable that is currently active in the
     * session. Using {@link VaadinSession#getUIs()} we're getting a handle on
     * each {@link UI} object in the current session. We iterate over all UI
     * objects and print the UI-scoped variable for each individual UI object in
     * the table. Each time a new UI is opened, a new row will be added to the
     * table.
     */
    private void refreshOverviewTable() {
        StringBuilder buf = new StringBuilder();
        buf.append("<h2>Overview of all UI scoped variables in the current session</h2>");
        // add the number of currently active UI objects
        buf.append("There are currently ").append(VaadinSession.getCurrent().getUIs().size()).append(" UI objects active for this session (Session ID <em>");
        buf.append(VaadinSession.getCurrent().getSession().getId()).append("</em>).");
        // add a table showing the UI-scoped variable values for each currently
        // active UI object
        buf.append("<table>");
        for (UI ui : VaadinSession.getCurrent().getUIs()) {
            buf.append("<tr><td>");
            buf.append("UI ID ").append(ui.getUIId()).append(": ");
            buf.append("</td><td>");
            // cast the UI object to our UI subclreplaced and get the UI-scoped
            // variable with the non-static method getUIScopedVariable(). We
            // can't use the static version here as this will always return the
            // variable for the current UI.
            buf.append(((MainApplicationUI) ui).getUIScopedVariable().getValue());
            buf.append("</td></tr>");
        }
        buf.append("</table>");
        // update the lable with the new table contents
        overviewTableProperty.setValue(buf.toString());
    }
}

17 View Complete Implementation : MultiSelectConverter.java
Copyright GNU General Public License v3.0
Author : rlsutton1
@SuppressWarnings({ "rawtypes", "unchecked" })
private void addBackReference(T enreplacedy) {
    if (!isOwningSide()) {
        Property itemProperty = getBackReferenceItemProperty(enreplacedy);
        Object property = itemProperty.getValue();
        if (property == null || !(property instanceof Collection)) {
            itemProperty.setValue(getPropertyDataSource().gereplacedem().getEnreplacedy());
        // one to many
        } else {
            // many to many
            Preconditions.checkArgument(property instanceof Collection, "Expected a Collection got " + itemProperty.getType() + " " + property.getClreplaced().getCanonicalName());
            Collection c = (Collection) property;
            c.add(getPropertyDataSource().gereplacedem().getEnreplacedy());
            itemProperty.setValue(c);
        }
    }
}

16 View Complete Implementation : FunctionSelectionWindow.java
Copyright Apache License 2.0
Author : apache
protected void initializeFunctions() {
    // 
    // Setup data source. Make sure there are no current filters
    // 
    FunctionSelectionWindow.highOrderFunctions.removeAllContainerFilters();
    this.tableFunctions.setContainerDataSource(FunctionSelectionWindow.highOrderFunctions);
    // 
    // Initialize GUI properties
    // 
    this.tableFunctions.setImmediate(true);
    this.tableFunctions.setNullSelectionAllowed(false);
    this.tableFunctions.setRequired(true);
    this.tableFunctions.setRequiredError("Please select a function.");
    this.tableFunctions.setSelectable(true);
    this.tableFunctions.setPageLength(15);
    this.tableFunctions.setVisibleColumns(new Object[] { PROPERTY_SHORTNAME, PROPERTY_XACMLID });
    this.tableFunctions.setColumnHeaders(new String[] { "Short Function Name", "Xacml ID" });
    // 
    // Respond to selection events
    // 
    this.tableFunctions.addValueChangeListener(new ValueChangeListener() {

        private static final long serialVersionUID = 1L;

        @Override
        public void valueChange(ValueChangeEvent event) {
            Object id = self.tableFunctions.getValue();
            if (id != null) {
                Item item = FunctionSelectionWindow.highOrderFunctions.gereplacedem(id);
                if (item == null) {
                    return;
                }
                Property<?> property = item.gereplacedemProperty(PROPERTY_XACMLID);
                if (property == null) {
                    return;
                }
                selectedFunction = property.getValue().toString();
                self.buttonSave.setEnabled(true);
            } else {
                self.buttonSave.setEnabled(false);
            }
        }
    });
    // 
    // Respond to double-click events
    // 
    this.tableFunctions.addItemClickListener(new ItemClickListener() {

        private static final long serialVersionUID = 1L;

        @Override
        public void itemClick(ItemClickEvent event) {
            if (event.isDoubleClick()) {
                self.doSave();
            }
        }
    });
    // 
    // Setup the default selection
    // 
    this.buttonSave.setEnabled(false);
    if (this.defaultFunctionID != null) {
        for (Object id : FunctionSelectionWindow.highOrderFunctions.gereplacedemIds()) {
            Item item = FunctionSelectionWindow.highOrderFunctions.gereplacedem(id);
            if (item != null) {
                Property<?> property = item.gereplacedemProperty(PROPERTY_XACMLID);
                if (property != null && property.getValue().toString().equals(this.defaultFunctionID)) {
                    this.tableFunctions.select(id);
                    break;
                }
            }
        }
    }
}

16 View Complete Implementation : MatchEditorWindow.java
Copyright Apache License 2.0
Author : apache
protected void initializeFunctions() {
    // 
    // Setup datasource and GUI properties
    // 
    this.tableFunctions.setContainerDataSource(MatchEditorWindow.matchFunctions);
    this.tableFunctions.setImmediate(true);
    this.tableFunctions.setNullSelectionAllowed(false);
    this.tableFunctions.setRequired(true);
    this.tableFunctions.setRequiredError("Please select a function.");
    this.tableFunctions.setSelectable(true);
    this.tableFunctions.setPageLength(15);
    this.tableFunctions.setVisibleColumns(PROPERTY_SHORTNAME, PROPERTY_XACMLID);
    this.tableFunctions.setColumnHeaders(new String[] { "Short Function Name", "Xacml ID" });
    // 
    // Filter out functions where ARG2 is the given datatype. NOTE: The
    // AttributeDesignator/AttributeSelector is the 2nd argument.
    // 
    MatchEditorWindow.matchFunctions.removeAllContainerFilters();
    MatchEditorWindow.matchFunctions.addContainerFilter(new Compare.Equal(PROPERTY_ARG2_DATATYPE, this.datatype.getId()));
    // 
    // Respond to selection events
    // 
    this.tableFunctions.addValueChangeListener(new ValueChangeListener() {

        private static final long serialVersionUID = 1L;

        @Override
        public void valueChange(ValueChangeEvent event) {
            Object id = self.tableFunctions.getValue();
            if (id != null) {
                Item item = MatchEditorWindow.matchFunctions.gereplacedem(id);
                if (item == null) {
                    return;
                }
                Property<?> property = item.gereplacedemProperty(PROPERTY_XACMLID);
                if (property == null) {
                    return;
                }
                self.match.setMatchId(property.getValue().toString());
                self.buttonSave.setEnabled(true);
            } else {
                self.buttonSave.setEnabled(false);
            }
        }
    });
    // 
    // Respond to double-click events
    // 
    this.tableFunctions.addItemClickListener(new ItemClickListener() {

        private static final long serialVersionUID = 1L;

        @Override
        public void itemClick(ItemClickEvent event) {
            if (event.isDoubleClick()) {
                self.doSave();
            }
        }
    });
    // 
    // Default selection
    // 
    this.buttonSave.setEnabled(false);
    if (this.match.getMatchId() != null) {
        for (Object id : MatchEditorWindow.matchFunctions.gereplacedemIds()) {
            Item item = MatchEditorWindow.matchFunctions.gereplacedem(id);
            if (item != null) {
                Property<?> property = item.gereplacedemProperty(PROPERTY_XACMLID);
                if (property != null && property.getValue().toString().equals(this.match.getMatchId())) {
                    this.tableFunctions.select(id);
                    break;
                }
            }
        }
    }
}

16 View Complete Implementation : CheckboxColumnGenerator.java
Copyright GNU General Public License v3.0
Author : rlsutton1
@Override
public Object generateCell(Table source, Object itemId, Object columnId) {
    // Need a layout to set center alignment on the checkbox.
    // http://dev.vaadin.com/ticket/12027
    final VerticalLayout layout = new VerticalLayout();
    final CheckBox checkbox = new CheckBox();
    layout.addComponent(checkbox);
    layout.setComponentAlignment(checkbox, Alignment.MIDDLE_CENTER);
    @SuppressWarnings("unchecked")
    final Property<Boolean> property = source.gereplacedem(itemId).gereplacedemProperty(columnId);
    checkbox.setValue(property.getValue());
    checkbox.addValueChangeListener(new ValueChangeListener() {

        private static final long serialVersionUID = 1L;

        @Override
        public void valueChange(ValueChangeEvent event) {
            property.setValue((Boolean) event.getProperty().getValue());
        }
    });
    ((ValueChangeNotifier) property).addValueChangeListener(new ValueChangeListener() {

        private static final long serialVersionUID = 1L;

        @Override
        public void valueChange(ValueChangeEvent event) {
            checkbox.setValue((Boolean) event.getProperty().getValue());
        }
    });
    return layout;
}

16 View Complete Implementation : TimePicker24.java
Copyright GNU General Public License v3.0
Author : rlsutton1
@SuppressWarnings("rawtypes")
public clreplaced TimePicker24 extends HorizontalLayout implements Field {

    Logger logger = org.apache.logging.log4j.LogManager.getLogger();

    protected static final String TIME_FORMAT = "HH:mm a";

    protected static final String TIME_FORMAT2 = "HH:mma";

    private static final String PM = "pm";

    private static final String AM = "am";

    private static final long serialVersionUID = 1826417125815798837L;

    private static final String EMPTY = "--:--";

    String headerColor = "#B2D7FF";

    final private TextField displayTime = new TextField();

    String hour = "12";

    String minute = "00";

    boolean isSet = false;

    // private Button zeroHourButton;
    // private Button zeroMinuteButton;
    private String replacedle;

    private TextField field;

    private Property<Date> datasource;

    // private boolean isRequired;
    private String requiredErrorMessage;

    private int tabIndex;

    private boolean isBuffered;

    private Validator validator;

    private SimpleDateFormat sdf;

    private String amPm;

    private Button pickerButton;

    public TimePicker24(String replacedle, String format) {
        sdf = new SimpleDateFormat(format);
        DateFormatSymbols symbols = new DateFormatSymbols();
        symbols.setAmPmStrings(new String[] { AM, PM });
        sdf.setDateFormatSymbols(symbols);
        setCaption(replacedle);
        field = new TextField();
        field.setWidth("125");
        field.setImmediate(true);
        displayTime.setImmediate(true);
        validator = new Validator() {

            private static final long serialVersionUID = 6579163030027373837L;

            @Override
            public void validate(Object value) throws InvalidValueException {
                if (value == null || value.equals(EMPTY)) {
                    return;
                }
                try {
                    sdf.parse((String) value);
                } catch (ParseException e) {
                    throw new InvalidValueException("Invalid time" + value);
                }
            }
        };
        displayTime.addValidator(validator);
        field.addValidator(validator);
        field.addValueChangeListener(new ValueChangeListener() {

            private static final long serialVersionUID = 1L;

            @Override
            public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {
                if (event.getProperty().getValue() != null) {
                    try {
                        final Date parsedDate = parseDate((String) event.getProperty().getValue());
                        if (parsedDate != null) {
                            setValue(parsedDate);
                        }
                    } catch (InvalidValueException e) {
                        Notification.show(e.getMessage(), Type.ERROR_MESSAGE);
                    }
                }
            }
        });
        this.replacedle = replacedle;
        CssLayout hl = new CssLayout();
        hl.addStyleName("v-component-group");
        hl.setWidth("100%");
        hl.setHeight("35");
        pickerButton = new Button();
        pickerButton.setIcon(FontAwesome.CLOCK_O);
        hl.addComponent(field);
        hl.addComponent(pickerButton);
        pickerButton.addClickListener(new ClickListener() {

            private static final long serialVersionUID = 1L;

            @Override
            public void buttonClick(ClickEvent event) {
                showPopupTimePicker();
            }
        });
        addComponent(hl);
    }

    protected Date parseDate(String value) {
        if (value == null || value.equals(EMPTY)) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(TIME_FORMAT);
        try {
            return sdf.parse(value);
        } catch (ParseException e) {
            sdf = new SimpleDateFormat(TIME_FORMAT2);
            try {
                return sdf.parse(value);
            } catch (ParseException e2) {
                throw new InvalidValueException("Time format is " + TIME_FORMAT);
            }
        }
    }

    @Override
    public void setReadOnly(boolean readOnly) {
        pickerButton.setReadOnly(true);
    }

    public void focus() {
        super.focus();
    }

    private void showPopupTimePicker() {
        String value = field.getValue();
        try {
            String[] parts = value.split(":");
            hour = parts[0];
            String[] np = parts[1].split(" ");
            minute = np[0];
            displayTime.setValue(value);
        } catch (Exception e) {
            clearValue();
        }
        final Window window = new Window(replacedle);
        window.setModal(true);
        window.setResizable(false);
        window.setWidth("430");
        window.setHeight("240");
        window.setClosable(false);
        HorizontalLayout layout = new HorizontalLayout();
        layout.setSizeFull();
        layout.setMargin(true);
        layout.setSpacing(true);
        layout.setStyleName(Reindeer.BUTTON_SMALL);
        displayTime.setWidth("100");
        VerticalLayout hourPanelLabelWrapper = new VerticalLayout();
        Label hourLabel = new Label("Hour");
        // hourLabel.setBackgroundColor(headerColor);
        hourLabel.setWidth("230");
        // hourLabel.setHeight("30");
        // hourLabel.setAutoFit(false);
        HorizontalLayout innerHourLabelPanel = new HorizontalLayout();
        // innerHourLabelPanel.setPadding(5);
        innerHourLabelPanel.addComponent(hourLabel);
        innerHourLabelPanel.setWidth("100");
        // innerHourLabelPanel.setHeight("30");
        hourPanelLabelWrapper.addComponent(innerHourLabelPanel);
        VerticalLayout minuteLabelWrapper = new VerticalLayout();
        minuteLabelWrapper.setWidth("60");
        Label minuteLabel = new Label("Minute");
        // minuteLabel.setBackgroundColor(headerColor);
        // minuteLabel.setStyleName("njadmin-search-colour");
        minuteLabel.setWidth("45");
        // minuteLabel.setHeight("30");
        // minuteLabel.setAutoFit(false);
        VerticalLayout innerMinuteLabelPanel = new VerticalLayout();
        // innerMinuteLabelPanel.setPadding(5);
        innerMinuteLabelPanel.addComponent(minuteLabel);
        innerMinuteLabelPanel.setWidth("45");
        // innerMinuteLabelPanel.setHeight("30");
        minuteLabelWrapper.addComponent(innerMinuteLabelPanel);
        HorizontalLayout hourPanel = new HorizontalLayout();
        // hourPanel.setPadding(5);
        HorizontalLayout hourButtonPanel = new HorizontalLayout();
        hourPanel.addComponent(hourButtonPanel);
        addHourButtons(hourButtonPanel, 3, 8);
        HorizontalLayout minutePanel = new HorizontalLayout();
        // minutePanel.setPadding(5);
        HorizontalLayout minuteButtonPanel = new HorizontalLayout();
        minutePanel.addComponent(minuteButtonPanel);
        addMinuteButtons(minuteButtonPanel, 2, 4);
        HorizontalLayout amPmHourWrapper = new HorizontalLayout();
        amPmHourWrapper.addComponent(hourPanel);
        hourPanelLabelWrapper.addComponent(amPmHourWrapper);
        layout.addComponent(hourPanelLabelWrapper);
        minuteLabelWrapper.addComponent(minutePanel);
        layout.addComponent(minuteLabelWrapper);
        layout.setExpandRatio(hourPanelLabelWrapper, 0.7f);
        layout.setExpandRatio(minuteLabelWrapper, 0.3f);
        HorizontalLayout okcancel = new HorizontalLayout();
        okcancel.setSizeFull();
        Button ok = new Button("OK");
        ok.setWidth("75");
        ok.addClickListener(new ClickListener() {

            /**
             */
            private static final long serialVersionUID = 1L;

            @Override
            public void buttonClick(ClickEvent event) {
                try {
                    displayTime.validate();
                    if (displayTime.getValue().equals(EMPTY)) {
                        field.setValue("");
                    } else {
                        field.setValue(displayTime.getValue());
                    }
                    window.close();
                } catch (InvalidValueException e) {
                }
            }
        });
        Button cancel = new Button("Cancel");
        cancel.setWidth("75");
        cancel.addClickListener(new ClickListener() {

            /**
             */
            private static final long serialVersionUID = 1L;

            @Override
            public void buttonClick(ClickEvent event) {
                window.close();
            }
        });
        okcancel.addComponent(displayTime);
        okcancel.addComponent(cancel);
        okcancel.addComponent(ok);
        okcancel.setMargin(true);
        okcancel.setSpacing(true);
        okcancel.setExpandRatio(displayTime, 0.50f);
        // okcancel.setExpandRatio(ok, 0.25f);
        // okcancel.setExpandRatio(cancel, 0.25f);
        VerticalLayout wrapper = new VerticalLayout();
        // wrapper.setStyleName("njadmin-search-colour");
        wrapper.setSizeFull();
        wrapper.addComponent(layout);
        wrapper.addComponent(okcancel);
        wrapper.setExpandRatio(layout, 0.9f);
        wrapper.setExpandRatio(okcancel, 0.5f);
        window.setContent(wrapper);
        UI.getCurrent().addWindow(window);
    }

    private void addMinuteButtons(HorizontalLayout minuteButtonPanel, int rows, int cols) {
        String[] numbers = new String[] { "00", "10", "15", "20", "30", "40", "45", "50" };
        for (int col = 0; col < cols; col++) {
            VerticalLayout rowsLayout = new VerticalLayout();
            for (int row = 0; row < rows; row++) {
                final NativeButton button = new NativeButton("" + numbers[row + (col * rows)]);
                rowsLayout.addComponent(button);
                button.setStyleName(Reindeer.BUTTON_SMALL);
                button.setWidth("30");
                // button.setHeight("30");
                // button.setAutoFit(false);
                // button.setActionType(SelectionType.RADIO);
                // button.addToRadioGroup("minuteButtons");
                // if (row == 0 && col == 0)
                // {
                // zeroMinuteButton = button;
                // 
                // }
                button.addClickListener(new ClickListener() {

                    /**
                     */
                    private static final long serialVersionUID = 1L;

                    @Override
                    public void buttonClick(ClickEvent event) {
                        String replacedle = button.getCaption();
                        minute = replacedle;
                        isSet = true;
                        setNewValue();
                    }
                });
            }
            minuteButtonPanel.addComponent(rowsLayout);
        }
    }

    private void addHourButtons(HorizontalLayout hourButtonPanel, int rows, int cols) {
        int[] numbers = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };
        for (int col = 0; col < cols; col++) {
            VerticalLayout rowsLayout = new VerticalLayout();
            for (int row = 0; row < rows; row++) {
                final NativeButton button = new NativeButton("" + numbers[col + (row * cols)]);
                rowsLayout.addComponent(button);
                button.setStyleName(Reindeer.BUTTON_SMALL);
                button.setWidth("30");
                // button.setHeight("15");
                // button.setAutoFit(false);
                // button.setActionType(SelectionType.RADIO);
                // button.addToRadioGroup("hourButtons");
                // if (row == 0 && col == 0)
                // {
                // zeroHourButton = button;
                // 
                // }
                button.addClickListener(new ClickListener() {

                    /**
                     */
                    private static final long serialVersionUID = 1L;

                    @Override
                    public void buttonClick(ClickEvent event) {
                        String replacedle = button.getCaption();
                        hour = replacedle;
                        isSet = true;
                        amPm = AM;
                        if (Integer.parseInt(hour) > 11) {
                            amPm = PM;
                        }
                        setNewValue();
                    }
                });
            }
            hourButtonPanel.addComponent(rowsLayout);
        }
    }

    // public void addChangedHandler(ChangedHandler pChangedHandler)
    // {
    // this.changedHandler = pChangedHandler;
    // 
    // }
    public void clearValue() {
        // am.setSelected(true);
        // am.setSelected(false);
        // zeroHourButton.setSelected(true);
        // zeroHourButton.setSelected(false);
        // zeroMinuteButton.setSelected(true);
        // zeroMinuteButton.setSelected(false);
        hour = "12";
        minute = "00";
        isSet = false;
        displayTime.setValue(EMPTY);
        field.setValue(EMPTY);
    }

    public final String getValuereplacedtring() {
        if (isSet) {
            String tmp = "" + hour + ":" + minute + amPm;
            Date date;
            try {
                date = sdf.parse(tmp);
                return sdf.format(date);
            } catch (ParseException e) {
            }
            return tmp;
        }
        return null;
    }

    @SuppressWarnings("deprecation")
    public void setValues(Date date) {
        hour = "" + date.getHours();
        minute = "" + date.getMinutes();
        if (date.getMinutes() < 10) {
            minute = "0" + minute;
        }
        amPm = AM;
        if (Integer.parseInt(hour) > 11) {
            amPm = PM;
        }
        isSet = true;
        displayTime.setValue(getValuereplacedtring());
        field.setValue(getValuereplacedtring());
    // logger.info("set to " + getValuereplacedtring());
    }

    private void setNewValue() {
        displayTime.setValue(getValuereplacedtring());
    }

    @Override
    public boolean isInvalidCommitted() {
        return false;
    }

    @Override
    public void setInvalidCommitted(boolean isCommitted) {
    }

    @Override
    public void commit() throws SourceException, InvalidValueException {
        datasource.setValue((Date) getValue());
    }

    @Override
    public void discard() throws SourceException {
        setValues(datasource.getValue());
    }

    @Override
    public void setBuffered(boolean buffered) {
        this.isBuffered = buffered;
    }

    @Override
    public boolean isBuffered() {
        return isBuffered;
    }

    @Override
    public boolean isModified() {
        Date value = (Date) getValue();
        if (datasource == null) {
            return false;
        }
        Date dsValue = datasource.getValue();
        if (dsValue == null) {
            return value != null;
        }
        if (value == null) {
            return true;
        }
        return !dsValue.equals(value);
    }

    @Override
    public void addValidator(Validator validator) {
    }

    @Override
    public void removeValidator(Validator validator) {
    }

    @Override
    public void removeAllValidators() {
    }

    @Override
    public Collection<Validator> getValidators() {
        Collection<Validator> validators = new LinkedList<Validator>();
        validators.add(validator);
        return validators;
    }

    @Override
    public boolean isValid() {
        boolean valid = true;
        try {
            validator.validate(getValuereplacedtring());
        } catch (Exception e) {
            valid = false;
        }
        return valid;
    }

    @Override
    public void validate() throws InvalidValueException {
        validator.validate(getValuereplacedtring());
    }

    @Override
    public boolean isInvalidAllowed() {
        return false;
    }

    @Override
    public void setInvalidAllowed(boolean invalidValueAllowed) throws UnsupportedOperationException {
    }

    @Override
    public Object getValue() {
        try {
            if (getValuereplacedtring() == null) {
                return null;
            }
            return sdf.parse(getValuereplacedtring());
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public void setValue(Object newValue) {
        setValues((Date) newValue);
    }

    @Override
    public Clreplaced getType() {
        return Date.clreplaced;
    }

    @Override
    public void addValueChangeListener(ValueChangeListener listener) {
    }

    @Override
    public void addListener(ValueChangeListener listener) {
    }

    @Override
    public void removeValueChangeListener(ValueChangeListener listener) {
    }

    @Override
    public void removeListener(ValueChangeListener listener) {
    }

    @Override
    public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {
        logger.info("Value change");
    }

    @SuppressWarnings("unchecked")
    @Override
    public void setPropertyDataSource(Property newDataSource) {
        clearValue();
        datasource = newDataSource;
        if (datasource.getValue() != null) {
            setValues(datasource.getValue());
        }
    }

    @Override
    public Property<Date> getPropertyDataSource() {
        return datasource;
    }

    @Override
    public int getTabIndex() {
        return tabIndex;
    }

    @Override
    public void setTabIndex(int tabIndex) {
        this.tabIndex = tabIndex;
    }

    @Override
    public boolean isRequired() {
        return isVisible();
    }

    @Override
    public void setRequired(boolean required) {
    // isRequired = required;
    }

    @Override
    public void setRequiredError(String requiredMessage) {
        requiredErrorMessage = requiredMessage;
    }

    @Override
    public String getRequiredError() {
        return requiredErrorMessage;
    }

    @Override
    public boolean isEmpty() {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void clear() {
    // TODO Auto-generated method stub
    }
}

15 View Complete Implementation : FunctionSelectionWindow.java
Copyright MIT License
Author : att
protected void initializeFunctions() {
    // 
    // Setup data source. Make sure there are no current filters
    // 
    FunctionSelectionWindow.highOrderFunctions.removeAllContainerFilters();
    this.tableFunctions.setContainerDataSource(FunctionSelectionWindow.highOrderFunctions);
    // 
    // Initialize GUI properties
    // 
    this.tableFunctions.setImmediate(true);
    this.tableFunctions.setNullSelectionAllowed(false);
    this.tableFunctions.setRequired(true);
    this.tableFunctions.setRequiredError("Please select a function.");
    this.tableFunctions.setSelectable(true);
    this.tableFunctions.setPageLength(15);
    this.tableFunctions.setVisibleColumns(new Object[] { PROPERTY_SHORTNAME, PROPERTY_XACMLID });
    this.tableFunctions.setColumnHeaders(new String[] { "Short Function Name", "Xacml ID" });
    // 
    // Respond to selection events
    // 
    this.tableFunctions.addValueChangeListener(new ValueChangeListener() {

        private static final long serialVersionUID = 1L;

        @Override
        public void valueChange(ValueChangeEvent event) {
            Object id = self.tableFunctions.getValue();
            if (id != null) {
                Item item = FunctionSelectionWindow.highOrderFunctions.gereplacedem(id);
                if (item == null) {
                    return;
                }
                Property<?> property = item.gereplacedemProperty(PROPERTY_XACMLID);
                if (property == null) {
                    return;
                }
                selectedFunction = property.getValue().toString();
                self.buttonSave.setEnabled(true);
            } else {
                self.buttonSave.setEnabled(false);
            }
        }
    });
    // 
    // Respond to double-click events
    // 
    this.tableFunctions.addItemClickListener(new ItemClickListener() {

        private static final long serialVersionUID = 1L;

        @Override
        public void itemClick(ItemClickEvent event) {
            if (event.isDoubleClick()) {
                self.doSave();
            }
        }
    });
    // 
    // Setup the default selection
    // 
    this.buttonSave.setEnabled(false);
    if (this.defaultFunctionID != null) {
        for (Object id : FunctionSelectionWindow.highOrderFunctions.gereplacedemIds()) {
            Item item = FunctionSelectionWindow.highOrderFunctions.gereplacedem(id);
            if (item != null) {
                Property<?> property = item.gereplacedemProperty(PROPERTY_XACMLID);
                if (property != null) {
                    if (property.getValue().toString().equals(this.defaultFunctionID)) {
                        this.tableFunctions.select(id);
                        break;
                    }
                }
            }
        }
    }
}

15 View Complete Implementation : MatchEditorWindow.java
Copyright MIT License
Author : att
protected void initializeFunctions() {
    // 
    // Setup datasource and GUI properties
    // 
    this.tableFunctions.setContainerDataSource(MatchEditorWindow.matchFunctions);
    this.tableFunctions.setImmediate(true);
    this.tableFunctions.setNullSelectionAllowed(false);
    this.tableFunctions.setRequired(true);
    this.tableFunctions.setRequiredError("Please select a function.");
    this.tableFunctions.setSelectable(true);
    this.tableFunctions.setPageLength(15);
    this.tableFunctions.setVisibleColumns(PROPERTY_SHORTNAME, PROPERTY_XACMLID);
    this.tableFunctions.setColumnHeaders(new String[] { "Short Function Name", "Xacml ID" });
    // 
    // Filter out functions where ARG2 is the given datatype. NOTE: The
    // AttributeDesignator/AttributeSelector is the 2nd argument.
    // 
    MatchEditorWindow.matchFunctions.removeAllContainerFilters();
    MatchEditorWindow.matchFunctions.addContainerFilter(new Compare.Equal(PROPERTY_ARG2_DATATYPE, this.datatype.getId()));
    // 
    // Respond to selection events
    // 
    this.tableFunctions.addValueChangeListener(new ValueChangeListener() {

        private static final long serialVersionUID = 1L;

        @Override
        public void valueChange(ValueChangeEvent event) {
            Object id = self.tableFunctions.getValue();
            if (id != null) {
                Item item = MatchEditorWindow.matchFunctions.gereplacedem(id);
                if (item == null) {
                    return;
                }
                Property<?> property = item.gereplacedemProperty(PROPERTY_XACMLID);
                if (property == null) {
                    return;
                }
                self.match.setMatchId(property.getValue().toString());
                self.buttonSave.setEnabled(true);
            } else {
                self.buttonSave.setEnabled(false);
            }
        }
    });
    // 
    // Respond to double-click events
    // 
    this.tableFunctions.addItemClickListener(new ItemClickListener() {

        private static final long serialVersionUID = 1L;

        @Override
        public void itemClick(ItemClickEvent event) {
            if (event.isDoubleClick()) {
                self.doSave();
            }
        }
    });
    // 
    // Default selection
    // 
    this.buttonSave.setEnabled(false);
    if (this.match.getMatchId() != null) {
        for (Object id : MatchEditorWindow.matchFunctions.gereplacedemIds()) {
            Item item = MatchEditorWindow.matchFunctions.gereplacedem(id);
            if (item != null) {
                Property<?> property = item.gereplacedemProperty(PROPERTY_XACMLID);
                if (property != null) {
                    if (property.getValue().toString().equals(this.match.getMatchId())) {
                        this.tableFunctions.select(id);
                        break;
                    }
                }
            }
        }
    }
}

15 View Complete Implementation : GridContainerCSVExport.java
Copyright GNU General Public License v3.0
Author : rlsutton1
private void writeRow(CSVWriter writer, Grid grid, Object id, Set<Object> properties) {
    Item item = grid.getContainerDataSource().gereplacedem(id);
    String[] values = new String[properties.size() + extraColumnHeadersAndPropertyIds.size()];
    int i = 0;
    for (Object propertyId : properties) {
        @SuppressWarnings("rawtypes")
        final Property itemProperty = item.gereplacedemProperty(propertyId);
        if (itemProperty != null) {
            Object value = itemProperty.getValue();
            if (value != null) {
                final Object convertedValue = convert(value);
                if (convertedValue != null) {
                    values[i++] = sanitiseValue(convertedValue);
                } else {
                    values[i++] = "";
                }
            } else {
                values[i++] = "";
            }
        }
    }
    for (Object columnId : extraColumnHeadersAndPropertyIds.values()) {
        String value = getValueForExtraColumn(item, columnId);
        if (value == null) {
            value = "";
        }
        values[i++] = value;
    }
    writer.writeNext(values);
}

15 View Complete Implementation : TimePicker.java
Copyright GNU General Public License v3.0
Author : rlsutton1
@SuppressWarnings("rawtypes")
public clreplaced TimePicker extends HorizontalLayout implements Field<Date> {

    protected static final String TIME_FORMAT = "hh:mm a";

    protected static final String TIME_FORMAT2 = "hh:mma";

    private static final long serialVersionUID = 1826417125815798837L;

    protected static final String EMPTY = "--:--";

    String headerColor = "#B2D7FF";

    protected TextField displayTime = new TextField();

    protected Calendar dateTime = Calendar.getInstance();

    boolean isSet = false;

    protected ChangedHandler changedHandler;

    private String replacedle;

    protected TextField field;

    private Property<Date> datasource;

    // private boolean isRequired;
    private String requiredErrorMessage;

    private int tabIndex;

    private boolean isBuffered;

    protected Validator timeValidator;

    Set<Validator> validators = new LinkedHashSet<>();

    Set<ValueChangeListener> listeners = new LinkedHashSet<>();

    protected Button pickerButton;

    public TimePicker(String replacedle) {
        setCaption(replacedle);
        this.replacedle = replacedle;
        timeValidator = new Validator() {

            private static final long serialVersionUID = 6579163030027373837L;

            @Override
            public void validate(Object value) throws InvalidValueException {
                if (value == null || value.equals(EMPTY)) {
                    return;
                }
                parseDate((String) value);
            }
        };
        buildUI(replacedle);
    }

    protected void buildUI(String replacedle) {
        field = new TextField();
        field.setWidth("125");
        field.setImmediate(true);
        displayTime.setImmediate(true);
        displayTime.addValidator(timeValidator);
        field.addValidator(timeValidator);
        field.addValueChangeListener(new ValueChangeListener() {

            private static final long serialVersionUID = 1L;

            @SuppressWarnings("deprecation")
            @Override
            public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {
                try {
                    final Date parsedDate = parseDate((String) event.getProperty().getValue());
                    if (parsedDate != null) {
                        dateTime.set(Calendar.HOUR_OF_DAY, parsedDate.getHours());
                        dateTime.set(Calendar.MINUTE, parsedDate.getMinutes());
                        isSet = true;
                        setNewValue();
                    }
                    TimePicker.this.valueChange(event);
                    field.setComponentError(null);
                } catch (final InvalidValueException e) {
                    field.setComponentError(new ErrorMessage() {

                        private static final long serialVersionUID = 1L;

                        @Override
                        public String getFormattedHtmlMessage() {
                            return e.getMessage();
                        }

                        @Override
                        public ErrorLevel getErrorLevel() {
                            return ErrorLevel.ERROR;
                        }
                    });
                }
            }
        });
        this.replacedle = replacedle;
        CssLayout hl = new CssLayout();
        hl.addStyleName("v-component-group");
        hl.setWidth("100%");
        hl.setHeight("35");
        pickerButton = new Button();
        pickerButton.setIcon(FontAwesome.CLOCK_O);
        hl.addComponent(pickerButton);
        hl.addComponent(field);
        pickerButton.addClickListener(new ClickListener() {

            private static final long serialVersionUID = 1L;

            @Override
            public void buttonClick(ClickEvent event) {
                showPopupTimePicker();
            }
        });
        addComponent(hl);
    }

    @Override
    public void setReadOnly(boolean readOnly) {
        field.setReadOnly(readOnly);
        pickerButton.setEnabled(!readOnly);
        super.setReadOnly(readOnly);
    }

    protected Date parseDate(String value) {
        if (value == null || value.equals(EMPTY)) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(TIME_FORMAT);
        try {
            return sdf.parse(value);
        } catch (ParseException e) {
            sdf = new SimpleDateFormat(TIME_FORMAT2);
            try {
                return sdf.parse(value);
            } catch (ParseException e2) {
                throw new InvalidValueException("Time format is " + TIME_FORMAT);
            }
        }
    }

    @Override
    public void focus() {
        super.focus();
    }

    @SuppressWarnings("deprecation")
    private void showPopupTimePicker() {
        try {
            if (field.getValue() != null) {
                Date value = parseDate(field.getValue());
                if (value != null) {
                    int hourNumber = value.getHours() % 12;
                    if (hourNumber == 0) {
                        hourNumber = 12;
                    }
                    displayTime.setValue(field.getValue());
                }
            }
        } catch (Exception e) {
            logger.error(e);
            clearValue();
        }
        final Window window = new Window(replacedle);
        window.setModal(true);
        window.setResizable(false);
        // window.setWidth("550");
        // window.setHeight("220");
        window.setClosable(false);
        HorizontalLayout layout = new HorizontalLayout();
        layout.setSizeFull();
        layout.setSpacing(true);
        layout.setStyleName(Reindeer.BUTTON_SMALL);
        displayTime.setWidth("100");
        displayTime.addValueChangeListener(new ValueChangeListener() {

            private static final long serialVersionUID = 1L;

            @Override
            public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {
                final Date parsedDate = parseDate((String) event.getProperty().getValue());
                if (parsedDate != null) {
                    dateTime.set(Calendar.HOUR_OF_DAY, parsedDate.getHours());
                    dateTime.set(Calendar.MINUTE, parsedDate.getMinutes());
                    isSet = true;
                    setNewValue();
                }
            }
        });
        VerticalLayout hourPanelLabelWrapper = new VerticalLayout();
        hourPanelLabelWrapper.setWidth("225");
        Label hourLabel = new Label("Hour");
        hourLabel.setWidth("230");
        HorizontalLayout innerHourLabelPanel = new HorizontalLayout();
        innerHourLabelPanel.addComponent(hourLabel);
        innerHourLabelPanel.setWidth("100");
        hourPanelLabelWrapper.addComponent(innerHourLabelPanel);
        VerticalLayout minuteLabelWrapper = new VerticalLayout();
        minuteLabelWrapper.setWidth("60");
        Label minuteLabel = new Label("Minute");
        minuteLabel.setWidth("45");
        VerticalLayout innerMinuteLabelPanel = new VerticalLayout();
        innerMinuteLabelPanel.addComponent(minuteLabel);
        innerMinuteLabelPanel.setWidth("45");
        minuteLabelWrapper.addComponent(innerMinuteLabelPanel);
        HorizontalLayout hourPanel = new HorizontalLayout();
        HorizontalLayout amPmPanel = new HorizontalLayout();
        VerticalLayout amPmButtonPanel = new VerticalLayout();
        amPmPanel.addComponent(amPmButtonPanel);
        addAmPmButtons(amPmButtonPanel);
        HorizontalLayout hourButtonPanel = new HorizontalLayout();
        hourPanel.addComponent(hourButtonPanel);
        addHourButtons(hourButtonPanel, 2, 6);
        HorizontalLayout minutePanel = new HorizontalLayout();
        HorizontalLayout minuteButtonPanel = new HorizontalLayout();
        minutePanel.addComponent(minuteButtonPanel);
        addMinuteButtons(minuteButtonPanel, 2, 4);
        HorizontalLayout amPmHourWrapper = new HorizontalLayout();
        amPmHourWrapper.addComponent(hourPanel);
        amPmHourWrapper.addComponent(amPmPanel);
        hourPanelLabelWrapper.addComponent(amPmHourWrapper);
        layout.addComponent(hourPanelLabelWrapper);
        minuteLabelWrapper.addComponent(minutePanel);
        layout.addComponent(minuteLabelWrapper);
        layout.setExpandRatio(minuteLabelWrapper, 1);
        HorizontalLayout okcancel = new HorizontalLayout();
        okcancel.setSizeFull();
        Button ok = new Button("OK");
        ok.setWidth("75");
        ok.addClickListener(new ClickListener() {

            /**
             */
            private static final long serialVersionUID = 1L;

            @Override
            public void buttonClick(ClickEvent event) {
                field.setValue(displayTime.getValue());
                window.close();
            }
        });
        Button cancel = new Button("Cancel");
        cancel.setWidth("75");
        cancel.addClickListener(new ClickListener() {

            /**
             */
            private static final long serialVersionUID = 1L;

            @Override
            public void buttonClick(ClickEvent event) {
                window.close();
            }
        });
        Button clear = new Button("Clear");
        clear.setWidth("75");
        clear.addClickListener(new ClickListener() {

            /**
             */
            private static final long serialVersionUID = 1L;

            @Override
            public void buttonClick(ClickEvent event) {
                isSet = false;
                clearValue();
            }
        });
        okcancel.addComponent(displayTime);
        okcancel.addComponent(cancel);
        okcancel.addComponent(clear);
        okcancel.addComponent(ok);
        okcancel.setSpacing(true);
        okcancel.setExpandRatio(displayTime, 0.50f);
        VerticalLayout wrapper = new VerticalLayout();
        wrapper.addComponent(layout);
        wrapper.addComponent(okcancel);
        window.setContent(wrapper);
        wrapper.setMargin(true);
        wrapper.setSpacing(true);
        UI.getCurrent().addWindow(window);
    }

    protected void addMinuteButtons(HorizontalLayout minuteButtonPanel, int rows, int cols) {
        String[] numbers = new String[] { "00", "10", "15", "20", "30", "40", "45", "50" };
        for (int col = 0; col < cols; col++) {
            VerticalLayout rowsLayout = new VerticalLayout();
            for (int row = 0; row < rows; row++) {
                final NativeButton button = new NativeButton("" + numbers[row + (col * rows)]);
                rowsLayout.addComponent(button);
                button.setStyleName(Reindeer.BUTTON_SMALL);
                button.setWidth("30");
                button.addClickListener(new ClickListener() {

                    /**
                     */
                    private static final long serialVersionUID = 1L;

                    @Override
                    public void buttonClick(ClickEvent event) {
                        String replacedle = button.getCaption();
                        dateTime.set(Calendar.MINUTE, Integer.parseInt(replacedle));
                        isSet = true;
                        setNewValue();
                    }
                });
            }
            minuteButtonPanel.addComponent(rowsLayout);
        }
    }

    protected void addHourButtons(HorizontalLayout hourButtonPanel, int rows, int cols) {
        int[] numbers = new int[] { 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
        for (int col = 0; col < cols; col++) {
            VerticalLayout rowsLayout = new VerticalLayout();
            for (int row = 0; row < rows; row++) {
                final NativeButton button = new NativeButton("" + numbers[col + (row * cols)]);
                rowsLayout.addComponent(button);
                button.setStyleName(Reindeer.BUTTON_SMALL);
                button.setWidth("30");
                button.addClickListener(new ClickListener() {

                    /**
                     */
                    private static final long serialVersionUID = 1L;

                    @Override
                    public void buttonClick(ClickEvent event) {
                        int hourToSet = Integer.parseInt(button.getCaption());
                        hourToSet %= 12;
                        if (dateTime.get(Calendar.HOUR_OF_DAY) >= 12) {
                            hourToSet += 12;
                        }
                        dateTime.set(Calendar.HOUR_OF_DAY, hourToSet);
                        isSet = true;
                        setNewValue();
                    }
                });
            }
            hourButtonPanel.addComponent(rowsLayout);
        }
    }

    protected void addAmPmButtons(VerticalLayout amPmButtonPanel) {
        final NativeButton am = new NativeButton("AM");
        final NativeButton pm = new NativeButton("PM");
        amPmButtonPanel.addComponent(am);
        amPmButtonPanel.addComponent(pm);
        am.setStyleName(Reindeer.BUTTON_SMALL);
        am.setWidth("35");
        am.addClickListener(new ClickListener() {

            /**
             */
            private static final long serialVersionUID = 1L;

            @Override
            public void buttonClick(ClickEvent event) {
                dateTime.set(Calendar.AM_PM, Calendar.AM);
                isSet = true;
                setNewValue();
            }
        });
        pm.setStyleName(Reindeer.BUTTON_SMALL);
        pm.setWidth("35");
        pm.addClickListener(new ClickListener() {

            private static final long serialVersionUID = 1L;

            @Override
            public void buttonClick(ClickEvent event) {
                dateTime.set(Calendar.AM_PM, Calendar.PM);
                isSet = true;
                setNewValue();
            }
        });
    }

    public void addChangedHandler(ChangedHandler pChangedHandler) {
        this.changedHandler = pChangedHandler;
    }

    public void clearValue() {
        dateTime.setTime(new Date());
        dateTime.set(Calendar.HOUR, 0);
        dateTime.set(Calendar.MINUTE, 0);
        dateTime.set(Calendar.SECOND, 0);
        dateTime.set(Calendar.MILLISECOND, 0);
        dateTime.set(Calendar.AM_PM, Calendar.AM);
        isSet = false;
        displayTime.setValue(EMPTY);
        internalSetReadonlyFieldValue(EMPTY);
    }

    protected void internalSetReadonlyFieldValue(String value) {
        boolean isRo = field.isReadOnly();
        field.setReadOnly(false);
        field.setValue(value);
        field.setReadOnly(isRo);
    }

    public final String getValuereplacedtring() {
        if (isSet) {
            int hour = dateTime.get(Calendar.HOUR);
            if (hour == 0) {
                hour = 12;
            }
            final int minute = dateTime.get(Calendar.MINUTE);
            final String amPm = dateTime.get(Calendar.HOUR_OF_DAY) < 12 ? "AM" : "PM";
            DecimalFormat df = new DecimalFormat("00");
            return df.format(hour) + ":" + df.format(minute) + " " + amPm;
        }
        return null;
    }

    public void setValues(Date date) {
        if (date != null) {
            dateTime.setTime(date);
            isSet = true;
            displayTime.setValue(getValuereplacedtring());
            internalSetReadonlyFieldValue(getValuereplacedtring());
        } else {
            clearValue();
        }
    }

    protected void setNewValue() {
        displayTime.setValue(getValuereplacedtring());
        internalSetReadonlyFieldValue(getValuereplacedtring());
        if (changedHandler != null) {
            changedHandler.onChanged(getValuereplacedtring());
        }
    }

    @Override
    public boolean isInvalidCommitted() {
        return false;
    }

    @Override
    public void setInvalidCommitted(boolean isCommitted) {
    }

    @Override
    public void commit() throws SourceException, InvalidValueException {
        datasource.setValue(getValue());
    }

    @Override
    public void discard() throws SourceException {
        if (datasource != null) {
            setValues(datasource.getValue());
        }
    }

    @Override
    public void setBuffered(boolean buffered) {
        this.isBuffered = buffered;
    }

    @Override
    public boolean isBuffered() {
        return isBuffered;
    }

    Logger logger = org.apache.logging.log4j.LogManager.getLogger();

    @Override
    public boolean isModified() {
        Date value = getValue();
        if (datasource == null) {
            return false;
        }
        Date dsValue = datasource.getValue();
        if (dsValue == null) {
            boolean ret = value != null;
            if (ret) {
                logger.info("Values {} and {}", dsValue, value);
            }
            return ret;
        }
        if (value == null) {
            logger.info("Values {} and {}", dsValue, value);
            return true;
        }
        SimpleDateFormat sdf = new SimpleDateFormat("hh:mma");
        String v1 = sdf.format(dsValue);
        String v2 = sdf.format(value);
        boolean ret = !v1.equals(v2);
        if (ret) {
            logger.info("Values {} and {}", v1, v2);
        }
        return ret;
    }

    @Override
    public void addValidator(Validator validator) {
        validators.add(validator);
    }

    @Override
    public void removeValidator(Validator validator) {
        validators.remove(validator);
    }

    @Override
    public void removeAllValidators() {
        validators.clear();
    }

    @Override
    public Collection<Validator> getValidators() {
        Collection<Validator> validators = new LinkedList<>();
        validators.add(timeValidator);
        validators.addAll(this.validators);
        return validators;
    }

    @Override
    public boolean isValid() {
        boolean valid = true;
        try {
            this.validate();
        } catch (Exception e) {
            valid = false;
        }
        return valid;
    }

    @Override
    public void validate() throws InvalidValueException {
        timeValidator.validate(getValuereplacedtring());
        for (Validator validator : validators) {
            validator.validate(getValue());
        }
    }

    @Override
    public boolean isInvalidAllowed() {
        return false;
    }

    @Override
    public void setInvalidAllowed(boolean invalidValueAllowed) throws UnsupportedOperationException {
    }

    @Override
    public Date getValue() {
        Date value = null;
        if (isSet) {
            value = dateTime.getTime();
        }
        return value;
    }

    @Override
    public void setValue(Date newValue) {
        setValues(newValue);
    }

    @Override
    public Clreplaced<Date> getType() {
        return Date.clreplaced;
    }

    @Override
    public void addValueChangeListener(ValueChangeListener listener) {
        addListener(listener);
    }

    @Override
    public void addListener(ValueChangeListener listener) {
        listeners.add(listener);
    }

    @Override
    public void removeValueChangeListener(ValueChangeListener listener) {
        removeListener(listener);
    }

    @Override
    public void removeListener(ValueChangeListener listener) {
        listeners.remove(listener);
    }

    @Override
    public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {
        for (ValueChangeListener listener : listeners) {
            listener.valueChange(event);
        }
    }

    @SuppressWarnings("unchecked")
    @Override
    public void setPropertyDataSource(Property newDataSource) {
        clearValue();
        datasource = newDataSource;
        if (datasource != null && datasource.getValue() != null) {
            setValues(datasource.getValue());
        }
    }

    @Override
    public Property<Date> getPropertyDataSource() {
        return datasource;
    }

    @Override
    public int getTabIndex() {
        return tabIndex;
    }

    @Override
    public void setTabIndex(int tabIndex) {
        this.tabIndex = tabIndex;
    }

    @Override
    public boolean isRequired() {
        return isVisible();
    }

    @Override
    public void setRequired(boolean required) {
    // isRequired = required;
    }

    @Override
    public void setRequiredError(String requiredMessage) {
        requiredErrorMessage = requiredMessage;
    }

    @Override
    public String getRequiredError() {
        return requiredErrorMessage;
    }

    @Override
    public boolean isEmpty() {
        return false;
    }

    @Override
    public void clear() {
    }
}

14 View Complete Implementation : ContainerCSVExport.java
Copyright GNU General Public License v3.0
Author : rlsutton1
private void writeRow(CSVWriter writer, Table table, Object id, Set<Object> properties) {
    Item item = table.gereplacedem(id);
    String[] values = new String[properties.size() + extraColumnHeadersAndPropertyIds.size()];
    int i = 0;
    for (Object propertyId : properties) {
        @SuppressWarnings("rawtypes")
        final Property itemProperty = item.gereplacedemProperty(propertyId);
        if (itemProperty != null && itemProperty.getValue() != null) {
            ColumnGenerator generator = table.getColumnGenerator(propertyId);
            // added handling for generated Boolean columns, - just using
            // the default property toString()
            if (generator != null && itemProperty.getType() != Boolean.clreplaced) {
                Object value = generator.generateCell(table, id, propertyId);
                if (value instanceof Label) {
                    value = new HtmlToPlainText().getPlainText(Jsoup.parse(((Label) value).getValue()));
                }
                if (value instanceof AbstractLayout) {
                    value = new HtmlToPlainText().getPlainText(Jsoup.parse(itemProperty.getValue().toString()));
                }
                if (value instanceof Link) {
                    value = new HtmlToPlainText().getPlainText(Jsoup.parse(itemProperty.getValue().toString()));
                }
                if (value != null) {
                    values[i++] = value.toString();
                }
            } else {
                values[i++] = itemProperty.getValue().toString();
            }
        } else {
            ColumnGenerator generator = table.getColumnGenerator(propertyId);
            if (generator != null) {
                Object value = generator.generateCell(table, id, propertyId);
                if (value != null) {
                    if (value instanceof ClickableLabel) {
                        value = new HtmlToPlainText().getPlainText(Jsoup.parse(((ClickableLabel) value).getValue()));
                    }
                    if (value instanceof Label) {
                        value = new HtmlToPlainText().getPlainText(Jsoup.parse(((Label) value).getValue()));
                    // value = ((Label) value).getValue();
                    }
                    if (value instanceof AbstractLayout) {
                        // if you want your generated field to be exported,
                        // set a string using setData() on the layout.
                        if (((AbstractLayout) value).getData() instanceof ContainerCSVExportData) {
                            value = ((AbstractLayout) value).getData().toString();
                        } else {
                            value = "";
                        }
                    }
                    if (value instanceof Link) {
                        value = new HtmlToPlainText().getPlainText(Jsoup.parse(((Link) value).getCaption()));
                    }
                }
                if (value == null) {
                    value = "";
                }
                values[i++] = value.toString();
            } else {
                values[i++] = "";
            }
        }
    }
    for (Object columnId : extraColumnHeadersAndPropertyIds.values()) {
        String value = getValueForExtraColumn(item, columnId);
        if (value == null) {
            value = "";
        }
        values[i++] = value;
    }
    writer.writeNext(values);
}

14 View Complete Implementation : PreviewCSV.java
Copyright GNU General Public License v3.0
Author : rlsutton1
private static void addRow(IndexedContainer container, String[] fields, String[] headers) {
    Object itemId = container.addItem();
    Item item = container.gereplacedem(itemId);
    for (int i = 0; i < headers.length; i++) {
        @SuppressWarnings("unchecked")
        Property<String> itemProperty = item.gereplacedemProperty(headers[i]);
        itemProperty.setValue(fields[i]);
    }
}

13 View Complete Implementation : GenericConfigForm.java
Copyright Mozilla Public License 2.0
Author : sensiasoft
@Override
public void build(String replacedle, MyBeanItem<? extends Object> beanItem) {
    List<Field<?>> labels = new ArrayList<Field<?>>();
    List<Field<?>> textBoxes = new ArrayList<Field<?>>();
    List<Field<?>> listBoxes = new ArrayList<Field<?>>();
    List<Field<?>> numberBoxes = new ArrayList<Field<?>>();
    List<Field<?>> checkBoxes = new ArrayList<Field<?>>();
    List<Component> otherWidgets = new ArrayList<Component>();
    // prepare header and form layout
    setSpacing(true);
    // add main form widgets
    FormLayout form = new FormLayout();
    form.setWidth(100.0f, Unit.PERCENTAGE);
    form.setMargin(false);
    if (replacedle != null) {
        Label sectionLabel = new Label(replacedle);
        sectionLabel.addStyleName(STYLE_H3);
        sectionLabel.addStyleName(STYLE_COLORED);
        form.addComponent(sectionLabel);
    }
    // add widget for each visible attribute
    if (beanItem != null) {
        fieldGroup = new FieldGroup(beanItem);
        for (Object propId : fieldGroup.getUnboundPropertyIds()) {
            Property<?> prop = fieldGroup.gereplacedemDataSource().gereplacedemProperty(propId);
            // sub objects with multiplicity > 1
            if (prop instanceof ContainerProperty) {
                Clreplaced<?> eltType = ((ContainerProperty) prop).getValue().getBeanType();
                // use simple table for string lists
                if (eltType == String.clreplaced) {
                    Component list = buildSimpleTable((String) propId, (ContainerProperty) prop);
                    fieldGroup.bind((Field<?>) list, propId);
                    listBoxes.add((Field<?>) list);
                } else // else use tab sheet
                if (!((ContainerProperty) prop).getValue().gereplacedemIds().isEmpty()) {
                    Component subform = buildTabs((String) propId, (ContainerProperty) prop, fieldGroup);
                    otherWidgets.add(subform);
                }
            } else // sub object
            if (prop instanceof ComplexProperty) {
                Component subform = buildSubForm((String) propId, (ComplexProperty) prop);
                otherWidgets.add(subform);
            } else // scalar field
            {
                Field<?> field = null;
                try {
                    String label = null;
                    if (prop instanceof FieldProperty)
                        label = ((FieldProperty) prop).getLabel();
                    if (label == null)
                        label = DisplayUtils.getPrettyName((String) propId);
                    String desc = null;
                    if (prop instanceof FieldProperty)
                        desc = ((FieldProperty) prop).getDescription();
                    field = buildAndBindField(label, (String) propId, prop);
                    ((AbstractField<?>) field).setDescription(desc);
                } catch (Exception e) {
                    System.err.println("No UI generator for field " + propId);
                    continue;
                }
                // add to one of the widget lists so we can order by widget type
                Clreplaced<?> propType = prop.getType();
                if (propType.equals(String.clreplaced)) {
                    if (field instanceof Label)
                        labels.add(field);
                    else
                        textBoxes.add(field);
                } else if (Enum.clreplaced.isreplacedignableFrom(propType))
                    numberBoxes.add(field);
                else if (Number.clreplaced.isreplacedignableFrom(propType))
                    numberBoxes.add(field);
                else if (field instanceof CheckBox)
                    checkBoxes.add(field);
                else
                    otherWidgets.add(field);
            }
        }
    }
    // main form
    for (Field<?> w : labels) form.addComponent(w);
    for (Field<?> w : textBoxes) form.addComponent(w);
    for (Field<?> w : listBoxes) form.addComponent(w);
    for (Field<?> w : numberBoxes) form.addComponent(w);
    for (Field<?> w : checkBoxes) form.addComponent(w);
    addComponent(form);
    // sub forms
    for (Component w : otherWidgets) addComponent(w);
}