package gui.image; import gui.intro.About_GUI; import gui.intro.MainMenue_GUI; import java.awt.Color; import java.awt.FlowLayout; import java.awt.Font; 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.util.Iterator; import java.util.List; 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.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 models.Image; import models.Links; import models.person; import org.apache.thrift.TException; import server.Server.Client; import thrift.ThriftConnection; import util.GuiOrganizer; import util.OpenLinks; @SuppressWarnings("serial") public class SearchImage_GUI extends JFrame { private final JPanel contentPanel = new JPanel(); String[] result; JRadioButton rdbtnInternetJa; JRadioButton rdbtnInternetNein; JComboBox comboBox; JTable tableAllImages; JTable tablemyImages; JTable tablePublicVorlagen; private JTextField textFieldName; JTabbedPane tabbedPane; boolean activeSearch = false; String[] titles = { "Image-Name", "Lizenzpflichtig", "OS", "Veranstaltung", "Verantwortlicher", "Letztes Update", "ID", "Version", "Template" }; ThriftConnection con = new ThriftConnection(); Client client = models.Client.clientcon.getClient(); final DefaultTableModel modelAll = new DefaultTableModel(titles, 0) { public boolean isCellEditable(int rowIndex, int mColIndex) { return false; } }; final DefaultTableModel modelMyImages = new DefaultTableModel(titles, 0) { public boolean isCellEditable(int rowIndex, int mColIndex) { return false; } }; final DefaultTableModel modelPublicVorlagen = new DefaultTableModel(titles, 0) { public boolean isCellEditable(int rowIndex, int mColIndex) { return false; } }; final TableRowSorter rowSorterAll = new TableRowSorter( modelAll); final TableRowSorter rowSorterMyImages = new TableRowSorter( modelMyImages); final TableRowSorter rowSorterPublicVorlagen = new TableRowSorter( modelPublicVorlagen); /** * Create the dialog. */ public SearchImage_GUI() { addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent arg0) { // Beendet die Anwendung nach klick auf X con.closeThriftConnection(); System.exit(0); } @Override public void windowOpened(WindowEvent arg0) { initTableModel(modelAll); initTableModel(modelMyImages); initTableModel(modelPublicVorlagen); 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) { // TODO Auto-generated catch block e.printStackTrace(); } // Setzt den Fenstertitel setTitle("bwLehrpool Suite *Prototyp* - Suche VL-Image"); // Zentriert das Fenster in die Bildmitte setBounds(0, 0, 603, 722); GuiOrganizer.centerGUI(this); 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, 98); 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 != "") { activeSearch = true; // Filtere nach der Eingabe rowSorterAll.setRowFilter(RowFilter.regexFilter( textFieldName.getText(), 0)); rowSorterMyImages.setRowFilter(RowFilter.regexFilter( textFieldName.getText(), 0)); rowSorterPublicVorlagen.setRowFilter(RowFilter.regexFilter( textFieldName.getText(), 0)); } else { activeSearch = false; String username = person.verantwortlicher.getName() + " " + person.verantwortlicher.getVorname(); rowSorterMyImages.setRowFilter(RowFilter.regexFilter( username, 4)); rowSorterPublicVorlagen.setRowFilter(RowFilter.regexFilter( "true", 8)); rowSorterAll.setRowFilter(null); } } }); textFieldName.setBounds(270, 30, 250, 20); panel_1.add(textFieldName); textFieldName.setColumns(10); comboBox = new JComboBox(); try { // Holt sich eine Liste aller verfuegbaren Betriebssysteme vom // Server List list = client.getAllOS(); // 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) { // TODO Auto-generated catch block e2.printStackTrace(); JOptionPane.showMessageDialog(null, e2.getCause() + "\n" + e2.getMessage(), "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(RowFilter.regexFilter( username, 4)); rowSorterPublicVorlagen.setRowFilter(RowFilter.regexFilter( "true", 8)); rowSorterAll.setRowFilter(null); } } }); 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) { // oeffnet das Hauuetmenue 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) { if (tabbedPane.getSelectedIndex() == 0 && activeSearch == false) { String username = person.verantwortlicher.getName() + " " + person.verantwortlicher.getVorname(); // String username="Spitzer Tobias"; rowSorterMyImages.setRowFilter(RowFilter.regexFilter( username, 4)); } else if (tabbedPane.getSelectedIndex() == 1 && activeSearch == false) { // System.out.println("Yeah"); rowSorterPublicVorlagen.setRowFilter(RowFilter.regexFilter( "true", 8)); } else if (tabbedPane.getSelectedIndex() == 2 && activeSearch == false) { rowSorterAll.setRowFilter(null); } } }); tabbedPane.setBounds(10, 158, 557, 339); contentPanel.add(tabbedPane); 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(); 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(); tablemyImages.setRowSorter(rowSorterMyImages); scrollPaneMyImage.setViewportView(tablemyImages); tabbedPane.addTab("Meine Images", null, scrollPaneMyImage, null); JScrollPane scrollPanePublicVorlagen = new JScrollPane(); tablePublicVorlagen = new JTable(); tablePublicVorlagen.setModel(modelPublicVorlagen); 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(); tablePublicVorlagen.setRowSorter(rowSorterPublicVorlagen); scrollPanePublicVorlagen.setViewportView(tablePublicVorlagen); tabbedPane.addTab("\u00D6ffentliche Vorlagen", null, scrollPanePublicVorlagen, null); tableAllImages.setRowSorter(rowSorterAll); scrollPaneAllImages.setViewportView(tableAllImages); tabbedPane.addTab("Alle", null, scrollPaneAllImages, 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(3, 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(4, false); JButton btnDownload = new JButton("Download"); btnDownload.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { // oeffnet den Downloader String username = person.verantwortlicher.getName() + " " + person.verantwortlicher.getVorname(); // // meine Images // if (tabbedPane.getSelectedIndex() == 0) { if (tablemyImages.getSelectedRow() != -1) { String imageid = modelMyImages.getValueAt( tablemyImages .convertRowIndexToModel(tablemyImages .getSelectedRow()), 6) .toString(); Image.image.setImageId(imageid); String imageversion = modelMyImages.getValueAt( tablemyImages .convertRowIndexToModel(tablemyImages .getSelectedRow()), 7) .toString(); Image.image.setVersion(imageversion); SearchImage_GUI.this.setVisible(false); FTPSearchDownloader_GUI down = new FTPSearchDownloader_GUI(); down.setVisible(true); } } else if (tabbedPane.getSelectedIndex() == 1) { // // Vorlagen Images // System.out.println("yeah"); if (tablePublicVorlagen.getSelectedRow() != -1 // && modelPublicVorlagen // .getValueAt( // tablePublicVorlagen // .convertRowIndexToModel(tablePublicVorlagen // .getSelectedRow()), // 4).equals(username) == true ) { String imageid = modelPublicVorlagen .getValueAt( tablePublicVorlagen .convertRowIndexToModel(tablePublicVorlagen .getSelectedRow()), 6) .toString(); Image.image.setImageId(imageid); String imageversion = modelPublicVorlagen .getValueAt( tablePublicVorlagen .convertRowIndexToModel(tablePublicVorlagen .getSelectedRow()), 7) .toString(); Image.image.setVersion(imageversion); SearchImage_GUI.this.setVisible(false); FTPSearchDownloader_GUI down = new FTPSearchDownloader_GUI(); down.setVisible(true); } } else if (tabbedPane.getSelectedIndex() == 2) { // // Alle Images // /** * if (tableAllImages.getSelectedRow() != -1 && modelAll * .getValueAt( tableAllImages * .convertRowIndexToModel(tableAllImages * .getSelectedRow()), 4).equals(username) == true) { **/ if (tableAllImages.getSelectedRow() != -1) { // nur eigene Images downloadbar if (modelAll.getValueAt( tableAllImages .convertRowIndexToModel(tableAllImages .getSelectedRow()), 4).equals( username) == true) { String imageid = modelAll .getValueAt( tableAllImages .convertRowIndexToModel(tableAllImages .getSelectedRow()), 6).toString(); Image.image.setImageId(imageid); String imageversion = modelAll .getValueAt( tableAllImages .convertRowIndexToModel(tableAllImages .getSelectedRow()), 7).toString(); Image.image.setVersion(imageversion); SearchImage_GUI.this.setVisible(false); FTPSearchDownloader_GUI down = new FTPSearchDownloader_GUI(); down.setVisible(true); } else { JOptionPane .showMessageDialog( null, "Sie haben keine Berechtigung fremde Images herunterzuladen.", "Message", JOptionPane.INFORMATION_MESSAGE); } } } else { // // nichts markiert // JOptionPane .showMessageDialog( null, "Bitte w\u00e4hlen Sie ein Image f\u00fcr den Download aus", "Message", JOptionPane.INFORMATION_MESSAGE); } } }); 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) { // oeffnet das Hauptmenue MainMenue_GUI main = new MainMenue_GUI(); main.setVisible(true); dispose(); } }); okButton.setActionCommand("OK"); buttonPane.add(okButton); getRootPane().setDefaultButton(okButton); } } 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"); 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) { // TODO Auto-generated catch block 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) { // TODO Auto-generated catch block e.printStackTrace(); } } }); mnNewMenu_1.add(mntmOtrs); JMenuItem mntmAbout = new JMenuItem("About"); mntmAbout.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { About_GUI ab = new About_GUI(); ab.setVisible(true); } }); mnNewMenu_1.add(mntmAbout); } // Initiale Beffuelung eines Table models public DefaultTableModel initTableModel(DefaultTableModel model) { List images; try { // Hole eine Liste der Images images = client.getImageList(); Iterator i = images.iterator(); int x = 0; 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(), images.get(x).getUpdateTime(), images.get(x).id, images.get(x).getVersion(), images.get(x).getIsTemplate() }; // Fuege diese Objekte der Tabelle hinzu model.addRow(obj); x++; i.next(); } return model; } catch (TException e1) { // TODO Auto-generated catch block e1.printStackTrace(); JOptionPane.showMessageDialog(null, e1.getCause() + "\n" + e1.getMessage(), "Debug-Message", JOptionPane.ERROR_MESSAGE); } return model; } }