Package org.aperteworkflow.editor.stepeditor.user

Source Code of org.aperteworkflow.editor.stepeditor.user.WidgetConfigFormFieldFactory

package org.aperteworkflow.editor.stepeditor.user;

import com.vaadin.data.util.ObjectProperty;
import com.vaadin.data.validator.IntegerValidator;
import com.vaadin.terminal.Sizeable;
import com.vaadin.ui.*;
import pl.net.bluesoft.rnd.processtool.ui.widgets.form.FormAwareField;
import pl.net.bluesoft.rnd.util.i18n.I18NSource;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;

import org.aperteworkflow.util.vaadin.ui.GenericValueFieldFactory;

public class WidgetConfigFormFieldFactory extends GenericValueFieldFactory {

    private static final Logger logger = Logger.getLogger(WidgetConfigFormFieldFactory.class.getName());

   
  public Field createField(Property<?> property, Form form) {


        Field field = createBaseField(property, form);

        if (property.getType() == Integer.class) {
            field.addValidator(new IntegerValidator("is.not.an.integer"));
        }

        if (field instanceof AbstractField) {
            AbstractField abstractField = (AbstractField) field;
            abstractField.setImmediate(true);
        }

        if (field instanceof AbstractTextField) {
            AbstractTextField textField = (AbstractTextField) field;
            textField.setNullRepresentation("");
        }

        if (field instanceof RichTextArea) {
            // RichTextArea does not extend AbstractTextField like TextArea or TextField
            RichTextArea textArea = (RichTextArea) field;
            textArea.setNullRepresentation("");
        }
       


        return field;
  }

  protected Field createBaseField(Property<?> property, Form form) {
    Field field = null;
    if (property.getPropertyFieldClass() != null) {
            try {
                field = property.getPropertyFieldClass().newInstance();
            } catch (InstantiationException e) {
                logger.log(Level.WARNING, "Failed to create field using class from property", e);
            } catch (IllegalAccessException e) {
                logger.log(Level.WARNING, "Failed to create field using class from property", e);
            }
        }

    if (field == null) {
      field = createFieldByPropertyType(property.getType());
    }

        if (field instanceof FormAwareField) {
            Collection<?> itemPropertyIds = form.getItemPropertyIds();
            Map<String, com.vaadin.data.Property> map = new HashMap<String, com.vaadin.data.Property>();
            for (Object o : itemPropertyIds){
                 Property p = (Property) o;
                map.put(p.getPropertyId(), p);
            }
               
            ((FormAwareField)field).setFormProperties(map);
        }


        field.setPropertyDataSource(property);
        field.setRequired(property.isRequired());
        field.setWidth(100, Sizeable.UNITS_PERCENTAGE);

        if (property.getName() == null) {
            field.setCaption(createCaptionByPropertyId(property.getPropertyId()));
        } else {
            field.setCaption(property.getName());
        }

        I18NSource messages = I18NSource.ThreadUtil.getThreadI18nSource();
        if (property.getDescription() == null) {
            field.setDescription(messages.getMessage(
                    "property.field.description.short.format",
                    new Object[] { property.getPropertyId() }
            ));
        } else {
            field.setDescription(messages.getMessage(
                    "property.field.description.format",
                    new Object[] { property.getDescription(), property.getPropertyId() }
            ));
        }

    return field;
  }

}
TOP

Related Classes of org.aperteworkflow.editor.stepeditor.user.WidgetConfigFormFieldFactory

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