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.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.RowFilter;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import models.ItemOwner;
import models.Lecture;
import models.Links;
import models.person;
import org.apache.thrift.TException;
import server.generated.Server.Client;
import thrift.ThriftConnection;
import util.GuiOrganizer;
import util.OpenLinks;
@SuppressWarnings("serial")
public class EditLectureSearch_GUI extends JFrame {
private final JPanel contentPanel = new JPanel();
String[] result;
JRadioButton rdbtnInternetJa;
JRadioButton rdbtnInternetNein;
JLabel labelAktiv;
JLabel labelstartdate;
JLabel labelenddate;
JLabel labelimageversion;
JTextArea labelName;
JTextArea labelimage;
JTextArea labeldesc;
JLabel labelVerantwortlicher;
JTable tablemyLectures;
private JTextField textFieldName;
boolean activeSearch = false;
Component c = null;
String[] titles = { "Veranstaltungsname", "Beschreibung",
"Gültigkeitsdatum", "Aktiv", "Letzte Benutzung",
"Verantwortlicher", "Image", "Schlagwort", "ID" };
ThriftConnection con = new ThriftConnection();
Client client = models.Client.clientcon.getClient();
private static final String HELP_MESSAGE = "
"
+ "Suchen Sie hier Ihre Veranstaltungen und wählen Sie sie für weitere Schritte aus.
"
+ "Klicken Sie anschließend auf \"Weiter\", um die Details der Veranstaltung sowie die Berechtigungen zu ändern."
+ "
";
final DefaultTableModel modelMyLectures = new DefaultTableModel(titles, 0) {
public boolean isCellEditable(int rowIndex, int mColIndex) {
return false;
}
};
final TableRowSorter rowSorterMyLectures = new TableRowSorter(
modelMyLectures);
RowFilter rf = null;
List> filters = new ArrayList>(
2);
/**
* Create the dialog.
*/
public EditLectureSearch_GUI(Component formerGUI) {
filters.add(RowFilter.regexFilter(".", 0));
rf = RowFilter.orFilter(filters);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent arg0) {
// Beendet die Anwendung nach klick auf X
con.closeThriftConnection();
System.exit(0);
}
@Override
public void windowOpened(WindowEvent arg0) {
textFieldName.requestFocusInWindow();
try {
initTableModel(modelMyLectures);
// initTableModel(modelAll);
} catch (ParseException e) {
e.printStackTrace();
}
// auszublendende Angaben
// 1=Beschreibung
// 2=Gültigkeitsdatum
// 3=Aktiv
// 6=Image
// 7=Schlagwort
// 8=ID
tablemyLectures.getColumnModel().getColumn(1).setWidth(0);
tablemyLectures.getColumnModel().getColumn(1).setMinWidth(0);
tablemyLectures.getColumnModel().getColumn(1).setMaxWidth(0);
tablemyLectures.getColumnModel().getColumn(2).setWidth(0);
tablemyLectures.getColumnModel().getColumn(2).setMinWidth(0);
tablemyLectures.getColumnModel().getColumn(2).setMaxWidth(0);
tablemyLectures.getColumnModel().getColumn(3).setWidth(0);
tablemyLectures.getColumnModel().getColumn(3).setMinWidth(0);
tablemyLectures.getColumnModel().getColumn(3).setMaxWidth(0);
tablemyLectures.getColumnModel().getColumn(6).setWidth(0);
tablemyLectures.getColumnModel().getColumn(6).setMinWidth(0);
tablemyLectures.getColumnModel().getColumn(6).setMaxWidth(0);
tablemyLectures.getColumnModel().getColumn(7).setWidth(0);
tablemyLectures.getColumnModel().getColumn(7).setMinWidth(0);
tablemyLectures.getColumnModel().getColumn(7).setMaxWidth(0);
tablemyLectures.getColumnModel().getColumn(8).setWidth(0);
tablemyLectures.getColumnModel().getColumn(8).setMinWidth(0);
tablemyLectures.getColumnModel().getColumn(8).setMaxWidth(0);
}
});
// Verhindert das Vergroessern Des Fensters
setResizable(false);
try {
// Setzt das Look & Feel auf System
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException
| IllegalAccessException | UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
// Setzt den Fenstertitel
setTitle("bwLehrpool Suite - Veranstaltung bearbeiten");
// Zentriert das Fenster in die Bildmitte
setBounds(0, 0, 842, 722);
setLocationRelativeTo(formerGUI);
getContentPane().setLayout(null);
{
JPanel panel = new JPanel();
panel.setBackground(SystemColor.menu);
panel.setBounds(10, 11, 816, 57);
getContentPane().add(panel);
panel.setLayout(null);
{
JLabel lblNewLabel = new JLabel("Suche nach Veranstaltung");
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("Hier können Sie nach Ihrem gewünschten Vorlesungsimage suchen und dieses für weitere Schritte auswählen");
txtpnBitteWhlenSie.setBounds(10, 36, 536, 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, 66);
contentPanel.add(panel_1);
panel_1.setLayout(null);
JLabel lblNewLabel_2 = new JLabel("Volltextsuche:");
lblNewLabel_2.setBounds(30, 30, 80, 20);
panel_1.add(lblNewLabel_2);
textFieldName = new JTextField();
// Key Listener der Tastatureingabe registriert
textFieldName.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
// Textfield eingabe auslesen
String stext = textFieldName.getText();
// Wenn Textfield nicht leer
if (stext != "") {
activeSearch = true;
// Filtere nach der Eingabe
filters.clear();
filters.add(RowFilter.regexFilter("(?i)" + stext, 0)); // case
// insensitive
filters.add(RowFilter.regexFilter("(?i)" + stext, 1)); // case
// insensitive
rf = RowFilter.orFilter(filters);
rowSorterMyLectures.setRowFilter(rf);
} else {
activeSearch = false;
activeSearch = false;
filters.clear();
filters.add(RowFilter.regexFilter(".", 0)); // case
// insensitive,
// filter for
// anything
rf = RowFilter.orFilter(filters);
rowSorterMyLectures.setRowFilter(rf);
}
tablemyLectures.clearSelection();
resetLectureInfo();
}
});
textFieldName.setBounds(133, 30, 400, 20);
panel_1.add(textFieldName);
textFieldName.setColumns(10);
JLabel lblHauptmen = new JLabel("Hauptmenü");
lblHauptmen.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
// oeffnet das Hauptmenue
EditLectureSearch_GUI.this.setVisible(false);
MainMenue_GUI main = new MainMenue_GUI(c);
main.setVisible(true);
}
});
lblHauptmen.setForeground(Color.BLUE);
lblHauptmen.setBounds(10, 11, 61, 14);
contentPanel.add(lblHauptmen);
JLabel label_1 = new JLabel(">");
label_1.setBounds(69, 11, 13, 14);
contentPanel.add(label_1);
JLabel lblVlimage = new JLabel("Veranstaltung");
lblVlimage.setForeground(Color.BLUE);
lblVlimage.setBounds(81, 11, 75, 14);
contentPanel.add(lblVlimage);
JLabel label_2 = new JLabel(">");
label_2.setBounds(152, 11, 13, 14);
contentPanel.add(label_2);
JLabel lblNewLabel_1 = new JLabel("Bearbeiten");
lblNewLabel_1.setBounds(166, 11, 155, 14);
contentPanel.add(lblNewLabel_1);
JScrollPane scrollPaneMyImage = new JScrollPane();
scrollPaneMyImage.setBounds(10, 120, 552, 369);
contentPanel.add(scrollPaneMyImage);
tablemyLectures = new JTable();
tablemyLectures.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
if (tablemyLectures.getSelectedRow() != -1) {
String lectureid = modelMyLectures
.getValueAt(
tablemyLectures
.convertRowIndexToModel(tablemyLectures
.getSelectedRow()),
8).toString();
try {
// write the values into the information pane on
// the right hand side
writeLectureData(lectureid);
// fill the itemOwnder model with information
// from selected item
setItemOwnerInformation(lectureid);
} catch (TException e1) {
e1.printStackTrace();
} catch (ParseException e1) {
e1.printStackTrace();
}
}
}
});
tablemyLectures.setModel(modelMyLectures);
tablemyLectures.getColumnModel().getColumn(1).sizeWidthToFit();
tablemyLectures.getColumnModel().getColumn(2).sizeWidthToFit();
tablemyLectures.getColumnModel().getColumn(3).sizeWidthToFit();
tablemyLectures.getColumnModel().getColumn(4).sizeWidthToFit();
tablemyLectures.getColumnModel().getColumn(5).sizeWidthToFit();
tablemyLectures.setRowSorter(rowSorterMyLectures);
scrollPaneMyImage.setViewportView(tablemyLectures);
{
JPanel buttonPane = new JPanel();
buttonPane.setBounds(0, 640, 826, 33);
buttonPane.setBackground(SystemColor.menu);
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane);
{
JButton btnBack = new JButton("Zurück");
btnBack.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// oeffnet das Hauptmenue
MainMenue_GUI main = new MainMenue_GUI(c);
main.setVisible(true);
dispose();
}
});
btnBack.setActionCommand("OK");
buttonPane.add(btnBack);
// getRootPane().setDefaultButton(btnBack);
}
{
JButton btnContinue = new JButton("Weiter");
btnContinue.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String username = person.verantwortlicher.getName()
+ " " + person.verantwortlicher.getVorname();
// check if a row is selected
if (tablemyLectures.getSelectedRow() != -1) {
// a row is selected, do operations
Lecture.lecture.setid(modelMyLectures
.getValueAt(
tablemyLectures
.convertRowIndexToModel(tablemyLectures
.getSelectedRow()),
8).toString());
Lecture.lecture.setName(modelMyLectures
.getValueAt(
tablemyLectures
.convertRowIndexToModel(tablemyLectures
.getSelectedRow()),
0).toString());
Lecture.lecture.setDesc(modelMyLectures
.getValueAt(
tablemyLectures
.convertRowIndexToModel(tablemyLectures
.getSelectedRow()),
1).toString());
String date = modelMyLectures
.getValueAt(
tablemyLectures
.convertRowIndexToModel(tablemyLectures
.getSelectedRow()),
2).toString();
Lecture.lecture.setLinkedImagename(modelMyLectures
.getValueAt(
tablemyLectures
.convertRowIndexToModel(tablemyLectures
.getSelectedRow()),
6).toString());
int zweitesLeerzeichen = date.indexOf(" ",
date.indexOf(" ") + 1);
String startdate = date.substring(0,
zweitesLeerzeichen);
String enddate = date.substring(zweitesLeerzeichen);
SimpleDateFormat out = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
SimpleDateFormat in = new SimpleDateFormat(
"dd.MM.yyyy HH:mm:ss");
try {
enddate = out.format(in.parse(enddate));
startdate = out.format(in.parse(startdate));
} catch (ParseException e2) {
e2.printStackTrace();
}
DateFormat df = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
try {
// Format has to be "yyyy-MM-dd HH:mm:ss"
Lecture.lecture.setEnddate(df.parse(enddate));
Lecture.lecture.setStartdate(df
.parse(startdate));
} catch (ParseException e1) {
e1.printStackTrace();
}
if (modelMyLectures
.getValueAt(
tablemyLectures
.convertRowIndexToModel(tablemyLectures
.getSelectedRow()),
3).toString().equals("1")) {
Lecture.lecture.setActive(true);
} else {
Lecture.lecture.setActive(false);
}
// EditImageAllgemein_GUI ea=new
// EditImageAllgemein_GUI();
EditLectureAllgemein_GUI el = new EditLectureAllgemein_GUI(
c);
el.setVisible(true);
dispose();
}
} // end action
});
btnContinue.setActionCommand("Cancel");
buttonPane.add(btnContinue);
}
}
JSeparator separator = new JSeparator();
separator.setBounds(0, 79, 836, 1);
getContentPane().add(separator);
JSeparator separator_1 = new JSeparator();
separator_1.setBounds(0, 628, 836, 1);
getContentPane().add(separator_1);
JPanel panel = new JPanel();
panel.setLayout(null);
panel.setBorder(new TitledBorder(null, "Detailinformationen",
TitledBorder.LEADING, TitledBorder.TOP, null, null));
panel.setBackground(SystemColor.menu);
panel.setBounds(591, 85, 235, 518);
getContentPane().add(panel);
JLabel lblNewLabel_3 = new JLabel("Name:");
lblNewLabel_3.setBounds(10, 27, 104, 14);
panel.add(lblNewLabel_3);
JLabel lblAktiv = new JLabel("Aktiv:");
lblAktiv.setBounds(10, 98, 104, 14);
panel.add(lblAktiv);
labelAktiv = new JLabel("");
labelAktiv.setBounds(10, 114, 218, 14);
panel.add(labelAktiv);
labelstartdate = new JLabel("");
labelstartdate.setBounds(10, 147, 218, 14);
panel.add(labelstartdate);
JLabel lblStartdatum = new JLabel("Startdatum:");
lblStartdatum.setBounds(10, 129, 104, 14);
panel.add(lblStartdatum);
labelenddate = new JLabel("");
labelenddate.setBounds(10, 175, 218, 14);
panel.add(labelenddate);
JLabel lblEnddatum = new JLabel("Enddatum:");
lblEnddatum.setBounds(10, 161, 104, 14);
panel.add(lblEnddatum);
JLabel lblBeschreibung = new JLabel("Beschreibung:");
lblBeschreibung.setBounds(10, 189, 104, 14);
panel.add(lblBeschreibung);
JLabel lblImage = new JLabel("Image:");
lblImage.setBounds(10, 293, 104, 14);
panel.add(lblImage);
labelVerantwortlicher = new JLabel("");
labelVerantwortlicher.setBounds(10, 426, 218, 14);
panel.add(labelVerantwortlicher);
JLabel lblVerantwortlicher = new JLabel("Verantwortlicher:");
lblVerantwortlicher.setBounds(10, 411, 104, 14);
panel.add(lblVerantwortlicher);
JLabel lblImageversion = new JLabel("Imageversion:");
lblImageversion.setBounds(10, 381, 104, 14);
panel.add(lblImageversion);
labelimageversion = new JLabel("");
labelimageversion.setBounds(10, 399, 218, 14);
panel.add(labelimageversion);
labeldesc = new JTextArea();
labeldesc.setFont(new Font("Tahoma", Font.PLAIN, 11));
labeldesc.setEditable(false);
labeldesc.setLineWrap(true);
labeldesc.setBackground(SystemColor.menu);
labeldesc.setBounds(124, 127, 104, 110);
JScrollPane scrollPane = new JScrollPane(labeldesc);
scrollPane.setBounds(10, 209, 218, 81);
panel.add(scrollPane);
// panel.add(labeldesc);
labelimage = new JTextArea();
labelimage.setLineWrap(true);
labelimage.setFont(new Font("Tahoma", Font.PLAIN, 11));
labelimage.setEditable(false);
labelimage.setBackground(SystemColor.menu);
labelimage.setBounds(124, 248, 101, 81);
JScrollPane scrollPaneImage = new JScrollPane(labelimage);
scrollPaneImage.setBounds(10, 309, 215, 69);
panel.add(scrollPaneImage);
labelName = new JTextArea();
labelName.setEditable(false);
labelName.setFont(new Font("Tahoma", Font.PLAIN, 11));
labelName.setBackground(SystemColor.menu);
labelName.setBounds(124, 22, 101, 55);
JScrollPane scrollPaneName = new JScrollPane(labelName);
scrollPaneName.setBounds(10, 40, 218, 55);
panel.add(scrollPaneName);
// panel.add(labelName);
// panel.add(labelimage);
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;
}
// Initiale Beffuelung eines Table models
public DefaultTableModel initTableModel(DefaultTableModel model)
throws ParseException {
List lectures;
try {
// Hole eine Liste der erlaubten Images für die diese Person
// lectures = client.getLectureList();
lectures = client
.getLectureListPermissionWrite(person.verantwortlicher
.getUserID());
Iterator i = lectures.iterator();
SimpleDateFormat in = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat out = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
int x = 0;
while (i.hasNext()) {
// erzeuge Objekte fuer die Tabelle
Object[] obj = {
lectures.get(x).lecturename,
lectures.get(x).desc,
out.format(in.parse(lectures.get(x).starttime)) + " "
+ out.format(in.parse(lectures.get(x).endtime)),
lectures.get(x).isActive,
out.format(in.parse(lectures.get(x).lastused)),
lectures.get(x).username, lectures.get(x).imagename,
" ", lectures.get(x).id };
// Fuege diese Objekte der Tabelle hinzu
model.addRow(obj);
x++;
i.next();
}
return model;
} catch (TException e1) {
e1.printStackTrace();
}
return model;
}
private void resetLectureInfo() {
// reset the detailed information on the right hand side when changing
// search string
labelName.setText("");
labelVerantwortlicher.setText("");
labelAktiv.setText("");
labeldesc.setText("");
labelenddate.setText("");
labelimage.setText("");
labelimageversion.setText("");
labelstartdate.setText("");
labelVerantwortlicher.setText("");
}
public void writeLectureData(String id) throws TException, ParseException {
SimpleDateFormat in = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat out = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
Map res = client.getLectureData(id);
labelName.setText(res.get("name"));
labelAktiv.setText(res.get("isActive"));
labeldesc.setText(res.get("desc"));
labelVerantwortlicher.setText(res.get("owner"));
labelstartdate.setText(out.format(in.parse(res.get("startTime"))));
labelenddate.setText(out.format(in.parse(res.get("endTime"))));
labelimage.setText(res.get("imagepath").substring(
res.get("imagepath").indexOf("/") + 1));
labelimageversion.setText(res.get("imageversion"));
}// end writeLectureData
public void setItemOwnerInformation(String lectureid) {
Map map = new HashMap();
try {
// get values from server and set them in model
map = client.getItemOwner(lectureid);
ItemOwner.itemOwner.setUserID(map.get("userID"));
ItemOwner.itemOwner.setUsername(map.get("loginName"));
ItemOwner.itemOwner.setNachname(map.get("Nachname"));
ItemOwner.itemOwner.setVorname(map.get("Vorname"));
ItemOwner.itemOwner.setEmail(map.get("mail"));
ItemOwner.itemOwner.setHochschule(map.get("institution"));
} catch (TException e) {
e.printStackTrace();
}
}// end setItemInformation
}// end class