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

eu.future.earth.gwt.client.DateEditFieldWithPicker Maven / Gradle / Ivy

There is a newer version: 3.3
Show newest version
package eu.future.earth.gwt.client;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.HasValueChangeHandlers;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Widget;

import eu.future.earth.gwt.client.date.FtrGwtResources;
import eu.future.earth.gwt.client.date.picker.DatePickerDialog;
import eu.future.earth.gwt.client.date.picker.DateSelectEvent;
import eu.future.earth.gwt.client.date.picker.DateSelectListener;
import eu.future.earth.gwt.client.date.picker.NoneContraintAndEntryRenderer;
import eu.future.earth.gwt.client.ui.button.TouchButton;
import eu.future.earth.gwt.client.ui.button.UiType;

public class DateEditFieldWithPicker extends Composite implements ClickHandler, DateSelectListener, HasValueChangeHandlers, ValueChangeHandler {

	@Override
	public void addStyleName(String style) {
		field.addStyleName(style);
	}

	@Override
	public String getStyleName() {
		return field.getStyleName();
	}

	private List toAdd = new ArrayList();

	public void addWidgetToPicker(Widget newWidget) {
		toAdd.add(newWidget);
	};

	@Override
	public void setStyleName(String style) {
		field.setStyleName(style);
	}

	@Override
	public void setStylePrimaryName(String style) {
		field.setStylePrimaryName(style);
	}

	private DateBox field = null;

	private TouchButton dateButton = new TouchButton(new Image(FtrGwtResources.IMAGES.cal()), UiType.Regular);

	private DatePickerDialog datePicker = null;

	private NoneContraintAndEntryRenderer renderer = new NoneContraintAndEntryRenderer();

	public DateEditFieldWithPicker() {
		this(DateBox.DEFAULT_DATE_FORMAT);
	}

	public DateEditFieldWithPicker(String format) {
		super();
		FlowPanel main = new FlowPanel();
		main.setStyleName("ftr-date-edit-picker");
		initWidget(main);
		field = new DateBox(format);
		main.add(field);
//		super.setCellVerticalAlignment(field, HorizontalPanel.ALIGN_MIDDLE);
//		add(new HTML(" "));
		main.add(dateButton);
//		super.setCellVerticalAlignment(dateButton, HorizontalPanel.ALIGN_MIDDLE);
		dateButton.addClickHandler(this);
		field.setEnabled(true);
		field.addValueChangeHandler(this);
	}

	private boolean state = true;

	private boolean stateField = true;

	public void setEditable(boolean newState) {
		state = newState;
		if (state) {
			dateButton.setVisible(true);
		} else {
			dateButton.setVisible(false);
		}
		if (stateField) {
			field.setEnabled(newState);
		} else {
			field.setEnabled(false);
		}
	}

	public void setFieldEditable(boolean newState) {
		stateField = newState;
		field.setEnabled(stateField);
	}

	public void setButtonEnabled(boolean newState) {
		dateButton.setEnabled(newState);
	}

	public void setDate(Date newValue) {
		if (newValue != null) {
			field.setValue(newValue);
		} else {
			field.setValue(null);
		}
	}

	public Date getValue() {
		return field.getValue();
	}

	public void onClick(ClickEvent event) {
		if (datePicker == null) {
			datePicker = new DatePickerDialog(renderer);
			datePicker.addDateSelectEventHandler(this);
			for (Widget add : toAdd) {
				datePicker.addWidgetToPicker(add);
			}
		}

		Date theDate = field.getValue();
		if (theDate == null) {
			theDate = new Date();
		}
		datePicker.setSelectedDate(theDate);
		datePicker.showRelativeTo(dateButton);

	}

	public void handleDateSelectEvent(DateSelectEvent newEvent) {
		field.setValue(newEvent.getDate());
		ValueChangeEvent.fire(this, newEvent.getDate());
	}

	public HandlerRegistration addValueChangeHandler(ValueChangeHandler handler) {
		return addHandler(handler, ValueChangeEvent.getType());
	}

	public void onValueChange(ValueChangeEvent event) {
		ValueChangeEvent.fire(this, event.getValue());
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy