package gui.intro; import gui.image.CreateImageAllgemein_GUI; import gui.image.DeleteImage_GUI; import gui.image.SearchEditImage_GUI; import gui.image.SearchImage_GUI; import gui.lecture.CreateLectureAllgemein_GUI; import gui.lecture.DeleteLecture_GUI; import gui.lecture.EditLectureSearch_GUI; import gui.lecture.SearchLecture_GUI; import java.awt.Component; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Rectangle; import java.awt.ScrollPane; import java.awt.SystemColor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; 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 javax.swing.ButtonGroup; 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.JSeparator; import javax.swing.JTextArea; import javax.swing.JTextPane; import javax.swing.SwingConstants; import javax.swing.ToolTipManager; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import javax.swing.border.EmptyBorder; import javax.swing.border.TitledBorder; import models.GUIRights; import models.Image; import models.ImageRights; import models.ItemOwner; import models.Lecture; import models.Links; import models.RightsManagement; import models.SessionData; import models.person; import org.apache.log4j.Logger; import org.apache.thrift.TException; import util.GuiOrganizer; import util.News; import util.OpenLinks; import util.ResourceLoader; @SuppressWarnings("serial") public class MainMenue_GUI extends JFrame { private final static Logger LOGGER = Logger.getLogger(MainMenue_GUI.class); private final JPanel contentPanel = new JPanel(); String[] result; String descNewImage, descEditImage, descDeleteImage, descSearchImage, descNewLecture, descEditLecture, descDeleteLecture, descSearchLecture = ""; JRadioButton rdbtnImageNew; JRadioButton rdbtnImageEdit; JRadioButton rdbtnImageSearchDownload; JRadioButton rdbtnLectureNew; JRadioButton rdbtnImageDelete; JRadioButton rdbtnLectureEdit; JRadioButton rdbtnLectureDelete; JRadioButton rdbtnLectureSearch; private final ButtonGroup buttonGroup = new ButtonGroup(); private JMenuItem mntmAbout; Component c = null; private static final String HELP_MESSAGE = "
" + " " + "
"; // for testing ImageRights imageRights = new ImageRights(); public MainMenue_GUI(Component formerGUI) { addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent arg0) { System.exit(0); } }); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) { // TODO Auto-generated catch block e.printStackTrace(); } setTitle("bwLehrpool Suite - Connected Server: " + SessionData.session.getServerAdress()+" - "+person.verantwortlicher.getUserID()); setBounds(0, 0, 603, 722); this.setLocationRelativeTo(formerGUI); getContentPane().setLayout(null); { JPanel panel = new JPanel(); panel.setBackground(SystemColor.menu); panel.setBounds(10, 11, 567, 69); getContentPane().add(panel); panel.setLayout(null); { JLabel lblNewLabel = new JLabel("Hauptmenü"); 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("Bitte wählen Sie ihre gewünschte Aktion."); txtpnBitteWhlenSie.setBounds(10, 36, 509, 22); panel.add(txtpnBitteWhlenSie); } //reset the list of permissions and models //every time the user goes back to the main menu RightsManagement.rightsManagement.getPermittedUserList().clear(); Image.image.reset(); ItemOwner.itemOwner.reset(); setResizable(false); // window is not resizable contentPanel.setBounds(10, 104, 567, 502); contentPanel.setBackground(SystemColor.menu); contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5)); getContentPane().add(contentPanel); contentPanel.setLayout(null); JPanel panelImage = new JPanel(); panelImage.setBackground(SystemColor.menu); panelImage.setBorder(new TitledBorder(null, "Image", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panelImage.setBounds(10, 221, 270, 133); contentPanel.add(panelImage); panelImage.setLayout(null); rdbtnImageNew = new JRadioButton("Neu"); rdbtnImageNew .setToolTipText("Hier können Sie ein neues Image anlegen und im Anschluss eine Veranstaltung darauf verlinken"); rdbtnImageNew.setBounds(20, 22, 159, 23); panelImage.add(rdbtnImageNew); buttonGroup.add(rdbtnImageNew); rdbtnImageNew.setBackground(SystemColor.menu); rdbtnImageEdit = new JRadioButton("Bearbeiten"); rdbtnImageEdit .setToolTipText("Hier können Sie ein bereits angelegtes Image bearbeiten"); rdbtnImageEdit.setBounds(20, 48, 185, 23); panelImage.add(rdbtnImageEdit); buttonGroup.add(rdbtnImageEdit); rdbtnImageEdit.setHorizontalAlignment(SwingConstants.LEFT); rdbtnImageEdit.setBackground(SystemColor.menu); rdbtnImageDelete = new JRadioButton("Löschen"); rdbtnImageDelete.setEnabled(true); buttonGroup.add(rdbtnImageDelete); rdbtnImageDelete .setToolTipText("Löschen Sie hier Images, die Sie nicht mehr benötigen"); rdbtnImageDelete.setHorizontalAlignment(SwingConstants.LEFT); rdbtnImageDelete.setBackground(SystemColor.menu); rdbtnImageDelete.setBounds(20, 74, 185, 23); panelImage.add(rdbtnImageDelete); rdbtnImageSearchDownload = new JRadioButton("Suche und Download"); buttonGroup.add(rdbtnImageSearchDownload); rdbtnImageSearchDownload .setToolTipText("Hier können Sie ein bestehendes Labor zum verändern downloaden"); rdbtnImageSearchDownload.setHorizontalAlignment(SwingConstants.LEFT); rdbtnImageSearchDownload.setBackground(SystemColor.menu); rdbtnImageSearchDownload.setBounds(20, 100, 185, 23); panelImage.add(rdbtnImageSearchDownload); JPanel panelDesc = new JPanel(); panelDesc.setLayout(null); panelDesc.setBorder(new TitledBorder(UIManager .getBorder("TitledBorder.border"), "Erklärung", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panelDesc.setBackground(SystemColor.menu); panelDesc.setBounds(10, 364, 270, 133); contentPanel.add(panelDesc); ScrollPane scrollPaneDesc = new ScrollPane(); scrollPaneDesc.setBounds(10, 15, 250, 110); final JTextArea txtDesc = new JTextArea(); txtDesc.setEditable(false); txtDesc.setBounds(280, 211, 10, 10); txtDesc.setLineWrap(true); txtDesc.setWrapStyleWord(true); txtDesc.setFont(new Font("Tahoma", Font.PLAIN, 11)); txtDesc.setBackground(SystemColor.menu); scrollPaneDesc.add(txtDesc); // Pro AUswahl txtDesc.setText("Legen Sie ein neues Image an und laden Sie anschließend die passende .vmdk-Datei hoch. Ein Image (wenn auch von einem anderen Dozenten) ist die Voraussetzung für eine Veranstaltung."); panelDesc.add(scrollPaneDesc); JPanel panelVeranstaltung = new JPanel(); panelVeranstaltung.setLayout(null); panelVeranstaltung.setBorder(new TitledBorder(UIManager .getBorder("TitledBorder.border"), "Veranstaltung (VMChooser)", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panelVeranstaltung.setBackground(SystemColor.menu); panelVeranstaltung.setBounds(290, 221, 270, 133); contentPanel.add(panelVeranstaltung); rdbtnLectureNew = new JRadioButton("Neu"); buttonGroup.add(rdbtnLectureNew); rdbtnLectureNew .setToolTipText("Erzeugen Sie Veranstaltungen, die dann im VMChooser erscheinen und mit denen Ihre Studierenden arbeiten können - hierzu benötigen Sie ein Image"); rdbtnLectureNew.setBounds(20, 24, 185, 23); panelVeranstaltung.add(rdbtnLectureNew); rdbtnLectureNew.setBackground(SystemColor.menu); rdbtnLectureEdit = new JRadioButton("Bearbeiten"); rdbtnLectureEdit .setToolTipText("Bearbeiten Sie Ihre Veranstaltungsdaten, wie beispielsweise den Anzeigenamen und die Details"); rdbtnLectureEdit.setBounds(20, 50, 230, 23); panelVeranstaltung.add(rdbtnLectureEdit); buttonGroup.add(rdbtnLectureEdit); rdbtnLectureEdit.setBackground(SystemColor.menu); rdbtnLectureDelete = new JRadioButton("Löschen"); rdbtnLectureDelete .setToolTipText("Löschen Sie nicht mehr benötigte Veranstaltungen"); rdbtnLectureDelete.setBounds(20, 76, 175, 23); panelVeranstaltung.add(rdbtnLectureDelete); buttonGroup.add(rdbtnLectureDelete); rdbtnLectureDelete.setBackground(SystemColor.menu); rdbtnLectureSearch = new JRadioButton("Suche"); buttonGroup.add(rdbtnLectureSearch); rdbtnLectureSearch .setToolTipText("Hier können Sie wahlweise nach Ihren eigenen, aber auch nach allen verfügbaren Veranstaltungen suchen"); rdbtnLectureSearch.setBackground(SystemColor.menu); rdbtnLectureSearch.setBounds(20, 102, 175, 23); panelVeranstaltung.add(rdbtnLectureSearch); JPanel panelNews = new JPanel(); panelNews.setLayout(null); panelNews.setBorder(new TitledBorder(UIManager .getBorder("TitledBorder.border"), "News", TitledBorder.LEADING, TitledBorder.TOP, null, null)); panelNews.setBackground(SystemColor.menu); panelNews.setBounds(290, 364, 270, 133); contentPanel.add(panelNews); ScrollPane scrollPaneNews = new ScrollPane(); scrollPaneNews.setBounds(10, 15, 250, 110); JTextArea txtNews = new JTextArea(); txtNews.setEditable(false); txtNews.setFont(new Font("Tahoma", Font.PLAIN, 11)); txtNews.setBackground(SystemColor.menu); txtNews.setWrapStyleWord(true); txtNews.setLineWrap(true); if (News.getContent() != null) txtNews.setText(News.getContent()); scrollPaneNews.add(txtNews); panelNews.add(scrollPaneNews); /* * Berücksichtigen der Rechte für GUI */ // set the rights for this user setRoleRights(); processRights(); setCorrectRadioButton(); /* * Funktion Texte für das Klicken der RadioButtons */ rdbtnImageNew.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { descNewImage = "Legen Sie ein neues Image an und laden Sie anschließend die passende .vmdk-Datei hoch. Ein Image (wenn auch von einem anderen Dozenten) ist die Voraussetzung für eine Veranstaltung."; txtDesc.setText(descNewImage); } }); rdbtnImageEdit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { descEditImage = "Bearbeiten Sie die hinterlegten Informationen zu einem Image oder laden Sie eine neue .vmdk-Datei hoch."; txtDesc.setText(descEditImage); } }); rdbtnImageDelete.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { descDeleteImage = "Suchen Sie alte und nicht mehr benötigte Images und löschen Sie diese."; txtDesc.setText(descDeleteImage); } }); rdbtnImageSearchDownload.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { descSearchImage = "Suchen Sie nach bestimmten Images oder verschaffen Sie sich einen überblick über alle verfügbaren Images. Sie können gewünschte Images umgehend herunterladen."; txtDesc.setText(descSearchImage); } }); rdbtnLectureNew.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { descNewLecture = "Legen Sie eine neue Veranstaltung an und verknüpfen Sie diese mit einem bereits vorhandenem Image. Ihre neue Veranstaltung kann auch auf dem Image eines anderen Dozenten beruhen."; txtDesc.setText(descNewLecture); } }); rdbtnLectureEdit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { descEditLecture = "Bearbeiten Sie die hinterlegten Informationen zu einer Veranstaltung."; txtDesc.setText(descEditLecture); } }); rdbtnLectureDelete.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { descDeleteLecture = "Suchen und löschen Sie eine Veranstaltung. Das hiermit verbundene Image bleibt erhalten."; txtDesc.setText(descDeleteLecture); } }); rdbtnLectureSearch.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { descSearchLecture = "Suchen Sie nach bestimmten Veranstaltungen oder verschaffen Sie sich einen überblick über alle verfügbaren Veranstaltungen. Eventuell gibt es bereits etwas passendes für Ihre Vorlesung."; txtDesc.setText(descSearchLecture); } }); /* * Ende der Radiobuttons */ JLabel lblGrafik = new JLabel(""); // ToolTipp fuer Grafik lblGrafik .setToolTipText("" + "Ein virtuelles Labor besteht immer aus den beiden Komponenten
" + "Image und Veranstaltung. Ein Image ist dabei die Grundlage für
" + "mehrere Veranstaltungen. Somit kann eine neue Veranstaltung
" + "erstellt werden, ohne ein neues Image hochladen zu müssen.


" + "Image: Das Image enthält die benötigte Software, die im
" + "virtuellen Labor benötigt wird. Es wird von genau einem Dozenten
" + "angelegt und besitzt einen allgemeinen Namen, z.B. \"Programmieren\".
" + "Bei einem Image handelt es sich um eine Datei vom Typ VMDK.


" + "Veranstaltung: Es können nun, basierend auf einem Image,
" + " beliebig viele Veranstaltungen von unterschiedlichen Dozenten erstellt
" + "werden. Diese könnten z.B. konkret \"Web-Entwicklung\" oder \"Künstliche
" + "Intelligenz\" lauten und referenzieren dabei auf das allgemeine Image
" + "\"Programmieren\"."); lblGrafik.setIcon(ResourceLoader.getIcon("/img/e4_n_imgs2_bwl_vmc_v2.png")); // ToolTipp lange anzeigen - 60sec ToolTipManager.sharedInstance().setDismissDelay(60000); ToolTipManager.sharedInstance().registerComponent(lblGrafik); lblGrafik.setBounds(10, -12, 547, 189); contentPanel.add(lblGrafik); JTextPane txtpnUmDetaillierteInformationen = new JTextPane(); txtpnUmDetaillierteInformationen .setText("Um detaillierte Informationen zu erhalten, fahren Sie bitte mit der Maus über die Grafik."); txtpnUmDetaillierteInformationen.setEditable(false); txtpnUmDetaillierteInformationen.setBackground(SystemColor.menu); txtpnUmDetaillierteInformationen.setBounds(10, 177, 509, 36); contentPanel.add(txtpnUmDetaillierteInformationen); { JPanel buttonPane = new JPanel(); buttonPane.setBounds(0, 630, 587, 33); buttonPane.setBackground(SystemColor.menu); buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT)); getContentPane().add(buttonPane); { JButton continueButton = new JButton("Weiter"); continueButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // Images if (rdbtnImageNew.isSelected() == true) { CreateImageAllgemein_GUI sr = new CreateImageAllgemein_GUI(c); sr.setVisible(true); dispose(); } else if (rdbtnImageEdit.isSelected() == true) { SearchEditImage_GUI si = new SearchEditImage_GUI(c); si.setVisible(true); dispose(); } else if (rdbtnImageDelete.isSelected() == true) { DeleteImage_GUI di = new DeleteImage_GUI(c); di.setVisible(true); dispose(); } else if (rdbtnImageSearchDownload.isSelected() == true) { // SearchMethodLecture_GUI sm = new // SearchMethodLecture_GUI(); SearchImage_GUI si = new SearchImage_GUI(c); si.setVisible(true); dispose(); // Lectures } else if (rdbtnLectureNew.isSelected() == true) { CreateLectureAllgemein_GUI av = new CreateLectureAllgemein_GUI(c); av.setVisible(true); dispose(); } else if (rdbtnLectureEdit.isSelected() == true) { EditLectureSearch_GUI el = new EditLectureSearch_GUI(c); el.setVisible(true); dispose(); } else if (rdbtnLectureDelete.isSelected() == true) { DeleteLecture_GUI dl = new DeleteLecture_GUI(c); dl.setVisible(true); dispose(); } else if (rdbtnLectureSearch.isSelected() == true) { SearchLecture_GUI sl = new SearchLecture_GUI(c); sl.setVisible(true); dispose(); } else JOptionPane.showMessageDialog(c, "Keine Auswahl getroffen.", "Auswahl fehlt", JOptionPane.ERROR_MESSAGE); } }); continueButton.setActionCommand("OK"); buttonPane.add(continueButton); getRootPane().setDefaultButton(continueButton); } } { JSeparator separator = new JSeparator(); separator.setBounds(0, 617, 587, 2); getContentPane().add(separator); } { JSeparator separator = new JSeparator(); separator.setBounds(0, 91, 587, 2); getContentPane().add(separator); } JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu mnNewMenu_1 = new JMenu("Hilfe"); menuBar.add(mnNewMenu_1); //Template for Help-Buttons /* JMenu mnNewMenu_Info = new JMenu("Info"); mnNewMenu_Info.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent arg0) { JOptionPane.showMessageDialog(null, HELP_MESSAGE, "Hilfe zu dieser Oberfläche", JOptionPane.INFORMATION_MESSAGE); } }); menuBar.add(mnNewMenu_Info); * */ JMenuItem mntmFaq = new JMenuItem("FAQ"); mntmFaq.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent arg0) { URI windows; try { windows = new URI(Links.getFAQ()); OpenLinks.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) { URI windows; try { windows = new URI(Links.getOTRS()); OpenLinks.openWebpage(windows); } catch (URISyntaxException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); mnNewMenu_1.add(mntmOtrs); mntmAbout = new JMenuItem("About"); mntmAbout.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { About_GUI ab = new About_GUI(); ab.setVisible(true); } }); mnNewMenu_1.add(mntmAbout); c = this; }// end main /** * Enables/disables radio button given the user's rights */ private void processRights() { // Image if (person.verantwortlicher.getRole().equals("Student")) { rdbtnImageNew.setEnabled(false); rdbtnImageEdit.setEnabled(false); rdbtnImageDelete.setEnabled(false); rdbtnImageSearchDownload.setEnabled(true); } else if (person.verantwortlicher.getRole().equals("Dozent") || person.verantwortlicher.getRole().equals("Admin")) { rdbtnImageNew.setEnabled(true); rdbtnImageEdit.setEnabled(true); rdbtnImageDelete.setEnabled(true); rdbtnImageSearchDownload.setEnabled(true); } else { rdbtnImageNew.setEnabled(false); rdbtnImageEdit.setEnabled(false); rdbtnImageDelete.setEnabled(false); rdbtnImageSearchDownload.setEnabled(false); } // Veranstaltung if (person.verantwortlicher.getRole().equals("Student")) { rdbtnLectureNew.setEnabled(false); rdbtnLectureEdit.setEnabled(false); rdbtnLectureDelete.setEnabled(false); rdbtnLectureSearch.setEnabled(true); } else if (person.verantwortlicher.getRole().equals("Dozent") || person.verantwortlicher.getRole().equals("Admin")) { rdbtnLectureNew.setEnabled(true); rdbtnLectureEdit.setEnabled(true); rdbtnLectureDelete.setEnabled(true); rdbtnLectureSearch.setEnabled(true); } else { rdbtnLectureNew.setEnabled(false); rdbtnLectureEdit.setEnabled(false); rdbtnLectureDelete.setEnabled(false); rdbtnLectureSearch.setEnabled(false); } }// end processRights() /** * Sets rights for the user depending on its role * returned by the masterserver */ public void setRoleRights() { LOGGER.info("Role: " + person.verantwortlicher.getRole()); // role==Student if (person.verantwortlicher.getRole().equals("Student")) { GUIRights.rights.setRead(1); GUIRights.rights.setWrite(0); GUIRights.rights.setChangePermission(0); GUIRights.rights.setAdmin(0); GUIRights.rights.setLinkAllowed(0); } else if (person.verantwortlicher.getRole().equals("Dozent")) { // role==Dozent GUIRights.rights.setRead(1); GUIRights.rights.setWrite(1); GUIRights.rights.setChangePermission(0); GUIRights.rights.setAdmin(0); GUIRights.rights.setLinkAllowed(1); } else if (person.verantwortlicher.getRole().equals("Admin")) { // role==Admin GUIRights.rights.setRead(1); GUIRights.rights.setWrite(1); GUIRights.rights.setChangePermission(1); GUIRights.rights.setAdmin(1); GUIRights.rights.setLinkAllowed(1); } else { // role==Nothing GUIRights.rights.setRead(0); GUIRights.rights.setWrite(0); GUIRights.rights.setChangePermission(0); GUIRights.rights.setAdmin(0); GUIRights.rights.setLinkAllowed(0); }// end if else }// end setRoleRights public void setCorrectRadioButton() { // get the first enabled RadioButton depending on role an rights. Start // at top if (rdbtnImageNew.isEnabled() == true) { rdbtnImageNew.setSelected(true); } else if (rdbtnImageEdit.isEnabled() == true) { rdbtnImageEdit.setSelected(true); } else if (rdbtnImageDelete.isEnabled() == true) { rdbtnImageDelete.setSelected(true); } else if (rdbtnImageSearchDownload.isEnabled() == true) { rdbtnImageSearchDownload.setSelected(true); } else if (rdbtnLectureNew.isEnabled() == true) { rdbtnLectureNew.setSelected(true); } else if (rdbtnLectureEdit.isEnabled() == true) { rdbtnLectureEdit.setSelected(true); } else if (rdbtnLectureDelete.isEnabled() == true) { rdbtnLectureDelete.setSelected(true); } else if (rdbtnLectureSearch.isEnabled() == true) { rdbtnLectureSearch.setSelected(true); } }// end setCorrectRadioButton() }// end class