Отключить кнопки предыдущего и следующего месяца на com.google.gwt.user.datepicker.client.DatePicker? - PullRequest
1 голос
/ 19 апреля 2011

У меня есть com.google.gwt.user.datepicker.client.DatePicker, и я не хочу, чтобы пользователь мог выбрать предыдущий или следующий месяц в некоторых случаях.

Например, я не хочу, чтобы пользователь мог выбрать день до сегодняшнего дня.

Я понял, как отключить фактические дни в календаре , но пользователь все еще может нажать на << и вернуться на месяц, который все дни отключены.

Я не могу найти способ получить ссылку на кнопки / ссылки << и >>, чтобы предпочтительно их скрыть или, наоборот, отключить.

Я использую GWT 2.1.1 и могу перейти на GWT 2.2.0, если это имеет значение.

Кто-нибудь знает, как получить ссылку на эти виджеты?

1 Ответ

1 голос
/ 19 апреля 2011

DefaultDateMonthSelector (com.google.gwt.user.datepicker.client), используемый DatePicker, не отображает эти виджеты и, следовательно, невозможно напрямую отключить эти кнопки.

Чтобы реализовать эту функцию, напишите новый DateMonthSelector (можно начать с источника DefaultMonthSelector http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/user/datepicker/client/DefaultMonthSelector.java).Например,

public final class LimitedMonthSelector extends MonthSelector {
   // Keep the PushButtons disabled
   // Modified from the original DefaultMonthSelector
  @Override
  protected void setup() {
    // Set up backwards.
    backwards = new PushButton();
    backwards.getUpFace().setHTML("&laquo;");
    backwards.setStyleName(css().previousButton());
    backwards.setEnabled(false);   // Disable the back button

    forwards = new PushButton();
    forwards.getUpFace().setHTML("&raquo;");
    forwards.setStyleName(css().nextButton());
    forwards.setEnabled(false);   // Disable the forward button

    // Set up grid.
    grid = new Grid(1, 3);
    grid.setWidget(0, 0, backwards);
    grid.setWidget(0, 2, forwards);

    CellFormatter formatter = grid.getCellFormatter();
    formatter.setStyleName(0, 1, css().month());
    formatter.setWidth(0, 0, "1");
    formatter.setWidth(0, 1, "100%");
    formatter.setWidth(0, 2, "1");
    grid.setStyleName(css().monthSelector());
    initWidget(grid);
  }
}

И затем используйте эту реализацию MonthSelector в реализации DatePicker.Например,

public class LimitedDatePicker extends DatePicker {

  public MonthYearDatePicker() {
    super(new LimitedMonthSelector(), new DefaultCalendarView(), new CalendarModel());
  }
} 

У этого нового LimitedDatePicker отключены кнопки назад / вперед.

...