public TimeComboBoxEditor(boolean timeVisible) { showEditorBtn = new JButton(); showEditorBtn.addActionListener(new ShowCalendarAction()); calenderComponent = new JCalendar(new Date(), Locale.getDefault(), true, true, timeVisible); calenderComponent.addMouseListener( new MouseAdapter() { @Override public void mouseClicked(final MouseEvent e) { calendarPopupMenu.setVisible(false); } }); calendarPopupMenu = calenderComponent.createPopupMenu(); calendarPopupMenu.addPopupMenuListener( new PopupMenuListener() { public void popupMenuWillBecomeVisible(PopupMenuEvent e) { calenderComponent.setDate(date); } public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { updateDate(); } public void popupMenuCanceled(PopupMenuEvent e) {} }); actionListeners = new LinkedList<ActionListener>(); }
private void updateDate() { final FormattedDate newDate = new FormattedDate( calenderComponent.getDate(), calenderComponent.isTimeVisible() ? "yyyy-MM-dd HH:mm" : "yyyy-MM-dd"); final String type = newDate.containsTime() ? IFormattedObject.TYPE_DATETIME : IFormattedObject.TYPE_DATE; date = FormattedDate.createDefaultFormattedDate(newDate.getTime(), type); if (actionListeners.size() == 0) { return; } final ActionEvent actionEvent = new ActionEvent(this, 0, null); for (final ActionListener l : actionListeners) { l.actionPerformed(actionEvent); } }