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

eu.future.earth.gwt.client.date.picker.DatePickerMonthNavigator Maven / Gradle / Ivy

There is a newer version: 3.3
Show newest version
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