package open.dolphin.client; 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.infomodel.SimpleDate; /** * PopupCalendarListener * (予定カルテ対応) * * @author Kazushi Minagawa, Digital Globe, Inc. * @author modified by masuda, Masuda Naika */ public class PopupCalendarListener extends MouseAdapter implements PropertyChangeListener { private static final int[] defaultRange = {-12, 0}; private JPopupMenu popup; private int[] range; private SimpleDate[] acceptRange; protected JTextField tf; public PopupCalendarListener(JTextField tf) { this(tf, defaultRange); } public PopupCalendarListener(JTextField tf, int[] range) { this.tf = tf; this.range = range; tf.addMouseListener(PopupCalendarListener.this); } public PopupCalendarListener(JTextField tf, int[] range, SimpleDate[] acceptRange) { this.tf = tf; this.range = range; this.acceptRange = acceptRange; tf.addMouseListener(PopupCalendarListener.this); } public void setValue(SimpleDate sd) { tf.setText(SimpleDate.simpleDateToMmldate(sd)); } @Override public final void mousePressed(MouseEvent e) { maybeShowPopup(e); } @Override public final 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(range); cc.setAcceptRange(acceptRange); popup.insert(cc, 0); popup.show(e.getComponent(), e.getX(), e.getY()); } } @Override public final void propertyChange(PropertyChangeEvent e) { if (e.getPropertyName().equals(CalendarCardPanel.PICKED_DATE)) { SimpleDate sd = (SimpleDate)e.getNewValue(); setValue(sd); popup.setVisible(false); popup = null; } } }