All Downloads are FREE. Search and download functionalities are using the official Maven repository.

br.gov.frameworkdemoiselle.vaadin.util.FieldFactory Maven / Gradle / Ivy

The newest version!
/*
 * 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
 *  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  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;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy