Package AlMaGe

Source Code of AlMaGe.PersonModify

package AlMaGe;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.KeyEventDispatcher;
import java.awt.KeyboardFocusManager;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.JSpinner;
import javax.swing.JTextField;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.filechooser.FileFilter;

import org.jdesktop.swingx.JXDatePicker;
import org.jdesktop.swingx.JXMonthView;
import org.jdesktop.swingx.calendar.DefaultDateSelectionModel;

public class PersonModify {
  private KeyboardFocusManager kbf;
  private JDialog mainDialog;
  private static ArrayList<Person> persList = new ArrayList<Person>();
  // Formatierungsbefehle
  private static SimpleDateFormat gebDate = new SimpleDateFormat("dd.MM.yyyy");// 'at'
                                          // HH:mm:ss
  // Steuerungswerte
  private boolean aktIDFehler = false;
  private boolean aktIDFormfehler = false;
  private boolean initialNeu = false;
  private Status status = Status.ANZEIGEN;

  // Steuerungs IDs
  private int lastPersID = 0;
  private int religionID = 0;
  private int krKasseID = 0;

  private BufferedImage foto = new BufferedImage(1, 1,
      BufferedImage.TYPE_INT_BGR);

  // Statusbar
  private JButton btnZurueck = new JButton("<");
  private JButton btnVor = new JButton(">");
  private JTextField tfAktID = new JTextField();
  private JLabel labStatus = new JLabel(" ");
  private static JLabel labUhrzeit = new JLabel("      ");
  private JPanel statPanel = new JPanel();
  // Autovervollst�ndigung PLZ
  private boolean plzChanged = false;
  private int plzID = 0;
  private int plzLength = 0;

  // main
  private JLabel labAnrede = new JLabel("Anrede");
  private JLabel labNachname = new JLabel("Nachname");
  private JLabel labVorname = new JLabel("Vorname");
  private JLabel labStrasse = new JLabel("Stra�e");
  private JLabel labPLZ = new JLabel("Postleitzahl");
  private JLabel labOrt = new JLabel("Wohnort");
  private JLabel labBundesland = new JLabel("Bundesland");
  private JLabel labTele = new JLabel("Telefon");
  private JLabel labGebDat = new JLabel("Geburtsdatum");
  private JLabel labKinder = new JLabel("Kinder");
  private JLabel labReligion = new JLabel("Konfession");
  private JLabel labGehBrutto = new JLabel("Bruttogehalt");
  private JLabel labSonstBezug = new JLabel("sonstige Bez�ge");
  private JLabel labSonstAbzug = new JLabel("sonstige Abz�ge");
  private JLabel labLSt = new JLabel("Lohnsteuer");
  private JLabel labKiSt = new JLabel("Kirchensteuer");
  private JLabel labSoli = new JLabel("Solidarit�tszuschlag");
  private JLabel labKrKasse = new JLabel("Krankenkasse");

  // Hauptpanels
  private JPanel panLeft = new JPanel();
  private JPanel panCenter = new JPanel();
  // Menuebarlabels
  private JLabel labFoto;
  private JLabel geloeschterMitarbeiter = new JLabel(
      "<html><center><font color='#FF0000' size='3.5'>" +
      "<b>Dieser<br>Mitarbeiter<br>wurde<br>GEL�SCHT</b></font></center></html>");
  // Elemente Mainbereich
  private String[] anreden = { "bitte Anrede w�hlen", "Herrn", "Frau" };
  private JComboBox cbAnrede = new JComboBox(anreden);
  private JTextField tfNachname = new JTextField("Nachname");
  private JTextField tfVorname = new JTextField("Vorname");
  private JTextField tfStrasse = new JTextField("Stra�e");
  private JTextField tfPostleitzahl = new JTextField("Postleitzahl");
  private JTextField tfOrt = new JTextField("Ort");
  private JTextField tfBDL = new JTextField("Bundesland");
  private JTextField tfTele = new JTextField("Telefon");
  private JXDatePicker dpGebDat = new JXDatePicker();
  private SpinnerModel spModelKind = new SpinnerNumberModel(0.00, 0.00, 10.0,
      0.5);
  private JSpinner spKinder = new JSpinner(spModelKind);
  private JComboBox cbReligion = new JComboBox();
  private SpinnerModel spModelGehBrutto = new SpinnerNumberModel(0.00, 0.00,
      9999999.99, 0.01);
  private JSpinner spGehBrutto = new JSpinner(spModelGehBrutto);
  private SpinnerModel spModelSonstBezug = new SpinnerNumberModel(0.00, 0.00,
      9999999.99, 0.01);
  private JSpinner spSonstBezug = new JSpinner(spModelSonstBezug);
  private SpinnerModel spModelSonstAbzug = new SpinnerNumberModel(0.00, 0.00,
      9999999.99, 0.01);
  private JSpinner spSonstAbzug = new JSpinner(spModelSonstAbzug);
  private SpinnerModel spModelLSt = new SpinnerNumberModel(0.00, 0.00,
      9999999.99, 0.01);
  private JSpinner spLSt = new JSpinner(spModelLSt);
  private SpinnerModel spModelKiSt = new SpinnerNumberModel(0.00, 0.00,
      9999999.99, 0.01);
  private JSpinner spKiSt = new JSpinner(spModelKiSt);
  private SpinnerModel spModelSoli = new SpinnerNumberModel(0.00, 0.00,
      9999999.99, 0.01);
  private JSpinner spSoli = new JSpinner(spModelSoli);
  private JComboBox cbKrKasse = new JComboBox();

  // Hauptelement f�r aktuelle Person
  private Person pers = new Person();
  private int soli = 0;
  // Menuebuttons
  private JButton upload = new JButton("Bild �ndern");
  private JButton neu = new JButton("Neu");
  private JButton save = new JButton("Speichern");
  private JButton bearb = new JButton("Bearbeiten");
  private JButton delete = new JButton("L�schen");
  private JButton cancel = new JButton("Schlie�en");
  private Dimension btnDim = new Dimension(100, 30);
  private String lastValidPLZ = "";

  // Konstruktoren
  public PersonModify(JFrame parent, int persID, Status status) throws InstantiationException,
      IllegalAccessException, ClassNotFoundException, SQLException,
      IOException, FormatException {
      kbf = null;
    mainDialog = new JDialog(parent, true);

      if (parent != null) {
        Dimension parentSize = parent.getSize();
        Point p = parent.getLocation();
        mainDialog.setLocation(p.x + (parentSize.width / 2)-235, p.y + (parentSize.height / 2)-313);
      }
     
    setIdList();
    lastPersID = persID;
    this.status = status;
    tfAktID.setText("" + persID);
    setGebDatLimits();
    pers = new Person(persID);
    cbAnrede.setSelectedItem(pers.getAnrede());
    tfNachname.setText(pers.getNachname());
    tfVorname.setText(pers.getVorname());
    tfStrasse.setText(pers.getStrasse());
    plzID = pers.getPlzID();
    tfTele.setText(pers.getTele());
    dpGebDat.setDate(pers.getGebDat());
    foto = pers.getFoto();
    spKinder.setValue(pers.getKinder());
    religionID = pers.getReligionID();
    spGehBrutto.setValue(pers.getGehBrutto());
    spLSt.setValue(pers.getLst());
    spKiSt.setValue(pers.getKiSt());
    spSoli.setValue(pers.getSoli());
    krKasseID = pers.getKrKasseID();
    spSonstBezug.setValue(pers.getSonstBezug());
    spSonstAbzug.setValue(pers.getSonstAbzug());
    // DB Abfrage
    setReligionenInitial();
    setKrankenkasseInitial();
    // Setzen der Werte : PLZ,Wohnort,Bundesland
    setPlzOrtBdl();
    gui();
  }

