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.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 java.util.Calendar;
import java.util.Date;
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.JTextField;
import javax.swing.JTextPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
import models.Image;
import models.ItemOwner;
import models.Lecture;
import models.Links;
import models.person;
import util.OpenLinks;
import com.toedter.calendar.JDateChooser;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
@SuppressWarnings("serial")
public class EditLectureAllgemein_GUI extends JFrame {
private final JPanel contentPanel = new JPanel();
String[] result;
private JTextField Vorname;
private JTextField Nachname;
private JTextField Hochschule;
private JTextField EMail;
private JTextField textFieldLaborname;
JTextArea description;
JRadioButton radioButtonyes;
JDateChooser dateChooserend;
JDateChooser dateChooserstart;
JRadioButton radioButtonno;
Date startDate = new Date();
Date endDate;
Component c = null;
private final ButtonGroup buttonGroup = new ButtonGroup();
private boolean descriptionLengthOK = false; // description may not be
// longer than
// MAX_DESCRIPTION_LENGTH
private final int MAX_DESCRIPTION_LENGTH = 254;
int maxLifeTime = 180; // Anzahl Tage, die eine Veranstaltung in der Zukunft
// aktiv sein darf
boolean isDateOrderCorrect, isDateMaxLifeTimeCorrect,
isAllInformationReady = false;
private static final String HELP_MESSAGE = "
" +
"Bearbeiten Sie hier Ihre allgemeinen Informationen zu einer Veranstaltung.
" +
"Sie können auch den Zeitraum neu wählen und die Beschreibung ändern.
" +
"Klicken Sie anschließend auf \"Witer\" um die Daten im nächsten Schritt zu übernehmen." +
"
";
/**
* Create the dialog.
*/
public EditLectureAllgemein_GUI(Component formerGUI) {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
});
setResizable(false);
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException
| IllegalAccessException | UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
setTitle("bwLehrpool Suite - Veranstaltung bearbeiten");
;
setBounds(0, 0, 603, 722);
setLocationRelativeTo(formerGUI);
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("Eingabe Ihrer Daten");
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("Geben Sie hier bitte einen sprechenden Veranstaltungsnamen sowie Ihre Kontaktdaten an");
txtpnBitteWhlenSie.setBounds(10, 36, 509, 21);
panel.add(txtpnBitteWhlenSie);
}
contentPanel.setBounds(10, 85, 577, 493);
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, "Informationen zum Besitzer",
TitledBorder.LEADING, TitledBorder.TOP, null, null));
panel_1.setBounds(10, 331, 557, 162);
contentPanel.add(panel_1);
panel_1.setLayout(null);
JLabel label = new JLabel("Vorname: *");
label.setBackground(SystemColor.menu);
label.setBounds(10, 33, 125, 20);
panel_1.add(label);
Vorname = new JTextField();
Vorname.setEditable(false);
Vorname.setEnabled(false);
//Vorname.setText(person.verantwortlicher.getVorname());
Vorname.setText(ItemOwner.itemOwner.getVorname());
Vorname.setBackground(Color.WHITE);
Vorname.setColumns(10);
Vorname.setBounds(145, 33, 350, 20);
panel_1.add(Vorname);
JLabel label_7 = new JLabel("Nachname: *");
label_7.setBackground(SystemColor.menu);
label_7.setBounds(10, 64, 125, 20);
panel_1.add(label_7);
Nachname = new JTextField();
Nachname.setEnabled(false);
Nachname.setEditable(false);
//Nachname.setText(person.verantwortlicher.getName());
Nachname.setText(ItemOwner.itemOwner.getNachname());
Nachname.setBackground(Color.WHITE);
Nachname.setColumns(10);
Nachname.setBounds(145, 64, 350, 20);
panel_1.add(Nachname);
JLabel label_8 = new JLabel("Hochschule: *");
label_8.setBackground(SystemColor.menu);
label_8.setBounds(10, 95, 125, 20);
panel_1.add(label_8);
Hochschule = new JTextField();
Hochschule.setEnabled(false);
Hochschule.setEditable(false);
//Hochschule.setText(person.verantwortlicher.getHochschule());
Hochschule.setText(ItemOwner.itemOwner.getHochschule());
Hochschule.setBackground(Color.WHITE);
Hochschule.setColumns(10);
Hochschule.setBounds(145, 95, 350, 20);
panel_1.add(Hochschule);
JLabel label_9 = new JLabel("E-Mail: *");
label_9.setBackground(SystemColor.menu);
label_9.setBounds(10, 126, 125, 20);
panel_1.add(label_9);
EMail = new JTextField();
EMail.setEnabled(false);
EMail.setEditable(false);
//EMail.setText(person.verantwortlicher.getEMail());
EMail.setText(ItemOwner.itemOwner.getEmail());
EMail.setBackground(Color.WHITE);
EMail.setColumns(10);
EMail.setBounds(145, 126, 350, 20);
panel_1.add(EMail);
JPanel panel = new JPanel();
panel.setBounds(10, 402, 577, 33);
contentPanel.add(panel);
panel.setLayout(null);
panel.setBorder(new EmptyBorder(5, 5, 5, 5));
panel.setBackground(SystemColor.menu);
JLabel lblHauptmen = new JLabel("Hauptmenü");
lblHauptmen.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
EditLectureAllgemein_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, 84, 14);
contentPanel.add(lblVlimage);
JLabel label_2 = new JLabel(">");
label_2.setBounds(175, 11, 13, 14);
contentPanel.add(label_2);
JLabel lblNewLabel_1 = new JLabel("Bearbeiten");
lblNewLabel_1.setBounds(188, 11, 155, 14);
contentPanel.add(lblNewLabel_1);
JPanel panel_2 = new JPanel();
panel_2.setLayout(null);
panel_2.setBorder(new TitledBorder(null, "Veranstaltungsdaten",
TitledBorder.LEADING, TitledBorder.TOP, null, null));
panel_2.setBackground(SystemColor.menu);
panel_2.setBounds(10, 36, 557, 284);
contentPanel.add(panel_2);
JLabel label_3 = new JLabel("Laborname (Anzeigename): *");
label_3.setBounds(10, 25, 180, 14);
panel_2.add(label_3);
textFieldLaborname = new JTextField();
textFieldLaborname.setText(Lecture.lecture.getName());
textFieldLaborname.setColumns(10);
textFieldLaborname.setBounds(200, 22, 347, 20);
panel_2.add(textFieldLaborname);
JTextArea txtrGebenSieBitte = new JTextArea();
txtrGebenSieBitte.setEditable(false);
txtrGebenSieBitte.setWrapStyleWord(true);
txtrGebenSieBitte.setText("Geben Sie bitte einen sprechenden Namen für die Veranstaltung an. Dieser soll jedoch recht spezifisch sein.\r\nBeispiel: \"Programmieren 1\", nicht \"Programmieren\"");
txtrGebenSieBitte.setLineWrap(true);
txtrGebenSieBitte.setFont(new Font("Tahoma", Font.PLAIN, 12));
txtrGebenSieBitte.setBackground(SystemColor.menu);
txtrGebenSieBitte.setBounds(10, 49, 537, 49);
panel_2.add(txtrGebenSieBitte);
JLabel label_4 = new JLabel("Beschreibung: *");
label_4.setBounds(10, 111, 180, 14);
panel_2.add(label_4);
ScrollPane scrollPane = new ScrollPane();
scrollPane.setBounds(200, 104, 347, 78);
panel_2.add(scrollPane);
description = new JTextArea();
description.setFont(new Font("Tahoma", Font.PLAIN, 11));
description.setText(Lecture.lecture.getDesc());
description.setLineWrap(true);
scrollPane.add(description);
description.setBounds(0, 0, 4, 22);
scrollPane.add(description);
dateChooserend = new JDateChooser();
dateChooserend.setDateFormatString("dd-MM-yyyy HH:mm:ss");
dateChooserend.setDate(Lecture.lecture.getEnddate());
dateChooserend.setBounds(404, 188, 143, 20);
panel_2.add(dateChooserend);
JLabel label_5 = new JLabel("bis");
label_5.setBounds(378, 188, 21, 20);
panel_2.add(label_5);
dateChooserstart = new JDateChooser();
dateChooserstart
.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent arg0) {
endDate = addDays(dateChooserstart.getDate(),
maxLifeTime); // Datum darf weiter als 6
// Monate in der Zukunft
// liegen
}
});
// initialize
if (Lecture.lecture.getStartdate() == null) {
// is not defined yet
dateChooserstart.setDate(startDate);
} else {
// already defined from last visit on this page
dateChooserstart.setDate(Lecture.lecture.getStartdate());
}
if (Lecture.lecture.getEnddate() == null) {
// is not defined yet
dateChooserend.setDate(endDate);
} else {
// already defined from last visit on this page
dateChooserend.setDate(Lecture.lecture.getEnddate());
}
dateChooserstart.setDateFormatString("yyyy-MM-dd HH:mm:ss");
dateChooserstart.setDate(Lecture.lecture.getStartdate());
dateChooserstart.setBounds(226, 188, 143, 20);
panel_2.add(dateChooserstart);
JLabel label_6 = new JLabel("von:");
label_6.setBounds(200, 188, 30, 20);
panel_2.add(label_6);
JLabel label_10 = new JLabel("Gültigkeitsdatum: *");
label_10.setBounds(10, 188, 250, 14);
panel_2.add(label_10);
JLabel label_11 = new JLabel("Aktiv:");
label_11.setBounds(10, 229, 250, 14);
panel_2.add(label_11);
radioButtonyes = new JRadioButton("Ja");
buttonGroup.add(radioButtonyes);
radioButtonyes.setBounds(240, 225, 109, 23);
panel_2.add(radioButtonyes);
radioButtonno = new JRadioButton("Nein");
buttonGroup.add(radioButtonno);
radioButtonno.setBounds(385, 225, 109, 23);
panel_2.add(radioButtonno);
//set button value
if(Lecture.lecture.isActive()==true){
radioButtonyes.setSelected(true);
radioButtonno.setSelected(false);
} else {
radioButtonyes.setSelected(false);
radioButtonno.setSelected(true);
}
radioButtonyes.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
radioButtonyes.setSelected(true);
radioButtonno.setSelected(false);
}
});
radioButtonno.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
radioButtonno.setSelected(true);
radioButtonyes.setSelected(false);
}
});
JLabel label_12 = new JLabel("(Im VMChooser sichtbar)");
label_12.setBounds(10, 254, 250, 14);
panel_2.add(label_12);
JLabel lblmaxMonate = new JLabel("(max. 6 Monate)");
lblmaxMonate.setBounds(10, 208, 127, 14);
panel_2.add(lblmaxMonate);
{
JPanel buttonPane = new JPanel();
buttonPane.setBounds(0, 640, 597, 33);
buttonPane.setBackground(SystemColor.menu);
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane);
{
JButton okButton = new JButton("Zurück");
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (radioButtonyes.isSelected() == true) {
Lecture.lecture.setActive(true);
} else {
Lecture.lecture.setActive(false);
}
Lecture.lecture.setName(textFieldLaborname.getText().trim());
Lecture.lecture.setDesc(description.getText().trim());
Lecture.lecture.setEnddate(dateChooserend.getDate());
Lecture.lecture.setStartdate(dateChooserstart.getDate());
Image.image.setImagename(textFieldLaborname.getText().trim());
EditLectureSearch_GUI sr = new EditLectureSearch_GUI(c);
sr.setVisible(true);
dispose();
}
});
okButton.setActionCommand("OK");
buttonPane.add(okButton);
getRootPane().setDefaultButton(okButton);
}
{
JButton cancelButton = new JButton("Weiter");
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// liegt das End-Datum vor dem Start-Datum?
if (dateChooserend.getDate().before(
dateChooserstart.getDate())) {
// datum ist falsch rum
isDateOrderCorrect = false;
JOptionPane
.showMessageDialog(
c,
"Das End-Datum liegt vor dem Start-Datum. Bitte ändern.",
"Datum fehlerhaft",
JOptionPane.INFORMATION_MESSAGE);
} else {
// bereit
isDateOrderCorrect = true;
}
// liegt das eingegebene Datum nach dem erlaubten
// End-Datum?
if (dateChooserend.getDate().after(endDate)) {
// Datum zu weit weg
isDateMaxLifeTimeCorrect = false;
JOptionPane.showMessageDialog(c,
"Das End-Datum liegt zu weit in der Zukunft. Erlaubt ist maximal:\n"
+ endDate, "Datum fehlerhaft",
JOptionPane.INFORMATION_MESSAGE);
dateChooserend.setDate(endDate); // setze Datum auf
// maximum
} else {
// bereit
isDateMaxLifeTimeCorrect = true;
}
// Pruefen ob alles eingegeben wurde
if (textFieldLaborname.getText().trim().isEmpty() == true
|| description.getText().trim().isEmpty() == true) {
// mind 1 Textfeld ist leer
isAllInformationReady = false;
JOptionPane
.showMessageDialog(
c,
"Bitte geben Sie einen Veranstaltungsnamen und eine Beschreibung ein.",
"Datum fehlerhaft",
JOptionPane.INFORMATION_MESSAGE);
} else {
// Textfelder bereit
isAllInformationReady = true;
}
// welcher Radiobutton ist geklickt?
if (radioButtonyes.isSelected() == true) {
Lecture.lecture.setActive(true);
} else {
Lecture.lecture.setActive(false);
}
// Pruefe ob alle Eingaben korrekt sind, dann mache
// weiter
if (isAllInformationReady == true
&& isDateMaxLifeTimeCorrect == true
&& isDateOrderCorrect == true
&& descriptionLenghtOK() == true) {
// everything is ok, proceed
Lecture.lecture.setNewName(textFieldLaborname
.getText().trim());
Lecture.lecture.setDesc(description.getText().trim());
Lecture.lecture.setEnddate(dateChooserend.getDate());
Lecture.lecture.setStartdate(dateChooserstart
.getDate());
Image.image.setImagename(textFieldLaborname
.getText().trim());
PermissionEditLecture_GUI ev = new PermissionEditLecture_GUI(c);
ev.setVisible(true);
dispose();
}
}
});
cancelButton.setActionCommand("Cancel");
buttonPane.add(cancelButton);
}
}
JSeparator separator = new JSeparator();
separator.setBounds(0, 78, 597, 2);
getContentPane().add(separator);
JSeparator separator_1 = new JSeparator();
separator_1.setBounds(0, 627, 597, 2);
getContentPane().add(separator_1);
JLabel lblPflichtfelder = new JLabel("* Pflichtfelder");
lblPflichtfelder.setBounds(32, 602, 136, 14);
getContentPane().add(lblPflichtfelder);
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) {
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) {
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;
setLocationRelativeTo(formerGUI);
}
public Date addDays(Date date, int days) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, days); // minus number would decrement the days
return cal.getTime();
}// end addDays()
public boolean descriptionLenghtOK() {
descriptionLengthOK = false;
// max length is 254 chars
if (description.getText().trim().length() >= MAX_DESCRIPTION_LENGTH) {
descriptionLengthOK = false;
JOptionPane.showMessageDialog(c,
"Die Beschreibung darf max 254 Zeichen enthalten. Aktuell enthält sie "
+ description.getText().trim().length() + ".",
"Beschreibung zu umfangreich",
JOptionPane.INFORMATION_MESSAGE);
} else {
descriptionLengthOK = true;
}
return descriptionLengthOK;
}// enddescriptionLenghtOK()
}// end class