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.DateFormat; 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.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.table.DefaultTableModel; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; import models.Image; import models.Lecture; import models.Links; import models.RightsManagement; import models.person; import org.apache.thrift.TException; import server.generated.Server.Client; import thrift.ThriftConnection; import util.GuiOrganizer; import util.OpenLinks; import javax.swing.event.ChangeListener; import javax.swing.event.ChangeEvent; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; @SuppressWarnings("serial") public class EditLectureLink_GUI extends JFrame { private final JPanel contentPanel = new JPanel(); String[] result; JRadioButton rdbtnInternetJa; JRadioButton rdbtnInternetNein; JComboBox comboBox; JLabel labelName; JLabel labelUpdate; JLabel labelVerantwortlicher; JLabel labelWeitereVerantwortliche; JLabel labelVorlage; JLabel labelLizenzSoftware; JLabel labelInternet; JLabel labelRam; JLabel labelID; JLabel labelVersion; JTextArea textAreadesc; JLabel labelCPU; private JLabel labelOS; JTable tableAllImages = new JTable(); JTable tablemyImages = new JTable(); JTable tableCoopImages = new JTable(); JTable tablePublicVorlagen = new JTable(); private JTextField textFieldName; JTabbedPane tabbedPane; boolean activeSearch = false; Component c = null; String[] titles = { "Image-Name", "Lizenzpflichtig", "OS", "Veranstaltung", "Verantwortlicher", "Letztes Update", "ID", "Version", "Template", "Beschreibung" }; 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); private JTextField textField; RowFilter orFilter = null; List> orFilters = new ArrayList>(); //needed for templates, filter for name OR desc AND temp_flag --> (name || desc) && (temp_flag) RowFilter andFilter = null; List> andFilters = new ArrayList>(); //the final filter which handles the search in the templates RowFilter templateFilter = null; ArrayList> finalFilters = new ArrayList>(); private static final String HELP_MESSAGE = "
" + "Ändern Sie hier das Image, zu dem Ihre Veranstaltung gehört.
" + "Wählen Sie das Image aus, das zu Ihrer Veranstaltung passt und klicken Sie anschließend auf \"Veranstaltung ändern und abschließen\"." + "
"; /** * Create the dialog. */ public EditLectureLink_GUI(Component formerGUI) { addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent arg0) { con.closeThriftConnection(); System.exit(0); } @Override public void windowOpened(WindowEvent arg0) { try { initTableModel(modelAll); initTableModel(modelMyImages); //initTableModel(modelPublicVorlagen); initTableModelTemplates(modelPublicVorlagen); } catch (TException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 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); tablePublicVorlagen.getColumnModel().getColumn(1).setWidth(0); tablePublicVorlagen.getColumnModel().getColumn(1).setMinWidth(0); tablePublicVorlagen.getColumnModel().getColumn(1).setMaxWidth(0); tablePublicVorlagen.getColumnModel().getColumn(3).setWidth(0); tablePublicVorlagen.getColumnModel().getColumn(3).setMinWidth(0); tablePublicVorlagen.getColumnModel().getColumn(3).setMaxWidth(0); tablePublicVorlagen.getColumnModel().getColumn(8).setWidth(0); tablePublicVorlagen.getColumnModel().getColumn(8).setMinWidth(0); tablePublicVorlagen.getColumnModel().getColumn(8).setMaxWidth(0); tablePublicVorlagen.getColumnModel().getColumn(6).setWidth(0); tablePublicVorlagen.getColumnModel().getColumn(6).setMinWidth(0); tablePublicVorlagen.getColumnModel().getColumn(6).setMaxWidth(0); tablePublicVorlagen.getColumnModel().getColumn(7).setWidth(0); tablePublicVorlagen.getColumnModel().getColumn(7).setMinWidth(0); tablePublicVorlagen.getColumnModel().getColumn(7).setMaxWidth(0); tablePublicVorlagen.getColumnModel().getColumn(9).setWidth(0); tablePublicVorlagen.getColumnModel().getColumn(9).setMinWidth(0); tablePublicVorlagen.getColumnModel().getColumn(9).setMaxWidth(0); tableAllImages.getColumnModel().getColumn(1).setWidth(0); tableAllImages.getColumnModel().getColumn(1).setMinWidth(0); tableAllImages.getColumnModel().getColumn(1).setMaxWidth(0); tableAllImages.getColumnModel().getColumn(3).setWidth(0); tableAllImages.getColumnModel().getColumn(3).setMinWidth(0); tableAllImages.getColumnModel().getColumn(3).setMaxWidth(0); tableAllImages.getColumnModel().getColumn(8).setWidth(0); tableAllImages.getColumnModel().getColumn(8).setMinWidth(0); tableAllImages.getColumnModel().getColumn(8).setMaxWidth(0); tableAllImages.getColumnModel().getColumn(6).setWidth(0); tableAllImages.getColumnModel().getColumn(6).setMinWidth(0); tableAllImages.getColumnModel().getColumn(6).setMaxWidth(0); tableAllImages.getColumnModel().getColumn(7).setWidth(0); tableAllImages.getColumnModel().getColumn(7).setMinWidth(0); tableAllImages.getColumnModel().getColumn(7).setMaxWidth(0); tableAllImages.getColumnModel().getColumn(9).setWidth(0); tableAllImages.getColumnModel().getColumn(9).setMinWidth(0); tableAllImages.getColumnModel().getColumn(9).setMaxWidth(0); textFieldName.requestFocusInWindow(); } }); setResizable(false); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) { // TODO Auto-generated catch block e.printStackTrace(); } setTitle("bwLehrpool Suite - Veranstaltung bearbeiten"); 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, 577, 57); getContentPane().add(panel); panel.setLayout(null); { JLabel lblNewLabel = new JLabel( "Veranstaltung auf ein Image verlinken"); 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 ein Image aus, auf dem Ihre Veranstaltung basiert."); 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, 91); 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(); textFieldName.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { String stext = textFieldName.getText(); // Wenn Textfield nicht leer if (stext != "") { activeSearch = true; // Filtere nach der Eingabe orFilters.clear(); andFilters.clear(); finalFilters.clear(); orFilters.add(RowFilter.regexFilter("(?i)"+stext, 0)); //case insensitive //preparation for search via lecture description. "9" has to be corrected as the index of titles orFilters.add(RowFilter.regexFilter("(?i)"+stext, 9)); //case insensitive orFilter = RowFilter.orFilter(orFilters); rowSorterAll.setRowFilter(orFilter); rowSorterMyImages.setRowFilter(orFilter); andFilters.add(RowFilter.regexFilter("1", 8)); andFilter = RowFilter.andFilter(andFilters); finalFilters.add(andFilter); finalFilters.add(orFilter); templateFilter = RowFilter.andFilter(finalFilters); rowSorterPublicVorlagen.setRowFilter(templateFilter); } else { activeSearch = false; String username = person.verantwortlicher.getName() + " " + person.verantwortlicher.getVorname(); orFilters.clear(); andFilters.clear(); orFilters.add(RowFilter.regexFilter(username, 4)); //case insensitive, filter for anything orFilter = RowFilter.andFilter(orFilters); rowSorterMyImages.setRowFilter(orFilter); rowSorterAll.setRowFilter(orFilter); //in addition, templates can only be shown when they really are templates! orFilters.clear(); orFilters.add(RowFilter.regexFilter("(?i)"+stext, 0)); //case insensitive orFilters.add(RowFilter.regexFilter("(?i)"+stext, 9)); //case insensitive orFilters.add(RowFilter.regexFilter("1", 8)); orFilter = RowFilter.orFilter(orFilters); rowSorterPublicVorlagen.setRowFilter(orFilter); } tablemyImages.clearSelection(); tableAllImages.clearSelection(); tablePublicVorlagen.clearSelection(); resetLectureInfo(); } }); textFieldName.setBounds(133, 30, 400, 20); panel_1.add(textFieldName); textFieldName.setColumns(10); comboBox = new JComboBox(); try { List list = client.getAllOS(); comboBox.addItem(""); for (int i = 0; i < list.size(); i++) { comboBox.addItem(list.get(i)); } } catch (TException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } 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(133, 58, 191, 20); panel_1.add(comboBox); JLabel lblHauptmen = new JLabel("Hauptmenü"); lblHauptmen.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { EditLectureLink_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, 76, 14); contentPanel.add(lblVlimage); JLabel label_2 = new JLabel(">"); label_2.setBounds(151, 11, 13, 14); contentPanel.add(label_2); JLabel lblNewLabel_1 = new JLabel("Bearbeiten"); lblNewLabel_1.setBounds(164, 11, 155, 14); contentPanel.add(lblNewLabel_1); tabbedPane = new JTabbedPane(JTabbedPane.TOP); //not needed anymore, as the filters are set by the full text search completely /* tabbedPane.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent arg0) { if (tabbedPane.getSelectedIndex() == 0 && activeSearch == false) { String username = person.verantwortlicher.getName() + " " + person.verantwortlicher.getVorname(); rowSorterMyImages.setRowFilter(RowFilter.regexFilter( username, 4)); } else if (tabbedPane.getSelectedIndex() == 1 && activeSearch == false) { 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.getSelectionModel().addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { if(tableAllImages.getSelectedRow() != -1) { String imageid = modelAll.getValueAt( tableAllImages .convertRowIndexToModel(tableAllImages .getSelectedRow()), 6) .toString(); String version = modelAll.getValueAt( tableAllImages .convertRowIndexToModel(tableAllImages .getSelectedRow()), 7) .toString(); writeImageData(imageid, version); } } }); 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(); tableAllImages.setRowSorter(rowSorterAll); JScrollPane scrollPaneMyImage = new JScrollPane(); tablemyImages.getSelectionModel().addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { if(tablemyImages.getSelectedRow() != -1) { String imageid = modelMyImages.getValueAt( tablemyImages .convertRowIndexToModel(tablemyImages //selber fehler wie bei image .getSelectedRow()), 6) .toString(); String version = modelMyImages.getValueAt( tablemyImages .convertRowIndexToModel(tablemyImages .getSelectedRow()), 7) .toString(); writeImageData(imageid, version); } } }); 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(); scrollPanePublicVorlagen.setEnabled(false); tablePublicVorlagen.getSelectionModel().addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { if(tablePublicVorlagen.getSelectedRow() != -1) { String imageid = modelPublicVorlagen .getValueAt( tablePublicVorlagen .convertRowIndexToModel(tablePublicVorlagen .getSelectedRow()), 6) .toString(); String version = modelPublicVorlagen .getValueAt( tablePublicVorlagen .convertRowIndexToModel(tablePublicVorlagen .getSelectedRow()), 7) .toString(); writeImageData(imageid, version); } } }); 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("Vorlagen", null, scrollPanePublicVorlagen, null); scrollPaneAllImages.setViewportView(tableAllImages); tabbedPane.addTab("Alle", null, scrollPaneAllImages, null); JScrollPane scrollPaneCoopImages = new JScrollPane(); 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("bwLehrpool", null, scrollPaneCoopImages, null); tabbedPane.setEnabledAt(3, false); JButton btnLinkLschen = new JButton("Link löschen"); btnLinkLschen.setEnabled(false); btnLinkLschen.setBounds(478, 508, 89, 23); contentPanel.add(btnLinkLschen); { JPanel buttonPane = new JPanel(); buttonPane.setBounds(0, 640, 902, 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) { PermissionEditLecture_GUI el = new PermissionEditLecture_GUI( c); el.setVisible(true); dispose(); } }); btnBack.setActionCommand("OK"); buttonPane.add(btnBack); getRootPane().setDefaultButton(btnBack); } { JButton btnFinish = new JButton( "Veranstaltung ändern und abschließen"); btnFinish.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String username = person.verantwortlicher.getName() + " " + person.verantwortlicher.getVorname(); // check if a row is selected if (tablemyImages.getSelectedRow() != -1) { // a row is selected, do operations String imagename = tablemyImages.getValueAt( tablemyImages.getSelectedRow(), 0) .toString(); try { DateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); // update the lecture client.updateLecturedata( Lecture.lecture.getName(), Lecture.lecture.getNewName(), Lecture.lecture.getShortDesc(), Lecture.lecture.getDesc(), formatter.format( Lecture.lecture.getStartdate()) .toString(), formatter.format( Lecture.lecture.getEnddate()) .toString(), Lecture.lecture.isActive(), modelMyImages .getValueAt( tablemyImages .convertRowIndexToModel(tablemyImages .getSelectedRow()), 6).toString(), modelMyImages .getValueAt( tablemyImages .convertRowIndexToModel(tablemyImages .getSelectedRow()), 7).toString(), person.verantwortlicher.getUsername(), person.verantwortlicher.getVorname(), person.verantwortlicher.getName(), person.verantwortlicher.getHochschule(), person.verantwortlicher.getEMail(), person.verantwortlicher.getTel(), person.verantwortlicher.getFakultaet(), Lecture.lecture.getid()); // remove all additional user permissions on // first stage client.deleteAllAdditionalLecturePermissions( Lecture.lecture.getid(), person.verantwortlicher.getUserID()); // then, add user permissions as they have been // set new for (int i = 0; i < RightsManagement.rightsManagement .getPermittedUserList().size(); i++) { System.out .println("Writing additional rights for user " + RightsManagement.rightsManagement .getPermittedUserList() .get(i).getUserID() + ", User " + i + "/" + RightsManagement.rightsManagement .getPermittedUserList() .size() +", r="+RightsManagement.rightsManagement.getPermittedUserList().get(i).isLecture_read() +", w="+RightsManagement.rightsManagement.getPermittedUserList().get(i).isLecture_write() +", a="+RightsManagement.rightsManagement.getPermittedUserList().get(i).isLecture_admin() ); client.writeAdditionalLectureRights( Lecture.lecture.getName(), RightsManagement.rightsManagement .getPermittedUserList() .get(i).getUserID(), // userID RightsManagement.rightsManagement .getPermittedUserList() .get(i).isLecture_read(),// read RightsManagement.rightsManagement .getPermittedUserList() .get(i).isLecture_write(),// write RightsManagement.rightsManagement .getPermittedUserList() .get(i).isLecture_admin()// admin ); }// end for JOptionPane .showMessageDialog( c, "Ihre Veranstaltung wurde erfolgreich geändert. Sie kehren nun zum Hauptmenü zurück.", "Veranstaltung angelegt", JOptionPane.INFORMATION_MESSAGE); // zurueck zum Menue MainMenue_GUI m = new MainMenue_GUI(c); m.setVisible(true); } catch (TException e1) { // TODO Auto-generated catch block e1.printStackTrace(); JOptionPane .showMessageDialog( c, "Beim Anlegen Ihrer Veranstaltung ist ein Fehler aufgetreten.", "Error", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(c, e1.getCause() + "\n" + e1.getStackTrace(), "Debug-Message", JOptionPane.ERROR_MESSAGE); } dispose(); } else if (tablePublicVorlagen.getSelectedRow() != -1 && tablePublicVorlagen .getValueAt( tablePublicVorlagen .getSelectedRow(), 4) .toString().equals(username)) { // a row is selected, do operations String imagename = tablePublicVorlagen.getValueAt( tablePublicVorlagen.getSelectedRow(), 0) .toString(); try { DateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); client.updateLecturedata( Lecture.lecture.getName(), Lecture.lecture.getNewName(), Lecture.lecture.getShortDesc(), Lecture.lecture.getDesc(), formatter.format( Lecture.lecture.getStartdate()) .toString(), formatter.format( Lecture.lecture.getEnddate()) .toString(), Lecture.lecture.isActive(), modelPublicVorlagen .getValueAt( tablePublicVorlagen .convertRowIndexToModel(tablePublicVorlagen .getSelectedRow()), 6).toString(), modelPublicVorlagen .getValueAt( tablePublicVorlagen .convertRowIndexToModel(tablePublicVorlagen .getSelectedRow()), 7).toString(), person.verantwortlicher.getUsername(), person.verantwortlicher.getVorname(), person.verantwortlicher.getName(), person.verantwortlicher.getHochschule(), person.verantwortlicher.getEMail(), person.verantwortlicher.getTel(), person.verantwortlicher.getFakultaet(), Lecture.lecture.getid()); // remove all additional user permissions on // first stage client.deleteAllAdditionalLecturePermissions( Lecture.lecture.getid(), person.verantwortlicher.getUserID()); // then, add user permissions as they have been // set new for (int i = 0; i < RightsManagement.rightsManagement .getPermittedUserList().size(); i++) { System.out .println("Writing additional rights for user " + RightsManagement.rightsManagement .getPermittedUserList() .get(i).getUserID() + ", User " + i + "/" + RightsManagement.rightsManagement .getPermittedUserList() .size()); client.writeAdditionalLectureRights( Lecture.lecture.getName(), RightsManagement.rightsManagement .getPermittedUserList() .get(i).getUserID(), // userID RightsManagement.rightsManagement .getPermittedUserList() .get(i).isImageRead(),// read RightsManagement.rightsManagement .getPermittedUserList() .get(i).isImageWrite(),// write RightsManagement.rightsManagement .getPermittedUserList() .get(i).isImageAdmin()// admin ); } JOptionPane .showMessageDialog( c, "Ihre Veranstaltung wurde erfolgreich geändert. Sie kehren nun zum Hauptmenü zurück.", "Veranstaltung angelegt", JOptionPane.INFORMATION_MESSAGE); // zurueck zum Menue MainMenue_GUI m = new MainMenue_GUI(c); m.setVisible(true); } catch (TException e1) { // TODO Auto-generated catch block e1.printStackTrace(); JOptionPane .showMessageDialog( c, "Beim Anlegen Ihrer Veranstaltung ist ein Fehler aufgetreten.", "Error", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(c, e1.getCause() + "\n" + e1.getStackTrace(), "Debug-Message", JOptionPane.ERROR_MESSAGE); } dispose(); } else if (tableAllImages.getSelectedRow() != -1 && tableAllImages .getValueAt( tableAllImages.getSelectedRow(), 4).toString().equals(username)) { // a row is selected, do operations String imagename = tableAllImages.getValueAt( tableAllImages.getSelectedRow(), 0) .toString(); try { DateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); client.updateLecturedata( Lecture.lecture.getName(), Lecture.lecture.getNewName(), Lecture.lecture.getShortDesc(), Lecture.lecture.getDesc(), formatter.format( Lecture.lecture.getStartdate()) .toString(), formatter.format( Lecture.lecture.getEnddate()) .toString(), Lecture.lecture.isActive(), modelAll.getValueAt( tableAllImages .convertRowIndexToModel(tableAllImages .getSelectedRow()), 6).toString(), modelAll.getValueAt( tableAllImages .convertRowIndexToModel(tableAllImages .getSelectedRow()), 7).toString(), person.verantwortlicher.getUsername(), person.verantwortlicher.getVorname(), person.verantwortlicher.getName(), person.verantwortlicher.getHochschule(), person.verantwortlicher.getEMail(), person.verantwortlicher.getTel(), person.verantwortlicher.getFakultaet(), Lecture.lecture.getid()); // remove all additional user permissions on // first stage client.deleteAllAdditionalLecturePermissions( Lecture.lecture.getid(), person.verantwortlicher.getUserID()); // then, add user permissions as they have been // set new for (int i = 0; i < RightsManagement.rightsManagement .getPermittedUserList().size(); i++) { System.out .println("Writing additional rights for user " + RightsManagement.rightsManagement .getPermittedUserList() .get(i).getUserID() + ", User " + i + "/" + RightsManagement.rightsManagement .getPermittedUserList() .size()); client.writeAdditionalLectureRights( Lecture.lecture.getName(), RightsManagement.rightsManagement .getPermittedUserList() .get(i).getUserID(), // userID RightsManagement.rightsManagement .getPermittedUserList() .get(i).isImageRead(),// read RightsManagement.rightsManagement .getPermittedUserList() .get(i).isImageWrite(),// write RightsManagement.rightsManagement .getPermittedUserList() .get(i).isImageAdmin()// admin ); } JOptionPane .showMessageDialog( c, "Ihre Veranstaltung wurde erfolgreich geändert. Sie kehren nun zum Hauptmenü zurück.", "Veranstaltung angelegt", JOptionPane.INFORMATION_MESSAGE); // zurueck zum Menue MainMenue_GUI m = new MainMenue_GUI(c); m.setVisible(true); } catch (TException e1) { // TODO Auto-generated catch block e1.printStackTrace(); JOptionPane .showMessageDialog( c, "Beim Anlegen Ihrer Veranstaltung ist ein Fehler aufgetreten.", "Error", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog( null, e1.getCause() + "\n" + e1.getStackTrace(), "Debug-Message", JOptionPane.ERROR_MESSAGE); } dispose(); } else { // nothing selected JOptionPane.showMessageDialog(c, "Bitte wählen Sie ein Image aus.", "Image Auswahl", JOptionPane.INFORMATION_MESSAGE); } } }); btnFinish.setActionCommand("Cancel"); buttonPane.add(btnFinish); } } 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 lblWeitereAnsprechpartner = new JLabel("Weitere Ansprechpartner:"); lblWeitereAnsprechpartner.setBounds(10, 284, 130, 14); panel.add(lblWeitereAnsprechpartner); 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, 336, 130, 14); panel.add(lblImageIstVorlage); labelVorlage = new JLabel(""); labelVorlage.setBounds(10, 350, 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, 322, 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.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) { // 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 TException, ParseException { List images; // Hole eine Liste der Images images = client.getImageListPermissionLink(person.verantwortlicher .getUserID()); Iterator i = images.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 = { 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(); } return model; } // Initiale Beffuelung eines Table models public DefaultTableModel initTableModelTemplates(DefaultTableModel model) throws TException, ParseException { List images; // Hole eine Liste der Images //images = client.getImageListPermissionLink(person.verantwortlicher.getUserID()); images = client.getImageListAllTemplates(); Iterator i = images.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 = { 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(); } return model; } private void resetLectureInfo() { //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 res = client.getImageData(id, version); 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) { // TODO Auto-generated catch block e1.printStackTrace(); } } }