  private void gui() {
    mainDialog.setTitle("Arbeitnehmer Information");
    mainDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
    mainDialog.setResizable(false);

    geloeschterMitarbeiter.setBorder(BorderFactory.createTitledBorder(
        BorderFactory.createRaisedBevelBorder(), "ACHTUNG"));
    geloeschterMitarbeiter.setVisible(false);
    labStatus.setText(" ");
   
    spKiSt.setEnabled(false);
    cbAnrede.setEnabled(false);
    dpGebDat.setEditable(false);
    dpGebDat.setEnabled(false);
    spKinder.setEnabled(false);
    spGehBrutto.setEnabled(false);
    spSonstBezug.setEnabled(false);
    spSonstAbzug.setEnabled(false);
    spLSt.setEnabled(false);
    cbReligion.setEnabled(false);
    spSoli.setEnabled(false);
    cbKrKasse.setEnabled(false);
    save.setEnabled(false);
    if (pers.getLoeschDat() != null) {
      upload.setEnabled(false);
      bearb.setEnabled(false);
      delete.setEnabled(false);
      geloeschterMitarbeiter.setVisible(true);
      labStatus.setText("gel�schter Mitarbeiter");
    }

    tfOrt.setEnabled(false);
    tfBDL.setEnabled(false);
    tfNachname.setEnabled(false);
    tfVorname.setEnabled(false);
    tfStrasse.setEnabled(false);
    tfPostleitzahl.setEnabled(false);
    tfTele.setEnabled(false);

    upload.setPreferredSize(btnDim);
    neu.setPreferredSize(btnDim);
    bearb.setPreferredSize(btnDim);
    save.setPreferredSize(btnDim);
    delete.setPreferredSize(btnDim);
    cancel.setPreferredSize(btnDim);

    spKinder.setEditor(new JSpinner.NumberEditor(spKinder, "0.0"));
    spGehBrutto.setEditor(new JSpinner.NumberEditor(spGehBrutto, "0.00"));
    spSonstBezug.setEditor(new JSpinner.NumberEditor(spSonstBezug, "0.00"));
    spSonstAbzug.setEditor(new JSpinner.NumberEditor(spSonstAbzug, "0.00"));
    spLSt.setEditor(new JSpinner.NumberEditor(spLSt, "0.00"));
    spKiSt.setEditor(new JSpinner.NumberEditor(spKiSt, "0.00"));
    spSoli.setEditor(new JSpinner.NumberEditor(spSoli, "0.00"));

    // Statusbar
    statPanel.setBorder(BorderFactory
        .createEtchedBorder(EtchedBorder.LOWERED));
    GridBagLayout gblStat = new GridBagLayout();
    statPanel.setLayout(gblStat);
    GridBagConstraints gbcStat = new GridBagConstraints();

    // Festlegen, dass die GUI-Elemente die Gitterfelder in
    // waagerechter Richtung ausf�llen:
    gbcStat.fill = GridBagConstraints.BOTH;

    // Die Abst�nder der einzelnen GUI-Elemente zu den gedachten
    // Gitterlinien festgelegen:
    gbcStat.insets = new Insets(2, 2, 2, 2);

    btnZurueck.putClientProperty("JComponent.sizeVariant", "mini");
    gbcStat.gridx = 0;
    gbcStat.gridy = 0;
    gblStat.setConstraints(btnZurueck, gbcStat);
    statPanel.add(btnZurueck);

    tfAktID.setPreferredSize(new Dimension(30, 20));
    tfAktID.putClientProperty("JComponent.sizeVariant", "mini");
    gbcStat.gridx = 1;
    gbcStat.gridy = 0;
    gblStat.setConstraints(tfAktID, gbcStat);
    statPanel.add(tfAktID);

    btnVor.putClientProperty("JComponent.sizeVariant", "mini");
    gbcStat.gridx = 2;
    gbcStat.gridy = 0;
    gblStat.setConstraints(btnVor, gbcStat);
    statPanel.add(btnVor);

    JSeparator sep1 = new JSeparator(SwingConstants.VERTICAL);
    gbcStat.gridx = 3;
    gbcStat.gridy = 0;
    gblStat.setConstraints(sep1, gbcStat);
    statPanel.add(sep1);

    labStatus.setPreferredSize(new Dimension(300, 20));
    gbcStat.gridx = 4;
    gbcStat.gridy = 0;
    gblStat.setConstraints(labStatus, gbcStat);
    statPanel.add(labStatus);

    JSeparator sep2 = new JSeparator(SwingConstants.VERTICAL);
    gbcStat.gridx = 5;
    gbcStat.gridy = 0;
    gblStat.setConstraints(sep2, gbcStat);
    statPanel.add(sep2);

    labUhrzeit.setPreferredSize(new Dimension(52, 20));
    gbcStat.gridx = 6;
    gbcStat.gridy = 0;
    gblStat.setConstraints(labUhrzeit, gbcStat);
    statPanel.add(labUhrzeit);

    mainDialog.add(statPanel, BorderLayout.SOUTH);
    SwingUtilities.updateComponentTreeUI(mainDialog);

    GridBagLayout gbl = new GridBagLayout();
    panCenter.setLayout(gbl);
    GridBagConstraints gbc = new GridBagConstraints();

    // Festlegen, dass die GUI-Elemente die Gitterfelder in
    // waagerechter Richtung ausf�llen:
    gbc.fill = GridBagConstraints.HORIZONTAL;

    // Die Abst�nder der einzelnen GUI-Elemente zu den gedachten
    // Gitterlinien festgelegen:
    gbc.insets = new Insets(2, 2, 2, 2);

    mainDialog.add(panCenter, BorderLayout.CENTER);
    mainDialog.add(panLeft, BorderLayout.WEST);

    gbc.gridx = 0;
    gbc.gridy = 0;
    gbl.setConstraints(labAnrede, gbc);
    panCenter.add(labAnrede);

    gbc.gridx = 1;
    gbc.gridy = 0;
    gbl.setConstraints(cbAnrede, gbc);
    panCenter.add(cbAnrede);

    gbc.gridx = 0; // x-Position im gedachten Gitter
    gbc.gridy = 1; // y-Position im gedachten Gitter
    gbl.setConstraints(labNachname, gbc);
    panCenter.add(labNachname);

    gbc.gridx = 1; // x-Position im gedachten Gitter
    gbc.gridy = 1; // y-Position im gedachten Gitter
    gbl.setConstraints(tfNachname, gbc);
    panCenter.add(tfNachname);

    gbc.gridx = 0; // x-Position im gedachten Gitter
    gbc.gridy = 2; // y-Position im gedachten Gitter
    gbl.setConstraints(labVorname, gbc);
    panCenter.add(labVorname);

    gbc.gridx = 1; // x-Position im gedachten Gitter
    gbc.gridy = 2; // y-Position im gedachten Gitter
    gbl.setConstraints(tfVorname, gbc);
    panCenter.add(tfVorname);

    gbc.gridx = 0; // x-Position im gedachten Gitter
    gbc.gridy = 3; // y-Position im gedachten Gitter
    gbl.setConstraints(labStrasse, gbc);
    panCenter.add(labStrasse);

    gbc.gridx = 1; // x-Position im gedachten Gitter
    gbc.gridy = 3; // y-Position im gedachten Gitter
    gbl.setConstraints(tfStrasse, gbc);
    panCenter.add(tfStrasse);

    gbc.gridx = 0; // x-Position im gedachten Gitter
    gbc.gridy = 4; // y-Position im gedachten Gitter
    gbl.setConstraints(labPLZ, gbc);
    panCenter.add(labPLZ);

    gbc.gridx = 1; // x-Position im gedachten Gitter
    gbc.gridy = 4; // y-Position im gedachten Gitter
    gbl.setConstraints(tfPostleitzahl, gbc);
    panCenter.add(tfPostleitzahl);

    gbc.gridx = 0; // x-Position im gedachten Gitter
    gbc.gridy = 5; // y-Position im gedachten Gitter
    gbl.setConstraints(labOrt, gbc);
    panCenter.add(labOrt);

    gbc.gridx = 1; // x-Position im gedachten Gitter
    gbc.gridy = 5; // y-Position im gedachten Gitter
    gbl.setConstraints(tfOrt, gbc);
    panCenter.add(tfOrt);

    gbc.gridx = 0;
    gbc.gridy = 6;
    gbl.setConstraints(labBundesland, gbc);
    panCenter.add(labBundesland);

    gbc.gridx = 1;
    gbc.gridy = 6;
    gbl.setConstraints(tfBDL, gbc);
    panCenter.add(tfBDL);

    gbc.gridx = 0; // x-Position im gedachten Gitter
    gbc.gridy = 7; // y-Position im gedachten Gitter
    gbl.setConstraints(labTele, gbc);
    panCenter.add(labTele);

    gbc.gridx = 1; // x-Position im gedachten Gitter
    gbc.gridy = 7; // y-Position im gedachten Gitter
    gbl.setConstraints(tfTele, gbc);
    panCenter.add(tfTele);

    gbc.gridx = 0; // x-Position im gedachten Gitter
    gbc.gridy = 8; // y-Position im gedachten Gitter
    gbl.setConstraints(labGebDat, gbc);
    panCenter.add(labGebDat);

    gbc.gridx = 1; // x-Position im gedachten Gitter
    gbc.gridy = 8; // y-Position im gedachten Gitter
    gbl.setConstraints(dpGebDat, gbc);
    panCenter.add(dpGebDat);

    gbc.gridx = 0; // x-Position im gedachten Gitter
    gbc.gridy = 9; // y-Position im gedachten Gitter
    gbl.setConstraints(labKinder, gbc);
    panCenter.add(labKinder);

    gbc.gridx = 1; // x-Position im gedachten Gitter
    gbc.gridy = 9; // y-Position im gedachten Gitter
    gbl.setConstraints(spKinder, gbc);
    panCenter.add(spKinder);

    gbc.gridx = 0;
    gbc.gridy = 10;
    gbl.setConstraints(labGehBrutto, gbc);
    panCenter.add(labGehBrutto);

    gbc.gridx = 1;
    gbc.gridy = 10;
    gbl.setConstraints(spGehBrutto, gbc);
    panCenter.add(spGehBrutto);

    gbc.gridx = 0;
    gbc.gridy = 11;
    gbl.setConstraints(labSonstBezug, gbc);
    panCenter.add(labSonstBezug);

    gbc.gridx = 1;
    gbc.gridy = 11;
    gbl.setConstraints(spSonstBezug, gbc);
    panCenter.add(spSonstBezug);

    gbc.gridx = 0;
    gbc.gridy = 12;
    gbl.setConstraints(labSonstAbzug, gbc);
    panCenter.add(labSonstAbzug);

    gbc.gridx = 1;
    gbc.gridy = 12;
    gbl.setConstraints(spSonstAbzug, gbc);
    panCenter.add(spSonstAbzug);

    gbc.gridx = 0;
    gbc.gridy = 14;
    gbl.setConstraints(labLSt, gbc);
    panCenter.add(labLSt);

    gbc.gridx = 1;
    gbc.gridy = 14;
    gbl.setConstraints(spLSt, gbc);
    panCenter.add(spLSt);

    gbc.gridx = 0;
    gbc.gridy = 15;
    gbl.setConstraints(labReligion, gbc);
    panCenter.add(labReligion);

    gbc.gridx = 1;
    gbc.gridy = 15;
    gbl.setConstraints(cbReligion, gbc);
    panCenter.add(cbReligion);

    gbc.gridx = 0;
    gbc.gridy = 16;
    gbl.setConstraints(labKiSt, gbc);
    panCenter.add(labKiSt);

    gbc.gridx = 1;
    gbc.gridy = 16;
    gbl.setConstraints(spKiSt, gbc);
    panCenter.add(spKiSt);

    gbc.gridx = 0;
    gbc.gridy = 17;
    gbl.setConstraints(labSoli, gbc);
    panCenter.add(labSoli);

    gbc.gridx = 1;
    gbc.gridy = 17;
    gbl.setConstraints(spSoli, gbc);
    panCenter.add(spSoli);

    gbc.gridx = 0;
    gbc.gridy = 19;
    gbl.setConstraints(labKrKasse, gbc);
    panCenter.add(labKrKasse);

    gbc.gridx = 1;
    gbc.gridy = 19;
    gbl.setConstraints(cbKrKasse, gbc);
    panCenter.add(cbKrKasse);

    labFoto = new JLabel(new ImageIcon(foto));
    labFoto.setBorder(BorderFactory.createTitledBorder(
        BorderFactory.createBevelBorder(BevelBorder.LOWERED,
            Color.GRAY, Color.BLACK), "Foto"));

    panLeft.setPreferredSize(new Dimension(130, 200));
    panLeft.setLayout(new FlowLayout(FlowLayout.CENTER));
    labFoto.setPreferredSize(new Dimension(120, 140));
    panLeft.add(labFoto);
    panLeft.add(upload);
    panLeft.add(neu);
    panLeft.add(bearb);
    panLeft.add(save);
    panLeft.add(delete);
    panLeft.add(cancel);
    panLeft.add(geloeschterMitarbeiter);
   
    //Enum Status
    switch (status) {
      case ANZEIGEN:
            break;
         
      case BEARBEITEN: bearb();
               break;
              
      case LOESCHEN: delete();
            break;
      case NEU: neu();
               break;
      default:    
            break;
    }
   
    // Accelerator
    upload.setMnemonic('�');
    neu.setMnemonic('n');
    bearb.setMnemonic('b');
    save.setMnemonic('s');
    delete.setMnemonic('l');
    cancel.setMnemonic('c');
   
    kbf = KeyboardFocusManager.
    getCurrentKeyboardFocusManager();
   
    final KeyEventDispatcher EventDispatcher = new KeyEventDispatcher() {

      @Override
      public boolean dispatchKeyEvent(KeyEvent e) {
        boolean keyUsed = false;
        if(e.getID() == KeyEvent.KEY_PRESSED && e.isControlDown()){
          int kChar = e.getKeyCode();
          if (kChar == 78){
              neu.doClick();
              keyUsed = true;
            }else
            if (kChar == 0){
              upload.doClick();
              keyUsed = true;
            }else
            if (kChar == 66){
              bearb.doClick();
              keyUsed = true;
            }else
            if (kChar == 83){
              save.doClick();
              keyUsed = true;
            }else
            if (kChar == 76){
              delete.doClick();
              keyUsed = true;
            }else
            if (kChar == 67){
              cancel.doClick();
              keyUsed = true;
            }
        }
        return keyUsed;
     

    };
   
    kbf.addKeyEventDispatcher(EventDispatcher);
   
//    Accelerator(
//          KeyStroke.getKeyStroke(KeyEvent.VK_ASTERISK, InputEvent.CTRL_MASK)
//        );
   
   
    // ActionListener
    cbAnrede.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent arg0) {
        if (!initialNeu) {
          try {
            pers.setAnrede((String) cbAnrede.getSelectedItem());
          } catch (FormatException e) {
            JOptionPane.showMessageDialog(mainDialog,
                "<html>Bitte Anrede w�hlen.</html>",
                "Anrede w�hlen", JOptionPane.WARNING_MESSAGE);
          }
        }
      }
    });

    tfNachname.addKeyListener(new KeyAdapter() {
      @Override
      public void keyReleased(KeyEvent e) {
        pers.setNachname(tfNachname.getText());
      }
    });

    tfVorname.addKeyListener(new KeyAdapter() {
      @Override
      public void keyReleased(KeyEvent e) {
        pers.setVorname(tfVorname.getText());
      }
    });

    tfStrasse.addKeyListener(new KeyAdapter() {
      @Override
      public void keyReleased(KeyEvent e) {
        pers.setStrasse(tfStrasse.getText());
      }
    });

    tfPostleitzahl.addKeyListener(new KeyAdapter() {
      @Override
      public void keyReleased(KeyEvent e) {
        if (tfPostleitzahl.getText().isEmpty()) {
          plzChanged = false;
        }
        if (!(plzLength == tfPostleitzahl.getText().length())
            || tfPostleitzahl.getText().length() > 5) {
          plzLength = tfPostleitzahl.getText().length();
          if (!tfPostleitzahl.getText().equals("")) {
            try {
              ResultSet rs = DataMgr.getInstance().getResultSet(
                  "SELECT * FROM `plz_ort_vorwahl`"
                      + "WHERE Plz LIKE '"
                      + tfPostleitzahl.getText() + "%'"
                      + "LIMIT 0 , 1");
              if (rs.next()) {
                tfPostleitzahl.setText(rs.getString(4));
                tfPostleitzahl.setSelectionStart(plzLength);
                plzChanged = true;
                lastValidPLZ = rs.getString(4);
              } else {
                plzChanged = false;
                int length = tfPostleitzahl.getText().length();
                tfPostleitzahl.setText(tfPostleitzahl.getText()
                    .substring(
                        0,
                        tfPostleitzahl.getText()
                            .length() - 1));
                if (length <= 5) {
                  JOptionPane
                      .showMessageDialog(
                          mainDialog,
                          "<html>Die Postleitzahl existiert nicht" +
                          "<br>Bitte richtige Postleitzahl angeben</html>",
                          "Postleitzahl falsch",
                          JOptionPane.WARNING_MESSAGE);
                }
              }
            } catch (InstantiationException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (IllegalAccessException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (ClassNotFoundException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (SQLException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            }
          }
        }
      }
    });

    tfPostleitzahl.addFocusListener(new FocusAdapter() {
      @Override
      public void focusLost(FocusEvent e) {
        if (tfPostleitzahl.isEnabled() && tfPostleitzahl.isEditable()
            && plzChanged) {
          Object[] options = { "Ja, auch Telefon",
              "Ja, ohne Telefon", "Nein" };
          int auswahl = JOptionPane
              .showOptionDialog(
                  mainDialog,
                  "<html>Achtung, die Felder :<br>"
                      + "&nbsp;&nbsp;Wohnort<br>"
                      + "&nbsp;&nbsp;Bundesland<br>"
                      + "werden eingef�gt.<br>"
                      + "Das Feld Telefon wird auf Wunsch mit der Vorwahl �berschrieben</html>",
                  "Auto-Vervollst�ndigung",
                  JOptionPane.YES_NO_CANCEL_OPTION,
                  JOptionPane.QUESTION_MESSAGE, null,
                  options, options[2]);
          if (auswahl == 0 || auswahl == 1)
            try {
              ResultSet rs = DataMgr.getInstance().getResultSet(
                  "SELECT * FROM `plz_ort_vorwahl`"
                      + "WHERE Plz LIKE '" + lastValidPLZ
                      + "%'" + "ORDER BY Ort ASC");
              ArrayList<ArrayList<String>> plz_ort_data = new ArrayList<ArrayList<String>>();
              while (rs.next()) {
                ArrayList<String> data = new ArrayList<String>();
                data.add(rs.getString(1));
                data.add(rs.getString(2));
                data.add(rs.getString(3));
                data.add(rs.getString(4));
                data.add(rs.getString(5));
                data.add(rs.getString(6));
                plz_ort_data.add(data);
              }
              int richtigerOrtId = -1;
              if (plz_ort_data.size() == 1) {
                richtigerOrtId = 0;
              } else {
                ArrayList<Object> alPossibilities = new ArrayList<Object>();
                for (int i = 0; i < plz_ort_data.size(); i++) {
                  alPossibilities.add(plz_ort_data.get(i)
                      .get(1));
                }
                Object[] possibilities = alPossibilities
                    .toArray();
                String ort = (String) JOptionPane
                    .showInputDialog(
                        mainDialog,
                        "<html>Mehrere Orte wurden zu Ihrer Postleitzahl gefunden<br>"
                            + "Bitte w�hlen Sie passenden aus.</html>",
                        "Auto-Vervollst�ndigung",
                        JOptionPane.PLAIN_MESSAGE,
                        null, possibilities,
                        possibilities[0]);
                for (int i = 0; i < plz_ort_data.size(); i++) {
                  if (plz_ort_data.get(i).get(1).equals(ort))
                    richtigerOrtId = i;
                }
              }
              if (richtigerOrtId != -1) {
                plzChanged = false;
                plzID = Integer.parseInt(plz_ort_data.get(
                    richtigerOrtId).get(0));
                pers.setPlzID(plzID);
                tfOrt.setText(plz_ort_data.get(richtigerOrtId)
                    .get(1)
                    + " "
                    + plz_ort_data.get(richtigerOrtId).get(
                        2));
                rs = DataMgr.getInstance().getResultSet(
                    "SELECT Name, Soli FROM bundeslaender WHERE BLID = '"
                        + plz_ort_data.get(
                            richtigerOrtId).get(5)
                        + "'");
                while (rs.next()) {
                  tfBDL.setText(rs.getString(1));
                  soli = rs.getInt(2);
                }
                if (soli == 1) {
                  spSoli.setEnabled(true);
                } else {
                  spSoli.setEnabled(false);
                  spSoli.setValue(0.0);
                }
                if (auswahl == 0) {
                  if (JOptionPane
                      .showOptionDialog(
                          mainDialog,
                          "<html>Achtung, das Feld :<br>"
                              + "&nbsp;&nbsp;Telefon<br>"
                              + "wird mit der Vorwahl �berschrieben<br>"
                              + "M�chten Sie wirklich fortfahren?</html>",
                          "Auto-Vervollst�ndigung",
                          JOptionPane.YES_NO_OPTION,
                          JOptionPane.QUESTION_MESSAGE,
                          null, null, null) == 0)
                    if (!plz_ort_data.get(richtigerOrtId)
                        .get(4).equals("0"))
                      tfTele.setText("0"
                          + plz_ort_data.get(
                              richtigerOrtId)
                              .get(4));
                }
              }
            } catch (SQLException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (InstantiationException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (IllegalAccessException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (ClassNotFoundException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            }
        }
      }
    });

    tfTele.addKeyListener(new KeyAdapter() {
      @Override
      public void keyReleased(KeyEvent e) {
        pers.setTele(tfTele.getText());
      }
    });

    dpGebDat.addPropertyChangeListener(new PropertyChangeListener() {

      @Override
      public void propertyChange(PropertyChangeEvent arg0) {

        pers.setGebDat(dpGebDat.getDate());
      }
    });

    spKinder.addChangeListener(new ChangeListener() {

      @Override
      public void stateChanged(ChangeEvent e) {

        pers.setKinder((Double) spKinder.getValue());
      }
    });

    spGehBrutto.addChangeListener(new ChangeListener() {

      @Override
      public void stateChanged(ChangeEvent e) {
        pers.setGehBrutto((Double) spGehBrutto.getValue());
      }
    });

    spSonstBezug.addChangeListener(new ChangeListener() {

      @Override
      public void stateChanged(ChangeEvent e) {
        pers.setSonstBezug((Double) spSonstBezug.getValue());
      }
    });

    spSonstAbzug.addChangeListener(new ChangeListener() {

      @Override
      public void stateChanged(ChangeEvent e) {
        pers.setSonstAbzug((Double) spSonstAbzug.getValue());
      }
    });

    spLSt.addChangeListener(new ChangeListener() {

      @Override
      public void stateChanged(ChangeEvent e) {
        pers.setLst((Double) spLSt.getValue());
      }
    });

    cbReligion.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent e) {
        if (!initialNeu) {
          Religion rel = (Religion) cbReligion.getSelectedItem();
          try {
            pers.setReligionID(rel.getReligionID());
          } catch (FormatException e1) {
            JOptionPane.showMessageDialog(mainDialog,
                "<html>Bitte Konfession w�hlen.</html>",
                "Konfession w�hlen",
                JOptionPane.WARNING_MESSAGE);
          }
          if (rel.getKiSt() == 1) {
            spKiSt.setEnabled(true);
          } else {
            spKiSt.setEnabled(false);
            spKiSt.setValue(0);
          }
        }
      }
    });

    spKiSt.addChangeListener(new ChangeListener() {

      @Override
      public void stateChanged(ChangeEvent e) {
        if (spKiSt.isEnabled()) {
          pers.setKiSt((Double) spKiSt.getValue());
        } else {
          spKiSt.setValue((Double) 0.0);
          pers.setKiSt((Double) 0.0);
        }
      }
    });

    spSoli.addChangeListener(new ChangeListener() {

      @Override
      public void stateChanged(ChangeEvent e) {
        if (spSoli.isEnabled()) {
          pers.setSoli((Double) spSoli.getValue());
        } else {
          spSoli.setValue((Double) 0.0);
          pers.setSoli((Double) 0.0);
        }
      }
    });

    cbKrKasse.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent e) {
        if (!initialNeu) {
          Krankenkasse krKasse = (Krankenkasse) cbKrKasse
              .getSelectedItem();
          try {
            pers.setKrKasseID(krKasse.getKrKasseID());
          } catch (FormatException e1) {
            JOptionPane.showMessageDialog(mainDialog,
                "<html>Bitte Krankenkasse w�hlen.</html>",
                "Krankenkasse w�hlen",
                JOptionPane.WARNING_MESSAGE);
          }
        }
      }
    });

    upload.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent arg0) {
        // GIF, JPEG or PNG files allowed
        File file = new File("");
        JFileChooser fc = new JFileChooser(file.getAbsolutePath());
        fc.setSelectedFile(file);
        fc.setFileFilter(new FileFilter() {
          @Override
          public String getDescription() {

            return "Bilddateien";
          }

          @Override
          public boolean accept(File f) {

            if (f.isDirectory() == true)
              return true;
            if (f.getName().endsWith(".gif"))
              return true;
            if (f.getName().endsWith(".jpg"))
              return true;
            if (f.getName().endsWith(".jpeg"))
              return true;
            if (f.getName().endsWith(".png"))
              return true;
            if (f.getName().endsWith(".Gif"))
              return true;
            if (f.getName().endsWith(".Jpg"))
              return true;
            if (f.getName().endsWith(".Jpeg"))
              return true;
            if (f.getName().endsWith(".Png"))
              return true;
            if (f.getName().endsWith(".GIF"))
              return true;
            if (f.getName().endsWith(".JPG"))
              return true;
            if (f.getName().endsWith(".JPEG"))
              return true;
            if (f.getName().endsWith(".PNG"))
              return true;
            return false;
          }
        });
        fc.setFileHidingEnabled(true);
        fc.setApproveButtonText("Bild verwenden");
        fc.setApproveButtonToolTipText("Ausgew�hltes Bild wird Mitarbeiter zugewiesen.");
        fc.setApproveButtonMnemonic(KeyEvent.VK_S);
        fc.setMultiSelectionEnabled(false);
        int state = fc.showOpenDialog(null);
        if (state == JFileChooser.APPROVE_OPTION
            && JOptionPane
                .showOptionDialog(
                    mainDialog,
                    "<html>M�chten Sie das Bild wirklich �ndern?<br>"
                        + "Dieser Vorgang ist nicht mehr r�ckg�ngig zu machen.</html>",
                    "Bild �ndern",
                    JOptionPane.YES_NO_CANCEL_OPTION,
                    JOptionPane.QUESTION_MESSAGE, null,
                    null, null) == 0) {
          try {
            pers.setFoto(ImageIO.read(new File(fc.getSelectedFile()
                .getAbsolutePath())), true);
          } catch (InstantiationException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          } catch (IllegalAccessException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          } catch (ClassNotFoundException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          } catch (SQLException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          } catch (IOException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          } catch (FormatException e) {
            JOptionPane.showMessageDialog(mainDialog, e.getMessage(),
                "Fehler", JOptionPane.WARNING_MESSAGE);
          }
          try {
            foto = pers.getFoto();
            labFoto.setIcon(new ImageIcon(foto));
            labFoto.updateUI();
            labFoto.repaint();
          } catch (InstantiationException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          } catch (IllegalAccessException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          } catch (ClassNotFoundException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          } catch (SQLException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          } catch (IOException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          } catch (FormatException e) {
            JOptionPane.showMessageDialog(mainDialog, e.getMessage(),
                "Fehler", JOptionPane.WARNING_MESSAGE);
          }
        }
      }
    });

    neu.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent e) {
        neu();
      }
    });

    bearb.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent arg0) {
        bearb();
      }
    });

    save.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent arg0) {
        if (JOptionPane.showOptionDialog(mainDialog,
            "<html>M�chten Sie wirklich Speichern?" + "</html>",
            "Auto-Vervollst�ndigung",
            JOptionPane.YES_NO_CANCEL_OPTION,
            JOptionPane.QUESTION_MESSAGE, null, null, null) == 0) {
          try {
            pers.storeToDB();
            if(status == Status.BEARBEITEN || status == Status.NEU){
              kbf.removeKeyEventDispatcher(EventDispatcher);
              mainDialog.dispose();
              GehaltTreeTable.tableUpdate();
            }
            cancel.setText("Schlie�en");
            lastPersID = pers.getPersID();
            cbAnrede.setEnabled(false);
            tfNachname.setEnabled(false);
            tfVorname.setEnabled(false);
            tfStrasse.setEnabled(false);
            tfPostleitzahl.setEnabled(false);
            tfTele.setEnabled(false);
            dpGebDat.setEditable(false);
            dpGebDat.setEnabled(false);
            spKinder.setEnabled(false);
            spGehBrutto.setEnabled(false);
            spSonstBezug.setEnabled(false);
            spSonstAbzug.setEnabled(false);
            spLSt.setEnabled(false);
            cbReligion.setEnabled(false);
            cbKrKasse.setEnabled(false);
            spKiSt.setEnabled(false);
            spSoli.setEnabled(false);
            save.setEnabled(false);
            btnVor.setEnabled(true);
            btnZurueck.setEnabled(true);
            tfAktID.setEnabled(true);
            if (!neu.isEnabled()) {
              neu.setEnabled(true);
            }
            if (!bearb.isEnabled()) {
              bearb.setEnabled(true);
            }
            if (!delete.isEnabled()) {
              delete.setEnabled(true);
            }
            setIdList();
            tfAktID.setText("" + pers.getPersID());
          } catch (SQLException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          } catch (InstantiationException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          } catch (IllegalAccessException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          } catch (ClassNotFoundException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          } catch (FormatException e) {
            JOptionPane.showMessageDialog(mainDialog, e.getMessage(),
                "Formatfehler", JOptionPane.WARNING_MESSAGE);
          } catch (IOException e) {

            e.printStackTrace();
            JOptionPane.showMessageDialog(mainDialog,

            e.getMessage() + System.getProperty("line.separator")
                + "Dies ist ein schwerwiegender Fehler."
                + System.getProperty("line.separator")
                + "Das Programm wird beendet.", "Fehler",
                JOptionPane.WARNING_MESSAGE);
            System.exit(1);

          }
        }
      }
    });

    delete.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent e) {
        delete();
      }
    });

    cancel.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent e) {
        if (!neu.isEnabled() && !bearb.isEnabled()
            && !delete.isEnabled() && pers.getPersID() != 0) {
          if (JOptionPane
              .showOptionDialog(
                  mainDialog,
                  "<html>Achtung, alle �nderungen werden verworfen. :<br>"
                      + "M�chten Sie wirklich fortfahren?</html>",
                  "Abbrechen", JOptionPane.YES_NO_OPTION,
                  JOptionPane.QUESTION_MESSAGE, null, null,
                  null) == 0) {
            if(status == Status.BEARBEITEN){
              kbf.removeKeyEventDispatcher(EventDispatcher);
              mainDialog.dispose();
            }
            cancel.setText("Schlie�en");
            cbAnrede.setEnabled(false);
            tfNachname.setEnabled(false);
            tfVorname.setEnabled(false);
            tfStrasse.setEnabled(false);
            tfPostleitzahl.setEnabled(false);
            tfTele.setEnabled(false);
            dpGebDat.setEditable(false);
            dpGebDat.setEnabled(false);
            spKinder.setEnabled(false);
            spGehBrutto.setEnabled(false);
            spSonstBezug.setEnabled(false);
            spSonstAbzug.setEnabled(false);
            spLSt.setEnabled(false);
            cbReligion.setEnabled(false);
            cbKrKasse.setEnabled(false);
            spKiSt.setEnabled(false);
            spSoli.setEnabled(false);
            save.setEnabled(false);
            btnVor.setEnabled(true);
            btnZurueck.setEnabled(true);
            tfAktID.setEnabled(true);
            if (!neu.isEnabled()) {
              neu.setEnabled(true);
            }
            if (!bearb.isEnabled()) {
              bearb.setEnabled(true);
            }
            if (!delete.isEnabled()) {
              delete.setEnabled(true);
            }
            try {
              initialNeu = true;
              pers = new Person(pers.getPersID());
              cbAnrede.setSelectedItem(pers.getAnrede());
              tfNachname.setText(pers.getNachname());
              tfVorname.setText(pers.getVorname());
              tfStrasse.setText(pers.getStrasse());
              plzID = pers.getPlzID();
              tfTele.setText(pers.getTele());
              dpGebDat.setDate(pers.getGebDat());
              foto = pers.getFoto();
              spKinder.setValue(pers.getKinder());
              religionID = pers.getReligionID();
              spGehBrutto.setValue(pers.getGehBrutto());
              spLSt.setValue(pers.getLst());
              spKiSt.setValue(pers.getKiSt());
              spSoli.setValue(pers.getSoli());
              krKasseID = pers.getKrKasseID();
              spSonstBezug.setValue(pers.getSonstBezug());
              spSonstAbzug.setValue(pers.getSonstAbzug());
              setReligionenChange();
              setKrankenkasseChange();
              setPlzOrtBdl();
              tfAktID.setText("" + pers.getPersID());
              initialNeu = false;
            } catch (InstantiationException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (IllegalAccessException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (ClassNotFoundException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (SQLException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (IOException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (FormatException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            }
            spKiSt.setEnabled(false);
          }
        } else if (!neu.isEnabled() && !bearb.isEnabled()
            && !delete.isEnabled() && pers.getPersID() == 0) {
          if (JOptionPane
              .showOptionDialog(
                  mainDialog,
                  "<html>Achtung, alle �nderungen werden verworfen. :<br>"
                      + "M�chten Sie wirklich fortfahren?</html>",
                  "Abbrechen", JOptionPane.YES_NO_OPTION,
                  JOptionPane.QUESTION_MESSAGE, null, null,
                  null) == 0) {
            if(status == Status.NEU){
              kbf.removeKeyEventDispatcher(EventDispatcher);
              mainDialog.dispose();
            }
            cancel.setText("Schlie�en");
            cbAnrede.setEnabled(false);
            tfNachname.setEnabled(false);
            tfVorname.setEnabled(false);
            tfStrasse.setEnabled(false);
            tfPostleitzahl.setEnabled(false);
            tfTele.setEnabled(false);
            dpGebDat.setEditable(false);
            dpGebDat.setEnabled(false);
            spKinder.setEnabled(false);
            spGehBrutto.setEnabled(false);
            spSonstBezug.setEnabled(false);
            spSonstAbzug.setEnabled(false);
            spLSt.setEnabled(false);
            cbReligion.setEnabled(false);
            cbKrKasse.setEnabled(false);
            spKiSt.setEnabled(false);
            spSoli.setEnabled(false);
            save.setEnabled(false);
            btnVor.setEnabled(true);
            btnZurueck.setEnabled(true);
            tfAktID.setEnabled(true);
            if (!neu.isEnabled()) {
              neu.setEnabled(true);
            }
            if (!bearb.isEnabled()) {
              bearb.setEnabled(true);
            }
            if (!delete.isEnabled()) {
              delete.setEnabled(true);
            }
            try {
              initialNeu = true;
              pers = new Person(lastPersID);
              cbAnrede.setSelectedItem(pers.getAnrede());
              tfNachname.setText(pers.getNachname());
              tfVorname.setText(pers.getVorname());
              tfStrasse.setText(pers.getStrasse());
              plzID = pers.getPlzID();
              tfTele.setText(pers.getTele());
              dpGebDat.setDate(pers.getGebDat());
              foto = pers.getFoto();
              labFoto.setIcon(new ImageIcon(foto));
              spKinder.setValue(pers.getKinder());
              religionID = pers.getReligionID();
              spGehBrutto.setValue(pers.getGehBrutto());
              spLSt.setValue(pers.getLst());
              spKiSt.setValue(pers.getKiSt());
              spSoli.setValue(pers.getSoli());
              krKasseID = pers.getKrKasseID();
              spSonstBezug.setValue(pers.getSonstBezug());
              spSonstAbzug.setValue(pers.getSonstAbzug());
              setReligionenChange();
              setKrankenkasseChange();
              setPlzOrtBdl();
              if (pers.getLoeschDat() != null) {
                upload.setEnabled(false);
                bearb.setEnabled(false);
                delete.setEnabled(false);
                geloeschterMitarbeiter.setVisible(true);
                labStatus.setText("gel�schter Mitarbeiter");
              }
              spKiSt.setEnabled(false);
              tfAktID.setText("" + pers.getPersID());
              initialNeu = false;
            } catch (InstantiationException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (IllegalAccessException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (ClassNotFoundException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (SQLException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (IOException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            } catch (FormatException e1) {

              e1.printStackTrace();
              JOptionPane.showMessageDialog(
                  mainDialog,

                  e1.getMessage()
                      + System.getProperty("line.separator")
                      + "Dies ist ein schwerwiegender Fehler."
                      + System.getProperty("line.separator")
                      + "Das Programm wird beendet.",
                  "Fehler", JOptionPane.WARNING_MESSAGE);
              System.exit(1);

            }
            spKiSt.setEnabled(false);
          }
        } else {
          kbf.removeKeyEventDispatcher(EventDispatcher);
          mainDialog.dispose();
        }
        mainDialog.pack();
        mainDialog.repaint();
      }
    });

    btnVor.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent arg0) {
        if (!aktIDFormfehler) {
          boolean changed = false;
          int aktID = Integer.parseInt(tfAktID.getText());
          int i = -1;
          do {
            i++;
            if (persList.get(i).getPersID() == aktID) {
              do {
                i++;
                if (i >= persList.size()) {
                  i = 0;
                }
                if (persList.get(i).getLoeschDat() == null) {
                  try {
                    setAktID(persList.get(i).getPersID());
                    tfAktID.setText("" + pers.getPersID());
                    changed = true;
                  } catch (InstantiationException e) {

                    e.printStackTrace();
                    JOptionPane.showMessageDialog(
                        mainDialog,

                        e.getMessage()
                            + System.getProperty("line.separator")
                            + "Dies ist ein schwerwiegender Fehler."
                            + System.getProperty("line.separator")
                            + "Das Programm wird beendet.",
                        "Fehler",
                        JOptionPane.WARNING_MESSAGE);
                    System.exit(1);

                  } catch (IllegalAccessException e) {

                    e.printStackTrace();
                    JOptionPane.showMessageDialog(
                        mainDialog,

                        e.getMessage()
                            + System.getProperty("line.separator")
                            + "Dies ist ein schwerwiegender Fehler."
                            + System.getProperty("line.separator")
                            + "Das Programm wird beendet.",
                        "Fehler",
                        JOptionPane.WARNING_MESSAGE);
                    System.exit(1);

                  } catch (ClassNotFoundException e) {

                    e.printStackTrace();
                    JOptionPane.showMessageDialog(
                        mainDialog,

                        e.getMessage()
                            + System.getProperty("line.separator")
                            + "Dies ist ein schwerwiegender Fehler."
                            + System.getProperty("line.separator")
                            + "Das Programm wird beendet.",
                        "Fehler",
                        JOptionPane.WARNING_MESSAGE);
                    System.exit(1);

                  } catch (SQLException e) {

                    e.printStackTrace();
                    JOptionPane.showMessageDialog(
                        mainDialog,
                        e.getMessage()
                            + System.getProperty("line.separator")
                            + "Dies ist ein schwerwiegender Fehler."
                            + System.getProperty("line.separator")
                            + "Das Programm wird beendet.",
                        "Fehler",
                        JOptionPane.WARNING_MESSAGE);
                    System.exit(1);

                  } catch (IOException e) {

                    e.printStackTrace();
                    JOptionPane.showMessageDialog(
                        mainDialog,

                        e.getMessage()
                            + System.getProperty("line.separator")
                            + "Dies ist ein schwerwiegender Fehler."
                            + System.getProperty("line.separator")
                            + "Das Programm wird beendet.",
                        "Fehler",
                        JOptionPane.WARNING_MESSAGE);
                    System.exit(1);

                  } catch (FormatException e) {

                    e.printStackTrace();
                    JOptionPane.showMessageDialog(
                        mainDialog,

                        e.getMessage()
                            + System.getProperty("line.separator")
                            + "Dies ist ein schwerwiegender Fehler."
                            + System.getProperty("line.separator")
                            + "Das Programm wird beendet.",
                        "Fehler",
                        JOptionPane.WARNING_MESSAGE);
                    System.exit(1);

                  }
                }
              } while (!changed);
            }
          } while (!changed);
        } else {
          aktIDFormfehler = false;
        }
      }
    });

    btnZurueck.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent e) {
        if (!aktIDFormfehler) {
          boolean changed = false;
          int aktID = Integer.parseInt(tfAktID.getText());
          int i = persList.size();
          do {
            i--;
            if (persList.get(i).getPersID() == aktID) {
              do {
                i--;
                if (i < 0) {
                  i = persList.size() - 1;
                }
                if (persList.get(i).getLoeschDat() == null) {
                  try {
                    setAktID(persList.get(i).getPersID());
                    tfAktID.setText("" + pers.getPersID());
                    changed = true;
                  } catch (InstantiationException e1) {

                    e1.printStackTrace();
                    JOptionPane.showMessageDialog(
                        mainDialog,

                        e1.getMessage()
                            + System.getProperty("line.separator")
                            + "Dies ist ein schwerwiegender Fehler."
                            + System.getProperty("line.separator")
                            + "Das Programm wird beendet.",
                        "Fehler",
                        JOptionPane.WARNING_MESSAGE);
                    System.exit(1);

                  } catch (IllegalAccessException e1) {

                    e1.printStackTrace();
                    JOptionPane.showMessageDialog(
                        mainDialog,

                        e1.getMessage()
                            + System.getProperty("line.separator")
                            + "Dies ist ein schwerwiegender Fehler."
                            + System.getProperty("line.separator")
                            + "Das Programm wird beendet.",
                        "Fehler",
                        JOptionPane.WARNING_MESSAGE);
                    System.exit(1);

                  } catch (ClassNotFoundException e1) {

                    e1.printStackTrace();
                    JOptionPane.showMessageDialog(
                        mainDialog,

                        e1.getMessage()
                            + System.getProperty("line.separator")
                            + "Dies ist ein schwerwiegender Fehler."
                            + System.getProperty("line.separator")
                            + "Das Programm wird beendet.",
                        "Fehler",
                        JOptionPane.WARNING_MESSAGE);
                    System.exit(1);

                  } catch (SQLException e1) {

                    e1.printStackTrace();
                    JOptionPane.showMessageDialog(
                        mainDialog,

                        e1.getMessage()
                            + System.getProperty("line.separator")
                            + "Dies ist ein schwerwiegender Fehler."
                            + System.getProperty("line.separator")
                            + "Das Programm wird beendet.",
                        "Fehler",
                        JOptionPane.WARNING_MESSAGE);
                    System.exit(1);

                  } catch (IOException e1) {

                    e1.printStackTrace();
                    JOptionPane.showMessageDialog(
                        mainDialog,

                        e1.getMessage()
                            + System.getProperty("line.separator")
                            + "Dies ist ein schwerwiegender Fehler."
                            + System.getProperty("line.separator")
                            + "Das Programm wird beendet.",
                        "Fehler",
                        JOptionPane.WARNING_MESSAGE);
                    System.exit(1);

                  } catch (FormatException e1) {

                    JOptionPane.showMessageDialog(
                        mainDialog,

                        e1.getMessage()
                            + System.getProperty("line.separator")
                            + "Dies ist ein schwerwiegender Fehler."
                            + System.getProperty("line.separator")
                            + "Das Programm wird beendet.",
                        "Fehler",
                        JOptionPane.WARNING_MESSAGE);
                    System.exit(1);

                  }
                }
              } while (!changed);
            }
          } while (!changed);
        } else {
          aktIDFormfehler = false;
        }
      }
    });

    tfAktID.addActionListener(new ActionListener() {

      @Override
      public void actionPerformed(ActionEvent e) {
        try {
          aktIDFehler = false;
          if (tfAktID.getText().matches("[1-9][0-9]*")) {
            setAktID(Integer.parseInt(tfAktID.getText()));
          } else {
            JOptionPane
                .showMessageDialog(
                    mainDialog,
                    "<html>Eingabefehler, keine g�ltige Zahl.</html>",
                    "Fehler", JOptionPane.WARNING_MESSAGE);
            tfAktID.setText("" + pers.getPersID());
            aktIDFormfehler = true;
          }
        } catch (NumberFormatException e1) {

          e1.printStackTrace();
          JOptionPane.showMessageDialog(
              mainDialog,

              e1.getMessage()
                  + System.getProperty("line.separator")
                  + "Dies ist ein schwerwiegender Fehler."
                  + System.getProperty("line.separator")
                  + "Das Programm wird beendet.", "Fehler",
              JOptionPane.WARNING_MESSAGE);
          System.exit(1);

        } catch (InstantiationException e1) {

          e1.printStackTrace();
          JOptionPane.showMessageDialog(
              mainDialog,

              e1.getMessage()
                  + System.getProperty("line.separator")
                  + "Dies ist ein schwerwiegender Fehler."
                  + System.getProperty("line.separator")
                  + "Das Programm wird beendet.", "Fehler",
              JOptionPane.WARNING_MESSAGE);
          System.exit(1);

        } catch (IllegalAccessException e1) {

          e1.printStackTrace();
          JOptionPane.showMessageDialog(
              mainDialog,

              e1.getMessage()
                  + System.getProperty("line.separator")
                  + "Dies ist ein schwerwiegender Fehler."
                  + System.getProperty("line.separator")
                  + "Das Programm wird beendet.", "Fehler",
              JOptionPane.WARNING_MESSAGE);
          System.exit(1);

        } catch (ClassNotFoundException e1) {

          e1.printStackTrace();
          JOptionPane.showMessageDialog(
              mainDialog,

              e1.getMessage()
                  + System.getProperty("line.separator")
                  + "Dies ist ein schwerwiegender Fehler."
                  + System.getProperty("line.separator")
                  + "Das Programm wird beendet.", "Fehler",
              JOptionPane.WARNING_MESSAGE);
          System.exit(1);

        } catch (SQLException e1) {

          e1.printStackTrace();
          JOptionPane.showMessageDialog(
              mainDialog,

              e1.getMessage()
                  + System.getProperty("line.separator")
                  + "Dies ist ein schwerwiegender Fehler."
                  + System.getProperty("line.separator")
                  + "Das Programm wird beendet.", "Fehler",
              JOptionPane.WARNING_MESSAGE);
          System.exit(1);

        } catch (IOException e1) {

          e1.printStackTrace();
          JOptionPane.showMessageDialog(
              mainDialog,

              e1.getMessage()
                  + System.getProperty("line.separator")
                  + "Dies ist ein schwerwiegender Fehler."
                  + System.getProperty("line.separator")
                  + "Das Programm wird beendet.", "Fehler",
              JOptionPane.WARNING_MESSAGE);
          System.exit(1);

        } catch (FormatException e1) {

          JOptionPane.showMessageDialog(
              mainDialog,

              e1.getMessage()
                  + System.getProperty("line.separator")
                  + "Dies ist ein schwerwiegender Fehler."
                  + System.getProperty("line.separator")
                  + "Das Programm wird beendet.", "Fehler",
              JOptionPane.WARNING_MESSAGE);
          System.exit(1);

        }
      }
    });

    tfAktID.addFocusListener(new FocusAdapter() {

      @Override
      public void focusLost(FocusEvent arg0) {
        try {
          if (!aktIDFehler) {
            if (tfAktID.getText().matches("[1-9][0-9]*")) {
              setAktID(Integer.parseInt(tfAktID.getText()));
            } else {
              tfAktID.setText("" + pers.getPersID());
              JOptionPane
                  .showMessageDialog(
                      mainDialog,
                      "<html>Eingabefehler, keine g�ltige Zahl.</html>",
                      "Fehler",
                      JOptionPane.WARNING_MESSAGE);

              tfAktID.setText("" + pers.getPersID());
              aktIDFormfehler = true;
            }
          } else {
            aktIDFehler = false;
          }
        } catch (NumberFormatException e) {

          e.printStackTrace();
          JOptionPane.showMessageDialog(
              mainDialog,

              e.getMessage()
                  + System.getProperty("line.separator")
                  + "Dies ist ein schwerwiegender Fehler."
                  + System.getProperty("line.separator")
                  + "Das Programm wird beendet.", "Fehler",
              JOptionPane.WARNING_MESSAGE);
          System.exit(1);

        } catch (InstantiationException e) {

          e.printStackTrace();
          JOptionPane.showMessageDialog(
              mainDialog,

              e.getMessage()
                  + System.getProperty("line.separator")
                  + "Dies ist ein schwerwiegender Fehler."
                  + System.getProperty("line.separator")
                  + "Das Programm wird beendet.", "Fehler",
              JOptionPane.WARNING_MESSAGE);
          System.exit(1);

        } catch (IllegalAccessException e) {

          e.printStackTrace();
          JOptionPane.showMessageDialog(
              mainDialog,

              e.getMessage()
                  + System.getProperty("line.separator")
                  + "Dies ist ein schwerwiegender Fehler."
                  + System.getProperty("line.separator")
                  + "Das Programm wird beendet.", "Fehler",
              JOptionPane.WARNING_MESSAGE);
          System.exit(1);

        } catch (ClassNotFoundException e) {

          e.printStackTrace();
          JOptionPane.showMessageDialog(
              mainDialog,

              e.getMessage()
                  + System.getProperty("line.separator")
                  + "Dies ist ein schwerwiegender Fehler."
                  + System.getProperty("line.separator")
                  + "Das Programm wird beendet.", "Fehler",
              JOptionPane.WARNING_MESSAGE);
          System.exit(1);

        } catch (SQLException e) {

          e.printStackTrace();
          JOptionPane.showMessageDialog(
              mainDialog,

              e.getMessage()
                  + System.getProperty("line.separator")
                  + "Dies ist ein schwerwiegender Fehler."
                  + System.getProperty("line.separator")
                  + "Das Programm wird beendet.", "Fehler",
              JOptionPane.WARNING_MESSAGE);
          System.exit(1);

        } catch (IOException e) {

          e.printStackTrace();
          JOptionPane.showMessageDialog(
              mainDialog,

              e.getMessage()
                  + System.getProperty("line.separator")
                  + "Dies ist ein schwerwiegender Fehler."
                  + System.getProperty("line.separator")
                  + "Das Programm wird beendet.", "Fehler",
              JOptionPane.WARNING_MESSAGE);
          System.exit(1);

        } catch (FormatException e) {

          JOptionPane.showMessageDialog(
              mainDialog,

              e.getMessage()
                  + System.getProperty("line.separator")
                  + "Dies ist ein schwerwiegender Fehler."
                  + System.getProperty("line.separator")
                  + "Das Programm wird beendet.", "Fehler",
              JOptionPane.WARNING_MESSAGE);
          System.exit(1);

        }
      }
    });
   
    mainDialog.addWindowListener(new WindowAdapter() {
     
      @Override
      public void windowClosing(WindowEvent e) {
        if (!neu.isEnabled() && !bearb.isEnabled()
            && !delete.isEnabled() && pers.getPersID() != 0) {
          if (JOptionPane
              .showOptionDialog(
                  mainDialog,
                  "<html>Achtung, alle �nderungen werden verworfen. :<br>"
                      + "M�chten Sie wirklich fortfahren?</html>",
                  "Abbrechen", JOptionPane.YES_NO_OPTION,
                  JOptionPane.QUESTION_MESSAGE, null, null,
                  null) == 0) {
            kbf.removeKeyEventDispatcher(EventDispatcher);
            mainDialog.dispose();
          }
        } else if (!neu.isEnabled() && !bearb.isEnabled()
            && !delete.isEnabled() && pers.getPersID() == 0) {
          if (JOptionPane
              .showOptionDialog(
                  mainDialog,
                  "<html>Achtung, alle �nderungen werden verworfen. :<br>"
                      + "M�chten Sie wirklich fortfahren?</html>",
                  "Abbrechen", JOptionPane.YES_NO_OPTION,
                  JOptionPane.QUESTION_MESSAGE, null, null,
                  null) == 0) {
            kbf.removeKeyEventDispatcher(EventDispatcher);
            mainDialog.dispose();
          }
        } else {
          kbf.removeKeyEventDispatcher(EventDispatcher);
          mainDialog.dispose();
        }
      }
     
      @Override
      public void windowClosed(WindowEvent e) {
        GehaltTreeTable.tableUpdate();
      }
    });
    mainDialog.pack();
    mainDialog.setAlwaysOnTop(true);
   
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (int) dim.getWidth() - 506;
    int y = (int) dim.getHeight() - 513;
    x = x / 2;
    y = y / 2;
    mainDialog.setLocation(x, y);
   
    if(status != Status.LOESCHEN){
      mainDialog.setVisible(true);
    }else{
      kbf.removeKeyEventDispatcher(EventDispatcher);
      mainDialog.dispose();
    }
   
   
  }

  public static void setTfUhrzeit(String zeit) {
    labUhrzeit.setText(zeit);
  }

  private void setReligionenInitial() {
    try {
      Statement stmt = DataMgr.getInstance().getStatement();
      String statement = "SELECT * FROM religion";
      ResultSet rs = stmt.executeQuery(statement);
      Religion relStart = new Religion(-1, "Bitte Konfession w�hlen", 0);
      int religionID = 0;
      cbReligion.addItem(relStart);
      while (rs.next()) {
        Religion rel = new Religion(rs.getInt(1), rs.getString(2),
            rs.getInt(3));
        cbReligion.addItem(rel);
        if (this.religionID != 0 && this.religionID == rs.getInt(1)) {
          religionID = cbReligion.getItemCount() - 1;
          cbReligion.setSelectedIndex(religionID);
        }
      }
    } catch (InstantiationException e) {

      e.printStackTrace();
      JOptionPane.showMessageDialog(
          mainDialog,

          e.getMessage() + System.getProperty("line.separator")
              + "Dies ist ein schwerwiegender Fehler."
              + System.getProperty("line.separator")
              + "Das Programm wird beendet.", "Fehler",
          JOptionPane.WARNING_MESSAGE);
      System.exit(1);

    } catch (IllegalAccessException e) {

      e.printStackTrace();
      JOptionPane.showMessageDialog(
          mainDialog,

          e.getMessage() + System.getProperty("line.separator")
              + "Dies ist ein schwerwiegender Fehler."
              + System.getProperty("line.separator")
              + "Das Programm wird beendet.", "Fehler",
          JOptionPane.WARNING_MESSAGE);
      System.exit(1);

    } catch (ClassNotFoundException e) {

      e.printStackTrace();
      JOptionPane.showMessageDialog(
          mainDialog,

          e.getMessage() + System.getProperty("line.separator")
              + "Dies ist ein schwerwiegender Fehler."
              + System.getProperty("line.separator")
              + "Das Programm wird beendet.", "Fehler",
          JOptionPane.WARNING_MESSAGE);
      System.exit(1);

    } catch (SQLException e) {

      e.printStackTrace();
      JOptionPane.showMessageDialog(
          mainDialog,

          e.getMessage() + System.getProperty("line.separator")
              + "Dies ist ein schwerwiegender Fehler."
              + System.getProperty("line.separator")
              + "Das Programm wird beendet.", "Fehler",
          JOptionPane.WARNING_MESSAGE);
      System.exit(1);

    }
  }

  private void setReligionenChange() {
    initialNeu = true;
    cbReligion.setSelectedIndex(0);
    Religion rel = null;
    int i;
    for (i = 0; i < cbReligion.getItemCount(); i++) {
      rel = (Religion) cbReligion.getItemAt(i);
      if (rel.getReligionID() == pers.getReligionID()) {
        cbReligion.setSelectedIndex(i);
      }
    }
    initialNeu = false;
  }

  private void setKrankenkasseInitial() {
    try {
      Statement stmt = DataMgr.getInstance().getStatement();
      String statement = "SELECT * FROM krankenkasse";
      ResultSet rs = stmt.executeQuery(statement);
      Krankenkasse krStart = new Krankenkasse(-1,
          "Bitte Krankenkasse w�hlen", 0.0);
      cbKrKasse.addItem(krStart);
      int krKasseID = 0;
      while (rs.next()) {
        Krankenkasse krKasse = new Krankenkasse(rs.getInt(1),
            rs.getString(2), rs.getDouble(3));
        cbKrKasse.addItem(krKasse);
        if (this.krKasseID != 0 && this.krKasseID == rs.getInt(1)) {
          krKasseID = cbKrKasse.getItemCount() - 1;
          cbKrKasse.setSelectedIndex(krKasseID);
        }
      }
    } catch (InstantiationException e) {

      e.printStackTrace();
      JOptionPane.showMessageDialog(
          mainDialog,

          e.getMessage() + System.getProperty("line.separator")
              + "Dies ist ein schwerwiegender Fehler."
              + System.getProperty("line.separator")
              + "Das Programm wird beendet.", "Fehler",
          JOptionPane.WARNING_MESSAGE);
      System.exit(1);

    } catch (IllegalAccessException e) {

      e.printStackTrace();
      JOptionPane.showMessageDialog(
          mainDialog,

          e.getMessage() + System.getProperty("line.separator")
              + "Dies ist ein schwerwiegender Fehler."
              + System.getProperty("line.separator")
              + "Das Programm wird beendet.", "Fehler",
          JOptionPane.WARNING_MESSAGE);
      System.exit(1);

    } catch (ClassNotFoundException e) {

      e.printStackTrace();
      JOptionPane.showMessageDialog(
          mainDialog,

          e.getMessage() + System.getProperty("line.separator")
              + "Dies ist ein schwerwiegender Fehler."
              + System.getProperty("line.separator")
              + "Das Programm wird beendet.", "Fehler",
          JOptionPane.WARNING_MESSAGE);
      System.exit(1);

    } catch (SQLException e) {

      e.printStackTrace();
      JOptionPane.showMessageDialog(
          mainDialog,

          e.getMessage() + System.getProperty("line.separator")
              + "Dies ist ein schwerwiegender Fehler."
              + System.getProperty("line.separator")
              + "Das Programm wird beendet.", "Fehler",
          JOptionPane.WARNING_MESSAGE);
      System.exit(1);

    }
  }

  private void setKrankenkasseChange() {
    initialNeu = true;
    cbKrKasse.setSelectedIndex(0);
    Krankenkasse krKasse = null;
    int i;
    for (i = 0; i < cbKrKasse.getItemCount(); i++) {
      krKasse = (Krankenkasse) cbKrKasse.getItemAt(i);
      if (krKasse.getKrKasseID() == pers.getKrKasseID()) {
        cbKrKasse.setSelectedIndex(i);
      }
    }
    initialNeu = false;
  }

  public int getPlzID() {
    return plzID;
  }

  private void setGebDatLimits() {
    // Kalenderbegrenzung
    Calendar now = Calendar.getInstance(), calB = Calendar.getInstance(), calE = Calendar
        .getInstance();
    DefaultDateSelectionModel dsm = new DefaultDateSelectionModel();
    calB.add(Calendar.MONTH, -1200);
    dsm.setLowerBound(calB.getTime());
    dsm.setUpperBound(calE.getTime());
    JXMonthView mv = new JXMonthView(new Date(), dsm, null);
    // mv.setPreferredRows(1);
    // mv.setPreferredCols(2);
    mv.setTraversable(true);
    dpGebDat.setDate(now.getTime());
    dpGebDat.setMonthView(mv);
  }

  private void setPlzOrtBdl() throws InstantiationException,
      IllegalAccessException, ClassNotFoundException, SQLException {
    ResultSet rs = DataMgr
        .getInstance()
        .getResultSet(
            "SELECT `plz_ort_vorwahl`.`Ort`, `plz_ort_vorwahl`.`Zusatz`," +
            "`plz_ort_vorwahl`.`Plz`, `bundeslaender`.`Name`, `bundeslaender`.`Soli` "
                + "FROM `plz_ort_vorwahl` INNER JOIN `bundeslaender` " +
                "ON (`plz_ort_vorwahl`.`BLID` = `bundeslaender`.`BLID`)"
                + "WHERE PlzID LIKE '" + plzID + "'");
    if (rs.next()) {
      tfOrt.setText(rs.getString(1) + " " + rs.getString(2));
      tfPostleitzahl.setText(rs.getString(3));
      plzLength = tfPostleitzahl.getText().length();
      tfBDL.setText(rs.getString(4));
      soli = rs.getInt(5);
    }
  }

  private void setIdList() throws InstantiationException,
      IllegalAccessException, ClassNotFoundException, SQLException,
      IOException, FormatException {
    persList = new ArrayList<Person>();
    ResultSet rs = DataMgr.getInstance().getResultSet(
        "SELECT `PersID` FROM `Personen` ORDER BY `PersID` ASC");
    while (rs.next()) {
      persList.add(new Person(rs.getInt(1)));
    }
  }

  private void setAktID(int id) throws InstantiationException,
      IllegalAccessException, ClassNotFoundException, SQLException,
      IOException, FormatException {
    int i = -1;
    boolean changed = false;
    do {
      i++;
      if (persList.get(i).getPersID() == id) {
        initialNeu = true;
        changed = true;
        lastPersID = id;
        pers = new Person(lastPersID);
        cbAnrede.setSelectedItem(pers.getAnrede());
        tfNachname.setText(pers.getNachname());
        tfVorname.setText(pers.getVorname());
        tfStrasse.setText(pers.getStrasse());
        plzID = pers.getPlzID();
        tfTele.setText(pers.getTele());
        dpGebDat.setDate(pers.getGebDat());
        foto = pers.getFoto();
        labFoto.setIcon(new ImageIcon(foto));
        spKinder.setValue(pers.getKinder());
        religionID = pers.getReligionID();
        spGehBrutto.setValue(pers.getGehBrutto());
        spLSt.setValue(pers.getLst());
        spKiSt.setValue(pers.getKiSt());
        spSoli.setValue(pers.getSoli());
        krKasseID = pers.getKrKasseID();
        spSonstBezug.setValue(pers.getSonstBezug());
        spSonstAbzug.setValue(pers.getSonstAbzug());
        setReligionenChange();
        setKrankenkasseChange();
        setPlzOrtBdl();
        if (pers.getLoeschDat() != null) {
          upload.setEnabled(false);
          bearb.setEnabled(false);
          delete.setEnabled(false);
          geloeschterMitarbeiter.setVisible(true);
          labStatus.setText("gel�schter Mitarbeiter");
        } else {
          upload.setEnabled(true);
          bearb.setEnabled(true);
          delete.setEnabled(true);
          geloeschterMitarbeiter.setVisible(false);
          labStatus.setText(" ");
        }
        spKiSt.setEnabled(false);
        initialNeu = false;
      }
    } while (persList.get(i).getPersID() != id && i < persList.size() - 1);
    if (!changed) {
      aktIDFehler = true;
      JOptionPane.showMessageDialog(mainDialog,
          "<html>Mitarbeiternummer existiert nicht.</html>",
          "Fehler", JOptionPane.WARNING_MESSAGE);
      tfAktID.setText("" + lastPersID);
    }
  }
 
  public enum Status{
    ANZEIGEN, NEU, BEARBEITEN, LOESCHEN
  }
 
  private void bearb(){
    cancel.setText("Abbrechen");
    cbAnrede.setEnabled(true);
    tfNachname.setEnabled(true);
    tfVorname.setEnabled(true);
    tfStrasse.setEnabled(true);
    tfPostleitzahl.setEnabled(true);
    tfTele.setEnabled(true);
    dpGebDat.setEditable(true);
    dpGebDat.setEnabled(true);
    spKinder.setEnabled(true);
    spGehBrutto.setEnabled(true);
    spSonstBezug.setEnabled(true);
    spSonstAbzug.setEnabled(true);
    spLSt.setEnabled(true);
    cbReligion.setEnabled(true);
    cbKrKasse.setEnabled(true);
    save.setEnabled(true);
    bearb.setEnabled(false);
    neu.setEnabled(false);
    delete.setEnabled(false);
    btnVor.setEnabled(false);
    btnZurueck.setEnabled(false);
    tfAktID.setEnabled(false);
    Religion rel = (Religion) cbReligion.getSelectedItem();
    if (rel.getKiSt() == 1) {
      spKiSt.setEnabled(true);
    }
    if (soli == 1) {
      spSoli.setEnabled(true);
    }
    mainDialog.pack();
    mainDialog.repaint();
    tfNachname.requestFocus();
  }
 
  private void neu(){
    cancel.setText("Abbrechen");
    initialNeu = true;
    setGebDatLimits();
    pers = new Person();
    cbAnrede.setSelectedIndex(0);
    tfNachname.setText("");
    tfVorname.setText("");
    tfStrasse.setText("");
    plzID = 0;
    tfTele.setText("");
    dpGebDat.setDate(null);
    try {
      foto = pers.getFoto();
      labFoto.setIcon(new ImageIcon(foto));
    } catch (InstantiationException e1) {

      e1.printStackTrace();
      JOptionPane.showMessageDialog(
          mainDialog,

          e1.getMessage()
              + System.getProperty("line.separator")
              + "Dies ist ein schwerwiegender Fehler."
              + System.getProperty("line.separator")
              + "Das Programm wird beendet.", "Fehler",
          JOptionPane.WARNING_MESSAGE);
      System.exit(1);

    } catch (IllegalAccessException e1) {

      e1.printStackTrace();
      JOptionPane.showMessageDialog(
          mainDialog,

          e1.getMessage()
              + System.getProperty("line.separator")
              + "Dies ist ein schwerwiegender Fehler."
              + System.getProperty("line.separator")
              + "Das Programm wird beendet.", "Fehler",
          JOptionPane.WARNING_MESSAGE);
      System.exit(1);

    } catch (ClassNotFoundException e1) {

      e1.printStackTrace();
      JOptionPane.showMessageDialog(
          mainDialog,

          e1.getMessage()
              + System.getProperty("line.separator")
              + "Dies ist ein schwerwiegender Fehler."
              + System.getProperty("line.separator")
              + "Das Programm wird beendet.", "Fehler",
          JOptionPane.WARNING_MESSAGE);
      System.exit(1);

    } catch (SQLException e1) {

      e1.printStackTrace();
      JOptionPane.showMessageDialog(
          mainDialog,

          e1.getMessage()
              + System.getProperty("line.separator")
              + "Dies ist ein schwerwiegender Fehler."
              + System.getProperty("line.separator")
              + "Das Programm wird beendet.", "Fehler",
          JOptionPane.WARNING_MESSAGE);
      System.exit(1);

    } catch (IOException e1) {

      e1.printStackTrace();
      JOptionPane.showMessageDialog(
          mainDialog,

          e1.getMessage()
              + System.getProperty("line.separator")
              + "Dies ist ein schwerwiegender Fehler."
              + System.getProperty("line.separator")
              + "Das Programm wird beendet.", "Fehler",
          JOptionPane.WARNING_MESSAGE);
      System.exit(1);

    } catch (FormatException e1) {
      JOptionPane.showMessageDialog(mainDialog, e1.getMessage(),
          "Fehler", JOptionPane.WARNING_MESSAGE);
    }
    spKinder.setValue(0.0);
    cbReligion.setSelectedIndex(0);
    spGehBrutto.setValue(0.0);
    spLSt.setValue(0.0);
    spKiSt.setValue(0.0);
    spSoli.setValue(0.0);
    cbKrKasse.setSelectedIndex(0);
    spSonstBezug.setValue(0.0);
    spSonstAbzug.setValue(0.0);
    tfPostleitzahl.setText("");
    tfOrt.setText("");
    tfBDL.setText("");
    soli = 0;

    cbAnrede.setEnabled(true);
    tfNachname.setEnabled(true);
    tfVorname.setEnabled(true);
    tfStrasse.setEnabled(true);
    tfPostleitzahl.setEnabled(true);
    tfTele.setEnabled(true);
    dpGebDat.setEnabled(true);
    dpGebDat.setEditable(true);
    spKinder.setEnabled(true);
    spGehBrutto.setEnabled(true);
    spSonstBezug.setEnabled(true);
    spSonstAbzug.setEnabled(true);
    spLSt.setEnabled(true);
    cbReligion.setEnabled(true);
    cbKrKasse.setEnabled(true);
    save.setEnabled(true);
    neu.setEnabled(false);
    bearb.setEnabled(false);
    delete.setEnabled(false);
    tfAktID.setText("");
    btnVor.setEnabled(false);
    btnZurueck.setEnabled(false);
    tfAktID.setEnabled(false);

    if (geloeschterMitarbeiter.isVisible()) {
      upload.setEnabled(true);
      geloeschterMitarbeiter.setVisible(false);
      labStatus.setText(" ");
    }

    mainDialog.pack();
    mainDialog.repaint();
    initialNeu = false;
    cbAnrede.requestFocus();
  }
 
  private void delete(){

    if (bearb.isEnabled()
        && JOptionPane.showOptionDialog(mainDialog,
            "<html>M�chten Sie den Mitarbeiter l�schen?"
                + "</html>", "Auto-Vervollst�ndigung",
            JOptionPane.YES_NO_CANCEL_OPTION,
            JOptionPane.QUESTION_MESSAGE, null, null, null) == 0) {
      try {
        ResultSet rs = DataMgr.getInstance().getResultSet(
            "SELECT `Ort`, `Zusatz`, `Plz`"
                + "FROM `plz_ort_vorwahl`"
                + "WHERE PlzID LIKE '"
                + pers.getPlzID() + "'");
        if (rs.next()
            && JOptionPane
                .showOptionDialog(
                    mainDialog,
                    "<html>Sind Sie ganz sicher, dass Sie den Mitarbeiter:<br>"
                        + "&nbsp;&nbsp;&nbsp;"
                        + pers.getVorname()
                        + " "
                        + pers.getNachname()
                        + "<br>"
                        + "&nbsp;&nbsp;&nbsp;"
                        + pers.getStrasse()
                        + "<br>"
                        + "&nbsp;&nbsp;&nbsp;"
                        + rs.getString(3)
                        + " "
                        + rs.getString(1)
                        + " "
                        + rs.getString(2)
                        + "<br>"
                        + "&nbsp;&nbsp;&nbsp;Geburtsdatum: "
                        + gebDate.format(pers
                            .getGebDat())
                        + "<br>"
                        + "wirklich l�schen m�chten?"
                        + "</html>",
                    "Auto-Vervollst�ndigung",
                    JOptionPane.YES_NO_CANCEL_OPTION,
                    JOptionPane.QUESTION_MESSAGE,
                    null, null, null) == 0) {
          pers.setLoeschDat(new Date());
          pers.storeToDB();
          geloeschterMitarbeiter.setVisible(true);
          labStatus.setText("gel�schter Mitarbeiter");
         
          upload.setEnabled(false);
          bearb.setEnabled(false);
          delete.setEnabled(false);
          setIdList();
        } else {
          JOptionPane
              .showMessageDialog(
                  mainDialog,
                  "<html>Person wurde nicht gel�scht.</html>",
                  "Fehler",
                  JOptionPane.WARNING_MESSAGE);
        }
      } catch (InstantiationException e1) {

        e1.printStackTrace();
        JOptionPane.showMessageDialog(mainDialog,

        e1.getMessage() + System.getProperty("line.separator")
            + "Dies ist ein schwerwiegender Fehler."
            + System.getProperty("line.separator")
            + "Das Programm wird beendet.", "Fehler",
            JOptionPane.WARNING_MESSAGE);
        System.exit(1);

      } catch (IllegalAccessException e1) {

        e1.printStackTrace();
        JOptionPane.showMessageDialog(mainDialog,

        e1.getMessage() + System.getProperty("line.separator")
            + "Dies ist ein schwerwiegender Fehler."
            + System.getProperty("line.separator")
            + "Das Programm wird beendet.", "Fehler",
            JOptionPane.WARNING_MESSAGE);
        System.exit(1);

      } catch (ClassNotFoundException e1) {

        e1.printStackTrace();
        JOptionPane.showMessageDialog(mainDialog,

        e1.getMessage() + System.getProperty("line.separator")
            + "Dies ist ein schwerwiegender Fehler."
            + System.getProperty("line.separator")
            + "Das Programm wird beendet.", "Fehler",
            JOptionPane.WARNING_MESSAGE);
        System.exit(1);

      } catch (SQLException e1) {

        e1.printStackTrace();
        JOptionPane.showMessageDialog(mainDialog,

        e1.getMessage() + System.getProperty("line.separator")
            + "Dies ist ein schwerwiegender Fehler."
            + System.getProperty("line.separator")
            + "Das Programm wird beendet.", "Fehler",
            JOptionPane.WARNING_MESSAGE);
        System.exit(1);

      } catch (FormatException e1) {

        e1.printStackTrace();
        JOptionPane.showMessageDialog(mainDialog,

        e1.getMessage() + System.getProperty("line.separator")
            + "Dies ist ein schwerwiegender Fehler."
            + System.getProperty("line.separator")
            + "Das Programm wird beendet.", "Fehler",
            JOptionPane.WARNING_MESSAGE);
        System.exit(1);

      } catch (IOException e1) {

        e1.printStackTrace();
        JOptionPane.showMessageDialog(mainDialog,

        e1.getMessage() + System.getProperty("line.separator")
            + "Dies ist ein schwerwiegender Fehler."
            + System.getProperty("line.separator")
            + "Das Programm wird beendet.", "Fehler",
            JOptionPane.WARNING_MESSAGE);
        System.exit(1);

      }
    }
  }
}
TOP

Related Classes of AlMaGe.PersonModify

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.