
eu.future.earth.gwt.client.DateEditFieldWithPicker Maven / Gradle / Ivy
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