RmiClient  1.0
 Alle Klassen Namensbereiche Dateien Funktionen Variablen
AnsprechpartnerDialog.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 java.util.regex.Matcher;
15 import java.util.regex.Pattern;
16 
17 import javax.swing.BoxLayout;
18 import javax.swing.JButton;
19 import javax.swing.JComboBox;
20 import javax.swing.JFrame;
21 import javax.swing.JLabel;
22 import javax.swing.JOptionPane;
23 import javax.swing.JPanel;
24 import javax.swing.JTextField;
25 import javax.swing.SwingUtilities;
26 
27 import main.CustomItemListener;
28 import main.ResultContent;
29 import main.TextLengthDocument;
30 import main.UserRole;
31 
32 import controller.Controller;
33 import databaseModel.Ansprechpartner;
34 import databaseModel.Unternehmen;
35 
42 public class AnsprechpartnerDialog extends AbstractDialog {
43  private static final long serialVersionUID = 1L;
44 
48  private Ansprechpartner changeingObject = null;
49 
53  private AnsprechpartnerDialog ansprechpartnerDialog = null;
54  private Container contentPane = null;
55 
59  private JLabel nameLabel = null;
60  private JTextField nameInputField = null;
61  private JLabel emailLabel = null;
62  private JTextField emailInputField = null;
63  private JLabel unternehmenLabel = null;
64  private JComboBox unternehmenComboBox = null;
65  private Object activeSelectedUnternehmen = null;
66 
79  public AnsprechpartnerDialog(JFrame owner, final Controller controller,
80  String label, final UserRole roleType) {
81  super(owner, controller, label, roleType);
82  this.ansprechpartnerDialog = this;
83  this.activeDialog = this;
84 
85  JPanel ansprechpartnerPanel = new JPanel();
86  ansprechpartnerPanel.setLayout(new BoxLayout(ansprechpartnerPanel,
87  BoxLayout.Y_AXIS));
88 
92  nameLabel = new JLabel("Name:");
93  nameInputField = new JTextField(defaultVisibleFieldLength);
94  mandatoryComponentList.add(nameInputField);
95  nameInputField.setDocument(new TextLengthDocument(getColumnLength(
96  Ansprechpartner.class, "name")));
97 
101  emailLabel = new JLabel("EMail:");
102  emailInputField = new JTextField(defaultVisibleFieldLength);
103  mandatoryComponentList.add(emailInputField);
104  emailInputField.setDocument(new TextLengthDocument(getColumnLength(
105  Ansprechpartner.class, "email")));
106 
110  unternehmenLabel = new JLabel("Unternehmen:");
111  unternehmenComboBox = new JComboBox();
112  mandatoryComponentList.add(unternehmenComboBox);
113  unternehmenComboBox.addItemListener(new CustomItemListener() {
114  @Override
115  public void doItemChanged(ItemEvent arg0) {
116  if (arg0.getStateChange() == ItemEvent.SELECTED) {
117  setActiveUnternehmen();
118  }
119  }
120  });
121 
125  ansprechpartnerPanel.add(nameLabel);
126  ansprechpartnerPanel.add(nameInputField);
127  ansprechpartnerPanel.add(unternehmenLabel);
128  ansprechpartnerPanel.add(unternehmenComboBox);
129  ansprechpartnerPanel.add(emailLabel);
130  ansprechpartnerPanel.add(emailInputField);
131 
136  preSelection(Unternehmen.class);
137 
141  setLayout(new BorderLayout());
142  contentPane = getContentPane();
143  contentPane.add(ansprechpartnerPanel, BorderLayout.CENTER);
144 
148  contentPane.add(buttonPanel, BorderLayout.SOUTH);
149  }
150 
154  private void setActiveUnternehmen() {
155  activeSelectedUnternehmen = null;
156  if (unternehmenListe != null) {
157  if (unternehmenComboBox.getItemCount() > 0) {
158  if (unternehmenComboBox.getSelectedIndex() >= 0) {
159  activeSelectedUnternehmen = unternehmenListe
160  .get(unternehmenComboBox.getSelectedIndex());
161  }
162  }
163  }
164  }
165 
174  @Override
175  public void initialize(final String label, final Object ansprechpartner) {
176  SwingUtilities.invokeLater(new Runnable() {
177  public void run() {
178  ansprechpartnerDialog.setTitle(label);
179  ansprechpartnerDialog.changeObject = ansprechpartner;
180  ansprechpartnerDialog.changeingObject = (Ansprechpartner) ansprechpartner;
181  ansprechpartnerDialog.newMode = (ansprechpartner == null);
182 
184 
188  if (newMode) {
189  nameInputField.setText("");
190  emailInputField.setText("");
191  unternehmenComboBox.setSelectedIndex(-1);
192  if (unternehmenComboBox.getItemCount() > 0) {
193  unternehmenComboBox.setSelectedIndex(0);
194  }
195  } else {
199  nameInputField
200  .setText(ansprechpartnerDialog.changeingObject
201  .getName());
202  emailInputField
203  .setText(ansprechpartnerDialog.changeingObject
204  .getEmail());
205  unternehmenComboBox
206  .setSelectedItem(ansprechpartnerDialog.changeingObject
208  setActiveUnternehmen();
209  }
210  }
211  });
212  };
213 
217  @Override
218  public void update(Observable arg0, final Object arg1) {
219  SwingUtilities.invokeLater(new Runnable() {
220  public void run() {
224  if (arg1 != null) {
225  Class listType = ((ResultContent) arg1).getListType();
226  List<Object> listContent = ((ResultContent) arg1)
227  .getListContent();
228 
229  if (listType == Unternehmen.class) {
230  updateGUIData(listType, listContent, newMode,
231  unternehmenComboBox, activeSelectedUnternehmen,
232  false);
233  } else if (changeObject != null) {
237  if (listType == changeObject.getClass()) {
239  listContent);
240  }
241  }
242 
246  ansprechpartnerDialog.validate();
247  ansprechpartnerDialog.repaint();
248  }
249  }
250  });
251  }
252 
256  @Override
257  protected void saveData() {
261  if (nameInputField.getText().trim().equals("")) {
262  errorList.add("Der Name wurde nicht eingegeben!");
263  nameInputField.setBackground(defaultColorMissingMandatoryField);
264  }
265  if (unternehmenComboBox.getSelectedIndex() < 0) {
266  errorList.add("Es wurde kein Unternehmen ausgewählt!");
267  unternehmenComboBox
268  .setBackground(defaultColorMissingMandatoryField);
269  }
270  if (emailInputField.getText().trim().equals("")) {
271  errorList.add("Es wurde keine E-Mail-Adresse eingegeben!");
272  emailInputField.setBackground(defaultColorMissingMandatoryField);
273  }
274  checkValidEmail(emailInputField);
275 
279  if (errorList.size() > 0) {
280  showErrors();
281  } else {
285  if (changeingObject == null) {
286  changeingObject = new Ansprechpartner();
287  }
288 
292  changeingObject.setName(nameInputField.getText().trim());
293  changeingObject.setEmail(emailInputField.getText().trim());
294  changeingObject
295  .setUnternehmenBean(((Unternehmen) activeSelectedUnternehmen));
296 
300  boolean saveError = false;
301  String errorString = "";
302  try {
306  if (newMode) {
310  if (Controller.rmiServer.insertData(changeingObject)) {
311  JOptionPane.showMessageDialog(null,
312  "Es wurde ein neuer Ansprechpartner angelegt!",
313  "Information", JOptionPane.INFORMATION_MESSAGE);
314 
315  } else {
320  saveError = true;
321  }
322  } else {
330  if (Controller.rmiServer.changeData(changeingObject)) {
331  JOptionPane.showMessageDialog(null,
332  "Der Ansprechpartner wurde geändert!",
333  "Information", JOptionPane.INFORMATION_MESSAGE);
334 
335  } else {
340  saveError = true;
341  }
342  }
343  } catch (HeadlessException e) {
344  saveError = true;
345  errorString = e.getMessage();
346  } catch (RemoteException e) {
347  saveError = true;
348  errorString = e.getMessage();
349  }
350 
354  if (saveError) {
355  errorList.add("Beim Speichern ist ein Fehler aufgetreten!");
356  if (!errorString.equals("")) {
357  errorList.add(errorString);
358  }
359 
360  showErrors();
361  } else {
362  closeForm();
363  }
364  }
365  }
366 }