import com.google.gwt.user.client.DOM;\r
import com.google.gwt.user.client.Event;\r
import com.google.gwt.user.client.Timer;\r
-import com.google.gwt.user.client.ui.ClickListener;\r
import com.google.gwt.user.client.ui.FlexTable;\r
import com.google.gwt.user.client.ui.MouseListener;\r
import com.google.gwt.user.client.ui.MouseListenerCollection;\r
import com.itmill.toolkit.terminal.gwt.client.DateTimeService;\r
import com.itmill.toolkit.terminal.gwt.client.LocaleService;\r
\r
-public class ICalendarPanel extends FlexTable implements MouseListener,\r
- ClickListener {\r
+public class ICalendarPanel extends FlexTable implements MouseListener {\r
\r
private final IDateField datefield;\r
\r
final boolean needsMonth = datefield.getCurrentResolution() > IDateField.RESOLUTION_YEAR;\r
boolean needsBody = datefield.getCurrentResolution() >= IDateField.RESOLUTION_DAY;\r
final boolean needsTime = datefield.getCurrentResolution() >= IDateField.RESOLUTION_HOUR;\r
+ forceRedraw = prevYear == null ? true : forceRedraw;\r
buildCalendarHeader(forceRedraw, needsMonth);\r
clearCalendarBody(!needsBody);\r
if (needsBody) {\r
nextYear.setStyleName("i-button-nextyear");\r
prevYear.addMouseListener(this);\r
nextYear.addMouseListener(this);\r
- prevYear.addClickListener(this);\r
- nextYear.addClickListener(this);\r
setWidget(0, 0, prevYear);\r
setWidget(0, 4, nextYear);\r
\r
nextMonth.setStyleName("i-button-nextmonth");\r
prevMonth.addMouseListener(this);\r
nextMonth.addMouseListener(this);\r
- prevMonth.addClickListener(this);\r
- nextMonth.addClickListener(this);\r
setWidget(0, 3, nextMonth);\r
setWidget(0, 1, prevMonth);\r
}\r
IDateField.CLASSNAME + "-calendarpanel-header");\r
} else if (!needsMonth) {\r
// Remove month traverse buttons\r
- prevMonth.removeClickListener(this);\r
prevMonth.removeMouseListener(this);\r
- nextMonth.removeClickListener(this);\r
nextMonth.removeMouseListener(this);\r
remove(prevMonth);\r
remove(nextMonth);\r
resolution = datefield.getCurrentResolution();\r
}\r
\r
- public void onClick(Widget sender) {\r
- // processClickEvent(sender, true);\r
- }\r
-\r
private boolean isEnabledDate(Date date) {\r
if ((minDate != null && date.before(minDate))\r
|| (maxDate != null && date.after(maxDate))) {\r
private Timer timer;\r
\r
public void onMouseDown(final Widget sender, int x, int y) {\r
+ // Allow user to click-n-hold for fast-forward or fast-rewind.\r
+ // Timer is first used for a 500ms delay after mousedown. After that has\r
+ // elapsed, another timer is triggered to go off every 150ms. Both\r
+ // timers are cancelled on mouseup or mouseout.\r
if (sender instanceof IEventButton) {\r
processClickEvent(sender, false);\r
timer = new Timer() {\r