@SuppressWarnings("serial")
	private void initGUI() 
	{
		try {
			setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
			this.setSize(1003, 532);
			setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
			{
				jMenuBar1 = new JMenuBar();
				setJMenuBar(jMenuBar1);
				{
					menuFile = new JMenu();
					jMenuBar1.add(menuFile);
					menuFile.setText("Datei");
					{
						menuItemOpen = new JMenuItem();
						menuFile.add(menuItemOpen);
						menuItemOpen.setText("Oeffnen");
						menuItemOpen.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								menuItemOpenActionPerformed(evt);
							}
						});
					}
					{
						menuItemSave = new JMenuItem();
						menuFile.add(menuItemSave);
						menuItemSave.setText("Speichern");
						menuItemSave.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								menuItemSaveActionPerformed(evt);
							}
						});
					}
					{
						menuItemSaveAs = new JMenuItem();
						menuFile.add(menuItemSaveAs);
						menuItemSaveAs.setText("Speichern unter...");
						menuItemSaveAs.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								menuItemSaveAsActionPerformed(evt);
							}
						});
					}
					{
						menuExport = new JMenu();
						menuFile.add(menuExport);
						menuExport.setText("Exportieren...");
						{
							menuItemExportCurrent = new JMenuItem();
							menuExport.add(menuItemExportCurrent);
							menuItemExportCurrent.setText("Aktuellen Schaltplan");
							menuItemExportCurrent.addActionListener(new ActionListener() {
								public void actionPerformed(ActionEvent evt) {
									try {
										menuItemExportCurrentActionPerformed(evt);
									} catch (IOException e) {
										e.printStackTrace();
									}
								}
							});
						}
						{
							menuItemExportBoth = new JMenuItem();
							menuExport.add(menuItemExportBoth);
							menuItemExportBoth.setText("Alle Schaltplaene");
							menuItemExportBoth.addActionListener(new ActionListener() {
								public void actionPerformed(ActionEvent evt) {
									try {
										menuItemExportBothActionPerformed(evt);
									} catch (IOException e) {
										e.printStackTrace();
									}
								}
							});
						}
					}
				}
				{
					menuTools = new JMenu();
					jMenuBar1.add(menuTools);
					menuTools.setText("Tools");
					{
						menuItemExtendWorkBench = new JMenuItem();
						menuTools.add(menuItemExtendWorkBench);
						menuItemExtendWorkBench.setText("Arbeitsflaeche vergroeßern");
						menuItemExtendWorkBench.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								menuItemExtendWorkBenchActionPerformed(evt);
							}
						});
					}
					{
						menuItemReduceWorkBench = new JMenuItem();
						menuTools.add(menuItemReduceWorkBench);
						menuItemReduceWorkBench.setText("Arbeitsflaeche verkleiner");
						menuItemReduceWorkBench.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								menuItemReduceWorkBenchActionPerformed(evt);
							}
						});
					}
				}
				{
					menuEditor = new JMenu();
					jMenuBar1.add(menuEditor);
					menuEditor.setText("Editor");
					{
						menuItemNewSymbol = new JMenuItem();
						menuEditor.add(menuItemNewSymbol);
						menuItemNewSymbol.setText("Neues Schaltzeichen");
						menuItemNewSymbol.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								menuItemNewSymbolActionPerformed(evt);
							}
						});
					}
				}
				{
					menuExtras = new JMenu();
					jMenuBar1.add(menuExtras);
					menuExtras.setText("Extras");
					{
						menuItemPreferences = new JMenuItem();
						menuExtras.add(menuItemPreferences);
						menuItemPreferences.setText("Benutzervorgaben");
						menuItemPreferences.addActionListener(new ActionListener() {
							public void actionPerformed(ActionEvent evt) {
								menuItemPreferencesActionPerformed(evt);
							}
						});
					}
				}
			}
			{
				jSplitPane1 = new JSplitPane();
				getContentPane().add(jSplitPane1, BorderLayout.CENTER);
				//Left side of the SplitPane
				{ 
					BorderLayout jPanel1Layout = new BorderLayout();
					jPanel1.setLayout(jPanel1Layout);
					jPanel1.add(jScrollPane1);
					jScrollPane1.setViewportView(jList1);
					jSplitPane1.add(jPanel1, JSplitPane.LEFT);
					jPanel1.setMinimumSize(new Dimension(300, 50));
					jSplitPane1.setDividerLocation(300);
					jSplitPane1.setEnabled(false);
				}
				//Right side of the SplitPane
				{
					jScrollPane2.setViewportView(drawComponent1);
					jScrollPane2.getViewport().setBackground(Color.white);
					jScrollPane3.setViewportView(drawComponent2);
					jScrollPane3.getViewport().setBackground(Color.white);
					jTabbedPane2.addTab("Wirkschaltplan", jScrollPane2);
					jTabbedPane2.addTab("Stromlaufplan", jScrollPane3);
					jSplitPane1.add(jTabbedPane2, JSplitPane.RIGHT);
					//MOUSELISTENER
					//create mouselisteners
					MouseMotionAdapter mma = new MouseMotionAdapter() {
						public void mouseDragged(MouseEvent evt) {
							svgCanvasMouseDragged(evt);
						}
					};
					MouseAdapter ma = new MouseAdapter() {
						public void mouseReleased(MouseEvent evt) {
							svgCanvasMouseReleased(evt);
						}
						public void mousePressed(MouseEvent evt) {
							svgCanvasMousePressed(evt);
						}
					};
					//add mouselisteners to components
					drawComponent1.addMouseMotionListener(mma);
					drawComponent2.addMouseMotionListener(mma);
					drawComponent1.addMouseListener(ma);
					drawComponent2.addMouseListener(ma);
					//KEYBINDINGS
					//create keybindings
					AbstractAction delete = new AbstractAction() {
						public void actionPerformed(ActionEvent e) {
							svgCanvasKeyDELETEPressed();
						}
					};
					AbstractAction plus = new AbstractAction() {
						public void actionPerformed(ActionEvent e) {
							svgCanvasKeyPLUSPressed();
						}
					};
					AbstractAction minus = new AbstractAction() {
						public void actionPerformed(ActionEvent e) {
							svgCanvasKeyMINUSPressed();
						}
					};
					//add keybindings
					//Del
					drawComponent1.getInputMap(JSVGComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), "deleteAction");
					drawComponent1.getActionMap().put("deleteAction", delete);
					//+
					drawComponent1.getInputMap(JSVGComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, 0), "plusAction");
					drawComponent1.getInputMap(JSVGComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, 0), "plusAction");
					drawComponent1.getActionMap().put("plusAction", plus);
					//-
					drawComponent1.getInputMap(JSVGComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT, 0), "minusAction");
					drawComponent1.getInputMap(JSVGComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, 0), "minusAction");
					drawComponent1.getActionMap().put("minusAction", minus);
					//Del
					drawComponent2.getInputMap(JSVGComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), "deleteAction");
					drawComponent2.getActionMap().put("deleteAction", delete);
					//+
					drawComponent2.getInputMap(JSVGComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ADD, 0), "plusAction");
					drawComponent2.getInputMap(JSVGComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_PLUS, 0), "plusAction");
					drawComponent2.getActionMap().put("plusAction", plus);
					//-
					drawComponent2.getInputMap(JSVGComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_SUBTRACT, 0), "minusAction");
					drawComponent2.getInputMap(JSVGComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS, 0), "minusAction");
					drawComponent2.getActionMap().put("minusAction", minus);
				}
			}
			//FileChooser Filters
			{
				jfc.setAcceptAllFileFilterUsed(false);
				jfc.addChoosableFileFilter(new FileFilter()
				{
					public boolean accept( File f ) 
					{
						return f.isDirectory() || f.getName().toLowerCase().endsWith(".svg");
					}
					public String getDescription() 
					{
						return "SVG-Dateien";
					} 
				});
				jfc.addChoosableFileFilter(new FileFilter()
				{
					public boolean accept( File f ) 
					{
						return f.isDirectory() || f.getName().toLowerCase().endsWith(".jpg");
					}
					public String getDescription() 
					{
						return "JPG-Dateien";
					} 
				});
			}
			pack(); 
		} catch (Exception e) {
			e.printStackTrace();
		}
	}