summaryrefslogblamecommitdiffstats
path: root/Dozentenmodul/src/GUI/SearchImage_GUI.java
blob: ad4747686eb3d7e3be8936da7eba616f105fedf8 (plain) (tree)
1
2
3
4
5
6
7
8
9
             

 
                       

                            

                             
                         







                                      


                           
                            
                              
                            
                           
                           
                          
                             
                              
                           
                                 

                                
                                
                           

                               
                              



                                                    

                                         
                                            


                                         
                                     
 

                                







                                                          
                                    
                               
                              
                                          
                                
                                                                                                                                       

                                                 



                                                                                                          




















                                                                                   
                                                                         


                                                
                                                         


                                     
                                                           





                                                                                                
                                         
                                                         
                                                         
                                                                                    

                                                       
                                                

                 
                 













































                                                                                                                                                                            
                                                               


                                                                
                                                             
                                                                      

                                                            
                                              



                                                                                                                           
                                         


                                  
 







                                                                                                
                                                                  








                                                                                
                                                    
                      
                                                                                            
                                                             
                                                 
                                              

                                                       

                                                                             
                          
                                          


                                                           
                                                        

                                                                        

                                                                              
                                  


                                                                                                                                         
                                                                                         
                          
                         







                                                                    
                                                       

























                                                                        
















                                                                                                            




                                                                   

                                                       




                                                                              

                                                               








                                                                               


                                                           

                                                                                            














                                                                                           
                                                   











                                                                                                  
                                                   











                                                                                                      

                                                   
                 
                 
 


                                                                        
                                                        




                                                                                      
                                                          
                                               








                                                                                  

                                                                                     












                                                                                        
 

                                                                                                        

                                                           

















                                                                         









                                                            
                                                
                                                                          
                                           
                      
                                                     
                         

                                                                    
                         



                                           



                                                                                                                                                                                                                                       
                                     
                                          
                                 


                                      
                                          





                                                           


          
package gui;


import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.SystemColor;
import java.awt.Toolkit;
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.util.Iterator;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
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.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.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;

import org.apache.thrift.TException;

