
eu.future.earth.gwt.client.date.picker.DatePickerMonthNavigator Maven / Gradle / Ivy
package eu.future.earth.gwt.client.date.picker;
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.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import eu.future.earth.gwt.client.date.picker.DateSelectEvent.DateSelectEventActions;
import eu.future.earth.gwt.client.FtrGwtDatePickerCss;
import eu.future.earth.gwt.client.date.FtrGwtResources;
public class DatePickerMonthNavigator extends VerticalPanel implements ClickHandler, DateSelectListener, HasDateSelectHandlers {
private Grid navigator = new Grid(1, 3);
private FlowPanel topPanel = new FlowPanel();
private HorizontalPanel itemsPanel = new HorizontalPanel();
private DatePickerMonthPanel datapanel = null;
private Image prev = new Image(FtrGwtResources.IMAGES.cal_prev());
private Image next = new Image(FtrGwtResources.IMAGES.cal_next());
private Label current = new Label("");
private List toAdd = new ArrayList();
public DatePickerMonthNavigator(DatePickerRenderer renderer) {
super();
super.add(navigator);
datapanel = new DatePickerMonthPanel(renderer);
super.add(datapanel);
navigator.setWidget(0, 0, prev);
navigator.setWidget(0, 1, current);
navigator.setWidget(0, 2, next);
navigator.getCellFormatter().setWidth(0, 0, "10%");
navigator.getCellFormatter().setWidth(0, 1, "80%");
navigator.getCellFormatter().setWidth(0, 2, "10%");
navigator.getCellFormatter().setHorizontalAlignment(0, 1, HorizontalPanel.ALIGN_CENTER);
navigator.getCellFormatter().setHorizontalAlignment(0, 2, HorizontalPanel.ALIGN_RIGHT);
navigator.setWidth("100%");
navigator.setHeight("18px");
super.setCellHeight(navigator, "18px");
datapanel.addDateSelectEventHandler(this);
next.addClickHandler(this);
prev.addClickHandler(this);
current.addClickHandler(this);
prev.addStyleName(FtrGwtDatePickerCss.IMAGE_BUTTON);
next.addStyleName(FtrGwtDatePickerCss.IMAGE_BUTTON);
navigator.setStyleName(FtrGwtDatePickerCss.MONTH_NAV);
super.setStyleName(FtrGwtDatePickerCss.MONTH_SELECT);
current.setText(datapanel.getDisplayText());
}
public void addWidgetToPicker(Widget newWidget) {
if (toAdd.isEmpty()) {
super.add(topPanel);
topPanel.add(itemsPanel);
}
toAdd.add(newWidget);
itemsPanel.add(newWidget);
if (newWidget instanceof HasDateSelectHandlers) {
HasDateSelectHandlers real = (HasDateSelectHandlers) newWidget;
real.addDateSelectEventHandler(this);
}
};
public Date getFirstDateShow() {
return datapanel.getFirstDateShow();
}
public Date getLastDateShow() {
return datapanel.getLastDateShow();
}
public void setSelectedDate(Date newDate) {
datapanel.setSelectedDate(newDate);
current.setText(datapanel.getDisplayText());
}
public void onClick(ClickEvent event) {
if (event.getSource() == prev) {
datapanel.prev();
current.setText(datapanel.getDisplayText());
DateSelectEvent.fire(this, datapanel.getCurrent(), DateSelectEventActions.NAVIGATE_MONTH);
}
if (event.getSource() == next) {
datapanel.next();
current.setText(datapanel.getDisplayText());
DateSelectEvent.fire(this, datapanel.getCurrent(), DateSelectEventActions.NAVIGATE_MONTH);
}
if (event.getSource() == current) {
DateSelectEvent.fire(this, datapanel.getCurrent(), DateSelectEventActions.SELECT_NEW_MONTH);
}
}
public Date getSelected() {
return datapanel.getCurrent();
}
public void handleDateSelectEvent(DateSelectEvent newEvent) {
if (newEvent.getSource() == datapanel) {
} else {
setSelectedDate(newEvent.getDate());
}
DateSelectEvent.fire(this, newEvent.getDate(), newEvent.getCommand());
}
public HandlerRegistration addDateSelectEventHandler(DateSelectListener handler) {
return addHandler(handler, DateSelectEvent.getType());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy