package gui.lecture; 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.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.Iterator; import java.util.List; import java.util.Map; import javax.swing.JButton; 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.JTable; import javax.swing.JTextArea; 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.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.person; import org.apache.log4j.Logger; import org.apache.thrift.TException; import server.generated.Server.Client; import thrift.ThriftConnection; import util.OpenLinks; @SuppressWarnings("serial") public class DeleteLecture_GUI extends JFrame { private final static Logger LOGGER = Logger .getLogger(DeleteLecture_GUI.class); private final JPanel contentPanel = new JPanel(); String[] result; JRadioButton rdbtnInternetJa; JRadioButton rdbtnInternetNein; JLabel labelAktiv; JLabel labelstartdate; JLabel labelenddate; JLabel labelimageversion; JTextArea labelName; JTextArea labelimage; JTextArea labeldesc; JLabel labelVerantwortlicher; JTable tablemyLectures; private JTextField textFieldName; boolean activeSearch = false; String[] titles = { "Veranstaltungsname", "Beschreibung", "Gültigkeitsdatum", "Aktiv", "Letzte Benutzung", "Verantwortlicher", "Image", "Schlagwort", "ID" }; ThriftConnection con = new ThriftConnection(); Client client = models.Client.clientcon.getClient(); final DefaultTableModel modelAll = new DefaultTableModel(titles, 0); final DefaultTableModel modelMyLectures = new DefaultTableModel(titles, 0); final TableRowSorter rowSorterAll = new TableRowSorter( modelAll); final TableRowSorter rowSorterMyLectures = new TableRowSorter( modelMyLectures); private JButton button; private JTextField textField; Component c = null; private static final String HELP_MESSAGE = "
" + "In der Übersicht sehen Sie primär alle Veranstaltungen, die Sie erzeugt haben.
" + "Sie können die Veranstaltungen hier löschen. Alternativ werden veraltete Einträge irgendwann automatisch gelöscht.
" + "Veraltet bedeutet, dass Veranstaltungen, die drei Monate lang nicht augerufen wurden, vorerst deaktiviert werden." + "
"; /** * Create the dialog. */ public DeleteLecture_GUI(Component formerGUI) { 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) { textFieldName.requestFocusInWindow(); try { initTableModel(modelMyLectures); initTableModel(modelAll); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } // auszublendende Angaben // 1=Beschreibung // 2=Gültigkeitsdatum // 3=Aktiv // 6=Image // 7=Schlagwort // 8=ID tablemyLectures.getColumnModel().getColumn(1).setWidth(0); tablemyLectures.getColumnModel().getColumn(1).setMinWidth(0); tablemyLectures.getColumnModel().getColumn(1).setMaxWidth(0); tablemyLectures.getColumnModel().getColumn(2).setWidth(0); tablemyLectures.getColumnModel().getColumn(2).setMinWidth(0); tablemyLectures.getColumnModel().getColumn(2).setMaxWidth(0); tablemyLectures.getColumnModel().getColumn(3).setWidth(0); tablemyLectures.getColumnModel().getColumn(3).setMinWidth(0); tablemyLectures.getColumnModel().getColumn(3).setMaxWidth(0); tablemyLectures.getColumnModel().getColumn(6).setWidth(0); tablemyLectures.getColumnModel().getColumn(6).setMinWidth(0); tablemyLectures.getColumnModel().getColumn(6).setMaxWidth(0); tablemyLectures.getColumnModel().getColumn(7).setWidth(0); tablemyLectures.getColumnModel().getColumn(7).setMinWidth(0); tablemyLectures.getColumnModel().getColumn(7).setMaxWidth(0); tablemyLectures.getColumnModel().getColumn(8).setWidth(0); tablemyLectures.getColumnModel().getColumn(8).setMinWidth(0); tablemyLectures.getColumnModel().getColumn(8).setMaxWidth(0); /* * tableAllLectures.getColumnModel().getColumn(1).setWidth(0); * tableAllLectures * .getColumnModel().getColumn(1).setMinWidth(0); * tableAllLectures * .getColumnModel().getColumn(1).setMaxWidth(0); * tableAllLectures.getColumnModel().getColumn(2).setWidth(0); * tableAllLectures * .getColumnModel().getColumn(2).setMinWidth(0); * tableAllLectures * .getColumnModel().getColumn(2).setMaxWidth(0); * tableAllLectures.getColumnModel().getColumn(3).setWidth(0); * tableAllLectures * .getColumnModel().getColumn(3).setMinWidth(0); * tableAllLectures * .getColumnModel().getColumn(3).setMaxWidth(0); * tableAllLectures.getColumnModel().getColumn(6).setWidth(0); * tableAllLectures * .getColumnModel().getColumn(6).setMinWidth(0); * tableAllLectures * .getColumnModel().getColumn(6).setMaxWidth(0); * tableAllLectures.getColumnModel().getColumn(7).setWidth(0); * tableAllLectures * .getColumnModel().getColumn(7).setMinWidth(0); * tableAllLectures * .getColumnModel().getColumn(7).setMaxWidth(0); * tableAllLectures.getColumnModel().getColumn(8).setWidth(0); * tableAllLectures * .getColumnModel().getColumn(8).setMinWidth(0); * tableAllLectures * .getColumnModel().getColumn(8).setMaxWidth(0); */ } }); // 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 - Veranstaltung löschen"); // Zentriert das Fenster in die Bildmitte setBounds(0, 0, 842, 722); setLocationRelativeTo(formerGUI); getContentPane().setLayout(null); { JPanel panel = new JPanel(); panel.setBackground(SystemColor.menu); panel.setBounds(10, 11, 816, 57); getContentPane().add(panel); panel.setLayout(null); { JLabel lblNewLabel = new JLabel( "Zu löschende Veranstaltung 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 die zu löschende Veranstaltung aus."); txtpnBitteWhlenSie.setBounds(10, 36, 509, 32); panel.add(txtpnBitteWhlenSie); } contentPanel.setBounds(10, 85, 570, 518); 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, 64); 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); 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)); rowSorterMyLectures.setRowFilter(RowFilter.regexFilter( textFieldName.getText(), 0)); } else { activeSearch = false; String username = person.verantwortlicher.getName() + " " + person.verantwortlicher.getVorname(); rowSorterMyLectures.setRowFilter(RowFilter.regexFilter( username, 5)); rowSorterAll.setRowFilter(null); } } }); textFieldName.setBounds(133, 30, 400, 20); panel_1.add(textFieldName); textFieldName.setColumns(10); JLabel lblHauptmen = new JLabel("Hauptmenü"); lblHauptmen.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { // oeffnet das Hauptmenue DeleteLecture_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("Veranstaltung"); lblVlimage.setForeground(Color.BLUE); lblVlimage.setBounds(81, 11, 75, 14); contentPanel.add(lblVlimage); JLabel label_2 = new JLabel(">"); label_2.setBounds(152, 11, 13, 14); contentPanel.add(label_2); JLabel lblNewLabel_1 = new JLabel("Löschen"); lblNewLabel_1.setBounds(166, 11, 155, 14); contentPanel.add(lblNewLabel_1); JScrollPane scrollPaneMyImage = new JScrollPane(); scrollPaneMyImage.setBounds(10, 120, 552, 369); contentPanel.add(scrollPaneMyImage); tablemyLectures = new JTable(); tablemyLectures.getSelectionModel().addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { String imageid = modelMyLectures.getValueAt( tablemyLectures .convertRowIndexToModel(tablemyLectures .getSelectedRow()), 8) .toString(); try { writeLectureData(imageid); } catch (TException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (ParseException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } }); tablemyLectures.setModel(modelMyLectures); tablemyLectures.getColumnModel().getColumn(1).sizeWidthToFit(); tablemyLectures.getColumnModel().getColumn(2).sizeWidthToFit(); tablemyLectures.getColumnModel().getColumn(3).sizeWidthToFit(); tablemyLectures.getColumnModel().getColumn(4).sizeWidthToFit(); tablemyLectures.getColumnModel().getColumn(5).sizeWidthToFit(); tablemyLectures.setRowSorter(rowSorterMyLectures); scrollPaneMyImage.setViewportView(tablemyLectures); button = new JButton("Löschen"); button.setBounds(442, 495, 118, 23); contentPanel.add(button); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String lectureID = ""; int eingabe; String username = person.verantwortlicher.getName() + " " + person.verantwortlicher.getVorname(); // check if a row is selected if (tablemyLectures.getSelectedRowCount() != 0) { // a row is selected // ask for confirmation eingabe = JOptionPane.showConfirmDialog(c, "Wollen Sie diese Daten löschen?", "Löschen?", JOptionPane.YES_NO_OPTION); if (eingabe == JOptionPane.YES_OPTION) { // user has confirmed deletion, now get the ID of the // selected lecture lectureID = modelMyLectures .getValueAt( tablemyLectures .convertColumnIndexToModel(tablemyLectures .getSelectedRow()), 8) .toString(); LOGGER.info("Lösche Veranstaltung: " + lectureID); try { if (client.deleteLecture(lectureID, person.verantwortlicher.getHochschule(), person.verantwortlicher.getUsername())) { LOGGER.info("Löschen erfolgreich."); // delete successful DeleteLecture_GUI dl = new DeleteLecture_GUI(c); dl.setVisible(true); dispose(); } else { // delete not successful LOGGER.error("Konnte Veranstaltung '" + lectureID + "' nicht aus der Datenbank löschen!"); JOptionPane .showMessageDialog( c, "Löschen der Veranstaltung aus der Datenbank fehlgeschlagen.", "Fehler", JOptionPane.INFORMATION_MESSAGE); } } catch (TException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }// end delete }// end ask for confirmation }// end check if a row is selected /* * else if (tableAllLectures.getSelectedRowCount() !=0 && * tableAllLectures * .getValueAt(tableAllLectures.getSelectedRow(), * 5).toString().equals(username)){ //a row is selected //ask * for confirmation eingabe = * JOptionPane.showConfirmDialog(null, * "Wollen Sie diese Daten löschen?", "Löschen?", * JOptionPane.YES_NO_OPTION); * * if (eingabe == JOptionPane.YES_OPTION) { //user has confirmed * deletion, now get the ID of the selected lecture lectureID = * tableAllLectures * .getValueAt(tableAllLectures.convertColumnIndexToModel * (tableAllLectures.getSelectedRow()), 8).toString(); * LOGGER.info("Lösche Veranstaltung: "+lectureID); try { * if(client.deleteLecture(lectureID, * person.verantwortlicher.getHochschule * (),person.verantwortlicher.getUsername())){ * LOGGER.info("Löschen erfolgreich."); //delete successful * * DeleteLecture_GUI dl = new DeleteLecture_GUI(); * dl.setVisible(true); dispose(); } else { //delete not * successful LOGGER.error("Konnte Veranstaltung '" + lectureID * + "' nicht aus der Datenbank löschen!"); JOptionPane * .showMessageDialog( null, * "Löschen aus Datenbank fehlgeschlagen.", "Fehler", * JOptionPane.INFORMATION_MESSAGE); } } catch (TException e1) { * // TODO Auto-generated catch block e1.printStackTrace(); * }//end delete }//end ask for confirmation * * } else { //end check if a row is selected JOptionPane * .showMessageDialog( null, * "Bitte wählen Sie ein eigenes Image aus.", "Message", * JOptionPane.INFORMATION_MESSAGE); } */ } }); { JPanel buttonPane = new JPanel(); buttonPane.setBounds(0, 640, 826, 33); buttonPane.setBackground(SystemColor.menu); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(buttonPane); { JButton btnBack = new JButton("Zurück"); btnBack.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // oeffnet das Hauptmenue MainMenue_GUI main = new MainMenue_GUI(c); main.setVisible(true); dispose(); } }); btnBack.setActionCommand("OK"); buttonPane.add(btnBack); getRootPane().setDefaultButton(btnBack); } } JSeparator separator = new JSeparator(); separator.setBounds(0, 79, 836, 1); getContentPane().add(separator); JSeparator separator_1 = new JSeparator(); separator_1.setBounds(0, 628, 836, 1); 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(591, 85, 235, 518); getContentPane().add(panel); JLabel lblNewLabel_3 = new JLabel("Name:"); lblNewLabel_3.setBounds(10, 27, 104, 14); panel.add(lblNewLabel_3); JLabel lblAktiv = new JLabel("Aktiv:"); lblAktiv.setBounds(10, 98, 104, 14); panel.add(lblAktiv); labelAktiv = new JLabel(""); labelAktiv.setBounds(10, 114, 218, 14); panel.add(labelAktiv); labelstartdate = new JLabel(""); labelstartdate.setBounds(10, 147, 218, 14); panel.add(labelstartdate); JLabel lblStartdatum = new JLabel("Startdatum:"); lblStartdatum.setBounds(10, 129, 104, 14); panel.add(lblStartdatum); labelenddate = new JLabel(""); labelenddate.setBounds(10, 175, 218, 14); panel.add(labelenddate); JLabel lblEnddatum = new JLabel("Enddatum:"); lblEnddatum.setBounds(10, 161, 104, 14); panel.add(lblEnddatum); JLabel lblBeschreibung = new JLabel("Beschreibung:"); lblBeschreibung.setBounds(10, 189, 104, 14); panel.add(lblBeschreibung); JLabel lblImage = new JLabel("Image:"); lblImage.setBounds(10, 293, 104, 14); panel.add(lblImage); labelVerantwortlicher = new JLabel(""); labelVerantwortlicher.setBounds(10, 426, 218, 14); panel.add(labelVerantwortlicher); JLabel lblVerantwortlicher = new JLabel("Verantwortlicher:"); lblVerantwortlicher.setBounds(10, 411, 104, 14); panel.add(lblVerantwortlicher); JLabel lblImageversion = new JLabel("Imageversion:"); lblImageversion.setBounds(10, 381, 104, 14); panel.add(lblImageversion); labelimageversion = new JLabel(""); labelimageversion.setBounds(10, 399, 218, 14); panel.add(labelimageversion); labeldesc = new JTextArea(); labeldesc.setFont(new Font("Tahoma", Font.PLAIN, 11)); labeldesc.setEditable(false); labeldesc.setLineWrap(true); labeldesc.setBackground(SystemColor.menu); labeldesc.setBounds(124, 127, 104, 110); JScrollPane scrollPane = new JScrollPane(labeldesc); scrollPane.setBounds(10, 209, 218, 81); panel.add(scrollPane); // panel.add(labeldesc); labelimage = new JTextArea(); labelimage.setLineWrap(true); labelimage.setFont(new Font("Tahoma", Font.PLAIN, 11)); labelimage.setEditable(false); labelimage.setBackground(SystemColor.menu); labelimage.setBounds(124, 248, 101, 81); JScrollPane scrollPaneImage = new JScrollPane(labelimage); scrollPaneImage.setBounds(10, 309, 215, 69); panel.add(scrollPaneImage); labelName = new JTextArea(); labelName.setEditable(false); labelName.setFont(new Font("Tahoma", Font.PLAIN, 11)); labelName.setBackground(SystemColor.menu); labelName.setBounds(124, 22, 101, 55); JScrollPane scrollPaneName = new JScrollPane(labelName); scrollPaneName.setBounds(10, 40, 218, 55); panel.add(scrollPaneName); 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); 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) throws ParseException { List lectures; try { // Hole eine Liste der erlaubten Images für die diese Person // lectures = client.getLectureList(); lectures = client .getLectureListPermissionWrite(person.verantwortlicher .getUserID()); Iterator i = lectures.iterator(); SimpleDateFormat in = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat out = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); int x = 0; while (i.hasNext()) { // erzeuge Objekte fuer die Tabelle Object[] obj = { lectures.get(x).lecturename, lectures.get(x).desc, out.format(in.parse(lectures.get(x).starttime)) + " " + out.format(in.parse(lectures.get(x).endtime)), lectures.get(x).isActive, out.format(in.parse(lectures.get(x).lastused)), lectures.get(x).username, lectures.get(x).imagename, " ", lectures.get(x).id }; // Fuege 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; } public void writeLectureData(String id) throws TException, ParseException { SimpleDateFormat in = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat out = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); Map res = client.getLectureData(id); labelName.setText(res.get("name")); labelAktiv.setText(res.get("isActive")); labeldesc.setText(res.get("desc")); labelVerantwortlicher.setText(res.get("owner")); labelstartdate.setText(out.format(in.parse(res.get("startTime")))); labelenddate.setText(out.format(in.parse(res.get("endTime")))); labelimage.setText(res.get("imagepath").substring( res.get("imagepath").indexOf("/") + 1)); labelimageversion.setText(res.get("imageversion")); } }//end class