Package br.gov.frameworkdemoiselle.vaadin.util

Source Code of br.gov.frameworkdemoiselle.vaadin.util.FieldFactory

/*
* Demoiselle Framework Copyright (C) 2010 SERPRO
* ---------------------------------------------------------------------------- This file is part of Demoiselle
* Framework. Demoiselle Framework is free software; you can redistribute it and/or modify it under the terms of the GNU
* Lesser General Public License version 3 as published by the Free Software Foundation. This program is distributed in
* the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a
* copy of the GNU Lesser General Public License version 3 along with this program; if not, see
* <http://www.gnu.org/licenses/> or write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA. ---------------------------------------------------------------------------- Este arquivo
* é parte do Framework Demoiselle. O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
* modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação do Software Livre (FSF). Este
* programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem uma garantia implícita de
* ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português para
* maiores detalhes. Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título "LICENCA.txt", junto com esse
* programa. Se não, acesse <http://www.gnu.org/licenses/> ou escreva para a Fundação do Software Livre (FSF) Inc., 51
* Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
*/
package br.gov.frameworkdemoiselle.vaadin.util;

import java.io.File;
import java.util.ResourceBundle;

import org.vaadin.easyuploads.FileFactory;
import org.vaadin.easyuploads.UploadField;
import org.vaadin.easyuploads.UploadField.FieldType;
import org.vaadin.easyuploads.UploadField.StorageMode;

import br.gov.frameworkdemoiselle.util.Beans;
import br.gov.frameworkdemoiselle.util.Strings;
import br.gov.frameworkdemoiselle.vaadin.configuration.VaadinConfig;

import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.Field;
import com.vaadin.ui.OptionGroup;
import com.vaadin.ui.PasswordField;
import com.vaadin.ui.PopupDateField;
import com.vaadin.ui.RichTextArea;
import com.vaadin.ui.TextArea;
import com.vaadin.ui.TextField;

/**
* Helper class that provides basic Vaadin field creation.
*
* @author Marlon
*/
final public class FieldFactory {

  /**
   * Can't instantiate this class. It's a helper class. All calls must be made only through static methods.
   */
  private FieldFactory() {

  }

  /**
   * Produces basic textfields.
   *
   * @param inputPrompt
   *            Prompt message.
   * @param caption
   *            Label.
   * @return Produced field.
   */
  public static TextField createTextField(String inputPrompt, String caption) {
    ResourceBundle bundle = Beans.getReference(ResourceBundle.class);

    TextField field = new TextField();
    field.setNullRepresentation("");
    setBasicProperties(field, caption);

    if (Strings.isResourceBundleKeyFormat(inputPrompt)) {
      field.setInputPrompt(bundle.getString(Strings.removeBraces(inputPrompt)));
    } else {
      field.setInputPrompt(inputPrompt);
    }

    return field;
  }

  /**
   * Produces a RichText field.
   *
   * @param caption
   *            Field's caption.
   * @return Produced field.
   */
  public static RichTextArea createRichText(String caption) {
    RichTextArea field = new RichTextArea();
    field.setNullRepresentation("");
    setBasicProperties(field, caption);
    return field;
  }

  /**
   * Produces a TextArea field.
   *
   * @param inputPrompt
   *            Field's prompt message.
   * @param caption
   *            Field's caption.
   * @param rows
   *            How much rows.
   * @param columns
   *            How much columns.
   * @return Produced field.
   */
  public static TextArea createTextArea(String inputPrompt, String caption, int rows, int columns) {
    ResourceBundle bundle = Beans.getReference(ResourceBundle.class);

    TextArea field = new TextArea();
    field.setNullRepresentation("");
    field.setRows(rows);
    field.setColumns(columns);
    setBasicProperties(field, caption);

    if (Strings.isResourceBundleKeyFormat(inputPrompt)) {
      field.setInputPrompt(bundle.getString(Strings.removeBraces(inputPrompt)));
    } else {
      field.setInputPrompt(inputPrompt);
    }

    return field;
  }

  /**
   * Produces an OptionGroup.
   *
   * @param caption
   *            Field's caption.
   * @param itemCaptionPropertyId
   *            Object's property used as label.
   * @return Produced field.
   */
  public static OptionGroup createOptionGroup(String caption, String itemCaptionPropertyId) {
    OptionGroup field = new OptionGroup();
    field.setItemCaptionPropertyId(itemCaptionPropertyId);
    setBasicProperties(field, caption);
    return field;
  }

