1   package wbKerho;
2   
3   import java.awt.BorderLayout;
4   import java.awt.FlowLayout;
5   import java.awt.Frame;
6   import javax.swing.JButton;
7   import javax.swing.JComponent;
8   import javax.swing.JDialog;
9   import javax.swing.JPanel;
10  import javax.swing.KeyStroke;
11  import javax.swing.border.EmptyBorder;
12  import java.awt.event.ActionListener;
13  import java.awt.event.ActionEvent;
14  import java.awt.event.KeyEvent;
15  import fi.jyu.mit.gui.EditPanel;
16  
17  /**
18   * Dialogi kerhon nimelle
19   * @author vesal
20   * @version 4.1.2011
21   *
22   */
23  public class KerhonNimiDialog extends JDialog {
24  
25      private static final long serialVersionUID = 1L;
26  
27      private final JPanel contentPanel = new JPanel();
28      private EditPanel editPanel = new EditPanel();
29  
30  
31      /**
32       * Käynnistä dialogi ja kysy kerhon nimi
33       * @param defName ehdotettava nimi
34       * @return käyttäjän antama nimi
35       */
36      public static String askName(String defName) {
37          String ret = null;
38          KerhonNimiDialog dialog = new KerhonNimiDialog(null);
39          dialog.editPanel.setText(defName);
40          dialog.setVisible(true);
41          ret = dialog.getResult();
42          dialog.dispose();
43          return ret;
44      }
45  
46      private String result = null;
47  
48  
49      /**
50       * Palautetana dialogista saatu tulos. null jos poistuttiin
51       * @return dialogiin kirjoitettu jono, null jos lopetettiin
52       */
53      public String getResult() {
54          return result;
55      }
56  
57  
58      /**
59       * Apumetodi tuloksen asettamiseksi sisäistä luokista 
60       * @param value mikä on dialogin tulos
61       */
62      protected void setResult(String value) {
63          result = value;
64      }
65  
66  
67      /**
68       * Palautetaan editPanel sisäluokille
69       * @return editPanel
70       */
71      protected EditPanel getEditPanel() {
72          return editPanel;
73      }
74  
75  
76      /**
77       * Luodaan kerhon nimen kysyvä dialogi
78       * @param parent mikä framen alta käynnistettiin
79       */
80      public KerhonNimiDialog(Frame parent) {
81          super(parent, "Nimi", true);
82          setTitle("Kerho");
83          setBounds(100, 100, 371, 268);
84          getContentPane().setLayout(new BorderLayout());
85          contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
86  
87          contentPanel.registerKeyboardAction(new ActionListener() {
88              @Override
89              public void actionPerformed(ActionEvent actionEvent) {
90                  setResult(null);
91                  setVisible(false);
92              }
93          }, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
94  
95          getContentPane().add(contentPanel, BorderLayout.SOUTH);
96          contentPanel.setLayout(new BorderLayout(0, 0));
97  
98          editPanel.setColumns(20);
99          editPanel.setCaption("Anna kerhon nimi");
100         contentPanel.add(editPanel, BorderLayout.NORTH);
101         JPanel buttonPane = new JPanel();
102         contentPanel.add(buttonPane, BorderLayout.SOUTH);
103         buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
104 
105         JButton okButton = new JButton("OK");
106         okButton.addActionListener(new ActionListener() {
107             @Override
108             public void actionPerformed(ActionEvent arg0) {
109                 setResult(getEditPanel().getText());
110                 setVisible(false);
111             }
112         });
113         buttonPane.add(okButton);
114         getRootPane().setDefaultButton(okButton);
115 
116         JButton cancelButton = new JButton("Cancel");
117         cancelButton.addActionListener(new ActionListener() {
118             @Override
119             public void actionPerformed(ActionEvent arg0) {
120                 setResult(null);
121                 setVisible(false);
122             }
123         });
124         cancelButton.setActionCommand("Cancel");
125         buttonPane.add(cancelButton);
126 
127         TiedotPanel tiedotPanel = new TiedotPanel();
128         getContentPane().add(tiedotPanel, BorderLayout.CENTER);
129     }
130 
131 }
132