public void mouseMove(final int x, final int y) { for (int i = 0; i < mMonthEntries.size(); i++) { MonthEntry mEntry = (MonthEntry) mMonthEntries.get(i); if (isInside(x, y, mEntry.getRect())) { mHoverEntry = mEntry; mAboveRun = false; mBelowRun = false; redraw(); return; } } mHoverEntry = null; if (!CalendarCombo.OS_CARBON) { if (y < getLocation().y) { runAbove(); } else { runBelow(); } } }
private void drawDates(GC gc) { int y = mTopDateSpacer; int spacer = 2; Calendar temp = Calendar.getInstance(mLocale); temp.setTime(mStart.getTime()); temp.add(Calendar.MONTH, -3); if (!CalendarCombo.OS_CARBON) { gc.setFont(mSettings.getWindowsMonthPopupDrawFont()); } else gc.setFont(mSettings.getCarbonDrawFont()); gc.setForeground(ColorCache.getBlack()); mMonthEntries.clear(); // gc.setBackground(ColorCache.getWhite()); // gc.fillRectangle(bounds); for (int i = 0; i < mMonthsToShow; i++) { int mo = temp.get(Calendar.MONTH); String toDraw = mMonths[mo] + " " + temp.get(Calendar.YEAR); Point p = gc.stringExtent(toDraw); // center the text in the available space int rest = mInnerWidth - p.x; rest /= 2; Rectangle rect = new Rectangle(0, y - 1, mBounds.width, p.y + 1); if (mHoverEntry != null) { // draw hover entry if (mHoverEntry.getRect().equals(rect)) { gc.setBackground(ColorCache.getBlack()); gc.fillRectangle(mHoverEntry.getRect()); gc.setBackground(ColorCache.getWhite()); gc.setForeground(ColorCache.getWhite()); // lastHoverRect = hoverEntry.getRect(); mSelectedMonth = mHoverEntry.getCalendar(); } } else { // draw today if (i == 3) { gc.setBackground(ColorCache.getBlack()); gc.fillRectangle(rect); gc.setBackground(ColorCache.getWhite()); gc.setForeground(ColorCache.getWhite()); } } gc.drawString(toDraw, rest, y, true); gc.setForeground(ColorCache.getBlack()); MonthEntry me = new MonthEntry(temp); me.setRect(rect); me.setyPos(y); me.setText(toDraw); mMonthEntries.add(me); temp.add(Calendar.MONTH, 1); y += p.y + spacer; } }