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.ScrollPane;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
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.RightsManagement;
import models.SessionData;
import models.person;
import org.apache.log4j.Logger;
import util.GuiManager;
import util.News;
import util.ResourceLoader;
@SuppressWarnings("serial")
public class MainMenue_GUI extends JInternalFrame {
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();
Component c = null;
// for testing
ImageRights imageRights = new ImageRights();
boolean tokenDeleted;
public MainMenue_GUI() {
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);
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, 244, 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, 244, 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, 244, 23);
panelImage.add(rdbtnImageDelete);
rdbtnImageSearchDownload = new JRadioButton("Suche und Download (inkl. Vorlagen)");
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, 244, 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, 230, 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, 230, 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, 230, 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) {
GuiManager.show(new CreateImageAllgemein_GUI());
} else if (rdbtnImageEdit.isSelected() == true) {
GuiManager.show(new SearchEditImage_GUI());
} else if (rdbtnImageDelete.isSelected() == true) {
GuiManager.show(new DeleteImage_GUI());
} else if (rdbtnImageSearchDownload.isSelected() == true) {
GuiManager.show(new SearchImage_GUI());
// Lectures
} else if (rdbtnLectureNew.isSelected() == true) {
GuiManager.show(new CreateLectureAllgemein_GUI());
} else if (rdbtnLectureEdit.isSelected() == true) {
GuiManager.show(new EditLectureSearch_GUI());
} else if (rdbtnLectureDelete.isSelected() == true) {
GuiManager.show(new DeleteLecture_GUI());
} else if (rdbtnLectureSearch.isSelected() == true) {
GuiManager.show(new SearchLecture_GUI());
} 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);
}
}// 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