summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/gui/image/DeleteImage_GUI.java
blob: b1fde19673091a0ac94b90b444e3597d472535ce (plain) (tree)
1
2
3
4
5
6
7
8
9
                  
 
                           
                               
 
                      
                          

                           
                                  
                            







                                     

                                   

                                  
                           

                          
                     
 

                             













                                
                                      






                                                   

                                               


                                           
 
                    
                          
                     
 
                               
                                    
 
                                      
                               
                         
                      
                             
 

                                             
 

                                                                

                                                         












                                           



                                       

                                         
                                                               
                                     
                           
                                                                             



















                                                                                                                                          
                                                      
                                                            
 




                                                                                  
 

                                                                                            
 
 
                            


                                                                                           
           

                             
                                                     
 

                                                           
 


                                                                     
                                                                         
                                                            





                                                                                                     

                                               


                                                                    
 
                                                              





















                                                                                           


                                                                                           
 
                                                                                           
 


                                                                     
                   
                                                           
                                    
 
                     
                                                           


                                                                                               
 

                                            
                                         

                                                                       
                                                         
                                          
                                                 
 

                                                                                 



                                                              
                                                         


                                                    
                                                                                                



                                                                                       
 


                                                                           
                                          
                                                                                                                                 







                                                                      
 

                                                        

                                                                                     
                                                   

                                          
 

                                                                    
                                           
 
                                                                               
                                                                  
                                                     
 
                                                 
                                                               
 

                                                               
                                                             
                                                             
                                                                              

                                                            
                                                  
                                                            
                                                                   




                                                                                                                                                                      

                                                                           
                                        
                                                             
 
                                                        



                                                                                                                                               

                                                                           
                                 
                                                               
 
                                                 

                         
 
                                                          

                                             
 

                                                   
                                                                                      
                                 

                                                                               
                                                  
                                             
                                                               
                                                                               


                                                              
 
                                             
                                                        

                                                                                                   
                 
                                                         

                                                                       
                                                                        
                                                                                  
                                                            




                                                                                                   

                                                                                                   



                                                                                                     

                                                             
                                          


                                                                                                    
                                                                             



                                                                                                     
                                 
                         
 
                   
                                                     
                                      
 
                                                              


                                                                   
 
                                                          
                                                            
 
                                                          
 
                                                                       
                                                                          





                                                      
 


                                                  
 
                                                        


                                                     
 
                                                 
                                                   
                                          
 

                                                              
                                                
 
                                                            

                                                                       
 

                                                         
                                            
 

                                                                               
                                                                                              
                                                                                  

                                                                                                        





                                                                                                                     
                                                                                                                      




                                                                                                                     


                                                                                                                      





                                                                                               

                                                                                                              
                                                                     
 
























                                                                                                                                              
                                                                                                                           




                                                                                                                                                               
                                                                                




                                                                                                                                                 

                                                                                           
                                                                                                                   
                                                                                                                  
                                                                                                                                                                  


                                                                                                                                                 
 
                                                                                               
 

                                                                                                      
                                                                                          




                                                                                                                            
 

                                                                                                      
                                                                                          






                                                                                                                            


                                                                                                                                                                                      


                                                                                                   
                                                                                                  
                                                                                                                                                                                                     



                                                                                                                                 
 
                                                                            
                                                                                                     




                                                                                                                    
                                 
 



                                                       
 






                                                                                        














                                                                                                                                             
                                                 
                                         
 








                                                                                    
 
                                                                 


                                                            

                                                         
                                                              



                                                                               
                                                                          

                                                                                    
 
                                                                         
                                                                            
 
                                                                         
 
                                                                                          







                                                                         
                 
 
                                                        
                                                   
                                                
 
                                                          
                                                      
                                                  
 

















































                                                                                 
                                                               


                                              
                                                         



































                                                                             
                                                               
































                                                                         

                                                  
 

                                                       
 
                                                         


                                                                   
 
                                                                 
 


                                                                          
 
                                                                  
 
                                                                
 

                                                            

                         
                                         
 
                                                           


                                                                   
 
                                                                 
 


                                                                           
 
                                                                  
 
                                                                
 

                                                            
 

                         
                                          
 







                                                                    
 



                                                                    


                                                                                 


                                            
 
                         
         
 
                                                 
                                                                          
 
                                                    
                     
 
                                                     



                                                                                                 
                                



                                                                                    
                         
 
                                                                               
 

                                                                                  
                                  

                                                                                           
 
                                             
                                                                   




                                                                                      

                                                                                               
                                                                              
                                                                                 
                                                                        


                                                  
 
                         
                                     

                                                                                   
 


                                                                               
 
                                     
                                                          
 
                                             
                                                        

                                                                                                   


                             
 
                                       

                                                                                      












                                                        
 
         
 

                                                               

                                                                                           

                                                                                  



                                                                                         
                                                                                     




















                                                                    
 


                                             
 