import server.Server.Client;
import thrift.ThriftConnection;

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

	private final JPanel contentPanel = new JPanel();
	String[] result;
	JRadioButton rdbtnInternetJa;
	JRadioButton rdbtnInternetNein;
	JComboBox<String> comboBox;
	JTable tableAllImages;
	JTable tablemyImages;
	private JTextField textFieldName;
	JTabbedPane tabbedPane;
	String[] titles= {"Image-Name", "Lizenzpflichtig", "OS", "Veranstaltung", "Verantwortlicher", "Letztes Update", "Schlagwort"};
    ThriftConnection con=new ThriftConnection();
    Client client=con.getThriftConnection();
    final DefaultTableModel modelAll = new DefaultTableModel( titles, 0 );
    final DefaultTableModel modelMyImages = new DefaultTableModel( titles, 0 );
    final TableRowSorter<TableModel> rowSorterAll = new TableRowSorter<TableModel>( modelAll );
    final TableRowSorter<TableModel> rowSorterMyImages = new TableRowSorter<TableModel>( modelMyImages );
    
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		try {
			SearchImage_GUI dialog = new SearchImage_GUI();
			dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
			dialog.setVisible(true);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Create the dialog.
	 */
	public SearchImage_GUI() {
		addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent arg0) {
				//Beendet die Anwendung nach klick auf X
				System.exit(0);
			}
		});
		//Verhindert das Vergrößern Des Fensters
		setResizable(false);
		
		try {
			//Setzt das Look & Feel auf System
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (ClassNotFoundException | InstantiationException
				| IllegalAccessException | UnsupportedLookAndFeelException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		//Setzt den Fenstertitel
		setTitle("bwLehrpool Suite *Prototyp*");
		//Zentriert das Fenster in die Bildmitte
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		int top=(screenSize.height - 722) / 2;
		int left=(screenSize.width - 603) / 2;
		setBounds(left, top, 603, 722);
		

		
		final DefaultTableModel model = new DefaultTableModel( titles, 0 );
		
		
		getContentPane().setLayout(null);
		{
			JPanel panel = new JPanel();
			panel.setBackground(SystemColor.menu);
			panel.setBounds(10, 11, 577, 57);
			getContentPane().add(panel);
			panel.setLayout(null);
			{
				JLabel lblNewLabel = new JLabel("Suche nach VL-Image");
				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("Hier k\u00F6nnen Sie nach Ihrem gew\u00FCnschten VL-Image suchen und dieses f\u00FCr weitere Schritte ausw\u00E4hlen");
			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, 131);
		contentPanel.add(panel_1);
		panel_1.setLayout(null);
		
		JLabel lblNewLabel_2 = new JLabel("Anzeigename:");
		lblNewLabel_2.setBounds(10, 30, 250, 20);
		panel_1.add(lblNewLabel_2);
		
		JLabel lblInternetIstInnerhalb = new JLabel("Betriebssystem:");
		lblInternetIstInnerhalb.setBounds(10, 58, 250, 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();

				//Wenn Textfield nicht leer
				if(stext!="")
				{
					//Filtere nach der Eingabe
					rowSorterAll.setRowFilter(RowFilter.regexFilter(textFieldName.getText(), 0));
					rowSorterMyImages.setRowFilter(RowFilter.regexFilter(textFieldName.getText(), 0));
					
				}
		}});


		textFieldName.setBounds(270, 30, 250, 20);
		panel_1.add(textFieldName);
		textFieldName.setColumns(10);
		
		JLabel lblErweiterteSuche = new JLabel("<html><u>Erweiterte Suche</u></html>");
		lblErweiterteSuche.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				//Öffnet das Fenster Extended GUI
				ExtendedSearch_GUI es=new ExtendedSearch_GUI();
				es.setVisible(true);
			}
		});
		lblErweiterteSuche.setForeground(Color.BLUE);
		
		lblErweiterteSuche.setBounds(431, 106, 89, 14);
		panel_1.add(lblErweiterteSuche);
		
		comboBox = new JComboBox<String>();
		try {
			//Holt sich eine Liste aller verfügbaren Betriebssysteme vom Server
			List<String> list=client.getAllOS();
			//Leeres Item hinzufügen
			comboBox.addItem("");
			for(int i=0;i<list.size();i++)
			{
				//Hinzufügen der verfügbaren Betriebssysteme
				comboBox.addItem(list.get(i));
			}
		} catch (TException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
		//Registriert Auswahländerungen der Box
		comboBox.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//Prüft das die Auswahl nicht leer ist
				if(comboBox.getSelectedItem().toString()!="")
				{
					//Filtert nach dem ausgewählten Betriebssystem
					rowSorterAll.setRowFilter(RowFilter.regexFilter(comboBox.getSelectedItem().toString(), 2));
					rowSorterMyImages.setRowFilter(RowFilter.regexFilter(comboBox.getSelectedItem().toString(), 2));
				}							
			}
			
		});
		comboBox.setBounds(270, 58, 250, 20);
		panel_1.add(comboBox);
		
		JLabel lblHauptmen = new JLabel("Hauptmen\u00FC");
		lblHauptmen.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				//Öffnet das Hauütmenü
				SearchImage_GUI.this.setVisible(false);
				MainMenue_GUI main=new MainMenue_GUI();
				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("VL-Image");
		lblVlimage.setForeground(Color.BLUE);
		lblVlimage.setBounds(81, 11, 45, 14);
		contentPanel.add(lblVlimage);
		
		JLabel label_2 = new JLabel(">");
		label_2.setBounds(133, 11, 13, 14);
		contentPanel.add(label_2);
		
		JLabel lblNewLabel_1 = new JLabel("Imageauswahl");
		lblNewLabel_1.setBounds(146, 11, 85, 14);
		contentPanel.add(lblNewLabel_1);
		
		tabbedPane = new JTabbedPane(JTabbedPane.TOP);
		tabbedPane.addChangeListener(new ChangeListener() {
			public void stateChanged(ChangeEvent arg0) {
				System.out.println(tabbedPane.getSelectedIndex());
				if(tabbedPane.getSelectedIndex()==0){
					
					
					
				}
				else if(tabbedPane.getSelectedIndex()==1){
					String username="Spitzer Tobias";
					rowSorterMyImages.setRowFilter(RowFilter.regexFilter(username, 4));
					//rowSorterMyImages.toggleSortOrder(0);	
				}
				
			}
		});

		tabbedPane.setBounds(10, 197, 557, 300);
		contentPanel.add(tabbedPane);
		
		JScrollPane scrollPaneMyImage = new JScrollPane();
		tablemyImages=new JTable();
		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();
		initTableModel(modelMyImages);
		tablemyImages.setRowSorter(rowSorterMyImages);
		
		JScrollPane scrollPaneAllImages = new JScrollPane();
		tableAllImages=new JTable();
		tableAllImages.setModel(modelAll);
		tableAllImages.getColumnModel().getColumn(1).sizeWidthToFit();
		tableAllImages.getColumnModel().getColumn(2).sizeWidthToFit();
		tableAllImages.getColumnModel().getColumn(3).sizeWidthToFit();
		tableAllImages.getColumnModel().getColumn(4).sizeWidthToFit();
		tableAllImages.getColumnModel().getColumn(5).sizeWidthToFit();
		initTableModel(modelAll);
		tableAllImages.setRowSorter(rowSorterAll);
		
				scrollPaneAllImages.setViewportView(tableAllImages);
				tabbedPane.addTab("Alle", null, scrollPaneAllImages, null);

		scrollPaneMyImage.setViewportView(tablemyImages);
		tabbedPane.addTab("Meine Images", null, scrollPaneMyImage, null);
		
		JScrollPane scrollPaneCoopImages = new JScrollPane();
		JTable tableCoopImages=new JTable();
		tableCoopImages.setModel(model);
		tableCoopImages.getColumnModel().getColumn(1).sizeWidthToFit();
		tableCoopImages.getColumnModel().getColumn(2).sizeWidthToFit();
		tableCoopImages.getColumnModel().getColumn(3).sizeWidthToFit();
		tableCoopImages.getColumnModel().getColumn(4).sizeWidthToFit();
		tableCoopImages.getColumnModel().getColumn(5).sizeWidthToFit();

		scrollPaneCoopImages.setViewportView(tableCoopImages);
		tabbedPane.addTab("Kooperative Images", null, scrollPaneCoopImages, null);
		tabbedPane.setEnabledAt(2, false);
		
		JScrollPane scrollPanePublicImages = new JScrollPane();
		JTable tablePublicImages=new JTable();
		tablePublicImages.setModel(model);
		tablePublicImages.getColumnModel().getColumn(1).sizeWidthToFit();
		tablePublicImages.getColumnModel().getColumn(2).sizeWidthToFit();
		tablePublicImages.getColumnModel().getColumn(3).sizeWidthToFit();
		tablePublicImages.getColumnModel().getColumn(4).sizeWidthToFit();
		tablePublicImages.getColumnModel().getColumn(5).sizeWidthToFit();

		scrollPanePublicImages.setViewportView(tablePublicImages);
		tabbedPane.addTab("\u00D6ffentliche Images", null, scrollPanePublicImages, null);
		tabbedPane.setEnabledAt(3, false);
		
		JScrollPane scrollPanePublicVorlagen = new JScrollPane();
		JTable tablePublicVorlagen=new JTable();
		tablePublicVorlagen.setModel(model);
		tablePublicVorlagen.getColumnModel().getColumn(1).sizeWidthToFit();
		tablePublicVorlagen.getColumnModel().getColumn(2).sizeWidthToFit();
		tablePublicVorlagen.getColumnModel().getColumn(3).sizeWidthToFit();
		tablePublicVorlagen.getColumnModel().getColumn(4).sizeWidthToFit();
		tablePublicVorlagen.getColumnModel().getColumn(5).sizeWidthToFit();

		scrollPanePublicVorlagen.setViewportView(tablePublicVorlagen);
		tabbedPane.addTab("\u00D6ffentliche Vorlagen", null, scrollPanePublicVorlagen, null);
		tabbedPane.setEnabledAt(4, false);
		
		
		

		JButton btnDownload = new JButton("Download");
		btnDownload.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				//Öffnet den Downloader
				FTPDownloader_GUI down=new FTPDownloader_GUI("Test");
				down.setVisible(true);
				SearchImage_GUI.this.setVisible(false);
			}
		});
		btnDownload.setBounds(449, 508, 118, 23);
		contentPanel.add(btnDownload);
		{
			JPanel buttonPane = new JPanel();
			buttonPane.setBounds(0, 640, 597, 33);
			buttonPane.setBackground(SystemColor.menu);
			buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
			getContentPane().add(buttonPane);
			{
				JButton okButton = new JButton("Zur\u00FCck");
				okButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						//Öffnet das Hauptmenü
						MainMenue_GUI main=new MainMenue_GUI();
						main.setVisible(true);
						dispose();
					}
				});
				okButton.setActionCommand("OK");
				buttonPane.add(okButton);
				getRootPane().setDefaultButton(okButton);
			}
			{
				JButton cancelButton = new JButton("Weiter");
				cancelButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {

						EditImageAllgemein_GUI ea=new EditImageAllgemein_GUI();
						ea.setVisible(true);
						dispose();
						
					}
				});
				cancelButton.setActionCommand("Cancel");
				buttonPane.add(cancelButton);
			}
		}
		
		JSeparator separator = new JSeparator();
		separator.setBounds(0, 78, 597, 2);
		getContentPane().add(separator);
		
		JSeparator separator_1 = new JSeparator();
		separator_1.setBounds(0, 627, 597, 2);
		getContentPane().add(separator_1);
		
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		JMenu mnNewMenu_1 = new JMenu("Hilfe");
		menuBar.add(mnNewMenu_1);
		
		JMenuItem mntmFaq = new JMenuItem("FAQ");
		mnNewMenu_1.add(mntmFaq);
		
		JMenuItem mntmOtrs = new JMenuItem("OTRS");
		mnNewMenu_1.add(mntmOtrs);
		
	}
	//Initiale Beffülung eines Table models
	public DefaultTableModel initTableModel(DefaultTableModel model){
		List<server.Image> images;
		try {
			//Hole eine Liste der Images
			
			images = client.getImageList();
			Iterator<server.Image> i=images.iterator();
			
			int x=0;
			
			while(i.hasNext())
			{
				//erzeuge Objekte für die Tabelle
				Object [] obj={images.get(x).getImageName(),images.get(x).getLicenseRestriction(),images.get(x).getOsName(),images.get(x).getLectureName(),images.get(x).getUserData(),images.get(x).getUpdateTime()};
				//Füge diese Objekte der Tabelle hinzu
				model.addRow(obj);
				x++;
				i.next();
				
			}
			
			return model;
		} catch (TException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		return model;
	}
	
	}