1 package kerhoswing;
2
3 import java.awt.Color;
4 import java.awt.Desktop;
5 import java.awt.event.KeyAdapter;
6 import java.awt.event.KeyEvent;
7 import java.io.IOException;
8 import java.io.PrintStream;
9 import java.net.URI;
10 import java.net.URISyntaxException;
11
12 import javax.swing.JComponent;
13 import javax.swing.JLabel;
14 import javax.swing.JOptionPane;
15 import javax.swing.JTextArea;
16 import javax.swing.JTextField;
17
18 import fi.jyu.mit.gui.AbstractChooser;
19 import fi.jyu.mit.gui.IStringListChooser;
20 import fi.jyu.mit.gui.SelectionChangeListener;
21 import fi.jyu.mit.gui.StringTable;
22 import fi.jyu.mit.gui.TextAreaOutputStream;
23
24
25
26
56 public class KerhoSwing {
57
58 private static Color virheVari = new Color(255, 0, 0);
59 private AbstractChooser<String> cbKentat;
61 private JTextField editHaku;
62 private AbstractChooser<String> listJasenet;
63 private StringTable tableHarrastukset;
64 private JComponent panelJasen;
65 private JLabel labelVirhe;
66
67
68
71 public KerhoSwing() {
72 }
74
75
76
79 public JLabel getLabelVirhe() {
80 return labelVirhe;
81 }
82
83
84
87 public void setLabelVirhe(JLabel labelVirhe) {
88 this.labelVirhe = labelVirhe;
89 }
90
91
92
95 public AbstractChooser<String> getCbKentat() {
96 return cbKentat;
97 }
98
99
100
103 public void setCbKentat(AbstractChooser<String> cbKentat) {
104 this.cbKentat = cbKentat;
105 }
106
107
108
111 public JTextField getEditHaku() {
112 return editHaku;
113 }
114
115
116
119 public void setEditHaku(JTextField editHaku) {
120 this.editHaku = editHaku;
121 }
122
123
124
127 public AbstractChooser<String> getListJasenet() {
128 return listJasenet;
129 }
130
131
132
135 public void setListJasenet(AbstractChooser<String> listJasenet) {
136 this.listJasenet = listJasenet;
137 }
138
139
140
143 public StringTable getTableHarrastukset() {
144 return tableHarrastukset;
145 }
146
147
148
151 public void setTableHarrastukset(StringTable tableHarrastukset) {
152 this.tableHarrastukset = tableHarrastukset;
153 }
154
155
156
159 public JComponent getPanelJasen() {
160 return panelJasen;
161 }
162
163
164
167 public void setPanelJasen(JComponent panelJasen) {
168 this.panelJasen = panelJasen;
169 }
170
171
172
175 public void alusta() {
176
178 editHaku.addKeyListener(new KeyAdapter() {
179 @Override public void keyReleased(KeyEvent e) { hae(0); }
180 });
181
182 cbKentat.addSelectionChangeListener(new SelectionChangeListener<String>() {
183 @Override
184 public void selectionChange(IStringListChooser<String> sender) { hae(0);}
185 });
186
187 listJasenet.addSelectionChangeListener(new SelectionChangeListener<String>() {
188 @Override
189 public void selectionChange(IStringListChooser<String> sender) { naytaJasen(); }
190 });
191 }
192
193
194
197 public void uusiJasen() {
198 JOptionPane.showMessageDialog(null, "Vielä ei osata lisätä jäsentä!" );
199 }
200
201
202
205 public void uusiHarrastus() {
206 JOptionPane.showMessageDialog(null, "Vielä ei osata lisätä harrastusta!" );
207 }
208
209
210
216 public String lueTiedosto(String s) {
217 if ( cbKentat == null ) return "cbKentat on alustamatta";
218 if ( editHaku == null ) return "editHaku on alustamatta";
219 if ( listJasenet == null ) return "listJasenet on alustamatta";
220 if ( tableHarrastukset == null ) return "tableHarrastukset on alustamatta";
221 if ( panelJasen == null ) return "panelJasen on alsutamatta";
222 alusta();
223 return "Ei osata vielä lukea tiedostoa! " + s;
224 }
225
226
227
231 public String talleta() {
232 JOptionPane.showMessageDialog(null, "Talletuksessa ongelmia! " );
233 return "ei toimi vielä";
234 }
235
236
237
241 protected void hae(int jnro) {
242 int k = cbKentat.getSelectedIndex();
243 String hakuehto = editHaku.getText();
244 if ( k > 0 || hakuehto.length() > 0 )
245 setVirhe(String.format("Ei osata hakea (kenttä: %d, ehto: %s)",k,hakuehto));
246 else
247 setVirhe(null);
248 listJasenet.setSelectedIndex(jnro); }
250
251
252
255 protected void naytaJasen() {
256 int ind = listJasenet.getSelectedIndex();
257 if (ind < 0) return;
258 if ( ind > 0 ) setVirhe("Ei osata näyttää muuta kuin Ankka Aku");
259 else setVirhe(null);
260 }
261
262
263
268 private void setVirhe(String virhe) {
269 if ( labelVirhe == null ) return;
270 if ( virhe == null ) {
271 labelVirhe.setVisible(false);
272 return;
273 }
274 labelVirhe.setVisible(true);
275 labelVirhe.setText(virhe);
276 labelVirhe.setBackground(virheVari);
277 }
278
279
280
283 public void poistaHarrastus() {
284 int ind = tableHarrastukset.getSelectedRow();
285 if (ind < 0 ) return;
286 String har = (String)(tableHarrastukset.getValueAt(ind, 0));
287 JOptionPane.showMessageDialog(null, "Vielä ei osata poistaa harrastusta " + har);
288 }
289
290
291
294 public void poistaJasen() {
295 int ind = listJasenet.getSelectedIndex();
296 if ( ind < 0 ) return;
297 String nimi = listJasenet.getSelectedText();
298 int vastaus = JOptionPane.showConfirmDialog(null, "Poistetaanko jäsen: " + nimi,"Poisto?",JOptionPane.YES_NO_OPTION);
299 if ( vastaus == JOptionPane.NO_OPTION ) return;
300 JOptionPane.showMessageDialog(null, "Vielä ei osata poistaa jäsentä " + nimi);
301 }
302
303
304
305
308 public void avustus() {
309 Desktop desktop = Desktop.getDesktop();
310 try {
311 URI uri = new URI("https://trac.cc.jyu.fi/projects/ohj2k11/wiki/vesal2");
313 desktop.browse(uri);
314 } catch (URISyntaxException e) {
315 return;
316 } catch (IOException e) {
317 return;
318 }
319 }
320
321
322
326 public void tulostaValitut(JTextArea text) {
327 PrintStream os = TextAreaOutputStream.getTextPrintStream(text);
328 os.println("Tähän tulostuisi jäsenten tiedot");
329 }
330
331
332 }
333