  /**
   * Produces a ComboBox.
   *
   * @param inputPrompt
   *            Field's prompt message.
   * @param caption
   *            Field's caption.
   * @param itemCaptionPropertyId
   *            Object's property used as label.
   * @return Produced field.
   */
  public static ComboBox createComboBox(String inputPrompt, String caption, String itemCaptionPropertyId) {
    ResourceBundle bundle = Beans.getReference(ResourceBundle.class);

    ComboBox field = new ComboBox();
    field.setItemCaptionPropertyId(itemCaptionPropertyId);
    setBasicProperties(field, caption);

    if (Strings.isResourceBundleKeyFormat(inputPrompt)) {
      field.setInputPrompt(bundle.getString(Strings.removeBraces(inputPrompt)));
    } else {
      field.setInputPrompt(inputPrompt);
    }

    return field;
  }

  /**
   * Produces a PopupDateField.
   *
   * @param inputPrompt
   *            Field's prompt message.
   * @param caption
   *            Field's caption.
   * @param format
   *            Date format.
   * @return Produced field.
   */
  public static PopupDateField createDateField(String inputPrompt, String caption, String format) {
    ResourceBundle bundle = Beans.getReference(ResourceBundle.class);

    PopupDateField field = new PopupDateField();
    setBasicProperties(field, caption);
    field.setDateFormat(format);

    if (Strings.isResourceBundleKeyFormat(inputPrompt)) {
      field.setInputPrompt(bundle.getString(Strings.removeBraces(inputPrompt)));
    } else {
      field.setInputPrompt(inputPrompt);
    }

    return field;
  }

  /**
   * Produces a CheckBox.
   *
   * @param inputPrompt
   *            Field's prompt.
   * @param caption
   *            Field's caption.
   * @return Produced field.
   */
  public static CheckBox createCheckBox(String inputPrompt, String caption) {
    CheckBox field = new CheckBox();
    setBasicProperties(field, caption);
    return field;
  }

  private static void setBasicProperties(Field field, String caption) {
    ResourceBundle bundle = Beans.getReference(ResourceBundle.class);
    if (Strings.isResourceBundleKeyFormat(caption)) {
      field.setCaption(bundle.getString(Strings.removeBraces(caption)));
    } else {
      field.setCaption(caption);
    }
  }

  private static String resolveProperties(final String message) {
    ResourceBundle bundle = Beans.getReference(ResourceBundle.class);
    String result = message;
    if (Strings.isResourceBundleKeyFormat(message)) {
      result = bundle.getString(Strings.removeBraces(message));
    }
    return result;
  }

  public static UploadField createFileField(String caption, String buttonCaption) {
    UploadField field = new UploadField();
    field.setFieldType(FieldType.BYTE_ARRAY);
    field.setCaption(resolveProperties(caption));
    field.setButtonCaption(resolveProperties(buttonCaption));
    field.setStorageMode(StorageMode.MEMORY);
    field.setFileFactory(new FileFactory() {

      VaadinConfig config = Beans.getReference(VaadinConfig.class);

      public File createFile(String fileName, String mimeType) {
        File f = new File(config.getUploadPath() + fileName);
        return f;
      }
    });

    return field;
  }

  public static Field createPasswordField(String prompt, String caption) {
    PasswordField field = new PasswordField();
    field.setCaption(resolveProperties(caption));
    field.setInputPrompt(resolveProperties(prompt));
    return field;
  }

  @SuppressWarnings("serial")
  public static Field createCPFField(String prompt, String caption) {
    final TextField listenedField = createTextField(prompt, caption);
    listenedField.setImmediate(true);
    listenedField.addListener(new ValueChangeListener() {

      public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {
        if (listenedField.getValue() != null) {
          try {
            listenedField.setValue(TextUtil.format(listenedField.getValue().toString(), "999.999.999-99", true));
          } catch (RuntimeException re) {
            // Notthing to be done!
          }
        }
      }
    });
    return listenedField;
  }

  public static Field createPhoneField(String prompt, String caption) {
    final TextField listenedField = createTextField(prompt, caption);
    listenedField.setImmediate(true);
    listenedField.addListener(new ValueChangeListener() {

      private static final long serialVersionUID = 1L;

      @Override
      public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {
        if (listenedField.getValue() != null) {
          try {
            listenedField.setValue(TextUtil.format(listenedField.getValue().toString(), "9999-9999", true));
          } catch (RuntimeException re) {
            // Notthing to be done!
          }
        }
      }
    });
    return listenedField;
  }

  @SuppressWarnings("serial")
  public static Field createFormattedField(String prompt, String caption, final String formato, final boolean direcao) {
    final TextField listenedField = createTextField(prompt, caption);
    listenedField.setImmediate(true);
    listenedField.addListener(new ValueChangeListener() {

      public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {
        if (listenedField.getValue() != null) {
          try {
            listenedField.setValue(TextUtil.format(listenedField.getValue().toString(), formato, direcao));
          } catch (RuntimeException re) {
            // Notthing to be done!
          }
        }
      }

    });
    return listenedField;
  }

}
TOP

Related Classes of br.gov.frameworkdemoiselle.vaadin.util.FieldFactory

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.