private boolean setFocusToSelection() { if (dayPanel != null) { if (cdt.hasSelection()) { Calendar first = cdt.getCalendarInstance((Date) dayButtons[0].getData(CDT.Key.Date)); first.set(Calendar.MILLISECOND, 0); first.set(Calendar.SECOND, 0); first.set(Calendar.MINUTE, 0); first.set(Calendar.HOUR_OF_DAY, 0); Calendar last = cdt.getCalendarInstance((Date) dayButtons[dayButtons.length - 1].getData(CDT.Key.Date)); last.set(Calendar.MILLISECOND, 0); last.set(Calendar.SECOND, 0); last.set(Calendar.MINUTE, 0); last.set(Calendar.HOUR_OF_DAY, 0); last.add(Calendar.DATE, 1); last.add(Calendar.MILLISECOND, -1); Date selection = cdt.getSelection(); Calendar scal = cdt.getCalendarInstance(selection); for (int j = 0; j < dayButtons.length; j++) { Calendar tmpcal = cdt.getCalendarInstance((Date) dayButtons[j].getData(CDT.Key.Date)); if ((scal.get(Calendar.DATE) == tmpcal.get(Calendar.DATE)) && (scal.get(Calendar.MONTH) == tmpcal.get(Calendar.MONTH)) && (scal.get(Calendar.YEAR) == tmpcal.get(Calendar.YEAR))) { return dayButtons[j].setFocus(); } } } else { dayButtons[0].setFocus(); } } return true; }
/** set / update the text and font color of the <code>dayButton</code>s. */ private void updateDays() { if (dayPanel != null) { Calendar date = cdt.getCalendarInstance(); Calendar active = cdt.getCalendarInstance(); Calendar today = cdt.getCalendarInstance(System.currentTimeMillis()); for (int day = 0; day < dayButtons.length; day++) { if ((dayButtons[day] != null)) { date.setTime((Date) dayButtons[day].getData(CDT.Key.Date)); boolean isToday = (date.get(Calendar.YEAR) == today.get(Calendar.YEAR)) && (date.get(Calendar.DAY_OF_YEAR) == today.get(Calendar.DAY_OF_YEAR)); boolean isActive = (date.get(Calendar.YEAR) == active.get(Calendar.YEAR)) && (date.get(Calendar.MONTH) == active.get(Calendar.MONTH)); dayButtons[day].setText(getFormattedDate("d", date.getTime())); // $NON-NLS-1$ dayButtons[day].setData(CDT.Key.Today, isToday); dayButtons[day].setData(CDT.Key.Active, isActive); cdt.getPainter().update(dayButtons[day]); } } int focusButton = -1; for (int i = 0; i < dayButtons.length; i++) { dayButtons[i].setSelection(false); } if (cdt.hasSelection()) { Calendar first = cdt.getCalendarInstance((Date) dayButtons[0].getData(CDT.Key.Date)); first.set(Calendar.MILLISECOND, 0); first.set(Calendar.SECOND, 0); first.set(Calendar.MINUTE, 0); first.set(Calendar.HOUR_OF_DAY, 0); Calendar last = cdt.getCalendarInstance((Date) dayButtons[dayButtons.length - 1].getData(CDT.Key.Date)); last.set(Calendar.MILLISECOND, 0); last.set(Calendar.SECOND, 0); last.set(Calendar.MINUTE, 0); last.set(Calendar.HOUR_OF_DAY, 0); last.add(Calendar.DATE, 1); last.add(Calendar.MILLISECOND, -1); Date selection = cdt.getSelection(); Calendar scal = cdt.getCalendarInstance(selection); for (int j = 0; j < dayButtons.length; j++) { Calendar tmpcal = cdt.getCalendarInstance((Date) dayButtons[j].getData(CDT.Key.Date)); if ((scal.get(Calendar.DATE) == tmpcal.get(Calendar.DATE)) && (scal.get(Calendar.MONTH) == tmpcal.get(Calendar.MONTH)) && (scal.get(Calendar.YEAR) == tmpcal.get(Calendar.YEAR))) { dayButtons[j].setSelection(true); focusButton = j; break; } } if (focusButton >= 0) { dayButtons[focusButton].setFocus(); } } dayPanel.redraw(); } }