1 package capocalGUI;
2
3 import java.awt.BorderLayout;
4 import java.awt.Component;
5 import java.awt.Dimension;
6 import java.awt.EventQueue;
7 import java.awt.Font;
8 import java.awt.event.ActionEvent;
9 import java.awt.event.WindowEvent;
10
11 import javax.swing.AbstractAction;
12 import javax.swing.AbstractListModel;
13 import javax.swing.Action;
14 import javax.swing.Box;
15 import javax.swing.BoxLayout;
16 import javax.swing.JButton;
17 import javax.swing.JFrame;
18 import javax.swing.JLabel;
19 import javax.swing.JList;
20 import javax.swing.JMenu;
21 import javax.swing.JMenuBar;
22 import javax.swing.JMenuItem;
23 import javax.swing.JPanel;
24 import javax.swing.JScrollPane;
25 import javax.swing.JSplitPane;
26 import javax.swing.JTextArea;
27 import javax.swing.JTextField;
28 import javax.swing.SwingConstants;
29 import javax.swing.UIManager;
30 import javax.swing.border.EmptyBorder;
31
32 import kalenteriswing.KalenteriSwing;
33 import fi.jyu.mit.gui.EditPanel;
34 import java.awt.event.KeyAdapter;
35 import java.awt.event.KeyEvent;
36
37
38
42 @SuppressWarnings("rawtypes")
43 public class Ck_mainwindow extends JFrame {
44
45
48 private static final long serialVersionUID = 1L;
49 private JPanel contentPane;
50 private final JPanel panelNappulat = new JPanel();
51 private final JSplitPane splitPaneHakuJaHarjTiedot = new JSplitPane();
52 private final JPanel panelHakuJaHarjPVM = new JPanel();
53 private final JSplitPane splitPaneHarjTiedotJaHarjVaihtoehdot = new JSplitPane();
54 private final JPanel panelHakuJaSiskirj = new JPanel();
55 private final JScrollPane scrollPanePVM = new JScrollPane();
56 private final JList listPVM = new JList();
57 private final JPanel panelHarjTiedot = new JPanel();
58 private final JScrollPane scrollPaneHarjVaihtoehdot = new JScrollPane();
59 private final JList listHarjVaihtoehdot = new JList();
60 private final JLabel lblHarjoituksenTiedot = new JLabel("Harjoituksen tiedot");
61 private final JSplitPane splitPaneHarjTiedot = new JSplitPane();
62 private final JPanel panelHarjPerusTiedot = new JPanel();
63 private final JScrollPane scrollPaneHarjSisTiedot = new JScrollPane();
64 private final Box verticalBoxPerusTiedot = Box.createVerticalBox();
65 private final JMenuBar menuBar = new JMenuBar();
66 private final JMenu menuTiedosto = new JMenu("Tiedosto");
67 private final JMenu menuMuokkaa = new JMenu("Muokkaa");
68 private final JMenu menuTietoja = new JMenu("Tietoja");
69 private final Box verticalBox = Box.createVerticalBox();
70 private final EditPanel editPanelOpe = new EditPanel();
71 private final EditPanel editPanelHarjAlkuaika = new EditPanel();
72 private final EditPanel editPanelHarjLoppuaika = new EditPanel();
73 private final EditPanel editPanelSeura = new EditPanel();
74 private final EditPanel editPanelPaikkakunta = new EditPanel();
75 private final EditPanel editPanel = new EditPanel();
76 private final JLabel labelHaku = new JLabel("Haku");
77 private final JTextField textField = new JTextField();
78 private final JLabel labelPVM = new JLabel("Harjoitusp\u00E4iv\u00E4m\u00E4\u00E4r\u00E4t");
79 private final JLabel labelLisatietoja = new JLabel("Lis\u00E4tietoja");
80 private final JLabel labelHarjSis_1 = new JLabel("Harjoituksen sis\u00E4lt\u00F6");
81 private final JScrollPane scrollPane = new JScrollPane();
82 private final JScrollPane scrollPane_1 = new JScrollPane();
83 private final JButton btnUusiHarjoitus = new JButton("Uusi Harjoitus");
84 private final JPanel panel = new JPanel();
85 private final JPanel panel_1 = new JPanel();
86 private final JButton btnPoistaHarjoitus = new JButton("Poista Harjoitus");
87 private final JButton btnTallenna = new JButton("Tallenna");
88 private final JTextArea txtrHyvtReenitLopuksi = new JTextArea();
89 private final JList list = new JList();
90 private final JMenuItem mntmTallenna = new JMenuItem("Tallenna");
91 private final JMenuItem mntmVaihdaKyttj = new JMenuItem("Vaihda k\u00E4ytt\u00E4j\u00E4\u00E4");
92 private final JMenuItem mntmLopeta = new JMenuItem("Lopeta");
93 private final JMenuItem mntmTulosta = new JMenuItem("Tulosta");
94 private final JMenuItem mntmPoistaSislt = new JMenuItem("Poista sis\u00E4lt\u00F6");
95 private final JMenuItem mntmUusiHarjoitus = new JMenuItem("Uusi harjoitus");
96 private final JMenuItem mntmPoistaHarjoitus = new JMenuItem("Poista harjoitus");
97 private final JMenuItem mntmLisSislt = new JMenuItem("Uusi sis\u00E4lt\u00F6");
98 private final JMenuItem mntmTietoja = new JMenuItem("Tietoja");
99 private final JMenuItem mntmApua = new JMenuItem("Apua");
100 private final JButton btnLopeta = new JButton("Lopeta");
101 private final Action actionUusiHarjoitus = new SwingAction();
102 private final Action actionTallenna = new SwingAction_1();
103 private final Action actionPoistaHarjoitus = new SwingAction_2();
104 private final Action actionLopeta = new SwingAction_3();
105 private final Action actionVaihdaKayttajaa = new SwingAction_4();
106 private final Action actionTulosta = new SwingAction_5();
107 private final Action actionUusiSisalto = new SwingAction_6();
108 private final Action actionPoistaSisalto = new SwingAction_7();
109 private final Action actionApua = new SwingAction_8();
110 private final Action actionTietoja = new SwingAction_9();
111 private final JLabel lblViestikentta = new JLabel("");
112
113
115 private final KalenteriSwing ks = new KalenteriSwing();
116
117
120 public KalenteriSwing getKs() {
121 return ks;
122 }
123
124
128 public static void main(String[] args) {
129 try {
130 UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
131 } catch (Throwable e) {
132 e.printStackTrace();
133 }
134 EventQueue.invokeLater(new Runnable() {
135 public void run() {
136 try {
137 Ck_mainwindow frame = new Ck_mainwindow();
138 frame.setVisible(true);
139 frame.getKs().uusiKayttaja();
140 } catch (Exception e) {
141 e.printStackTrace();
142 }
143 }
144 });
145 }
146
147
150 @SuppressWarnings("unchecked")
151 public Ck_mainwindow() {
152
153 ks.setNimiPanel(editPanel);
154 ks.setPvmList(listPVM);
155 ks.setHarjSisList(list);
156 ks.setSisList(listHarjVaihtoehdot);
157 ks.setLisatieto(txtrHyvtReenitLopuksi);
158 ks.setHarjPerusTiedotBox(verticalBoxPerusTiedot);
159
160 setTitle("Capoeira-harjoituskalenteri");
161 textField.addKeyListener(new KeyAdapter() {
162 @SuppressWarnings("synthetic-access")
163 @Override
164 public void keyReleased(KeyEvent arg0) {
165 ks.search(textField.getText());
166 }
167 });
168 textField.setColumns(10);
169 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
170 setBounds(100, 100, 640, 540);
171
172 setJMenuBar(menuBar);
173
174 menuBar.add(menuTiedosto);
175 mntmTallenna.setAction(actionTallenna);
176
177 menuTiedosto.add(mntmTallenna);
178 mntmVaihdaKyttj.setAction(actionVaihdaKayttajaa);
179
180 menuTiedosto.add(mntmVaihdaKyttj);
181 mntmTulosta.setAction(actionTulosta);
182
183 menuTiedosto.add(mntmTulosta);
184 mntmLopeta.setAction(actionLopeta);
185
186 menuTiedosto.add(mntmLopeta);
187
188 menuBar.add(menuMuokkaa);
189 mntmUusiHarjoitus.setAction(actionUusiHarjoitus);
190
191 menuMuokkaa.add(mntmUusiHarjoitus);
192 mntmPoistaHarjoitus.setAction(actionPoistaHarjoitus);
193
194 menuMuokkaa.add(mntmPoistaHarjoitus);
195 mntmLisSislt.setAction(actionUusiSisalto);
196
197 menuMuokkaa.add(mntmLisSislt);
198 mntmPoistaSislt.setAction(actionPoistaSisalto);
199
200 menuMuokkaa.add(mntmPoistaSislt);
201
202 menuBar.add(menuTietoja);
203 mntmApua.setAction(actionApua);
204
205 menuTietoja.add(mntmApua);
206 mntmTietoja.setAction(actionTietoja);
207
208 menuTietoja.add(mntmTietoja);
209 contentPane = new JPanel();
210 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
211 setContentPane(contentPane);
212 contentPane.setLayout(new BorderLayout(0, 0));
213
214 contentPane.add(panelNappulat, BorderLayout.SOUTH);
215 panelNappulat.setLayout(new BorderLayout(0, 0));
216 panelNappulat.add(panel_1, BorderLayout.EAST);
217 btnTallenna.setAction(actionTallenna);
218
219 panel_1.add(btnTallenna);
220 btnLopeta.setAction(actionLopeta);
221
222 panel_1.add(btnLopeta);
223 panelNappulat.add(panel, BorderLayout.WEST);
224 btnUusiHarjoitus.setAction(actionUusiHarjoitus);
225 panel.add(btnUusiHarjoitus);
226 btnPoistaHarjoitus.setAction(actionPoistaHarjoitus);
227
228 panel.add(btnPoistaHarjoitus);
229
230 panelNappulat.add(lblViestikentta, BorderLayout.CENTER);
231
232 contentPane.add(splitPaneHakuJaHarjTiedot, BorderLayout.CENTER);
233 panelHakuJaHarjPVM.setMaximumSize(new Dimension(130, 32767));
234
235 splitPaneHakuJaHarjTiedot.setLeftComponent(panelHakuJaHarjPVM);
236 panelHakuJaHarjPVM.setLayout(new BorderLayout(0, 0));
237 panelHakuJaSiskirj.setMinimumSize(new Dimension(150, 10));
238
239 panelHakuJaHarjPVM.add(panelHakuJaSiskirj, BorderLayout.NORTH);
240 panelHakuJaSiskirj.setLayout(new BoxLayout(panelHakuJaSiskirj, BoxLayout.Y_AXIS));
241 editPanel.getEdit().setBackground(UIManager.getColor("ComboBox.disabledBackground"));
242 editPanel.getEdit().setEditable(false);
243 editPanel.setCaption("Nimi");
244 editPanel.setLabelWidth(25);
245 editPanel.setText("");
246
247 panelHakuJaSiskirj.add(editPanel);
248 labelHaku.setAlignmentX(Component.CENTER_ALIGNMENT);
249 labelHaku.setHorizontalAlignment(SwingConstants.TRAILING);
250
251 panelHakuJaSiskirj.add(labelHaku);
252
253 panelHakuJaSiskirj.add(textField);
254 labelPVM.setAlignmentX(Component.CENTER_ALIGNMENT);
255 labelPVM.setHorizontalAlignment(SwingConstants.TRAILING);
256
257 panelHakuJaSiskirj.add(labelPVM);
258
259 panelHakuJaHarjPVM.add(scrollPanePVM, BorderLayout.CENTER);
260 listPVM.setModel(new AbstractListModel() {
261
264 private static final long serialVersionUID = 1L;
265 String[] values = new String[] {};
266 public int getSize() {
267 return values.length;
268 }
269 public Object getElementAt(int index) {
270 return values[index];
271 }
272 });
273
274 scrollPanePVM.setViewportView(listPVM);
275 splitPaneHarjTiedotJaHarjVaihtoehdot.setPreferredSize(new Dimension(400, 25));
276
277 splitPaneHakuJaHarjTiedot.setRightComponent(splitPaneHarjTiedotJaHarjVaihtoehdot);
278 panelHarjTiedot.setMinimumSize(new Dimension(270, 10));
279
280 splitPaneHarjTiedotJaHarjVaihtoehdot.setLeftComponent(panelHarjTiedot);
281 panelHarjTiedot.setLayout(new BorderLayout(0, 0));
282 lblHarjoituksenTiedot.setMinimumSize(new Dimension(150, 14));
283 lblHarjoituksenTiedot.setMaximumSize(new Dimension(88888888, 14));
284
285 panelHarjTiedot.add(lblHarjoituksenTiedot, BorderLayout.NORTH);
286 splitPaneHarjTiedot.setOrientation(JSplitPane.VERTICAL_SPLIT);
287
288 panelHarjTiedot.add(splitPaneHarjTiedot, BorderLayout.CENTER);
289
290 splitPaneHarjTiedot.setLeftComponent(panelHarjPerusTiedot);
291 panelHarjPerusTiedot.setLayout(new BoxLayout(panelHarjPerusTiedot, BoxLayout.X_AXIS));
292 verticalBoxPerusTiedot.setMaximumSize(new Dimension(32767, 32767));
293 verticalBoxPerusTiedot.setMinimumSize(new Dimension(10, 10));
294
295 panelHarjPerusTiedot.add(verticalBoxPerusTiedot);
296 editPanelHarjAlkuaika.setCaption("Alkamisaika");
298
299 verticalBoxPerusTiedot.add(editPanelHarjAlkuaika);
300 editPanelHarjLoppuaika.setCaption("Loppumisaika");
301 verticalBoxPerusTiedot.add(editPanelHarjLoppuaika);
302 editPanelPaikkakunta.setCaption("Paikkakunta");
303 verticalBoxPerusTiedot.add(editPanelPaikkakunta);
304 editPanelSeura.setCaption("Seura");
305 verticalBoxPerusTiedot.add(editPanelSeura);
306 verticalBoxPerusTiedot.add(editPanelOpe);
307 editPanelOpe.setCaption("Opettaja");
308 editPanelOpe.setMaximumSize(new Dimension(2147483647, 20));
309 editPanelOpe.setLayout(new BoxLayout(editPanelOpe, BoxLayout.X_AXIS));
310
311 splitPaneHarjTiedot.setRightComponent(scrollPaneHarjSisTiedot);
312
313 scrollPaneHarjSisTiedot.setViewportView(verticalBox);
314 labelHarjSis_1.setAlignmentX(Component.CENTER_ALIGNMENT);
315
316 verticalBox.add(labelHarjSis_1);
317
318 verticalBox.add(scrollPane);
319 list.setModel(new AbstractListModel() {
320
323 private static final long serialVersionUID = 1L;
324 String[] values = new String[] {};
325 public int getSize() {
326 return values.length;
327 }
328 public Object getElementAt(int index) {
329 return values[index];
330 }
331 });
332
333 scrollPane.setViewportView(list);
334 labelLisatietoja.setAlignmentX(Component.CENTER_ALIGNMENT);
335
336 verticalBox.add(labelLisatietoja);
337
338 verticalBox.add(scrollPane_1);
339 txtrHyvtReenitLopuksi.setFont(new Font("Verdana", Font.PLAIN, 12));
340
341 scrollPane_1.setViewportView(txtrHyvtReenitLopuksi);
342
343 listHarjVaihtoehdot.setMaximumSize(new Dimension(40, 100));
344 listHarjVaihtoehdot.setModel(new AbstractListModel() {
345
348 private static final long serialVersionUID = 1L;
349 String[] values = new String[] {};
350 public int getSize() {
351 return values.length;
352 }
353 public Object getElementAt(int index) {
354 return values[index];
355 }
356 });
357 splitPaneHarjTiedotJaHarjVaihtoehdot.setRightComponent(scrollPaneHarjVaihtoehdot);
358 scrollPaneHarjVaihtoehdot.setMaximumSize(new Dimension(50, 250));
359
360 scrollPaneHarjVaihtoehdot.setViewportView(listHarjVaihtoehdot);
361 }
362
363
364
366
367 private class SwingAction extends AbstractAction {
368
371 private static final long serialVersionUID = 1L;
372 public SwingAction() {
373 putValue(NAME, "Uusi harjoitus");
374 putValue(SHORT_DESCRIPTION, "Lisää tästä uusi harjoitus.");
375 }
376 @SuppressWarnings({ "synthetic-access", "unchecked" })
377 public void actionPerformed(ActionEvent e) {
378 ks.uusiHarjoitus();
379 listPVM.setListData(ks.getHarjoitukset());
380 }
381 }
382 private class SwingAction_1 extends AbstractAction {
383
386 private static final long serialVersionUID = 1L;
387 public SwingAction_1() {
388 putValue(NAME, "Tallenna");
389 putValue(SHORT_DESCRIPTION, "Tallenna harjoitus.");
390 }
391 @SuppressWarnings("synthetic-access")
392 public void actionPerformed(ActionEvent e) {
393 ks.tallenna();
394 }
395 }
396 private class SwingAction_2 extends AbstractAction {
397
400 private static final long serialVersionUID = 1L;
401 public SwingAction_2() {
402 putValue(NAME, "Poista Harjoitus");
403 putValue(SHORT_DESCRIPTION, "Poistaa valitun harjoituksen. Poisto varmistetaan.");
404 }
405 @SuppressWarnings("synthetic-access")
406 public void actionPerformed(ActionEvent e) {
407 ks.poistaHarjoitus();
408 }
409 }
410 private class SwingAction_3 extends AbstractAction {
411
414 private static final long serialVersionUID = 1L;
415 public SwingAction_3() {
416 putValue(NAME, "Lopeta");
417 putValue(SHORT_DESCRIPTION, "Sulkee ohjelman");
418 }
419 public void actionPerformed(ActionEvent e) {
420 lopeta();
421 }
422 }
423 private class SwingAction_4 extends AbstractAction {
424
427 private static final long serialVersionUID = 1L;
428 public SwingAction_4() {
429 putValue(NAME, "Vaihda käyttäjää");
430 putValue(SHORT_DESCRIPTION, "Kirjaa nykyisen käyttäjän ulos ja avaa aloitusikkunan.");
431 }
432 @SuppressWarnings("synthetic-access")
433 public void actionPerformed(ActionEvent e) {
434 ks.uusiKayttaja();
435 }
436 }
437 private class SwingAction_5 extends AbstractAction {
438
441 private static final long serialVersionUID = 1L;
442 public SwingAction_5() {
443 putValue(NAME, "Tulosta");
444 putValue(SHORT_DESCRIPTION, "Avaa dialogin, jossa on harjoituksen data tulostettavammassa muodossa.");
445 }
446 @SuppressWarnings("synthetic-access")
447 public void actionPerformed(ActionEvent e) {
448 ks.tulosta();
449 }
450 }
451 private class SwingAction_6 extends AbstractAction {
452
455 private static final long serialVersionUID = 1L;
456 public SwingAction_6() {
457 putValue(NAME, "Uusi Sisältö");
458 putValue(SHORT_DESCRIPTION, "Lisää sisältölistaan uuden sisällön.");
459 }
460 @SuppressWarnings("synthetic-access")
461 public void actionPerformed(ActionEvent e) {
462 ks.lisaaUusiSisalto();
463 }
464 }
465 private class SwingAction_7 extends AbstractAction {
466
469 private static final long serialVersionUID = 1L;
470 public SwingAction_7() {
471 putValue(NAME, "Poista Sisältö");
472 putValue(SHORT_DESCRIPTION, "Poistaa sisältölistasta valitun sisällön.");
473 }
474 @SuppressWarnings("synthetic-access")
475 public void actionPerformed(ActionEvent e) {
476 ks.poistaSisalto();
477 }
478 }
479 private class SwingAction_8 extends AbstractAction {
480
483 private static final long serialVersionUID = 1L;
484 public SwingAction_8() {
485 putValue(NAME, "Apua");
486 putValue(SHORT_DESCRIPTION, "Ohjeita ohjelman käyttöön.");
487 }
488 @SuppressWarnings("synthetic-access")
489 public void actionPerformed(ActionEvent e) {
490 ks.ohjeita();
491 }
492 }
493 private class SwingAction_9 extends AbstractAction {
494
497 private static final long serialVersionUID = 1L;
498 public SwingAction_9() {
499 putValue(NAME, "Tietoja");
500 putValue(SHORT_DESCRIPTION, "Tietoja ohjelmasta.");
501 }
502 @SuppressWarnings("synthetic-access")
503 public void actionPerformed(ActionEvent e) {
504 ks.about();
505 }
506 }
507
508
510
513 public void lopeta() {
514 processWindowEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
515 }
516
517 }
518