package open.dolphin.letter; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.JPopupMenu; import javax.swing.JTextField; import open.dolphin.client.CalendarCardPanel; import open.dolphin.client.ClientContext; import open.dolphin.infomodel.SimpleDate; /** * * @author Kazushi Minagawa, Digital Globe, Inc. */ public class PopupCalendarListener extends MouseAdapter implements PropertyChangeListener { private JPopupMenu popup; private final JTextField tf; public PopupCalendarListener(JTextField tf) { this.tf = tf; tf.addMouseListener(PopupCalendarListener.this); } @Override public void mousePressed(MouseEvent e) { maybeShowPopup(e); } @Override public void mouseReleased(MouseEvent e) { maybeShowPopup(e); } private void maybeShowPopup(MouseEvent e) { if (e.isPopupTrigger()) { popup = new JPopupMenu(); CalendarCardPanel cc = new CalendarCardPanel(ClientContext.getEventColorTable()); cc.addPropertyChangeListener(CalendarCardPanel.PICKED_DATE, this); cc.setCalendarRange(new int[]{-12, 0}); popup.insert(cc, 0); popup.show(e.getComponent(), e.getX(), e.getY()); } } @Override public void propertyChange(PropertyChangeEvent e) { if (e.getPropertyName().equals(CalendarCardPanel.PICKED_DATE)) { SimpleDate sd = (SimpleDate) e.getNewValue(); String mmldate = SimpleDate.simpleDateToMmldate(sd); tf.setText(mmldate); popup.setVisible(false); popup = null; } } }