Package AlMaGe

Source Code of AlMaGe.GehaltTreeTable

package AlMaGe;

import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.KeyEventDispatcher;
import java.awt.KeyboardFocusManager;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.Toolkit;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.sql.Date;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;

import javax.imageio.ImageIO;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.EtchedBorder;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;

import org.jdesktop.swingx.JXTreeTable;
import org.jdesktop.swingx.decorator.HighlighterFactory;

import com.itextpdf.text.DocumentException;

import AlMaGe.PersonModify.Status;
import AlMaGe.export.ExcelExport;
import AlMaGe.export.PDFExport;
import AlMaGe.export.ExcelExport.Zeitraum;
import AlMaGe.export.PDFExport.PDF;

@SuppressWarnings("serial")
public class GehaltTreeTable
{
  //ToolBar
  private String[] monatName = "Januar",
                  "Februar",
                  "M�rz",
                  "April",
                  "Mai",
                  "Juni",
                  "Juli",
                  "August",
                  "September",
                  "Oktober",
                  "November",
                  "Dezember"};
  private JToolBar toolBar = new JToolBar();
  private JToolBar datToolBar = new JToolBar();
  private static Calendar startCalendar = new GregorianCalendar(Calendar.getInstance().get(Calendar.YEAR)-1, Calendar.getInstance().get(Calendar.MONTH), Calendar.getInstance().get(Calendar.DAY_OF_MONTH));
  private JButton startZurueck = new JButton(new ImageIcon(GehaltTreeTable.class.getResource("/toolbarButtonGraphics/navigation/Back16.gif")));
  private JButton startYearMonth = new JButton(monatName[startCalendar.get(Calendar.MONTH)]+" "+startCalendar.get(Calendar.YEAR));
  private JPopupMenu startPopup = new JPopupMenu();
  private JButton startVor = new JButton(new ImageIcon(GehaltTreeTable.class.getResource("/toolbarButtonGraphics/navigation/Forward16.gif")));
  private static Calendar endCalendar = new GregorianCalendar();
  private JButton endZurueck = new JButton(new ImageIcon(GehaltTreeTable.class.getResource("/toolbarButtonGraphics/navigation/Back16.gif")));
  private JButton endYearMonth = new JButton(monatName[endCalendar.get(Calendar.MONTH)]+" "+endCalendar.get(Calendar.YEAR));
  private JPopupMenu endPopup = new JPopupMenu();
  private JButton endVor = new JButton(new ImageIcon(GehaltTreeTable.class.getResource("/toolbarButtonGraphics/navigation/Forward16.gif")));
  private Calendar endMaxCalendar = new GregorianCalendar();
  private Calendar startMinCalendar = new GregorianCalendar(Calendar.getInstance().get(Calendar.YEAR)-100, Calendar.getInstance().get(Calendar.MONTH), Calendar.getInstance().get(Calendar.DAY_OF_MONTH));
 
  private JButton startBtnVor = new JButton(">");
  private JButton startBtnZurueck = new JButton("<");
  private ArrayList<JButton> startMonBtn = new ArrayList<JButton>();
 
  private JButton endBtnZurueck = new JButton("<");
  private JButton endBtnVor = new JButton(">");
  private ArrayList<JButton> endMonBtn = new ArrayList<JButton>();
 
  private static JTextField tfSuche = new JTextField();
 
  //TrayIcon
  private TrayIcon trayIcon = new TrayIcon(Toolkit.getDefaultToolkit().getImage(GehaltTreeTable.class.getResource("/images/icons/16X16/tray.png")), "AlMaGe - Gehaltsabrechnung");
  private PopupMenu trayPopMenu = new PopupMenu();
  private boolean showInfo = true;
 
  private static GeTreeTableModelThread tableModelThread;
 
 
  //JFrame
  private static JFrame mainFrame = new JFrame();
 
  //TreeTable
  private static ArrayList<Integer> expandedTreeList = new ArrayList<Integer>();
 
  private static GeTreeTabelModel treeTableModel = new GeTreeTabelModel(new Date(startCalendar.getTimeInMillis()), new Date(endCalendar.getTimeInMillis()), "");
  static JXTreeTable treeTable = new JXTreeTable( treeTableModel ){
   
      public String getToolTipText(MouseEvent e) {
          String tip = null;
         
          java.awt.Point p = e.getPoint();
          int rowIndex = rowAtPoint(p);
          int colIndex = columnAtPoint(p);
          int realColumnIndex = convertColumnIndexToModel(colIndex);

          if (realColumnIndex == 0 && getValueAt(rowIndex, colIndex) != null && getValueAt(rowIndex, colIndex).getClass().getSimpleName().equals("MainTreeNode")) { //First column
            MainTreeNode node = (MainTreeNode)getValueAt(rowIndex, colIndex);
            tip = node.getTooltip();
          } else {
              tip = super.getToolTipText(e);
          }
          return tip;
      }
     
     
  };
 
  //Popup Men�
  JPopupMenu popMenu = new JPopupMenu();
 
  // Statusbar
  private JLabel labStatus = new JLabel(" ");
  private static JLabel labUhrzeit = new JLabel("      ");
  private JPanel statPanel = new JPanel();
 
  public GehaltTreeTable() throws AWTException
  {   
    //Highlighter
    treeTable.addHighlighter(HighlighterFactory.createAlternateStriping(new Color(255, 255, 255), new Color(230, 230, 230)));
   
    //Calendar for Toolbar
    startCalendar.set(startCalendar.get(Calendar.YEAR), startCalendar.get(Calendar.MONTH), startCalendar.getActualMinimum(Calendar.DAY_OF_MONTH), 0, 0, 0);
    endCalendar.set(endCalendar.get(Calendar.YEAR), endCalendar.get(Calendar.MONTH), endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH), 23, 59, 59);
    //ToolBar
    toolBar.addSeparator();
   
    Action anzeigen = new AbstractAction(
          "Anzeigen", setImageIcon("/images/icons/16X16/show_user.png")) {
               public void actionPerformed(ActionEvent e) {
                 if(treeTable.getSelectedRowCount() == 1 && treeTable.getValueAt(treeTable.getSelectedRow(), 0).getClass().getSimpleName().equals("MainTreeNode")){
                   MainTreeNode node = (MainTreeNode) treeTable.getValueAt(treeTable.getSelectedRow(), 0);
                   try {
                new PersonModify(null, node.getPersID(), Status.ANZEIGEN);
              } catch (InstantiationException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (IllegalAccessException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (ClassNotFoundException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (SQLException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (IOException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (FormatException e1) {

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

                    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);

                e1.printStackTrace();
              }
                 }else{
                   MainTreeNode node = (MainTreeNode) treeTable.getValueAt(0, 0);
                   try {
                new PersonModify(null, node.getPersID(), Status.ANZEIGEN);
              } catch (InstantiationException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (IllegalAccessException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (ClassNotFoundException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (SQLException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (IOException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (FormatException e1) {

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

                    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);

                e1.printStackTrace();
              }
                 }
                
               }
          };
    anzeigen.putValue(AbstractAction.SHORT_DESCRIPTION, "Anzeigen");
         
    toolBar.add(anzeigen);
   
    Action bearbeiten = new AbstractAction(
            "Bearbeiten", setImageIcon("/images/icons/16X16/edit_user.png")) {
                 public void actionPerformed(ActionEvent e) {
                   if(treeTable.getSelectedRowCount() == 1 && treeTable.getValueAt(treeTable.getSelectedRow(), 0).getClass().getSimpleName().equals("MainTreeNode")){
                     MainTreeNode node = (MainTreeNode) treeTable.getValueAt(treeTable.getSelectedRow(), 0);
                     if(!node.isDeleted()){
                       try {
                    new PersonModify(null, node.getPersID(), Status.BEARBEITEN);
                  } catch (InstantiationException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IllegalAccessException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (ClassNotFoundException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (SQLException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IOException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (FormatException e1) {

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

                        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);

                    e1.printStackTrace();
                  }
                    }else{
                       node = (MainTreeNode) treeTable.getValueAt(0, 0);
                       try {
                    new PersonModify(null, node.getPersID(), Status.ANZEIGEN);
                  } catch (InstantiationException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IllegalAccessException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (ClassNotFoundException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (SQLException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IOException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (FormatException e1) {

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

                        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);

                    e1.printStackTrace();
                  }
                    }
                   }else{
                     MainTreeNode node = (MainTreeNode) treeTable.getValueAt(0, 0);
                     try {
                  new PersonModify(null, node.getPersID(), Status.ANZEIGEN);
                } catch (InstantiationException e1) {

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

                      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);

                  e1.printStackTrace();
                } catch (IllegalAccessException e1) {

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

                      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);

                  e1.printStackTrace();
                } catch (ClassNotFoundException e1) {

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

                      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);

                  e1.printStackTrace();
                } catch (SQLException e1) {

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

                      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);

                  e1.printStackTrace();
                } catch (IOException e1) {

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

                      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);

                  e1.printStackTrace();
                } catch (FormatException e1) {

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

                      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);

                  e1.printStackTrace();
                }
                   }
                  
                 }
            };
    bearbeiten.putValue(AbstractAction.SHORT_DESCRIPTION, "Bearbeiten");
   
    toolBar.add(bearbeiten);
           
    Action loeschen = new AbstractAction(
          "L�schen", setImageIcon("/images/icons/16X16/delete_user.png")) {
               public void actionPerformed(ActionEvent e) {
                 if(treeTable.getSelectedRowCount() == 1 && treeTable.getValueAt(treeTable.getSelectedRow(), 0).getClass().getSimpleName().equals("MainTreeNode")){
                   MainTreeNode node = (MainTreeNode) treeTable.getValueAt(treeTable.getSelectedRow(), 0);
                   if(!node.isDeleted()){
                     try {
                  new PersonModify(null, node.getPersID(), Status.LOESCHEN);
                } catch (InstantiationException e1) {

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

                      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);

                  e1.printStackTrace();
                } catch (IllegalAccessException e1) {

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

                      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);

                  e1.printStackTrace();
                } catch (ClassNotFoundException e1) {

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

                      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);

                  e1.printStackTrace();
                } catch (SQLException e1) {

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

                      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);

                  e1.printStackTrace();
                } catch (IOException e1) {

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

                      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);

                  e1.printStackTrace();
                } catch (FormatException e1) {

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

                      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);

                  e1.printStackTrace();
                }
                  }else{
                    JOptionPane
                .showMessageDialog(
                    mainFrame,
                    "Eintrag wurde bereits gel�scht.",
                    "Fehler",
                    JOptionPane.INFORMATION_MESSAGE);
                  }
                 }else{
                JOptionPane
                .showMessageDialog(
                    mainFrame,
                    "Bitte einen Mitarbeiter ausw�hlen",
                    "Fehler",
                    JOptionPane.INFORMATION_MESSAGE);
                 }
                
               }
          };
    loeschen.putValue(AbstractAction.SHORT_DESCRIPTION, "L�schen");
       
    toolBar.add(loeschen);
   
    Action neu = new AbstractAction(
          "Neu", setImageIcon("/images/icons/16X16/add_user.png")) {
               public void actionPerformed(ActionEvent e) {
                   MainTreeNode node = (MainTreeNode) treeTable.getValueAt(0, 0);
                   try {
                new PersonModify(null, node.getPersID(), Status.NEU);
              } catch (InstantiationException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (IllegalAccessException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (ClassNotFoundException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (SQLException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (IOException e1) {

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

                    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);

                e1.printStackTrace();
              } catch (FormatException e1) {

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

                    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);

                e1.printStackTrace();
              }
               }
          };
         
    neu.putValue(AbstractAction.SHORT_DESCRIPTION, "Neu");
       
    toolBar.add(neu);
   
    toolBar.addSeparator();
   
    Action abrechnen = new AbstractAction(
          "Abrechnungen erstellen", setImageIcon("/images/icons/16X16/view_text.png")) {
               public void actionPerformed(ActionEvent e) {
                java.util.Date date = new java.util.Date();
               File file = new File("");
              SimpleDateFormat dfPayrolls = new SimpleDateFormat("dd.MM.yyyy");
              SimpleDateFormat dfPDF = new SimpleDateFormat("yyyy-MM-dd");
              JFileChooser fc = new JFileChooser();
              fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
              fc.setSelectedFile(file);
              fc.setFileHidingEnabled(true);
              fc.setApproveButtonText("Speichern");
              fc.setApproveButtonToolTipText("Speicherort f�r Abrechnungen auw�hlen.");
              fc.setApproveButtonMnemonic(KeyEvent.VK_S);
              fc.setMultiSelectionEnabled(false);
              int state = fc.showOpenDialog(null);
              if (state == JFileChooser.APPROVE_OPTION
                  && JOptionPane
                      .showOptionDialog(
                          null,
                          "<html><center>M�chten Sie Die Abrechnungen f�r alle Mitarbeiter<br>" +
                            "in dem Abrechnungszeitraum bis <br><br>" +
                            "<b>"+dfPayrolls.format(date)+"</center></b><br><br>" +
                            "Jetzt wirklich erstellen?<br><br>" +
                            "Dieser Vorgang ist nicht mehr r�ckg�ngig zu machen.<br><br>" +
                            "Die Abrechnungen werden unter folgender Datei gespeichert: <br><br><b>" +
                            fc.getSelectedFile().getAbsolutePath()+"\\"+dfPDF.format(date.getTime())+"_Gehaltsabrechnungen.pdf"+
                            "</b><br><br><center></html>",
                          "Abrechnungen erstellen",
                          JOptionPane.YES_NO_OPTION,
                          JOptionPane.WARNING_MESSAGE, null,
                          null, null) == 0){
                  String[] choices = {"Anzeigen", "Anzeigen & Drucken", "Drucken", "Nichts"};
                        int response = JOptionPane.showOptionDialog(
                                  null                       // Center in window.
                                , "<html><center>Was soll nach erfolgreichem Erstellen<br>" +
                                    "der Abrechnungen erfolgen?</center></html>"        // Message
                                , "Bitte w�hlen"               // Title in titlebar
                                , JOptionPane.YES_NO_OPTION  // Option type
                                , JOptionPane.QUESTION_MESSAGE  // messageType
                                , null                       // Icon (none)
                                , choices                    // Button text as above.
                                , "Anzeigen"    // Default button's label
                              );
                        switch (response) {
                          case 0:
                              try {
                    new CreatePayrolls(fc.getSelectedFile().getAbsolutePath()+"\\"+dfPDF.format(date.getTime())+"_Gehaltsabrechnungen.pdf", PDF.ANZEIGEN, date);
                  } catch (MalformedURLException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (InstantiationException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IllegalAccessException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (ClassNotFoundException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (SQLException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (DocumentException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IOException e1) {

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

                        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);

                    e1.printStackTrace();
                  }
                  tableUpdate();
                              break;
                          case 1:
                            try {
                    new CreatePayrolls(fc.getSelectedFile().getAbsolutePath()+"\\"+dfPDF.format(date.getTime())+"_Gehaltsabrechnungen.pdf", PDF.ANZEIGEN_DRUCKEN, date);
                  } catch (MalformedURLException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (InstantiationException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IllegalAccessException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (ClassNotFoundException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (SQLException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (DocumentException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IOException e1) {

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

                        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);

                    e1.printStackTrace();
                  }
                  tableUpdate();
                              break;
                          case 2:
                            try {
                    new CreatePayrolls(fc.getSelectedFile().getAbsolutePath()+"\\"+dfPDF.format(date.getTime())+"_Gehaltsabrechnungen.pdf", PDF.DRUCKEN, date);
                  } catch (MalformedURLException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (InstantiationException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IllegalAccessException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (ClassNotFoundException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (SQLException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (DocumentException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IOException e1) {

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

                        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);

                    e1.printStackTrace();
                  }
                  tableUpdate();
                              break;
                          case 3:
                            try {
                    new CreatePayrolls(fc.getSelectedFile().getAbsolutePath()+"\\"+dfPDF.format(date.getTime())+"_Gehaltsabrechnungen.pdf", PDF.NICHTS, date);
                  } catch (MalformedURLException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (InstantiationException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IllegalAccessException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (ClassNotFoundException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (SQLException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (DocumentException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IOException e1) {

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

                        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);

                    e1.printStackTrace();
                  }
                  tableUpdate();
                            break;
                          default:
                            JOptionPane.showMessageDialog(null,
                        "Die Abrechnungen wurden nicht erstellt.",
                        "Abrechnungen nicht erstellt.",
                        JOptionPane.WARNING_MESSAGE);
                            break;
                        }
              }else{
                JOptionPane.showMessageDialog(null,
                        "Die Abrechnungen wurden nicht erstellt.",
                        "Abrechnungen nicht erstellt.",
                        JOptionPane.WARNING_MESSAGE);
              }
               }
          };
         
    abrechnen.putValue(AbstractAction.SHORT_DESCRIPTION, "aktuelle Abrechnungen erstellen");
   
    toolBar.add(abrechnen);
   
    toolBar.addSeparator();
   
    Action excelReport = new AbstractAction(
          "Excel Reports erstellen", setImageIcon("/images/icons/16X16/report.png")) {
               public void actionPerformed(ActionEvent e) {
                java.util.Date date = new java.util.Date();
               File file = new File("");
              SimpleDateFormat dfPDF = new SimpleDateFormat("yyyy-MM-dd");
              JFileChooser fc = new JFileChooser();
              fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
              fc.setSelectedFile(file);
              fc.setFileHidingEnabled(true);
              fc.setApproveButtonText("Speichern");
              fc.setApproveButtonToolTipText("Speicherort f�r Reports auw�hlen.");
              fc.setApproveButtonMnemonic(KeyEvent.VK_S);
              fc.setMultiSelectionEnabled(false);
              int state = fc.showOpenDialog(null);
              if (state == JFileChooser.APPROVE_OPTION){
                  String[] choices = {"Monat", "Quartal", "Jahr", "3 Jahre", "5 Jahre", "10 Jahre"};
                        int response = JOptionPane.showOptionDialog(
                                  null                       // Center in window.
                                , "<html><center>F�r welchen Zeitraum soll der Report erstellt werden?<br>" +
                                    "Bitte betreffendes anklicken.</center></html>"        // Message
                                , "Bitte w�hlen"               // Title in titlebar
                                , JOptionPane.YES_NO_OPTION  // Option type
                                , JOptionPane.QUESTION_MESSAGE  // messageType
                                , null                       // Icon (none)
                                , choices                    // Button text as above.
                                , "Anzeigen"    // Default button's label
                              );
                        switch (response) {
                          case 0:
                            try {
                    new ExcelExport(fc.getSelectedFile().getAbsolutePath()+"\\"+dfPDF.format(date.getTime())+"_Report_Monat.xls", Zeitraum.MONAT, new GregorianCalendar());
                  } catch (InstantiationException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IllegalAccessException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (ClassNotFoundException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (SQLException e1) {

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

                        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);

                    e1.printStackTrace();
                  }
                              break;
                          case 1:
                            try {
                    new ExcelExport(fc.getSelectedFile().getAbsolutePath()+"\\"+dfPDF.format(date.getTime())+"_Report_Quartal.xls", Zeitraum.QUARTAL, new GregorianCalendar());
                  } catch (InstantiationException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IllegalAccessException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (ClassNotFoundException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (SQLException e1) {

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

                        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);

                    e1.printStackTrace();
                  }
                              break;
                          case 2:
                            try {
                    new ExcelExport(fc.getSelectedFile().getAbsolutePath()+"\\"+dfPDF.format(date.getTime())+"_Report_Jahr.xls", Zeitraum.JAHR, new GregorianCalendar());
                  } catch (InstantiationException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IllegalAccessException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (ClassNotFoundException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (SQLException e1) {

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

                        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);

                    e1.printStackTrace();
                  }
                              break;
                          case 3:
                            try {
                    new ExcelExport(fc.getSelectedFile().getAbsolutePath()+"\\"+dfPDF.format(date.getTime())+"_Report_3_Jahre.xls", Zeitraum.DREIJAHRE, new GregorianCalendar());
                  } catch (InstantiationException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IllegalAccessException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (ClassNotFoundException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (SQLException e1) {

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

                        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);

                    e1.printStackTrace();
                  }
                            break;
                          case 4:
                            try {
                    new ExcelExport(fc.getSelectedFile().getAbsolutePath()+"\\"+dfPDF.format(date.getTime())+"_Report_5_Jahre.xls", Zeitraum.FUENFJAHRE, new GregorianCalendar());
                  } catch (InstantiationException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IllegalAccessException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (ClassNotFoundException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (SQLException e1) {

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

                        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);

                    e1.printStackTrace();
                  }
                            break;
                          case 5:
                            try {
                    new ExcelExport(fc.getSelectedFile().getAbsolutePath()+"\\"+dfPDF.format(date.getTime())+"_Report_10_Jahre.xls", Zeitraum.ZEHNJAHRE, new GregorianCalendar());
                  } catch (InstantiationException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (IllegalAccessException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (ClassNotFoundException e1) {

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

                        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);

                    e1.printStackTrace();
                  } catch (SQLException e1) {

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

                        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);

                    e1.printStackTrace();
                  }
                            break;
                          default:
                            JOptionPane.showMessageDialog(null,
                        "Der Report wurde nicht erstellt.",
                        "Report nicht erstellt.",
                        JOptionPane.WARNING_MESSAGE);
                            break;
                        }
              }else{
                        JOptionPane.showMessageDialog(null,
                    "Der Report wurde nicht erstellt.",
                    "Report nicht erstellt.",
                    JOptionPane.WARNING_MESSAGE);
              }
               }
          };
         
    excelReport.putValue(AbstractAction.SHORT_DESCRIPTION, "Reports in Excel erstellen");
   
    toolBar.add(excelReport);
   
   
    toolBar.setRollover(true);
    toolBar.setFloatable(false);
   
    datToolBar.addSeparator();
   
    datToolBar.add(new JLabel("Suchen nach: "));
    tfSuche.setPreferredSize(new Dimension(100, 26));
    datToolBar.add(tfSuche);
   
    datToolBar.addSeparator();
   
    datToolBar.add(new JLabel("  Daten Anzeigen von "));
   
    startYearMonth.setPreferredSize(new Dimension(100, 26));
   
    datToolBar.add(startZurueck);
    datToolBar.add(startYearMonth);
    datToolBar.add(startVor);

    datToolBar.add(new JLabel(" bis "));
   
    endYearMonth.setPreferredSize(new Dimension(100, 26));
   
    datToolBar.add(endZurueck);
    datToolBar.add(endYearMonth);
    datToolBar.add(endVor);
   
    datToolBar.setRollover(true);
    datToolBar.setFloatable(false);
   
    //Build Popup Menu
      GridBagLayout gblStart = new GridBagLayout();
      GridBagConstraints gbcStart = new GridBagConstraints();
      gbcStart.fill = GridBagConstraints.HORIZONTAL;
      JPanel startPan = new JPanel(gblStart);
      startBtnZurueck.putClientProperty("JComponent.sizeVariant", "mini");
      startBtnVor.putClientProperty("JComponent.sizeVariant", "mini");
      final JLabel startJahr = new JLabel(" "+startCalendar.get(Calendar.YEAR)+" ");
      for(int i = 0; i < monatName.length; i++){
        startMonBtn.add(new JButton(monatName[i]));
        startMonBtn.get(i).putClientProperty("JComponent.sizeVariant", "mini");
      }
      gbcStart.gridx = 0;
      gbcStart.gridy = 0;
      startPan.add(startBtnZurueck, gbcStart);
      gbcStart.gridx = 1;
      gbcStart.gridy = 0;
      startPan.add(startJahr, gbcStart);
      gbcStart.gridx = 2;
      gbcStart.gridy = 0;
      startPan.add(startBtnVor, gbcStart);
      for(int i = 0; i < monatName.length; i++){
          gbcStart.gridx = 0;
          gbcStart.gridy = i+1;
          gbcStart.gridwidth = 3;
          startPan.add(startMonBtn.get(i), gbcStart);
      }
      SwingUtilities.updateComponentTreeUI(startPan);
      startPopup.add(startPan);
      
      startBtnVor.addActionListener(new ActionListener() {
       
        @Override
        public void actionPerformed(ActionEvent e) {
          startCalendar.set(Calendar.DAY_OF_MONTH, 1);
          startCalendar.set(Calendar.YEAR, startCalendar.get(Calendar.YEAR)+1);
          startJahr.setText(" "+startCalendar.get(Calendar.YEAR)+" ");
          startYearMonth.setText(monatName[startCalendar.get(Calendar.MONTH)]+" "+startCalendar.get(Calendar.YEAR));
         
          if(startCalendar.get(Calendar.YEAR) == endCalendar.get(Calendar.YEAR)){ 
            if(startCalendar.get(Calendar.MONTH) > endCalendar.get(Calendar.MONTH)){
              startCalendar.set(Calendar.MONTH, endCalendar.get(Calendar.MONTH));
              startYearMonth.setText(monatName[startCalendar.get(Calendar.MONTH)]+" "+startCalendar.get(Calendar.YEAR));
            }
          }
         
          setCalendarSelectionValues()
        }
      });
         
       startBtnZurueck.addActionListener(new ActionListener() {
       
        @Override
        public void actionPerformed(ActionEvent e) {
          startCalendar.set(Calendar.DAY_OF_MONTH, 1);
          startCalendar.set(Calendar.YEAR, startCalendar.get(Calendar.YEAR)-1);
          startJahr.setText(" "+startCalendar.get(Calendar.YEAR)+" ")
          startYearMonth.setText(monatName[startCalendar.get(Calendar.MONTH)]+" "+startCalendar.get(Calendar.YEAR));
         
          setCalendarSelectionValues();
        }
      });   

       for(int i = 0; i < monatName.length; i++){
            final int j = i;
            startMonBtn.get(i).addActionListener(new ActionListener() {
         
          @Override
          public void actionPerformed(ActionEvent e) {
            startCalendar.set(Calendar.DAY_OF_MONTH, 1);
            startCalendar.set(Calendar.MONTH, j);
            startJahr.setText(" "+startCalendar.get(Calendar.YEAR)+" ")
            startYearMonth.setText(monatName[startCalendar.get(Calendar.MONTH)]+" "+startCalendar.get(Calendar.YEAR));
           
            setCalendarSelectionValues();
          }
        });
       }
   
      
      GridBagLayout gblEnd = new GridBagLayout();
      GridBagConstraints gbcEnd = new GridBagConstraints();
      gbcEnd.fill = GridBagConstraints.HORIZONTAL;
      JPanel endPan = new JPanel(gblEnd);
      endBtnZurueck.putClientProperty("JComponent.sizeVariant", "mini");
      endBtnVor.putClientProperty("JComponent.sizeVariant", "mini");
      final JLabel endJahr = new JLabel(" "+endCalendar.get(Calendar.YEAR)+" ");
       for(int i = 0; i < monatName.length; i++){
        endMonBtn.add(new JButton(monatName[i]));
        endMonBtn.get(i).putClientProperty("JComponent.sizeVariant", "mini");
      }
        gbcEnd.gridx = 0;
        gbcEnd.gridy = 0;
      endPan.add(endBtnZurueck, gbcEnd);
        gbcEnd.gridx = 1;
        gbcEnd.gridy = 0;
        endPan.add(endJahr, gbcEnd);
        gbcEnd.gridx = 2;
        gbcEnd.gridy = 0;
        endPan.add(endBtnVor, gbcEnd);
        for(int i = 0; i < monatName.length; i++){
          gbcEnd.gridx = 0;
          gbcEnd.gridy = i+1;
          gbcEnd.gridwidth = 3;
          endPan.add(endMonBtn.get(i), gbcEnd);
        }
        SwingUtilities.updateComponentTreeUI(endPan);
        endPopup.add(endPan);
       
        endBtnVor.addActionListener(new ActionListener() {
     
      @Override
      public void actionPerformed(ActionEvent e) {
        endCalendar.set(Calendar.DAY_OF_MONTH, 1);
        endCalendar.set(Calendar.YEAR, endCalendar.get(Calendar.YEAR)+1);
        endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        endJahr.setText(" "+endCalendar.get(Calendar.YEAR)+" ");
        endYearMonth.setText(monatName[endCalendar.get(Calendar.MONTH)]+" "+endCalendar.get(Calendar.YEAR));
       
        setCalendarSelectionValues();
      }
    });
       
        endBtnZurueck.addActionListener(new ActionListener() {
     
      @Override
      public void actionPerformed(ActionEvent e) {
        endCalendar.set(Calendar.DAY_OF_MONTH, 1);
        endCalendar.set(Calendar.YEAR, endCalendar.get(Calendar.YEAR)-1);
        endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        endJahr.setText(" "+endCalendar.get(Calendar.YEAR)+" ");
        endYearMonth.setText(monatName[endCalendar.get(Calendar.MONTH)]+" "+endCalendar.get(Calendar.YEAR));
       
        if(endCalendar.get(Calendar.YEAR) == startCalendar.get(Calendar.YEAR)){ 
          if(endCalendar.get(Calendar.MONTH) < startCalendar.get(Calendar.MONTH)){
            endCalendar.set(Calendar.MONTH, startCalendar.get(Calendar.MONTH));
            endYearMonth.setText(monatName[endCalendar.get(Calendar.MONTH)]+" "+endCalendar.get(Calendar.YEAR));
          }
        }
       
        setCalendarSelectionValues();
      }
    });
       
        for(int i = 0; i < monatName.length; i++){
          final int j = i;
          endMonBtn.get(i).addActionListener(new ActionListener() {
       
        @Override
        public void actionPerformed(ActionEvent e) {
          endCalendar.set(Calendar.DAY_OF_MONTH, 1);
          endCalendar.set(Calendar.MONTH, j);
          endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
          endJahr.setText(" "+endCalendar.get(Calendar.YEAR)+" ");
          endYearMonth.setText(monatName[endCalendar.get(Calendar.MONTH)]+" "+endCalendar.get(Calendar.YEAR));
         
          setCalendarSelectionValues();
        }
      });
        }
             
     
    //Action Listener ToolBar (Month Chooser)
    startYearMonth.addMouseListener(new MouseAdapter() {
      @Override
      public void mouseClicked(MouseEvent e) {
        startPopup.show(startYearMonth, 0, startYearMonth.getHeight());
      }
    });
   
    startVor.addActionListener(new ActionListener() {
     
      @Override
      public void actionPerformed(ActionEvent e) {
        startCalendar.set(Calendar.DAY_OF_MONTH, 1);
        if(startCalendar.get(Calendar.MONTH) != 11){
          startCalendar.set(Calendar.MONTH, startCalendar.get(Calendar.MONTH)+1);
        }else{
          startCalendar.set(Calendar.YEAR, startCalendar.get(Calendar.YEAR)+1);
          startCalendar.set(Calendar.MONTH, 0);
        }
        startJahr.setText(" "+startCalendar.get(Calendar.YEAR)+" ")
        startYearMonth.setText(monatName[startCalendar.get(Calendar.MONTH)]+" "+startCalendar.get(Calendar.YEAR));
       
        setCalendarSelectionValues();
      }
    });
   
    startZurueck.addActionListener(new ActionListener() {
     
      @Override
      public void actionPerformed(ActionEvent e) {
        startCalendar.set(Calendar.DAY_OF_MONTH, 1);
        if(startCalendar.get(Calendar.MONTH) != 0){
          startCalendar.set(Calendar.MONTH, startCalendar.get(Calendar.MONTH)-1);
        }else{
          startCalendar.set(Calendar.YEAR, startCalendar.get(Calendar.YEAR)-1);
          startCalendar.set(Calendar.MONTH, 11);
        }
        startJahr.setText(" "+startCalendar.get(Calendar.YEAR)+" ")
        startYearMonth.setText(monatName[startCalendar.get(Calendar.MONTH)]+" "+startCalendar.get(Calendar.YEAR));

        setCalendarSelectionValues();
      }
    });
   
    endYearMonth.addMouseListener(new MouseAdapter() {
      @Override
      public void mouseClicked(MouseEvent e) {
            endPopup.show(endYearMonth, 0, endYearMonth.getHeight());
      }
    });
   
    endVor.addActionListener(new ActionListener() {
     
      @Override
      public void actionPerformed(ActionEvent e) {
        endCalendar.set(Calendar.DAY_OF_MONTH, 1);
        if(endCalendar.get(Calendar.MONTH) != 11){
          endCalendar.set(Calendar.MONTH, endCalendar.get(Calendar.MONTH)+1);
        }else{
          endCalendar.set(Calendar.YEAR, endCalendar.get(Calendar.YEAR)+1);
          endCalendar.set(Calendar.MONTH, 0);
        }
        endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        endJahr.setText(" "+endCalendar.get(Calendar.YEAR)+" ");
        endYearMonth.setText(monatName[endCalendar.get(Calendar.MONTH)]+" "+endCalendar.get(Calendar.YEAR));
       
        setCalendarSelectionValues();
      }
    });
   
    endZurueck.addActionListener(new ActionListener() {
     
      @Override
      public void actionPerformed(ActionEvent e) {
        endCalendar.set(Calendar.DAY_OF_MONTH, 1);
        if(endCalendar.get(Calendar.MONTH) != 0){
          endCalendar.set(Calendar.MONTH, endCalendar.get(Calendar.MONTH)-1);
        }else{
          endCalendar.set(Calendar.YEAR, endCalendar.get(Calendar.YEAR)-1);
          endCalendar.set(Calendar.MONTH, 11);
        }
        endCalendar.set(Calendar.DAY_OF_MONTH, endCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        endJahr.setText(" "+endCalendar.get(Calendar.YEAR)+" ");
        endYearMonth.setText(monatName[endCalendar.get(Calendar.MONTH)]+" "+endCalendar.get(Calendar.YEAR));
       
        setCalendarSelectionValues();
      }
    });
   
    tfSuche.addKeyListener(new KeyAdapter() {
     
      @Override
      public void keyReleased(KeyEvent e) {
        tableUpdate();
      }
     
    });
   
    setCalendarSelectionValues();
   
    //JMenuBar
    JMenuBar menuBar = new JMenuBar();
    JMenu menuDatei = new JMenu("Datei");
    JMenu menuEintrag = new JMenu("Eintrag");
    JMenuItem itemExit = new JMenuItem("Beenden", setImageIcon("/images/icons/16X16/shutdown.png"));
    JMenuItem itemBearbeiten = new JMenuItem("Eintrag bearbeiten", setImageIcon("/images/icons/16X16/edit_user.png"));
    JMenuItem itemHinzu = new JMenuItem("Eintrag hinzuf�gen", setImageIcon("/images/icons/16X16/add_user.png"));
    JMenuItem itemLoeschen = new JMenuItem("Eintrag l�schen", setImageIcon("/images/icons/16X16/delete_user.png"));
    JMenuItem itemPrefs = new JMenuItem("Einstellungen", setImageIcon("/images/icons/16X16/advanced.png"));
    final String lastChangeDate = "2011-06-16";
   
    //JMenu Mnemonics
    menuDatei.setMnemonic(KeyEvent.VK_D);
    menuEintrag.setMnemonic(KeyEvent.VK_E);
    itemExit.setMnemonic(KeyEvent.VK_B);
    itemBearbeiten.setMnemonic(KeyEvent.VK_B);
    itemHinzu.setMnemonic(KeyEvent.VK_H);
    itemLoeschen.setMnemonic(KeyEvent.VK_L);
    itemPrefs.setMnemonic(KeyEvent.VK_E);
   
    //JMenu Actions
    Action openInfos = new AbstractAction( "Programminfos", setImageIcon("/images/icons/16X16/knotes.png") ) {
     
      @Override
      public void actionPerformed(ActionEvent e) {
        UIManager.put("OptionPane.informationIcon", setImageIcon("/images/TRWIcon.png"));
        JOptionPane.showMessageDialog(mainFrame,
            "<html><h3 align='center'>Dieses Programm dient zur Verwaltung von Adressdaten.</h3>" +
            "<p align='center'>Selbiges dient einzig und allein zu <b>Testzwecken.</b><br>&nbsp;</p>" +
            "<p align=''center>Die Verbreitung ist nur zu Lernzwecken im Kurs WWI10BVA der DHBW Mannheim gestattet.<br>&nbsp;</p>" +
            "<p align='center'><font color='#FF0000'>" +
            "F�r Sch�den, die durch diese Software entstehen wird keinerlei Haftung �bernommen.</font><br>&nbsp;</p>" +
            "<table align='center' border='0' width='80%'>" +
            "<tr>" +
              "<td width='30%'>" +
                "Autor:" +
              "</td>" +
              "<td>" +
                "TRW Koblenz / Matthias M�ller" +
              "</td>" +
            "</tr>" +
            "<tr>" +
              "<td width='30%'>" +
                "Letzte �nderung:" +
              "</td>" +
              "<td>" +
                lastChangeDate +
              "</td>" +
            "</tr>" +
            "<tr>" +
              "<td width='30%'>" +
                "Version:" +
              "</td>" +
              "<td>" +
                "0.02" +
              "</td>" +
            "</tr>" +
            "</table></html>",
            "Programminformationen", JOptionPane.INFORMATION_MESSAGE);
      }
    };
   
    //JMenu Action Listener
    itemExit.addActionListener(new ActionListener() {
     
      @Override
      public void actionPerformed(ActionEvent e) {
        if(JOptionPane
            .showOptionDialog(
                mainFrame,
                "<html>M�chten Sie das Programm wirklich beenden?</html>",   
                "Programm beenden",
                JOptionPane.YES_NO_CANCEL_OPTION,
                JOptionPane.QUESTION_MESSAGE,
                null, null, null) == 0){
          if(SystemTray.isSupported()){
            SystemTray.getSystemTray().remove(trayIcon);
          }
          System.exit(0);
        }
      }
    });
   
    //AddJMenus
    mainFrame.setJMenuBar(menuBar);
    menuBar.add(menuDatei);
    menuDatei.add(openInfos);
    menuDatei.add(itemPrefs);
    menuDatei.addSeparator();
    menuDatei.addSeparator();
    menuDatei.add(itemExit);
    menuBar.add(menuEintrag);
    menuEintrag.add(itemBearbeiten);
    menuEintrag.add(itemHinzu);
    menuEintrag.addSeparator();
    menuEintrag.addSeparator();
    menuEintrag.add(itemLoeschen);
   
    //Add Toolbar
    JPanel toolPanel = new JPanel(new BorderLayout());
    toolPanel.add(toolBar, BorderLayout.CENTER);
    toolPanel.add(datToolBar, BorderLayout.LINE_END);
    mainFrame.add(toolPanel, BorderLayout.PAGE_START);
   
   
    // Build the tree table panel
    JPanel treeTablePanel = new JPanel( new BorderLayout() );
    treeTablePanel.add( new JScrollPane( treeTable ) );
    // Add the tabs to the JFrame
    mainFrame.add( treeTablePanel, BorderLayout.CENTER );
   
    // Statusbar
    statPanel.setBorder(BorderFactory
        .createEtchedBorder(EtchedBorder.LOWERED));
    statPanel.setLayout(new BorderLayout());
    statPanel.add(labStatus, BorderLayout.CENTER);
   
    JPanel sepUhrPanel = new JPanel();
    sepUhrPanel.setLayout(new BorderLayout());
   
    JSeparator sep2 = new JSeparator(SwingConstants.VERTICAL);
    sepUhrPanel.add(sep2, BorderLayout.LINE_START);

    labUhrzeit.setPreferredSize(new Dimension(52, 20));
    sepUhrPanel.add(labUhrzeit, BorderLayout.CENTER);

    statPanel.add(sepUhrPanel, BorderLayout.LINE_END);

    mainFrame.add(statPanel, BorderLayout.SOUTH);
   
    //Listener
    treeTable.addTreeExpansionListener(new TreeExpansionListener() {

      @Override
      public void treeExpanded(TreeExpansionEvent event) {
        if(event.getPath().getLastPathComponent() != null && event.getPath().getLastPathComponent().getClass().getSimpleName().equals("MainTreeNode")){
          MainTreeNode mainNode = (MainTreeNode) event.getPath().getLastPathComponent();
          expandedTreeList.add(mainNode.getPersID());
        }
      }
     
      @Override
      public void treeCollapsed(TreeExpansionEvent event) {
        if(event.getPath().getLastPathComponent() != null && event.getPath().getLastPathComponent().getClass().getSimpleName().equals("MainTreeNode")){
          MainTreeNode mainNode = new MainTreeNode();
          expandedTreeList.remove(mainNode.getPersID());
        }
      }
    });
   
    treeTable.addMouseListener(new MouseAdapter() {
     
      @Override
      public void mouseClicked(MouseEvent e) {
        if(e.getButton() == 1 && e.getClickCount() == 1){
          if(treeTable.getValueAt(treeTable.getSelectedRow(), 0) != null && treeTable.getValueAt(treeTable.getSelectedRow(), 0).getClass().getSimpleName().equals("MainTreeNode")){
            MainTreeNode node = (MainTreeNode) treeTable.getValueAt(treeTable.getSelectedRow(), 0);
            labStatus.setText(node.getTooltip());
          }else if(treeTable.getValueAt(treeTable.getSelectedRow(), 0) != null && treeTable.getValueAt(treeTable.getSelectedRow(), 0).getClass().getSimpleName().equals("SubTreeNode")){
            SubTreeNode node = (SubTreeNode)treeTable.getValueAt(treeTable.getSelectedRow(), 0);
            labStatus.setText(node.getTooltip());
          }
        }else if(e.getButton() == 1 && e.getClickCount() == 2){
          try {
            if(treeTable.getValueAt(treeTable.getSelectedRow(), 0) != null && treeTable.getValueAt(treeTable.getSelectedRow(), 0).getClass().getSimpleName().equals("MainTreeNode")){
              MainTreeNode node = (MainTreeNode) treeTable.getValueAt(treeTable.getSelectedRow(), 0);
                new PersonModify(null, node.getPersID(), Status.ANZEIGEN);
            }else if(treeTable.getValueAt(treeTable.getSelectedRow(), 0) != null && treeTable.getValueAt(treeTable.getSelectedRow(), 0).getClass().getSimpleName().equals("SubTreeNode")){
              SubTreeNode node = (SubTreeNode) treeTable.getValueAt(treeTable.getSelectedRow(), 0);
              new PDFExport(node.getGehAusID(), node.getPersID());
            }
          } catch (InstantiationException e1) {

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

                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);

            e1.printStackTrace();
          } catch (IllegalAccessException e1) {

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

                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);

            e1.printStackTrace();
          } catch (ClassNotFoundException e1) {

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

                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);

            e1.printStackTrace();
          } catch (SQLException e1) {

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

                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);

            e1.printStackTrace();
          } catch (IOException e1) {

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

                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);

            e1.printStackTrace();
          } catch (FormatException e1) {

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

                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);

            e1.printStackTrace();
          }
        }else if(e.getClickCount() == 1 && e.getButton() == 3){
            popMenu = new JPopupMenu();
            final int p = treeTable.rowAtPoint(e.getPoint());
            buildPopupMenu(p);         
            popMenu.show(e.getComponent(), e.getX(), e.getY());
        }
      }
    });
   
    //KeyListener
    KeyboardFocusManager kbf = KeyboardFocusManager.
    getCurrentKeyboardFocusManager();
   
    final KeyEventDispatcher EventDispatcher = new KeyEventDispatcher() {

      @Override
      public boolean dispatchKeyEvent(KeyEvent e) {
        boolean keyUsed = false;
        if(e.getID() == KeyEvent.KEY_PRESSED){
          if(e.getKeyCode() == 525 && treeTable.getSelectedRowCount() == 1){
            popMenu = new JPopupMenu();
            int p = treeTable.getSelectedRow();
            buildPopupMenu(p);
            popMenu.show(treeTable, treeTable.getColumn(0).getWidth()/2, (int) (treeTable.getRowHeight()*(p+0.5)));
          }
        }
        return keyUsed;
     

    };
   
    kbf.addKeyEventDispatcher(EventDispatcher);
   
    //Window Listener
    mainFrame.addWindowListener(new WindowAdapter() {
     
      @Override
      public void windowClosing(WindowEvent e) {
        if(showInfo){
          JPanel optionPanel = new JPanel(new BorderLayout());
          JCheckBox check = new JCheckBox("Diesen Hinwei� weiterhin anzeigen.");
          check.setSelected(true);
          optionPanel.add(new JLabel("<html>Das Programm bleibt im Tray weiterhin aktiv.<br>"
                    + "zum beenden bitte dort auf Programm beenden klicken<br>"
                    + "oder im Programm auf Datei - Beenden gehen<br><br><br></html>"), BorderLayout.CENTER);
          optionPanel.add(check, BorderLayout.PAGE_END);
          JOptionPane
              .showMessageDialog(
                  mainFrame,
                  optionPanel,
                  "Programm in Tray ablegen",
                  JOptionPane.INFORMATION_MESSAGE);
            showInfo = check.isSelected();
            mainFrame.setVisible(false);
        }else{
          mainFrame.setVisible(false);
        }
      }
    });
   
    //TrayIcon
    if (SystemTray.isSupported()) {
      SystemTray tray = SystemTray.getSystemTray();
      trayIcon.setImageAutoSize(true);
     
      trayIcon.addActionListener(new ActionListener() {
       
        @Override
        public void actionPerformed(ActionEvent e) {
          if(mainFrame.getState() == Frame.ICONIFIED)
            mainFrame.setState(Frame.NORMAL);
          if(mainFrame.isVisible() == false)
            mainFrame.setVisible(true);
          mainFrame.toFront();
        }
       
      });
     
      //TrayPopupMenu Actions
      MenuItem show = new MenuItem("AlMaGe - Gehaltsabrechnung");
      show.addActionListener(new ActionListener() {
       
        @Override
        public void actionPerformed(ActionEvent e) {
          if(mainFrame.getState() == Frame.ICONIFIED)
            mainFrame.setState(Frame.NORMAL);
          if(mainFrame.isVisible() == false)
            mainFrame.setVisible(true);
          mainFrame.toFront();           
        }
      });

      MenuItem exit = new MenuItem("Programm beenden");
      exit.addActionListener(new ActionListener() {
       
        @Override
        public void actionPerformed(ActionEvent e) {
          if(JOptionPane
              .showOptionDialog(
                  mainFrame,
                  "<html>M�chten Sie das Programm wirklich beenden?</html>",   
                  "Programm beenden",
                  JOptionPane.YES_NO_CANCEL_OPTION,
                  JOptionPane.QUESTION_MESSAGE,
                  null, null, null) == 0){
            if(SystemTray.isSupported()){
              SystemTray.getSystemTray().remove(trayIcon);
            }
            System.exit(0);
          }
        }
      });

     
      trayPopMenu.add(show);
      trayPopMenu.addSeparator();
      trayPopMenu.add(exit);
     
      trayIcon.setPopupMenu(trayPopMenu);
     
      tray.add(trayIcon);
    }
   
    //Window Preferences
    mainFrame.setIconImage(Toolkit.getDefaultToolkit().getImage(GehaltTreeTable.class.getResource("/images/icons/32X32/tray.png")));
    mainFrame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE );
    mainFrame.setTitle("AlMaGe - Gehaltsabrechnug");
    mainFrame.pack();
    mainFrame.setExtendedState(Frame.MAXIMIZED_BOTH);
    mainFrame.setVisible( true );
 

//  public static void main( String[] args ) throws AWTException
//  {
//    try {
//      for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
//        if ("Nimbus".equals(info.getName())) {
//          UIManager.setLookAndFeel(info.getClassName());
//          break;
//        }
//      }
//    } catch (Exception e) {
//      // TO DO Nimbus not Found, Switch to System-Standard - Design.
//      e.printStackTrace();
//    }
//    new GehaltTreeTable();
//    new TimeThread();
//  }
 
  private ImageIcon setImageIcon(String ressource){
    InputStream stream = this.getClass().getResourceAsStream( ressource );
    BufferedImage bImage;
    ImageIcon icon;
    try {
      bImage = ImageIO.read( stream );
      icon = new ImageIcon(bImage);
      return icon;
    } catch (IOException e1) {

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

          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);

      e1.printStackTrace();
    }
    return null;
  }
 
  public static void setTfUhrzeit(String zeit) {
    labUhrzeit.setText(zeit);
  }
 
  public void buildPopupMenu(int p){
    if(treeTable.getValueAt(p, 0) != null && treeTable.getValueAt(p, 0).getClass().getSimpleName().equals("MainTreeNode")){
      final MainTreeNode node = (MainTreeNode) treeTable.getValueAt(p, 0);                 

      //Actions
      Action show = new AbstractAction(
          "Detailansicht �ffnen", setImageIcon("/images/icons/16X16/show_user.png")) {

        @Override
        public void actionPerformed(ActionEvent e) {

          try {
            new PersonModify(null, node.getPersID(),
                Status.ANZEIGEN);
          } catch (InstantiationException e1) {

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

                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);

            e1.printStackTrace();
          } catch (IllegalAccessException e1) {

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

                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);

            e1.printStackTrace();
          } catch (ClassNotFoundException e1) {

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

                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);

            e1.printStackTrace();
          } catch (SQLException e1) {

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

                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);

            e1.printStackTrace();
          } catch (IOException e1) {

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

                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);

            e1.printStackTrace();
          } catch (FormatException e1) {

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

                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);

            e1.printStackTrace();
          }
        }
      };
     
      Action bearb = new AbstractAction(
          "Mitarbeiter bearbeiten", setImageIcon("/images/icons/16X16/edit_user.png")) {

        @Override
        public void actionPerformed(ActionEvent e) {

          try {
            if(!node.isDeleted())
              new PersonModify(null, node.getPersID(),
                  Status.BEARBEITEN);
          } catch (InstantiationException e1) {

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

                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);

            e1.printStackTrace();
          } catch (IllegalAccessException e1) {

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

                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);

            e1.printStackTrace();
          } catch (ClassNotFoundException e1) {

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

                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);

            e1.printStackTrace();
          } catch (SQLException e1) {

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

                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);

            e1.printStackTrace();
          } catch (IOException e1) {

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

                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);

            e1.printStackTrace();
          } catch (FormatException e1) {

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

                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);

            e1.printStackTrace();
          }
        }
      };   
     
      Action loeschen = new AbstractAction(
          "Mitarbeiter l�schen", setImageIcon("/images/icons/16X16/delete_user.png")) {

        @Override
        public void actionPerformed(ActionEvent e) {

          try {
            new PersonModify(null, node.getPersID(),
                Status.LOESCHEN);
          } catch (InstantiationException e1) {

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

                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);

            e1.printStackTrace();
          } catch (IllegalAccessException e1) {

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

                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);

            e1.printStackTrace();
          } catch (ClassNotFoundException e1) {

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

                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);

            e1.printStackTrace();
          } catch (SQLException e1) {

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

                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);

            e1.printStackTrace();
          } catch (IOException e1) {

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

                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);

            e1.printStackTrace();
          } catch (FormatException e1) {

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

                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);

            e1.printStackTrace();
          }
        }
      }
      //Add to popupMenue
      popMenu.add(show);
      if(!node.isDeleted()){
        popMenu.add(bearb);
        popMenu.add(loeschen);
      }
    }else if(treeTable.getValueAt(p, 0) != null && treeTable.getValueAt(p, 0).getClass().getSimpleName().equals("SubTreeNode")){
      final SubTreeNode node = (SubTreeNode) treeTable.getValueAt(p, 0);
     
      //Actions
      Action show = new AbstractAction(
          "Abrechnung anzeigen", setImageIcon("/images/icons/16X16/view_text.png")) {

        @Override
        public void actionPerformed(ActionEvent e) {
            new PDFExport(node.getGehAusID(), node.getPersID());
        }
      };
     
      //Add to popMenue
      popMenu.add(show);
    }
  }
 
  private void setCalendarSelectionValues() {
    //Alles aktiv setzen
    startBtnVor.setEnabled(true);
    startBtnZurueck.setEnabled(true);
    for(int i = 0; i < startMonBtn.size(); i++){
      startMonBtn.get(i).setEnabled(true);
    }
    startVor.setEnabled(true);
    startZurueck.setEnabled(true);
   
    endBtnVor.setEnabled(true);
    endBtnZurueck.setEnabled(true);
    for(int i = 0; i < startMonBtn.size(); i++){
      endMonBtn.get(i).setEnabled(true);
    }
    endVor.setEnabled(true);
    endZurueck.setEnabled(true);
   
    //Abfragen zum inaktiv setzen
    if(endCalendar.get(Calendar.YEAR) == startCalendar.get(Calendar.YEAR)){
      startBtnVor.setEnabled(false);

      switch(endCalendar.get(Calendar.MONTH)){
      case 0:
        startMonBtn.get(1).setEnabled(false);
      case 1:
        startMonBtn.get(2).setEnabled(false);
      case 2:
        startMonBtn.get(3).setEnabled(false);
      case 3:
        startMonBtn.get(4).setEnabled(false);
      case 4:
        startMonBtn.get(5).setEnabled(false);
      case 5:
        startMonBtn.get(6).setEnabled(false);
      case 6:
        startMonBtn.get(7).setEnabled(false);
      case 7:
        startMonBtn.get(8).setEnabled(false);
      case 8:
        startMonBtn.get(9).setEnabled(false);
      case 9:
        startMonBtn.get(10).setEnabled(false);
      case 10:
        startMonBtn.get(11).setEnabled(false);
      }
    }

    if(endMaxCalendar.get(Calendar.YEAR) == endCalendar.get(Calendar.YEAR)){
      endBtnVor.setEnabled(false);

      switch(endMaxCalendar.get(Calendar.MONTH)){
      case 0:
        endMonBtn.get(1).setEnabled(false);
      case 1:
        endMonBtn.get(2).setEnabled(false);
      case 2:
        endMonBtn.get(3).setEnabled(false);
      case 3:
        endMonBtn.get(4).setEnabled(false);
      case 4:
        endMonBtn.get(5).setEnabled(false);
      case 5:
        endMonBtn.get(6).setEnabled(false);
      case 6:
        endMonBtn.get(7).setEnabled(false);
      case 7:
        endMonBtn.get(8).setEnabled(false);
      case 8:
        endMonBtn.get(9).setEnabled(false);
      case 9:
        endMonBtn.get(10).setEnabled(false);
      case 10:
        endMonBtn.get(11).setEnabled(false);
      }
    }
   
    if(startMinCalendar.get(Calendar.YEAR) == startCalendar.get(Calendar.YEAR)){
      startBtnZurueck.setEnabled(false);

      switch(startMinCalendar.get(Calendar.MONTH)){
      case 11:
        startMonBtn.get(10).setEnabled(false);
      case 10:
        startMonBtn.get(9).setEnabled(false);
      case 9:
        startMonBtn.get(8).setEnabled(false);
      case 8:
        startMonBtn.get(7).setEnabled(false);
      case 7:
        startMonBtn.get(6).setEnabled(false);
      case 6:
        startMonBtn.get(5).setEnabled(false);
      case 5:
        startMonBtn.get(4).setEnabled(false);
      case 4:
        startMonBtn.get(3).setEnabled(false);
      case 3:
        startMonBtn.get(2).setEnabled(false);
      case 2:
        startMonBtn.get(1).setEnabled(false);
      case 1:
        startMonBtn.get(0).setEnabled(false);
      }
    }
   
    if(startCalendar.get(Calendar.YEAR) == endCalendar.get(Calendar.YEAR)){
      endBtnZurueck.setEnabled(false);

      switch(startCalendar.get(Calendar.MONTH)){
      case 11:
        endMonBtn.get(10).setEnabled(false);
      case 10:
        endMonBtn.get(9).setEnabled(false);
      case 9:
        endMonBtn.get(8).setEnabled(false);
      case 8:
        endMonBtn.get(7).setEnabled(false);
      case 7:
        endMonBtn.get(6).setEnabled(false);
      case 6:
        endMonBtn.get(5).setEnabled(false);
      case 5:
        endMonBtn.get(4).setEnabled(false);
      case 4:
        endMonBtn.get(3).setEnabled(false);
      case 3:
        endMonBtn.get(2).setEnabled(false);
      case 2:
        endMonBtn.get(1).setEnabled(false);
      case 1:
        endMonBtn.get(0).setEnabled(false);
      }
    }
   
    if((startCalendar.get(Calendar.YEAR) == endCalendar.get(Calendar.YEAR)) && (startCalendar.get(Calendar.MONTH) == endCalendar.get(Calendar.MONTH))){
      startVor.setEnabled(false);
    }
   
    if((endCalendar.get(Calendar.YEAR) == endMaxCalendar.get(Calendar.YEAR)) && (endCalendar.get(Calendar.MONTH) == endMaxCalendar.get(Calendar.MONTH))){
      endVor.setEnabled(false);
    }
   
    if((startCalendar.get(Calendar.YEAR) == startMinCalendar.get(Calendar.YEAR)) && (startCalendar.get(Calendar.YEAR) == startMinCalendar.get(Calendar.YEAR))){
      startZurueck.setEnabled(false);
    }
   
    if((endCalendar.get(Calendar.YEAR) == startCalendar.get(Calendar.YEAR)) && (endCalendar.get(Calendar.MONTH) == startCalendar.get(Calendar.MONTH))){
      endZurueck.setEnabled(false);
    }
   
    tableUpdate();
  }
 
  public static void tableUpdate(){
//    treeTableModel = new GeTreeTabelModel(new Date(startCalendar.getTimeInMillis()), new Date(endCalendar.getTimeInMillis()), tfSuche.getText());
//    treeTable.setTreeTableModel(treeTableModel);
//    mainFrame.repaint();
    setTableModel(new GeTreeTabelModel());
    if(tableModelThread != null){
      tableModelThread.setStartDate(new Date(startCalendar.getTimeInMillis()));
      tableModelThread.setEndDate(new Date(endCalendar.getTimeInMillis()));
      tableModelThread.setSuche(tfSuche.getText());
    }else{
      tableModelThread = new GeTreeTableModelThread(new Date(startCalendar.getTimeInMillis()), new Date(endCalendar.getTimeInMillis()), tfSuche.getText());
    }
  }
 
  public static void setTableModel(GeTreeTabelModel newTreeTableModel){
    treeTableModel = newTreeTableModel;
    treeTable.setTreeTableModel(treeTableModel);
    MainTreeNode mtn;
    if(treeTable.getRowCount() >= 0){
      for(int i = treeTable.getRowCount()-1; i >= 0; i--){
        mtn = (MainTreeNode) treeTable.getValueAt(i, 0);
       
        if(expandedTreeList.contains(mtn.getPersID())){
            treeTable.expandRow(i);
        }
      }
    }
    mainFrame.repaint();
  }
}
TOP

Related Classes of AlMaGe.GehaltTreeTable

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.