2011-04-19 2 views
1

나는 com.google.gwt.user.datepicker.client.DatePicker을 가지고 있으며 사용자가 특정 경우에 이전 달 또는 다음 달을 선택할 수 없도록하려고합니다.com.google.gwt.user.datepicker.client.DatePicker에서 이전 및 다음 달 버튼을 사용 중지 하시겠습니까?

예를 들어 사용자가 오늘 전에 하루를 선택할 수 없도록하고 싶습니다.

I figured out how to disable the actual days in the calendar 그러나 사용자는 여전히 <<을 클릭하여 한 달 전으로 돌아갈 수 있으며, 모든 요일은 비활성화됩니다.

<<>> 단추/링크에 대한 참조를 얻는 방법이 없으므로이 단추/링크를 숨기거나 비활성화하는 것이 좋습니다.

GWT 2.1.1을 사용하고 있으며 GWT 2.2.0까지 갈 수 있습니다.

위젯에 대한 참조를 얻는 방법을 아는 사람이 있습니까?

답변

1

DatePicker에서 사용하는 DefaultDateMonthSelector (com.google.gwt.user.datepicker.client)는 위젯을 노출하지 않으므로 이러한 버튼을 직접 비활성화 할 수 없습니다.

이 기능을 구현하려면 새로운 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에는 뒤로/앞으로 단추가 비활성화됩니다.

관련 문제