package open.dolphin.client; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.beans.EventHandler; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; /** * * @author Kazushi Minagawa. Digital Globe, Inc. */ public final class ChangeNumDatesDialog { private final JButton chagneBtn; private final JButton cancelBtn; private ChangeNumDatesView view; private final JDialog dialog; private final PropertyChangeSupport boundSupport; public ChangeNumDatesDialog(JFrame parent, PropertyChangeListener pcl) { // view view = new ChangeNumDatesView(); String pattern = "^[1-9][0-9]*$"; RegexConstrainedDocument numReg = new RegexConstrainedDocument(pattern); view.getNumDatesFld().setDocument(numReg); //s.oh^ 不具合修正 view.getNumDatesFld().enableInputMethods(false); //s.oh$ java.util.ResourceBundle bundle = ClientContext.getMyBundle(ChangeNumDatesDialog.class); // OK button String actionText = bundle.getString("actionText.change"); chagneBtn = new JButton(actionText); chagneBtn.addActionListener((ActionListener) EventHandler.create(ActionListener.class, ChangeNumDatesDialog.this, "doOk")); chagneBtn.setEnabled(false); // Cancel Button //minagawa^ mac jdk7 // String buttonText = (String)UIManager.get("OptionPane.cancelButtonText"); String buttonText = GUIFactory.getCancelButtonText(); //minagawa$ cancelBtn = new JButton(buttonText); cancelBtn.addActionListener((ActionListener) EventHandler.create(ActionListener.class, ChangeNumDatesDialog.this, "doCancel")); // Listener view.getNumDatesFld().getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent de) { checkInput(); } @Override public void removeUpdate(DocumentEvent de) { checkInput(); } @Override public void changedUpdate(DocumentEvent de) { } }); Object[] options = new Object[]{chagneBtn, cancelBtn}; JOptionPane jop = new JOptionPane( view, JOptionPane.INFORMATION_MESSAGE, JOptionPane.DEFAULT_OPTION, null, options, chagneBtn); String title = bundle.getString("title.dialog.changeRpNumDays"); dialog = jop.createDialog(parent, ClientContext.getFrameTitle(title)); dialog.addWindowListener(new WindowAdapter() { @Override public void windowOpened(WindowEvent e) { view.getNumDatesFld().requestFocus(); } @Override public void windowClosing(WindowEvent e) { doCancel(); } }); boundSupport = new PropertyChangeSupport(this); boundSupport.addPropertyChangeListener(pcl); } public void show() { dialog.setVisible(true); } public void doOk() { try { int number = Integer.parseInt(view.getNumDatesFld().getText().trim()); boundSupport.firePropertyChange("newNumDates", -1, number); close(); } catch (Throwable e) { e.printStackTrace(System.err); } } public void doCancel() { boundSupport.firePropertyChange("newNumDates", -1, 0); close(); } private void close() { dialog.setVisible(false); dialog.dispose(); } private void checkInput() { String test = view.getNumDatesFld().getText().trim(); boolean ok = true; ok = ok && (!test.equals("")); chagneBtn.setEnabled(ok); } }