package gui.image;

import gui.intro.About_GUI;
import gui.intro.MainMenue_GUI;

import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.HeadlessException;
import java.awt.SystemColor;
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.net.URI;
import java.net.URISyntaxException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.swing.JButton;
import javax.swing.JComboBox;
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.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.ListSelectionModel;
import javax.swing.RowFilter;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

import models.Links;
import models.SessionData;
import models.person;

import org.apache.log4j.Logger;
import org.apache.thrift.TException;

import server.generated.Server.Client;
import thrift.ThriftConnection;
import util.GuiOrganizer;
import util.OpenLinks;
import javax.swing.JTextArea;

@SuppressWarnings("serial")
public class DeleteImage_GUI extends JFrame {

	private final static Logger LOGGER = Logger
			.getLogger(FTPCreateUploader_GUI.class);

	private final JPanel contentPanel = new JPanel();
	JLabel labelName;
	JLabel labelUpdate;
	JLabel labelVerantwortlicher;
	JLabel labelWeitereVerantwortliche;
	JLabel labelVorlage;
	JLabel labelLizenzSoftware;
	JLabel labelInternet;
	JLabel labelRam;
	JLabel labelCPU;
	JLabel labelID;
	JLabel labelVersion;
	JTextArea textAreadesc;
	private JLabel labelOS;
	String[] result;
	JRadioButton rdbtnInternetJa;
	JRadioButton rdbtnInternetNein;
	JComboBox<String> comboBox;
	JTable tablemyImages;
	private JTextField textFieldName;
	private JLabel lblTotalResults = new JLabel("Anzahl:");
	boolean activeSearch = false;
	Component c = null;
	String[] titles = { "Name", "Lizenzpflichtig", "OS", "Veranstaltung",
			"Verantwortlicher", "Letztes Update", "ID", "Version", "Template",
			"Beschreibung" }; // Angezeigt
	// werden
	// aber
	// nur
	// Name
	// (0),
	// OS
	// (2),
	// Verantwortlicher
	// (4),
	// Letztes
	// Update
	// (5)
	private static final String HELP_MESSAGE = "<html><div align = \"center\">"
			+ "Löschen Sie hier die Images, die nicht mehr benötigt werden.<br />"
			+ "Ein gelöschtes Image wird auch tatsächlich physisch gelöscht und kann nicht wiederhergestellt werden.<br />"
			+ "Wird das Image nach dem Löschen nochmal benötigt, muss es erneut hochgeladen werden."
			+ "</div></html>";

	ThriftConnection con = new ThriftConnection();
	Client client = models.Client.clientcon.getClient();

	final DefaultTableModel modelMyImages = new DefaultTableModel(titles, 0) {
		public boolean isCellEditable(int rowIndex, int mColIndex) {
			return false;
		}
	};

	final TableRowSorter<TableModel> rowSorterMyImages = new TableRowSorter<TableModel>(
			modelMyImages);


	RowFilter rf = null;
	List<RowFilter<Object, Object>> filters = new ArrayList<RowFilter<Object, Object>>(
			2);

