RmiClient  1.0
 Alle Klassen Namensbereiche Dateien Funktionen Variablen
ProjektDialog.java
gehe zur Dokumentation dieser Datei
1 package view;
2 
3 import java.awt.BorderLayout;
4 import java.awt.Container;
5 import java.awt.FlowLayout;
6 import java.awt.HeadlessException;
7 import java.awt.event.ActionEvent;
8 import java.awt.event.ActionListener;
9 import java.awt.event.ItemEvent;
10 import java.awt.event.ItemListener;
11 import java.rmi.RemoteException;
12 import java.util.List;
13 import java.util.Observable;
14 import javax.swing.BoxLayout;
15 import javax.swing.JButton;
16 import javax.swing.JComboBox;
17 import javax.swing.JFrame;
18 import javax.swing.JLabel;
19 import javax.swing.JOptionPane;
20 import javax.swing.JPanel;
21 import javax.swing.JTextArea;
22 import javax.swing.JTextField;
23 import javax.swing.SwingUtilities;
24 
25 import main.CustomItemListener;
26 import main.ResultContent;
27 import main.TextLengthDocument;
28 import main.UserRole;
29 import main.ProjektStatus;
30 import controller.Controller;
31 import databaseModel.Ansprechpartner;
32 import databaseModel.Projekt;
33 import databaseModel.Student;
34 
41 public class ProjektDialog extends AbstractDialog {
42  private static final long serialVersionUID = 1L;
43 
47  private Projekt changeingObject = null;
48 
52  private ProjektDialog projektDialog = null;
53  private Container contentPane = null;
54 
58  private JLabel titleLabel = null;
59  private JTextField titleInputField = null;
60  private JLabel beschreibungLabel = null;
61  private JTextField beschreibungInputField = null;
62 
63  private JLabel ansprechpartnerLabel = null;
64  private JComboBox ansprechpartnerComboBox = null;
65  private Object activeSelectedAnsprechpartner = null;
66 
67  private JLabel student1Label = null;
68  private JComboBox student1ComboBox = null;
69  private Object activeSelectedStudent1 = null;
70 
71  private JLabel student2Label = null;
72  private JComboBox student2ComboBox = null;
73  private Object activeSelectedStudent2 = null;
74 
75  private JLabel student3Label = null;
76  private JComboBox student3ComboBox = null;
77  private Object activeSelectedStudent3 = null;
78 
79  private JLabel statusLabel = null;
80  private JComboBox statusComboBox = null;
81  private JLabel kommentarLabel = null;
82  private JTextArea kommentarTextArea = null;
83 
87  private int defaultInputFieldLength = 30;
88 
101  public ProjektDialog(JFrame owner, final Controller controller,
102  String label, final UserRole roleType) {
103  super(owner, controller, label, roleType);
104  this.projektDialog = this;
105  this.activeDialog = this;
106 
107  JPanel projektPanel = new JPanel();
108  projektPanel.setLayout(new BoxLayout(projektPanel, BoxLayout.Y_AXIS));
109 
113  titleLabel = new JLabel("Titel:");
114  titleInputField = new JTextField(defaultVisibleFieldLength);
115  mandatoryComponentList.add(titleInputField);
116  titleInputField.setDocument(new TextLengthDocument(getColumnLength(
117  Projekt.class, "titel")));
118 
122  beschreibungLabel = new JLabel("Beschreibung:");
123  beschreibungInputField = new JTextField(defaultVisibleFieldLength);
124  mandatoryComponentList.add(beschreibungInputField);
125  beschreibungInputField.setDocument(new TextLengthDocument(
126  getColumnLength(Projekt.class, "beschreibung")));
127 
131  ansprechpartnerLabel = new JLabel("Ansprechpartner:");
132  ansprechpartnerComboBox = new JComboBox();
133  mandatoryComponentList.add(ansprechpartnerComboBox);
134  ansprechpartnerComboBox.addItemListener(new CustomItemListener() {
135  @Override
136  public void doItemChanged(ItemEvent arg0) {
137  if (arg0.getStateChange() == ItemEvent.SELECTED) {
138  setActiveAnsprechpartner();
139  }
140  }
141  });
142 
146  student1Label = new JLabel("Student1:");
147  student1ComboBox = new JComboBox();
148  mandatoryComponentList.add(student1ComboBox);
149  student1ComboBox.addItemListener(new CustomItemListener() {
150  @Override
151  public void doItemChanged(ItemEvent arg0) {
152  if (arg0.getStateChange() == ItemEvent.SELECTED) {
153  setActiveStudent1();
154  }
155  }
156  });
157 
158  student2Label = new JLabel("Student2:");
159  student2ComboBox = new JComboBox();
160  mandatoryComponentList.add(student2ComboBox);
161  student2ComboBox.addItemListener(new CustomItemListener() {
162  @Override
163  public void doItemChanged(ItemEvent arg0) {
164  if (arg0.getStateChange() == ItemEvent.SELECTED) {
165  setActiveStudent2();
166  }
167  }
168  });
169 
170  student3Label = new JLabel("Student3:");
171  student3ComboBox = new JComboBox();
172  mandatoryComponentList.add(student3ComboBox);
173  student3ComboBox.addItemListener(new CustomItemListener() {
174  @Override
175  public void doItemChanged(ItemEvent arg0) {
176  if (arg0.getStateChange() == ItemEvent.SELECTED) {
177  setActiveStudent3();
178  }
179  }
180  });
181 
185  statusLabel = new JLabel("Status:");
186  statusComboBox = new JComboBox();
187  mandatoryComponentList.add(statusComboBox);
188  for (Object sta : ProjektStatus.values()) {
189  statusComboBox.addItem(sta.toString());
190  }
191 
195  kommentarLabel = new JLabel("Kommentar:");
196  kommentarTextArea = new JTextArea(defaultTextAreaRows,
198  kommentarTextArea.setDocument(new TextLengthDocument(getColumnLength(
199  Projekt.class, "kommentar")));
200 
204  titleInputField.setEnabled(roleType.equals(UserRole.Student));
205  beschreibungInputField.setEnabled(roleType.equals(UserRole.Student));
206  ansprechpartnerComboBox.setEnabled(roleType.equals(UserRole.Student));
207  student1ComboBox.setEnabled(roleType.equals(UserRole.Student));
208  student2ComboBox.setEnabled(roleType.equals(UserRole.Student));
209  student3ComboBox.setEnabled(roleType.equals(UserRole.Student));
210  statusComboBox.setEnabled(!roleType.equals(UserRole.Student));
211  kommentarTextArea.setEditable(!roleType.equals(UserRole.Student));
212 
216  projektPanel.add(titleLabel);
217  projektPanel.add(titleInputField);
218  projektPanel.add(beschreibungLabel);
219  projektPanel.add(beschreibungInputField);
220  projektPanel.add(ansprechpartnerLabel);
221  projektPanel.add(ansprechpartnerComboBox);
222  projektPanel.add(student1Label);
223  projektPanel.add(student1ComboBox);
224  projektPanel.add(student2Label);
225  projektPanel.add(student2ComboBox);
226  projektPanel.add(student3Label);
227  projektPanel.add(student3ComboBox);
228  projektPanel.add(statusLabel);
229  projektPanel.add(statusComboBox);
230  projektPanel.add(kommentarLabel);
231  projektPanel.add(kommentarTextArea);
232 
238  preSelection(Student.class);
239 
243  setLayout(new BorderLayout());
244  contentPane = getContentPane();
245  contentPane.add(projektPanel, BorderLayout.CENTER);
246 
250  contentPane.add(buttonPanel, BorderLayout.SOUTH);
251  }
252 
256  private void setActiveAnsprechpartner() {
257  activeSelectedAnsprechpartner = null;
258  if (ansprechpartnerListe != null) {
259  if (ansprechpartnerComboBox.getItemCount() > 0) {
260  if (ansprechpartnerComboBox.getSelectedIndex() >= 0) {
261  activeSelectedAnsprechpartner = ansprechpartnerListe
262  .get(ansprechpartnerComboBox.getSelectedIndex());
263  }
264  }
265  }
266  }
267 
271  private void setActiveStudent1() {
272  activeSelectedStudent1 = null;
273  if (studentenListe != null) {
274  if (student1ComboBox.getItemCount() > 0) {
275  if (student1ComboBox.getSelectedIndex() >= 0) {
276  activeSelectedStudent1 = studentenListe
277  .get(student1ComboBox.getSelectedIndex());
278  }
279  }
280  }
281  }
282 
286  private void setActiveStudent2() {
287  activeSelectedStudent2 = null;
288  if (studentenListe != null) {
289  if (student2ComboBox.getItemCount() > 0) {
290  if (student2ComboBox.getSelectedIndex() > 0) {
291  activeSelectedStudent2 = studentenListe
292  .get(student2ComboBox.getSelectedIndex() - 1);
293  }
294  }
295  }
296  }
297 
301  private void setActiveStudent3() {
302  activeSelectedStudent3 = null;
303  if (studentenListe != null) {
304  if (student3ComboBox.getItemCount() > 0) {
305  if (student3ComboBox.getSelectedIndex() > 0) {
306  activeSelectedStudent3 = studentenListe
307  .get(student3ComboBox.getSelectedIndex() - 1);
308  }
309  }
310  }
311  }
312 
321  @Override
322  public void initialize(final String label, final Object projekt) {
323  SwingUtilities.invokeLater(new Runnable() {
324  public void run() {
325  projektDialog.setTitle(label);
326  projektDialog.changeObject = projekt;
327  projektDialog.changeingObject = (Projekt) projekt;
328  projektDialog.newMode = (projekt == null);
329 
331 
335  if (newMode) {
336  titleInputField.setText("");
337  beschreibungInputField.setText("");
338  ansprechpartnerComboBox.setSelectedIndex(-1);
339  if (ansprechpartnerComboBox.getItemCount() > 0) {
340  ansprechpartnerComboBox.setSelectedIndex(0);
341  }
342  student1ComboBox.setSelectedIndex(-1);
343  if (student1ComboBox.getItemCount() > 0) {
344  student1ComboBox.setSelectedIndex(0);
345  }
346  student2ComboBox.setSelectedIndex(-1);
347  student3ComboBox.setSelectedIndex(-1);
348  statusComboBox.setSelectedItem(ProjektStatus.offen
349  .toString());
350  kommentarTextArea.setText("");
351  } else {
355  titleInputField.setText(projektDialog.changeingObject
356  .getTitel());
357  beschreibungInputField
358  .setText(projektDialog.changeingObject
359  .getBeschreibung());
360 
361  ansprechpartnerComboBox
362  .setSelectedItem(projektDialog.changeingObject
364  setActiveAnsprechpartner();
365  student1ComboBox
366  .setSelectedItem(projektDialog.changeingObject
367  .getStudent1Bean().getName());
368  setActiveStudent1();
369 
375  Student studentB = projektDialog.changeingObject
376  .getStudent2Bean();
377  student2ComboBox.setSelectedIndex(-1);
378  if (studentB != null) {
379  student2ComboBox.setSelectedItem(studentB.getName());
380  }
381  setActiveStudent2();
382 
383  Student studentC = projektDialog.changeingObject
384  .getStudent3Bean();
385  student3ComboBox.setSelectedIndex(-1);
386  if (studentC != null) {
387  student3ComboBox.setSelectedItem(studentC.getName());
388  }
389  setActiveStudent3();
390 
391  String status = projektDialog.changeingObject.getStatus();
392  statusComboBox.setSelectedIndex(-1);
393  if (!status.equals("")) {
394  statusComboBox.setSelectedItem(status);
395  }
396 
405  statusComboBox.setEnabled(!roleType
406  .equals(UserRole.Student)
407  && projektDialog.changeingObject.getStatus()
408  .equals(ProjektStatus.offen.toString()));
409 
410  kommentarTextArea.setText(projektDialog.changeingObject
411  .getKommentar());
412  }
413  }
414  });
415  }
416 
420  @Override
421  public void update(Observable arg0, final Object arg1) {
422  SwingUtilities.invokeLater(new Runnable() {
423  public void run() {
427  if (arg1 != null) {
428  Class listType = ((ResultContent) arg1).getListType();
429  List<Object> listContent = ((ResultContent) arg1)
430  .getListContent();
431 
432  if (listType == Ansprechpartner.class) {
433  updateGUIData(listType, listContent, newMode,
434  ansprechpartnerComboBox,
435  activeSelectedAnsprechpartner, false);
436  } else if (listType == Student.class) {
437  updateGUIData(listType, listContent, newMode,
438  student1ComboBox, activeSelectedStudent1, false);
439 
440  updateGUIData(listType, listContent, newMode,
441  student2ComboBox, activeSelectedStudent2, true);
442 
443  updateGUIData(listType, listContent, newMode,
444  student3ComboBox, activeSelectedStudent3, true);
445  } else if (changeObject != null) {
449  if (listType == changeObject.getClass()) {
451  listContent);
452  }
453  }
454 
458  projektDialog.validate();
459  projektDialog.repaint();
460  }
461  }
462  });
463  }
464 
468  @Override
469  protected void saveData() {
473  checkExistingRecord(Projekt.class, "titel", titleInputField);
474 
478  if (titleInputField.getText().trim().equals("")) {
479  errorList.add("Das Titel-Feld wurde nicht ausgefüllt!");
480  titleInputField.setBackground(defaultColorMissingMandatoryField);
481  }
482  if (beschreibungInputField.getText().trim().equals("")) {
483  errorList.add("Das Beschreibungs-Feld wurde nicht ausgefüllt!");
484  beschreibungInputField
485  .setBackground(defaultColorMissingMandatoryField);
486  }
487  if (ansprechpartnerComboBox.getSelectedIndex() < 0) {
488  errorList.add("Es wurde kein Ansprechpartner ausgewählt!");
489  ansprechpartnerComboBox
490  .setBackground(defaultColorMissingMandatoryField);
491  }
492  if (student1ComboBox.getSelectedIndex() < 0) {
493  errorList.add("Bitte wählen Sie den ersten Studenten aus!");
494  student1ComboBox.setBackground(defaultColorMissingMandatoryField);
495  }
496  if (statusComboBox.getSelectedIndex() < 0) {
497  errorList.add("Bitte geben Sie den Status an!");
498  statusComboBox.setBackground(defaultColorMissingMandatoryField);
499  }
500 
504  String student1 = student1ComboBox.getSelectedItem().toString();
505  String student2 = "";
506  if (student2ComboBox.getSelectedItem() != null) {
507  student2 = student2ComboBox.getSelectedItem().toString();
508  }
509  String student3 = "";
510  if (student3ComboBox.getSelectedItem() != null) {
511  student3 = student3ComboBox.getSelectedItem().toString();
512  }
513 
514  if (student2.equals(student1) || student3.equals(student1)
515  || (student3.equals(student2) && !student3.equals(""))) {
516  errorList
517  .add("Es dürfen keine Studenten mehrmals ausgewählt werden!");
518  student1ComboBox.setBackground(defaultColorMissingMandatoryField);
519  student2ComboBox.setBackground(defaultColorMissingMandatoryField);
520  student3ComboBox.setBackground(defaultColorMissingMandatoryField);
521  }
522 
526  if (errorList.size() > 0) {
527  showErrors();
528  } else {
532  if (changeingObject == null) {
533  changeingObject = new Projekt();
534  }
535 
539  changeingObject.setTitel(titleInputField.getText().trim());
540  changeingObject.setBeschreibung(beschreibungInputField.getText()
541  .trim());
542  changeingObject
543  .setAnsprechpartnerBean((Ansprechpartner) activeSelectedAnsprechpartner);
544  changeingObject.setStudent1Bean((Student) activeSelectedStudent1);
545  changeingObject.setStudent2Bean((Student) activeSelectedStudent2);
546  changeingObject.setStudent3Bean((Student) activeSelectedStudent3);
547 
551  boolean saveError = false;
552  String errorString = "";
553  try {
557  if (newMode) {
561  changeingObject.setStatus(ProjektStatus.offen.toString());
562  changeingObject.setKommentar("");
563 
567  if (Controller.rmiServer.insertData(changeingObject)) {
568  JOptionPane.showMessageDialog(null,
569  "Es wurde ein neues Projekt angelegt!",
570  "Information", JOptionPane.INFORMATION_MESSAGE);
571 
572  } else {
577  saveError = true;
578  }
579  } else {
587  if (statusComboBox.getSelectedItem() != null) {
588  changeingObject.setStatus(statusComboBox
589  .getSelectedItem().toString());
590  } else {
591  changeingObject.setStatus(ProjektStatus.offen
592  .toString());
593  }
594  changeingObject.setKommentar(kommentarTextArea.getText());
595 
599  if (Controller.rmiServer.changeData(changeingObject)) {
600  JOptionPane.showMessageDialog(null,
601  "Das Projekt wurde geändert!", "Information",
602  JOptionPane.INFORMATION_MESSAGE);
603 
604  } else {
609  saveError = true;
610  }
611  }
612  } catch (HeadlessException e) {
613  saveError = true;
614  errorString = e.getMessage();
615  } catch (RemoteException e) {
616  saveError = true;
617  errorString = e.getMessage();
618  }
619 
623  if (saveError) {
624  errorList.add("Beim Speichern ist ein Fehler aufgetreten!");
625  if (!errorString.equals("")) {
626  errorList.add(errorString);
627  }
628 
629  showErrors();
630  } else {
631  closeForm();
632  }
633  }
634  }
635 }