GWT DatePicker With Custom Month and Year Selected.

2014-02-17 Thread Ajinkya Purane
Hey,
I have modified GWT DatePicker ,I have added Month and Year Selector on it. 

1) DatePickerWithYearSelectorNew.java

import com.google.gwt.user.datepicker.client.CalendarModel;
import com.google.gwt.user.datepicker.client.DatePicker;
import com.google.gwt.user.datepicker.client.DefaultCalendarView;

public class DatePickerWithYearSelectorNew extends DatePicker {

public DatePickerWithYearSelectorNew() {
super(new MonthAndYearSelectorWithYear(), new DefaultCalendarView(),
new CalendarModel());
MonthAndYearSelectorWithYear monthSelector = (MonthAndYearSelectorWithYear) 
this
.getMonthSelector();
monthSelector.setPicker(this);
monthSelector.setModel(this.getModel());
}
public void refreshComponents() {
super.refreshAll();
}
}

2) MonthAndYearSelectorWithYear.java



import java.util.Date;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
import com.google.gwt.user.datepicker.client.CalendarModel;
import com.google.gwt.user.datepicker.client.MonthSelector;



public class MonthAndYearSelectorWithYear extends MonthSelector {

private static String BASE_NAME = datePicker;
private PushButton backwards;
private PushButton forwards;
private PushButton backwardsYear;
private PushButton forwardsYear;
private Grid grid;
private int previousYearColumn = 0;
private int previousMonthColumn = 1;

private int nextMonthColumn = 4;
private int nextYearColumn = 5;
private CalendarModel model;
private DatePickerWithYearSelectorNew picker;

private ListBox monthListBox;
private ListBox yearListBox;

public MonthAndYearSelectorWithYear() {

yearListBox = new ListBox();

for (int i = 1900; i  2100; i++) {
yearListBox.addItem(i + );
}

String[] items = { Jan, Feb, Mar, Apr, May, Jun, Jul,
Aug, Sep, Oct, Nov, Dec };

monthListBox = new ListBox();

for (int i = 0; i  items.length; i++) {
monthListBox.addItem(items[i]);
}
}

public void setModel(CalendarModel model) {
this.model = model;
}

public void setPicker(DatePickerWithYearSelectorNew picker) {
this.picker = picker;
}

@Override
protected void refresh() {
int monthIndex = getModel().getCurrentMonth().getMonth();
monthListBox.setItemSelected(monthIndex, true);
int yearIndex = getModel().getCurrentMonth().getYear();
// System.out.println(yearIndex);
yearListBox.setItemSelected(yearIndex, true);
}

@Override
protected void setup() {
// Set up backwards.
backwards = new PushButton();
backwards.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
addMonths(-1);
}
});

backwards.getUpFace().setHTML(lsaquo;);
backwards.setStyleName(BASE_NAME + PreviousButton);

forwards = new PushButton();
forwards.getUpFace().setHTML(rsaquo;);
forwards.setStyleName(BASE_NAME + NextButton);
forwards.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
if (model.getCurrentMonth().getYear()  199) {
addMonths(+1);
}
else if(model.getCurrentMonth().getMonth()11 
model.getCurrentMonth().getYear()==199)
{
addMonths(+1);
}
}
});

// Set up backwards year
backwardsYear = new PushButton();
backwardsYear.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {

addMonths(-12);
picker.refreshComponents();
}
});

backwardsYear.getUpFace().setHTML(laquo;);
backwardsYear.setStyleName(BASE_NAME + PreviousButton);

forwardsYear = new PushButton();
forwardsYear.getUpFace().setHTML(raquo;);
forwardsYear.setStyleName(BASE_NAME + NextButton);
forwardsYear.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
if (model.getCurrentMonth().getYear()  199) {
addMonths(+12);
picker.refreshComponents();
}
}
});

yearListBox.addChangeHandler(new ChangeHandler() {

@Override
public void onChange(ChangeEvent event) {
// int yearIndex = yearListBox.getSelectedIndex();
// setYear(Integer.parseInt(yearListBox.getValue(yearIndex)));
setYear(yearListBox.getSelectedIndex());
}
});
monthListBox.addChangeHandler(new ChangeHandler() {

@Override
public void onChange(ChangeEvent event) {
int monthIndex = monthListBox.getSelectedIndex();
setMonth(monthIndex);
}
});

// Set up grid.
grid = new Grid(1, 6);
grid.setWidget(0, previousYearColumn, backwardsYear);
grid.setWidget(0, previousMonthColumn, backwards);
grid.setWidget(0, 2, monthListBox);
grid.setWidget(0, 3, yearListBox);
grid.setWidget(0, nextMonthColumn, forwards);
grid.setWidget(0, nextYearColumn, forwardsYear);

CellFormatter formatter = grid.getCellFormatter();

formatter.setWidth(0, previousYearColumn, 1);
formatter.setWidth(0, previousMonthColumn, 1);

formatter.setWidth(0, nextMonthColumn, 1);
formatter.setWidth(0, nextYearColumn, 1);
grid.setStyleName(BASE_NAME + MonthSelector);
initWidget(grid);
}

public void addMonths(int 

Re: GWT DatePicker With Custom Month and Year Selected.

2014-02-17 Thread Jens
Just in case you didn't know it:

In GWT 2.6 you can do 

DatePicker.setVisibleYearCount(int count)
DatePicker.setYearArrowsVisible(boolean visible)
DatePicker.setYearAndMonthDropdownVisible(boolean visible)

to show drop down boxes for month and year as well as navigation icons for 
switching to next/previous year.

-- J.

-- 
You received this message because you are subscribed to the Google Groups 
Google Web Toolkit group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-web-toolkit+unsubscr...@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at http://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/groups/opt_out.