	/**
	 * Create the dialog.
	 */
	public DeleteImage_GUI(Component formerGUI) {

		filters.add(RowFilter.regexFilter(".", 0));
		rf = RowFilter.orFilter(filters);

		addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent arg0) {
				// Beendet die Anwendung nach klick auf X
				con.closeThriftConnection();
				try {
					client.setSessionInvalid(SessionData.session.getAuthToken());
				} catch (TException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				System.exit(0);
			}

			@Override
			public void windowOpened(WindowEvent arg0) {

				initTableModel(modelMyImages);

				// auszublendende Angaben
				// 1=Lizenzpflichtig
				// 3=Veranstaltung
				// 6=ID
				// 7=Version
				// 8=Template
				tablemyImages.getColumnModel().getColumn(1).setWidth(0);
				tablemyImages.getColumnModel().getColumn(1).setMinWidth(0);
				tablemyImages.getColumnModel().getColumn(1).setMaxWidth(0);
				tablemyImages.getColumnModel().getColumn(3).setWidth(0);
				tablemyImages.getColumnModel().getColumn(3).setMinWidth(0);
				tablemyImages.getColumnModel().getColumn(3).setMaxWidth(0);
				tablemyImages.getColumnModel().getColumn(8).setWidth(0);
				tablemyImages.getColumnModel().getColumn(8).setMinWidth(0);
				tablemyImages.getColumnModel().getColumn(8).setMaxWidth(0);
				tablemyImages.getColumnModel().getColumn(6).setWidth(0);
				tablemyImages.getColumnModel().getColumn(6).setMinWidth(0);
				tablemyImages.getColumnModel().getColumn(6).setMaxWidth(0);
				tablemyImages.getColumnModel().getColumn(7).setWidth(0);
				tablemyImages.getColumnModel().getColumn(7).setMinWidth(0);
				tablemyImages.getColumnModel().getColumn(7).setMaxWidth(0);
				tablemyImages.getColumnModel().getColumn(9).setWidth(0);
				tablemyImages.getColumnModel().getColumn(9).setMinWidth(0);
				tablemyImages.getColumnModel().getColumn(9).setMaxWidth(0);

				tablemyImages.getTableHeader().setReorderingAllowed(false);

				// bis hier
				textFieldName.requestFocusInWindow();
			}
		});
		// Verhindert das Vergroessern Des Fensters
		setResizable(false);

		try {
			// Setzt das Look & Feel auf System
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (ClassNotFoundException | InstantiationException
				| IllegalAccessException | UnsupportedLookAndFeelException e) {

			e.printStackTrace();
		}
		// Setzt den Fenstertitel
		setTitle("bwLehrpool Suite - Image löschen - "
				+ person.verantwortlicher.getUserID());
		// Zentriert das Fenster in die Bildmitte
		setBounds(0, 0, 918, 722);
		setLocationRelativeTo(formerGUI);

		final DefaultTableModel model = new DefaultTableModel(titles, 0);

		getContentPane().setLayout(null);
		{
			JPanel panel = new JPanel();
			panel.setBackground(SystemColor.menu);
			panel.setBounds(10, 11, 892, 57);
			getContentPane().add(panel);
			panel.setLayout(null);
			{
				JLabel lblNewLabel = new JLabel("Zu löschendes Image wählen");
				lblNewLabel.setBounds(10, 11, 509, 22);
				panel.add(lblNewLabel);
				lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 18));
			}

			JTextPane txtpnBitteWhlenSie = new JTextPane();
			txtpnBitteWhlenSie.setEditable(false);
			txtpnBitteWhlenSie.setBackground(SystemColor.menu);
			txtpnBitteWhlenSie
					.setText("Wählen Sie bitte aus der unten stehenden Liste das zu löschende Image aus.");
			txtpnBitteWhlenSie.setBounds(10, 36, 509, 32);
			panel.add(txtpnBitteWhlenSie);
		}
		contentPanel.setBounds(10, 85, 577, 531);
		contentPanel.setBackground(SystemColor.menu);
		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
		getContentPane().add(contentPanel);
		contentPanel.setLayout(null);

		JPanel panel_1 = new JPanel();
		panel_1.setBackground(SystemColor.menu);
		panel_1.setBorder(new TitledBorder(null, "Filterfunktionen",
				TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panel_1.setBounds(10, 49, 557, 98);
		contentPanel.add(panel_1);
		panel_1.setLayout(null);

		JLabel lblNewLabel_2 = new JLabel("Volltextsuche:");
		lblNewLabel_2.setBounds(30, 30, 80, 20);
		panel_1.add(lblNewLabel_2);

		JLabel lblInternetIstInnerhalb = new JLabel("Betriebssystem:");
		lblInternetIstInnerhalb.setBounds(30, 58, 80, 20);
		panel_1.add(lblInternetIstInnerhalb);

		textFieldName = new JTextField();
		// Key Listener der Tastatureingabe registriert

		textFieldName.addKeyListener(new KeyAdapter() {
			@Override
			public void keyReleased(KeyEvent e) {
				// Textfield eingabe auslesen
				String stext = textFieldName.getText().trim();

				// Wenn Textfield nicht leer
				if (stext != "") {
					activeSearch = true;
					// Filtere nach der Eingabe
					filters.clear();
					filters.add(RowFilter.regexFilter("(?i)" + stext, 0)); // case
																			// insensitive
					filters.add(RowFilter.regexFilter("(?i)" + stext, 9)); // case
																			// insensitive
					rf = RowFilter.orFilter(filters);
					rowSorterMyImages.setRowFilter(rf);
				} else {
					activeSearch = false;

					filters.clear();
					filters.add(RowFilter.regexFilter(".", 0)); // case
																// insensitive,
																// filter for
																// anything
					rf = RowFilter.orFilter(filters);
					rowSorterMyImages.setRowFilter(rf);
				}
				tablemyImages.clearSelection();

				resetImageInfo();
			}
		});

		textFieldName.setBounds(133, 30, 400, 20);
		panel_1.add(textFieldName);
		textFieldName.setColumns(10);

		comboBox = new JComboBox<String>();
		try {
			// Holt sich eine Liste aller verfügbaren Betriebssysteme vom
			// Server
			List<String> list = client.getAllOS(SessionData.session
					.getAuthToken());
			// Leeres Item hinzufuegen
			comboBox.addItem("");
			for (int i = 0; i < list.size(); i++) {
				// Hinzufuegen der verfuegbaren Betriebssysteme
				comboBox.addItem(list.get(i));
			}
		} catch (TException e2) {

			e2.printStackTrace();
			JOptionPane.showMessageDialog(c,
					e2.getCause() + "\n" + e2.getStackTrace(), "Debug-Message",
					JOptionPane.ERROR_MESSAGE);
		}
		// Registriert Auswahlaenderungen der Box
		comboBox.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				// Prueft das die Auswahl nicht leer ist
				if (comboBox.getSelectedItem().toString() != "") {
					activeSearch = true;

					/*
					 * rowSorterAll.setRowFilter(RowFilter.regexFilter(comboBox
					 * .getSelectedItem().toString(), 2));
					 */
					rowSorterMyImages.setRowFilter(RowFilter.regexFilter(
							comboBox.getSelectedItem().toString(), 2));
					/*
					 * rowSorterPublicVorlagen.setRowFilter(RowFilter.regexFilter
					 * ( comboBox.getSelectedItem().toString(), 2));
					 */
				} else {
					activeSearch = false;
					/*
					 * String username = person.verantwortlicher.getName() + " "
					 * + person.verantwortlicher.getVorname();
					 */
					rowSorterMyImages.setRowFilter(null);
					/*
					 * rowSorterPublicVorlagen.setRowFilter(RowFilter.regexFilter
					 * ( "true", 8)); rowSorterAll.setRowFilter(null);
					 */
				}
			}

		});
		comboBox.setBounds(133, 58, 191, 20);
		panel_1.add(comboBox);

		JLabel lblHauptmen = new JLabel("Hauptmenü");
		lblHauptmen.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {

				// oeffnet das Hauuetmenue
				con.closeThriftConnection();

				// oeffnet das Hauuetmenue

				DeleteImage_GUI.this.setVisible(false);
				MainMenue_GUI main = new MainMenue_GUI(c);
				main.setVisible(true);
			}
		});
		lblHauptmen.setForeground(Color.BLUE);
		lblHauptmen.setBounds(10, 11, 61, 14);
		contentPanel.add(lblHauptmen);

		JLabel label_1 = new JLabel(">");
		label_1.setBounds(69, 11, 13, 14);
		contentPanel.add(label_1);

		JLabel lblVlimage = new JLabel("Image");
		lblVlimage.setForeground(Color.BLUE);
		lblVlimage.setBounds(81, 11, 45, 14);
		contentPanel.add(lblVlimage);

		JLabel label_2 = new JLabel(">");
		label_2.setBounds(115, 11, 13, 14);
		contentPanel.add(label_2);

		JLabel lblNewLabel_1 = new JLabel("Löschen");
		lblNewLabel_1.setBounds(128, 11, 155, 14);
		contentPanel.add(lblNewLabel_1);

		JButton btnDelete = new JButton("Löschen");
		btnDelete.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {

				String imageid = "";
				String imageversion = "";
				int eingabe;

				if (tablemyImages.getSelectedRowCount() != 0) {

					// frage, soll das selektierte Daten geloescht werden?
					eingabe = JOptionPane.showConfirmDialog(c,
							"Wollen Sie diese Daten löschen?", "Löschen?",
							JOptionPane.YES_NO_OPTION);

					if (eingabe == JOptionPane.YES_OPTION) {

						imageid = modelMyImages.getValueAt(
								tablemyImages
										.convertRowIndexToModel(tablemyImages
												.getSelectedRow()), 6)
								.toString();

						imageversion = modelMyImages.getValueAt(
								tablemyImages
										.convertRowIndexToModel(tablemyImages
												.getSelectedRow()), 7)
								.toString();

						// Image darf nur geloescht werden, wenn keine
						// Veranstaltung mehr auf das Image verweist.
						// Unbdingt abfragen!

						try {
							if (!client.connectedToLecture(imageid,
									imageversion,
									SessionData.session.getAuthToken())) {
								try {

									//  try to delete file from file system
									if (client.deleteImageServer(imageid,
											imageversion,
											SessionData.session.getAuthToken()) == true) {
										// successful, now delete file from DB
										if (client.deleteImageData(imageid,
												imageversion,
												SessionData.session
														.getAuthToken())) {

											LOGGER.info("Image '" + imageid
													+ "' erfolgreich gelöscht.");

											DeleteImage_GUI di = new DeleteImage_GUI(
													c);
											di.setVisible(true);
											dispose();

										} else {
											//could not delete file from DB
											LOGGER.info("Image '"
													+ imageid
													+ "' konnte nicht gelöscht werden.");

											JOptionPane
													.showMessageDialog(
															c,
															"Image konnte nicht gelöscht werden.",
															"Fehler",
															JOptionPane.INFORMATION_MESSAGE);
										}
									} else {
										// could not delete file from file
										// system
										LOGGER.info("Image '"
												+ imageid
												+ "' konnte nicht von Server gelöscht werden.");

										JOptionPane
												.showMessageDialog(
														c,
														"Image konnte nicht vom Server gelöscht werden.",
														"Fehler",
														JOptionPane.INFORMATION_MESSAGE);
									}

								} catch (HeadlessException e) {

									e.printStackTrace();
									JOptionPane.showMessageDialog(
											c,
											e.getCause() + "\n"
													+ e.getStackTrace(),
											"Debug-Message",
											JOptionPane.ERROR_MESSAGE);
								} catch (TException e) {

									e.printStackTrace();
									JOptionPane.showMessageDialog(
											c,
											e.getCause() + "\n"
													+ e.getStackTrace(),
											"Debug-Message",
											JOptionPane.ERROR_MESSAGE);
								}

							} else {
								LOGGER.info("Image '"
										+ imageid
										+ "' konnte nicht gelöscht werden, da mindestens eine Veranstaltung mit diesem Image verlinkt ist.");

								JOptionPane
										.showMessageDialog(
												c,
												"Image kann nicht gelöscht werden, da mindestens eine Veranstaltung mit diesem Image verlinkt ist.",
												"Verlinkung vorhanden",
												JOptionPane.INFORMATION_MESSAGE);
							}
						} catch (TException e) {

							e.printStackTrace();
							JOptionPane.showMessageDialog(c, e.getCause()
									+ "\n" + e.getStackTrace(),
									"Debug-Message", JOptionPane.ERROR_MESSAGE);
						}
					}

				}

			}
		});
		btnDelete.setBounds(449, 508, 118, 23);
		contentPanel.add(btnDelete);

		JScrollPane scrollPaneMyImage = new JScrollPane();
		scrollPaneMyImage.setBounds(10, 158, 557, 339);
		contentPanel.add(scrollPaneMyImage);
		tablemyImages = new JTable();
		tablemyImages.getSelectionModel().addListSelectionListener(
				new ListSelectionListener() {
					public void valueChanged(ListSelectionEvent e) {

						if (tablemyImages.getSelectedRow() != -1) {
							String imageid = modelMyImages
									.getValueAt(
											tablemyImages
													.convertRowIndexToModel(tablemyImages
															.getSelectedRow()),
											6).toString();
							String version = modelMyImages
									.getValueAt(
											tablemyImages
													.convertRowIndexToModel(tablemyImages
															.getSelectedRow()),
											7).toString();
							writeImageData(imageid, version);
						}
					}

				});
		tablemyImages.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		tablemyImages.setModel(modelMyImages);
		tablemyImages.getColumnModel().getColumn(1).sizeWidthToFit();
		tablemyImages.getColumnModel().getColumn(2).sizeWidthToFit();
		tablemyImages.getColumnModel().getColumn(3).sizeWidthToFit();
		tablemyImages.getColumnModel().getColumn(4).sizeWidthToFit();
		tablemyImages.getColumnModel().getColumn(5).sizeWidthToFit();
		tablemyImages.setRowSorter(rowSorterMyImages);

		scrollPaneMyImage.setViewportView(tablemyImages);

		lblTotalResults.setBounds(10, 512, 131, 20);
		contentPanel.add(lblTotalResults);
		{
			JPanel buttonPane = new JPanel();
			buttonPane.setBounds(0, 640, 902, 33);
			buttonPane.setBackground(SystemColor.menu);
			buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
			getContentPane().add(buttonPane);
			{
				JButton okButton = new JButton("Zurück");
				okButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {

						// oeffnet das Hauptmenü
						con.closeThriftConnection();

						// oeffnet das Hauptmenue

						MainMenue_GUI main = new MainMenue_GUI(c);
						main.setVisible(true);
						dispose();
					}
				});
				okButton.setActionCommand("OK");
				buttonPane.add(okButton);
				getRootPane().setDefaultButton(okButton);
			}
		}

		JSeparator separator = new JSeparator();
		separator.setBounds(0, 79, 912, 1);
		getContentPane().add(separator);

		JSeparator separator_1 = new JSeparator();
		separator_1.setBounds(0, 627, 912, 2);
		getContentPane().add(separator_1);

		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setBorder(new TitledBorder(null, "Detailinformationen",

		TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panel.setBackground(SystemColor.menu);
		panel.setBounds(586, 85, 316, 531);
		getContentPane().add(panel);

		JLabel lblName = new JLabel("Name:");
		lblName.setBounds(10, 87, 130, 14);
		panel.add(lblName);

		labelName = new JLabel("");
		labelName.setBounds(10, 102, 296, 14);
		panel.add(labelName);

		JLabel lblVerantwortlicher = new JLabel("Verantwortlicher:");
		lblVerantwortlicher.setBounds(10, 259, 130, 14);
		panel.add(lblVerantwortlicher);

		labelOS = new JLabel("");
		labelOS.setBounds(10, 216, 296, 14);
		panel.add(labelOS);

		JLabel lblWeitereVerantwortliche = new JLabel("Betriebssystem:");
		lblWeitereVerantwortliche.setBounds(10, 202, 130, 14);
		panel.add(lblWeitereVerantwortliche);

		labelVerantwortlicher = new JLabel("");
		labelVerantwortlicher.setBounds(10, 272, 296, 14);
		panel.add(labelVerantwortlicher);

		JLabel label = new JLabel("Weitere Verantwortliche:");
		label.setBounds(10, 284, 130, 14);
		panel.add(label);

		labelWeitereVerantwortliche = new JLabel("");
		labelWeitereVerantwortliche.setBounds(10, 297, 296, 14);
		panel.add(labelWeitereVerantwortliche);

		labelUpdate = new JLabel("");
		labelUpdate.setBounds(10, 245, 296, 14);
		panel.add(labelUpdate);

		JLabel lblLetztesUpdate = new JLabel("Letztes Update:");
		lblLetztesUpdate.setBounds(10, 231, 130, 14);
		panel.add(lblLetztesUpdate);

		JLabel lblImageIstVorlage = new JLabel("Image ist Vorlage:");
		lblImageIstVorlage.setBounds(10, 334, 130, 14);
		panel.add(lblImageIstVorlage);

		labelVorlage = new JLabel("");
		labelVorlage.setBounds(10, 348, 296, 14);
		panel.add(labelVorlage);

		labelLizenzSoftware = new JLabel("");
		labelLizenzSoftware.setBounds(10, 383, 296, 14);
		panel.add(labelLizenzSoftware);

		JLabel lblLizenzpflichtigeSoftware = new JLabel(
				"Lizenzpflichtige Software:");
		lblLizenzpflichtigeSoftware.setBounds(10, 367, 130, 14);
		panel.add(lblLizenzpflichtigeSoftware);

		JLabel lblInternet = new JLabel("Internetsperre vorhanden:");
		lblInternet.setBounds(10, 400, 130, 14);
		panel.add(lblInternet);

		labelInternet = new JLabel("");
		labelInternet.setBounds(10, 417, 296, 14);
		panel.add(labelInternet);

		JLabel lblEmpfehlungRam = new JLabel("Empfehlung RAM:");
		lblEmpfehlungRam.setBounds(10, 432, 130, 14);
		panel.add(lblEmpfehlungRam);

		labelRam = new JLabel("");
		labelRam.setBounds(10, 455, 296, 14);
		panel.add(labelRam);

		JLabel lblEmpfehlungCpu = new JLabel("Empfehlung CPU:");
		lblEmpfehlungCpu.setBounds(10, 469, 130, 14);
		panel.add(lblEmpfehlungCpu);

		labelCPU = new JLabel("");
		labelCPU.setBounds(10, 487, 296, 14);
		panel.add(labelCPU);

		JLabel lblTechnischeDaten = new JLabel("Technische Daten:");
		lblTechnischeDaten.setBounds(10, 312, 296, 14);
		panel.add(lblTechnischeDaten);

		JLabel lblId = new JLabel("ID:");
		lblId.setBounds(10, 23, 296, 14);
		panel.add(lblId);

		labelID = new JLabel("");
		labelID.setBounds(10, 37, 296, 14);
		panel.add(labelID);

		labelVersion = new JLabel("");
		labelVersion.setBounds(10, 73, 296, 14);
		panel.add(labelVersion);

		JLabel lblVersion = new JLabel("Version:");
		lblVersion.setBounds(10, 57, 296, 14);
		panel.add(lblVersion);

		JLabel lblBeschreibung = new JLabel("Beschreibung:");
		lblBeschreibung.setBounds(10, 119, 130, 14);
		panel.add(lblBeschreibung);

		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(10, 135, 296, 65);
		panel.add(scrollPane);

		textAreadesc = new JTextArea();
		textAreadesc.setEditable(false);
		textAreadesc.setFont(new Font("Tahoma", Font.PLAIN, 11));
		textAreadesc.setLineWrap(true);
		textAreadesc.setBackground(SystemColor.menu);
		scrollPane.setViewportView(textAreadesc);

		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);

		JMenu mnNewMenu_1 = new JMenu("Hilfe");
		menuBar.add(mnNewMenu_1);

		JMenuItem mntmFaq = new JMenuItem("FAQ");
		mntmFaq.addMouseListener(new MouseAdapter() {
			@Override
			public void mousePressed(MouseEvent arg0) {

				OpenLinks open = new OpenLinks();

				URI windows;
				try {
					windows = new URI(Links.getFAQ());

					open.openWebpage(windows);

				} catch (URISyntaxException e) {

					e.printStackTrace();
				}
			}
		});
		mnNewMenu_1.add(mntmFaq);

		JMenuItem mntmOtrs = new JMenuItem("OTRS");
		mntmOtrs.addMouseListener(new MouseAdapter() {
			@Override
			public void mousePressed(MouseEvent arg0) {

				OpenLinks open = new OpenLinks();

				URI windows;
				try {
					windows = new URI(Links.getOTRS());

					open.openWebpage(windows);

				} catch (URISyntaxException e) {

					e.printStackTrace();
				}

			}
		});
		mnNewMenu_1.add(mntmOtrs);

		JMenuItem menuItem = new JMenuItem("About");
		menuItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				About_GUI ab = new About_GUI();
				ab.setVisible(true);
			}
		});
		mnNewMenu_1.add(menuItem);

		JMenu mnNewMenu_Info = new JMenu("Info");
		mnNewMenu_Info.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				JOptionPane.showMessageDialog(c, HELP_MESSAGE,
						"Hilfe zu dieser Oberfläche",
						JOptionPane.INFORMATION_MESSAGE);
			}
		});
		menuBar.add(mnNewMenu_Info);

		c = this;
	}

	// Initiale Beffuelung eines Table models
	public DefaultTableModel initTableModel(DefaultTableModel model) {

		List<server.generated.Image> images;
		try {

			// Hole eine Liste der Images
			if (person.verantwortlicher.getRole() == "Admin") {
				// get complete list
				images = client.getImageList(person.verantwortlicher
						.getUserID(),SessionData.session.getAuthToken());
			} else {
				// get permitted list
				images = client.getImageListPermissionAdmin(
						person.verantwortlicher.getUserID(),
						SessionData.session.getAuthToken());
			}

			Iterator<server.generated.Image> i = images.iterator();

			System.out.println("Size of image list=" + images.size());

			int x = 0;
			SimpleDateFormat in = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			SimpleDateFormat out = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");

			while (i.hasNext()) {
				// erzeuge Objekte fuer die Tabelle
				Object[] obj = { images.get(x).getImageName(),
						images.get(x).getLicenseRestriction(),
						images.get(x).getOsName(),
						images.get(x).getLectureName(),
						images.get(x).getUserData(),
						out.format(in.parse(images.get(x).updateTime)),
						images.get(x).id, images.get(x).getVersion(),
						images.get(x).getIsTemplate(),
						images.get(x).getDescription() };
				// Fuege diese Objekte der Tabelle hinzu
				model.addRow(obj);
				x++;
				i.next();

			}
			if (x == 0) {
				System.out.println("Damn... nothing to do here..");
			}

			// show number if rows in GUI
			lblTotalResults.setText(lblTotalResults.getText() + " "
					+ model.getRowCount());

			return model;
		} catch (TException | ParseException e1) {

			e1.printStackTrace();
			JOptionPane.showMessageDialog(c,
					e1.getCause() + "\n" + e1.getStackTrace(), "Debug-Message",
					JOptionPane.ERROR_MESSAGE);
		}
		return model;
	}

	private void resetImageInfo() {
		// reset the detailed information on the right hand side when changing
		// search string
		labelID.setText("");
		labelVersion.setText("");
		labelName.setText("");
		textAreadesc.setText("");
		labelOS.setText("");
		labelUpdate.setText("");
		labelVerantwortlicher.setText("");
		labelWeitereVerantwortliche.setText("");
		labelVorlage.setText("");
		labelLizenzSoftware.setText("");
		labelInternet.setText("");
		labelRam.setText("");
		labelCPU.setText("");

	}

	public void writeImageData(String id, String version) {
		try {
			SimpleDateFormat in = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			SimpleDateFormat out = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
			Map<String, String> res = client.getImageData(id, version,
					SessionData.session.getAuthToken());
			labelName.setText(res.get("name"));
			labelOS.setText(res.get("os"));
			labelUpdate.setText(out.format(in.parse(res.get("lastupdate"))));
			labelVerantwortlicher.setText(res.get("owner"));
			labelWeitereVerantwortliche.setText("Noch nicht Verfügbar");
			if (res.get("template").equals("true")) {
				labelVorlage.setText("Ja");
			} else {
				labelVorlage.setText("Nein");
			}
			if (res.get("license").equals("1")) {
				labelLizenzSoftware.setText("Ja");
			} else {
				labelLizenzSoftware.setText("Nein");
			}
			if (res.get("internet").equals("1")) {
				labelInternet.setText("Ja");
			} else {
				labelInternet.setText("Nein");
			}
			labelRam.setText(res.get("ram"));
			labelCPU.setText(res.get("cpu"));
			labelID.setText(res.get("id"));
			labelVersion.setText(res.get("version"));
			textAreadesc.setText(res.get("desc"));
		} catch (TException | ParseException e1) {

			e1.printStackTrace();
		}
	}
}