3 import viewTables.AbstractTable;
4 import viewTables.AnsprechpartnerTable;
5 import viewTables.ProjektTable;
6 import viewTables.StudentTable;
7 import viewTables.UnternehmenTable;
8 import java.awt.BorderLayout;
10 import java.awt.Container;
11 import java.awt.GridLayout;
12 import java.awt.Dialog.ModalityType;
13 import java.awt.event.ActionEvent;
14 import java.awt.event.ActionListener;
15 import java.awt.event.KeyEvent;
16 import java.awt.event.WindowAdapter;
17 import java.awt.event.WindowEvent;
18 import java.lang.reflect.Constructor;
19 import java.lang.reflect.InvocationTargetException;
20 import java.rmi.RemoteException;
21 import java.util.List;
22 import java.util.Observable;
23 import java.util.Observer;
25 import javax.swing.JButton;
26 import javax.swing.JFrame;
27 import javax.swing.JLabel;
28 import javax.swing.JOptionPane;
29 import javax.swing.JPanel;
30 import javax.swing.JScrollPane;
31 import javax.swing.JTable;
32 import javax.swing.SwingUtilities;
33 import javax.swing.WindowConstants;
35 import main.ResultContent;
38 import controller.Controller;
40 import databaseModel.Ansprechpartner;
41 import databaseModel.Projekt;
42 import databaseModel.Student;
43 import databaseModel.Unternehmen;
52 @SuppressWarnings(
"serial")
55 public JButton projekteButton = null;
56 public JButton ansprechpartnerButton = null;
57 public JButton unternehmenButton = null;
58 public JButton studentenButton = null;
61 private JButton newButton = null;
62 private JButton changeButton = null;
63 private JButton deleteButton = null;
65 private JScrollPane viewScrollPane = null;
66 private Container contentPane = null;
67 private JLabel typeViewLabel = null;
72 private List<Object> projekteData = null;
73 private List<Object> ansprechpartnerData = null;
74 private List<Object> unternehmenData = null;
75 private List<Object> studentenData = null;
76 private List<Object> activeData = projekteData;
87 private final String viewDescriptionProjekte =
"Projekte";
88 private final String viewDescriptionAnsprechpartner =
"Ansprechpartner";
89 private final String viewDescriptionUnternehmen =
"Unternehmen";
90 private final String viewDescriptionStudenten =
"Studenten";
92 private final int defaultInputFieldLength = 30;
101 super(controller, roleType.toString()
102 +
" - Projektverwaltung 1.0 von (C) Thomas Kramer");
103 this.roleType = roleType;
108 addWindowListener(
new securityClosing());
113 final JPanel topButtonPanel =
new JPanel();
114 topButtonPanel.setLayout(
new GridLayout(0, 4));
115 typeViewLabel =
new JLabel();
116 typeViewLabel.setHorizontalAlignment(JLabel.CENTER);
117 typeViewLabel.setForeground(Color.RED);
118 newButton =
new JButton(
"Neu");
119 newButton.setMnemonic(KeyEvent.VK_N);
120 changeButton =
new JButton(
"Ändern");
121 changeButton.setMnemonic(KeyEvent.VK_E);
122 deleteButton =
new JButton(
"Löschen");
123 deleteButton.setMnemonic(KeyEvent.VK_L);
124 topButtonPanel.add(typeViewLabel, BorderLayout.WEST);
125 topButtonPanel.add(newButton, BorderLayout.WEST);
126 topButtonPanel.add(changeButton, BorderLayout.WEST);
127 topButtonPanel.add(deleteButton, BorderLayout.WEST);
132 newButton.addActionListener(
new ActionListener() {
134 public void actionPerformed(ActionEvent arg0) {
135 if (activeTable == projektTable) {
137 true, null, null, roleType);
138 }
else if (activeTable == ansprechpartnerTable) {
140 "Neuen Ansprechpartner anlegen",
true, null, null,
142 }
else if (activeTable == unternehmenTable) {
144 "Neues Unternehmen anlegen",
true, null, null,
146 }
else if (activeTable == studentTable) {
148 true, null, null, roleType);
156 changeButton.addActionListener(
new ActionListener() {
158 public void actionPerformed(ActionEvent arg0) {
159 if (activeTable == projektTable) {
161 false, activeTable, activeData, roleType);
162 }
else if (activeTable == ansprechpartnerTable) {
164 "Ändern eines Ansprechpartners",
false,
165 activeTable, activeData, roleType);
166 }
else if (activeTable == unternehmenTable) {
168 "Ändern eines Unternehmens",
false, activeTable,
169 activeData, roleType);
170 }
else if (activeTable == studentTable) {
172 false, activeTable, activeData, roleType);
180 deleteButton.addActionListener(
new ActionListener() {
182 public void actionPerformed(ActionEvent arg0) {
183 if (activeTable.getSelectedRowCount() == 0) {
187 "Bitte wählen Sie einen Datensatz in der Tabelle aus.",
188 "Fehler", JOptionPane.ERROR_MESSAGE);
190 int option = JOptionPane
193 "Sind Sie sicher dass Sie diesen Datensatz löschen wollen?",
194 "Sicherheitsabfrage",
195 JOptionPane.YES_NO_OPTION,
196 JOptionPane.WARNING_MESSAGE, null, null,
199 if (option == JOptionPane.YES_OPTION) {
202 .
get(activeTable.getSelectedRow()));
203 }
catch (RemoteException e) {
215 final JPanel bottomButtonPanel =
new JPanel();
216 bottomButtonPanel.setLayout(
new GridLayout(0, 4));
221 projekteButton =
new JButton(
"Projekte");
222 projekteButton.setMnemonic(KeyEvent.VK_P);
223 ansprechpartnerButton =
new JButton(
"Ansprechpartner");
224 ansprechpartnerButton.setMnemonic(KeyEvent.VK_A);
225 unternehmenButton =
new JButton(
"Unternehmen");
226 unternehmenButton.setMnemonic(KeyEvent.VK_U);
227 studentenButton =
new JButton(
"Studenten");
228 studentenButton.setMnemonic(KeyEvent.VK_S);
233 projekteButton.addActionListener(
new ActionListener() {
235 public void actionPerformed(ActionEvent arg0) {
236 SwingUtilities.invokeLater(
new Runnable() {
238 setActiveScrollPane(projektTable);
242 }
catch (RemoteException e) {
254 ansprechpartnerButton.addActionListener(
new ActionListener() {
256 public void actionPerformed(ActionEvent arg0) {
257 SwingUtilities.invokeLater(
new Runnable() {
259 setActiveScrollPane(ansprechpartnerTable);
264 }
catch (RemoteException e) {
276 unternehmenButton.addActionListener(
new ActionListener() {
278 public void actionPerformed(ActionEvent arg0) {
279 SwingUtilities.invokeLater(
new Runnable() {
281 setActiveScrollPane(unternehmenTable);
285 }
catch (RemoteException e) {
297 studentenButton.addActionListener(
new ActionListener() {
299 public void actionPerformed(ActionEvent arg0) {
300 SwingUtilities.invokeLater(
new Runnable() {
302 setActiveScrollPane(studentTable);
306 }
catch (RemoteException e) {
318 bottomButtonPanel.add(projekteButton, BorderLayout.WEST);
319 bottomButtonPanel.add(ansprechpartnerButton, BorderLayout.WEST);
320 bottomButtonPanel.add(unternehmenButton, BorderLayout.WEST);
321 bottomButtonPanel.add(studentenButton, BorderLayout.WEST);
326 setLayout(
new BorderLayout());
327 contentPane = getContentPane();
332 contentPane.add(topButtonPanel, BorderLayout.NORTH);
333 contentPane.add(bottomButtonPanel, BorderLayout.SOUTH);
339 setActiveScrollPane(projektTable);
347 }
catch (RemoteException e) {
370 private void openDialog(
final Class viewClass,
final String caption,
371 final boolean newMode,
final JTable activeTable,
372 final List<Object> activeData,
final UserRole roleType) {
374 SwingUtilities.invokeLater(
new Runnable() {
377 Object changeObject = null;
380 if (activeTable.getSelectedRow() < 0) {
383 changeObject = activeData.get(activeTable
392 "Bitte wählen Sie einen Datensatz in der Tabelle aus.",
393 "Fehler", JOptionPane.ERROR_MESSAGE);
399 AbstractDialog view = controller.getDialog(viewClass);
417 Constructor<?> cons = (Constructor<?>) viewClass
418 .getConstructor(
new Class<?>[] {
419 JFrame.class, Controller.class,
420 String.class, UserRole.class });
422 view = (AbstractDialog) cons
423 .newInstance(
new Object[] { mainFrame,
424 controller, caption, roleType });
425 }
catch (InstantiationException e) {
428 }
catch (IllegalAccessException e) {
431 }
catch (IllegalArgumentException e) {
434 }
catch (InvocationTargetException e) {
438 }
catch (NoSuchMethodException e) {
441 }
catch (SecurityException e) {
449 controller.addObserver(view);
454 controller.addDialog(view);
459 view.setLocationRelativeTo(null);
460 view.setModalityType(ModalityType.DOCUMENT_MODAL);
465 view.initialize(caption, changeObject);
466 view.setVisible(
true);
479 private void setActiveScrollPane(AbstractTable jTable) {
483 if (viewScrollPane != null) {
484 contentPane.remove(viewScrollPane);
486 viewScrollPane =
new JScrollPane(jTable);
487 contentPane.add(viewScrollPane, BorderLayout.CENTER);
492 activeTable = jTable;
493 if (activeTable != null) {
494 activeTable.clearTable();
500 newButton.setEnabled(
true);
501 changeButton.setEnabled(
true);
502 deleteButton.setEnabled(
true);
504 if (jTable == projektTable) {
505 typeViewLabel.setText(viewDescriptionProjekte);
507 if (roleType.equals(UserRole.Student)) {
508 deleteButton.setEnabled(
false);
510 newButton.setEnabled(
false);
512 }
else if (jTable == ansprechpartnerTable) {
513 typeViewLabel.setText(viewDescriptionAnsprechpartner);
515 if (roleType.equals(UserRole.Student)) {
516 deleteButton.setEnabled(
false);
518 newButton.setEnabled(
false);
519 changeButton.setEnabled(
false);
521 }
else if (jTable == unternehmenTable) {
522 typeViewLabel.setText(viewDescriptionUnternehmen);
524 if (roleType.equals(UserRole.Student)) {
525 deleteButton.setEnabled(
false);
527 newButton.setEnabled(
false);
528 changeButton.setEnabled(
false);
530 }
else if (jTable == studentTable) {
531 typeViewLabel.setText(viewDescriptionStudenten);
533 if (roleType.equals(UserRole.Student)) {
534 newButton.setEnabled(
false);
535 changeButton.setEnabled(
false);
536 deleteButton.setEnabled(
false);
545 public void update(Observable arg0,
final Object arg1) {
546 SwingUtilities.invokeLater(
new Runnable() {
559 for (Object f : projekteData) {
570 String studentBName =
"";
571 if (studentB != null) {
572 studentBName = studentB.
getName();
576 String studentCName =
"";
577 if (studentC != null) {
578 studentCName = studentC.
getName();
581 projektTable.
dtm.addRow(
new Object[] {
583 ((
Projekt) f).getBeschreibung(),
584 ((
Projekt) f).getAnsprechpartnerBean()
586 ((
Projekt) f).getStudent1Bean().getName(),
587 studentBName, studentCName,
600 for (Object f : ansprechpartnerData) {
601 ansprechpartnerTable.
dtm.addRow(
new Object[] {
617 for (Object f : unternehmenData) {
631 for (Object f : studentenData) {
632 studentTable.
dtm.addRow(
new Object[] {
642 if (activeTable == projektTable) {
643 activeData = projekteData;
644 }
else if (activeTable == ansprechpartnerTable) {
645 activeData = ansprechpartnerData;
646 }
else if (activeTable == unternehmenTable) {
647 activeData = unternehmenData;
648 }
else if (activeTable == studentTable) {
649 activeData = studentenData;
673 private class securityClosing
extends WindowAdapter {
674 public void windowClosing(WindowEvent e) {
675 int option = JOptionPane.showOptionDialog(
MainFrame.this,
676 "Wollen Sie das Programm wirklich verlassen?",
677 "Sicherheitsabfrage", JOptionPane.YES_NO_OPTION,
678 JOptionPane.WARNING_MESSAGE, null, null, null);
680 if (option == JOptionPane.YES_OPTION) {
683 }
catch (RemoteException e1) {
685 e1.printStackTrace();
690 setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);