package gui.image;
import gui.intro.MainMenue_GUI;
import gui.lecture.ExtendedSearchForImages_GUI;
import java.awt.Color;
import java.awt.Desktop;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.HeadlessException;
import java.awt.SystemColor;
import java.awt.Toolkit;
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.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Iterator;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
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.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.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import models.Links;
import models.person;
import org.apache.thrift.TException;
import server.Server.Client;
import thrift.ThriftConnection;
import javax.swing.ListSelectionModel;
@SuppressWarnings("serial")
public class DeleteImage_GUI extends JFrame {
private final JPanel contentPanel = new JPanel();
String[] result;
JRadioButton rdbtnInternetJa;
JRadioButton rdbtnInternetNein;
JComboBox<String> comboBox;
JTable tableAllImages;
JTable tablemyImages;
private JTextField textFieldName;
JTabbedPane tabbedPane;
String[] titles = { "Image-Name", "Lizenzpflichtig", "OS", "Veranstaltung",
"Verantwortlicher", "Letztes Update", "Schlagwort", "ID", "Version" };
ThriftConnection con=new ThriftConnection();
Client client = models.Client.clientcon.getClient();
final DefaultTableModel modelAll = new DefaultTableModel(titles, 0);
final DefaultTableModel modelMyImages = new DefaultTableModel(titles, 0);
final TableRowSorter<TableModel> rowSorterAll = new TableRowSorter<TableModel>(
modelAll);
final TableRowSorter<TableModel> rowSorterMyImages = new TableRowSorter<TableModel>(
modelMyImages);
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
DeleteImage_GUI dialog = new DeleteImage_GUI();
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Create the dialog.
*/
public DeleteImage_GUI() {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent arg0) {
// Beendet die Anwendung nach klick auf X
con.closeThriftConnection();
System.exit(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) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Setzt den Fenstertitel
setTitle("bwLehrpool Suite *Prototyp* - Image l\u00F6schen");
// Zentriert das Fenster in die Bildmitte
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int top = (screenSize.height - 722) / 2;
int left = (screenSize.width - 603) / 2;
setBounds(left, top, 603, 722);
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(
"Zu l\u00F6schendes Image w\u00E4hlen");
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\u00E4hlen Sie bitte aus der unten stehenden Liste das zu l\u00F6schende Image aus.");
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, 131);
contentPanel.add(panel_1);
panel_1.setLayout(null);
JLabel lblNewLabel_2 = new JLabel("Anzeigename:");
lblNewLabel_2.setBounds(10, 30, 250, 20);
panel_1.add(lblNewLabel_2);
JLabel lblInternetIstInnerhalb = new JLabel("Betriebssystem:");
lblInternetIstInnerhalb.setBounds(10, 58, 250, 20);
panel_1.add(lblInternetIstInnerhalb);
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 != "") {
// Filtere nach der Eingabe
rowSorterAll.setRowFilter(RowFilter.regexFilter(
textFieldName.getText(), 0));
rowSorterMyImages.setRowFilter(RowFilter.regexFilter(
textFieldName.getText(), 0));
}
}
});
textFieldName.setBounds(270, 30, 250, 20);
panel_1.add(textFieldName);
textFieldName.setColumns(10);
JLabel lblErweiterteSuche = new JLabel(
"<html><u>Erweiterte Suche</u></html>");
lblErweiterteSuche.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
// oeffnet das Fenster Extended GUI
con.closeThriftConnection();
// Öffnet das Fenster Extended GUI
ExtendedSearchForImages_GUI es = new ExtendedSearchForImages_GUI();
es.setVisible(true);
}
});
lblErweiterteSuche.setForeground(Color.BLUE);
lblErweiterteSuche.setBounds(431, 106, 89, 14);
panel_1.add(lblErweiterteSuche);
comboBox = new JComboBox<String>();
try {
// Holt sich eine Liste aller verf\u00FCgbaren Betriebssysteme vom Server
List<String> list = client.getAllOS();
// Leeres Item hinzufuegen
comboBox.addItem("");
for (int i = 0; i < list.size(); i++) {
// Hinzufuegen der verfuegbaren Betriebssysteme
comboBox.addItem(list.get(i));
}
} catch (TException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
JOptionPane.showMessageDialog(null,
e2.getCause()+"\n"+e2.getMessage(),
"Debug-Message", JOptionPane.ERROR_MESSAGE);
}
// Registriert Auswahlaenderungen der Box
comboBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// Prueft das die Auswahl nicht leer ist
if (comboBox.getSelectedItem().toString() != "") {
// Filtert nach dem ausgewaehlten Betriebssystem
rowSorterAll.setRowFilter(RowFilter.regexFilter(comboBox
.getSelectedItem().toString(), 2));
rowSorterMyImages.setRowFilter(RowFilter.regexFilter(
comboBox.getSelectedItem().toString(), 2));
}
}
});
comboBox.setBounds(270, 58, 250, 20);
panel_1.add(comboBox);
JLabel lblHauptmen = new JLabel("Hauptmen\u00FC");
lblHauptmen.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
// oeffnet das Hauuetmenue
con.closeThriftConnection();
// Öffnet das Hauütmenü
DeleteImage_GUI.this.setVisible(false);
MainMenue_GUI main = new MainMenue_GUI();
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("VL-Image");
lblVlimage.setForeground(Color.BLUE);
lblVlimage.setBounds(81, 11, 45, 14);
contentPanel.add(lblVlimage);
JLabel label_2 = new JLabel(">");
label_2.setBounds(133, 11, 13, 14);
contentPanel.add(label_2);
JLabel lblNewLabel_1 = new JLabel("Imageauswahl");
lblNewLabel_1.setBounds(146, 11, 85, 14);
contentPanel.add(lblNewLabel_1);
tabbedPane = new JTabbedPane(JTabbedPane.TOP);
tabbedPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent arg0) {
System.out.println(tabbedPane.getSelectedIndex());
if (tabbedPane.getSelectedIndex() == 0) {
String username = person.verantwortlicher.getName() + " "
+ person.verantwortlicher.getVorname();
// String username="Spitzer Tobias";
rowSorterMyImages.setRowFilter(RowFilter.regexFilter(
username, 4));
} else if (tabbedPane.getSelectedIndex() == 1) {
}
}
});
tabbedPane.setBounds(10, 197, 557, 300);
contentPanel.add(tabbedPane);
initTableModel(modelMyImages);
JScrollPane scrollPaneAllImages = new JScrollPane();
tableAllImages = new JTable();
tableAllImages.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
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();
initTableModel(modelAll);
JScrollPane scrollPaneMyImage = new JScrollPane();
tablemyImages = new JTable();
tablemyImages.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
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);
tableAllImages.setRowSorter(rowSorterAll);
scrollPaneAllImages.setViewportView(tableAllImages);
tabbedPane.addTab("Alle", null, scrollPaneAllImages, null);
JScrollPane scrollPaneCoopImages = new JScrollPane();
JTable tableCoopImages = new JTable();
tableCoopImages.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
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("Kooperative Images", null, scrollPaneCoopImages,
null);
tabbedPane.setEnabledAt(2, false);
JScrollPane scrollPanePublicImages = new JScrollPane();
JTable tablePublicImages = new JTable();
tablePublicImages.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tablePublicImages.setModel(model);
tablePublicImages.getColumnModel().getColumn(1).sizeWidthToFit();
tablePublicImages.getColumnModel().getColumn(2).sizeWidthToFit();
tablePublicImages.getColumnModel().getColumn(3).sizeWidthToFit();
tablePublicImages.getColumnModel().getColumn(4).sizeWidthToFit();
tablePublicImages.getColumnModel().getColumn(5).sizeWidthToFit();
scrollPanePublicImages.setViewportView(tablePublicImages);
tabbedPane.addTab("\u00D6ffentliche Images", null,
scrollPanePublicImages, null);
tabbedPane.setEnabledAt(3, false);
JScrollPane scrollPanePublicVorlagen = new JScrollPane();
JTable tablePublicVorlagen = new JTable();
tablePublicVorlagen
.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tablePublicVorlagen.setModel(model);
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();
scrollPanePublicVorlagen.setViewportView(tablePublicVorlagen);
tabbedPane.addTab("\u00D6ffentliche Vorlagen", null,
scrollPanePublicVorlagen, null);
tabbedPane.setEnabledAt(4, false);
JButton btnDelete = new JButton("L\u00F6schen");
btnDelete.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String imageid="";
String imageversion="";
int eingabe;
if (tablemyImages.getSelectedRowCount() != 0) {
// frage, soll das selektierte Daten geloescht werden?
eingabe = JOptionPane.showConfirmDialog(null,
"Wollen Sie diese Daten l\u00f6schen?", "L\u00f6schen?",
JOptionPane.YES_NO_OPTION);
if (eingabe == JOptionPane.YES_OPTION) {
imageid = modelMyImages.getValueAt(
tablemyImages
.convertRowIndexToModel(tablemyImages
.getSelectedRow()), 7)
.toString();
imageversion = modelMyImages.getValueAt(
tablemyImages
.convertRowIndexToModel(tablemyImages
.getSelectedRow()), 8)
.toString();
// TODO
// Image darf nur geloescht werden, wenn keine
// Veranstaltung mehr auf das Image verweist.
// Unbdingt abfragen!
try {
if (!client.connectedToLecture(imageid,
imageversion)) {
System.out.println(imageid);
System.out.println(imageversion);
try {
client.deleteImageServer(imageid, imageversion);
if (client.deleteImageData(imageid,
imageversion)) {
// if (client.deleteImageServer(imageid
// ,imageversion)) {
DeleteImage_GUI di = new DeleteImage_GUI();
di.setVisible(true);
dispose();
/*
* } else {
*
* JOptionPane.showConfirmDialog(null,
* "Loeschen vom Server hat leider nicht geklappt!!"
* , imageversion,
* JOptionPane.OK_CANCEL_OPTION); }
*/
} else {
JOptionPane
.showConfirmDialog(
null,
"L\u00f6schen von der DB hat leider nicht geklappt!!",
"Fehler",
JOptionPane.INFORMATION_MESSAGE);
}
} catch (HeadlessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
JOptionPane.showMessageDialog(null,
e.getCause()+"\n"+e.getMessage(),
"Debug-Message", JOptionPane.ERROR_MESSAGE);
} catch (TException e) {
// TODO Auto-generated catch block
e.printStackTrace();
JOptionPane.showMessageDialog(null,
e.getCause()+"\n"+e.getMessage(),
"Debug-Message", JOptionPane.ERROR_MESSAGE);
}
} else {
JOptionPane.showMessageDialog(null,
"Image kann nicht gel\u00f6scht werden, da mindestens eine Veranstaltung mit diesem Image verlinkt ist.",
"Verlinkung vorhanden", JOptionPane.INFORMATION_MESSAGE);
}
} catch (TException e) {
// TODO Auto-generated catch block
e.printStackTrace();
JOptionPane.showMessageDialog(null,
e.getCause()+"\n"+e.getMessage(),
"Debug-Message", JOptionPane.ERROR_MESSAGE);
}
}
} else {
JOptionPane.showMessageDialog(null,
"Bitte w\u00e4hlen Sie ein eigenes Image aus",
"Message", JOptionPane.INFORMATION_MESSAGE);
}
}
});
btnDelete.setBounds(449, 508, 118, 23);
contentPanel.add(btnDelete);
{
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\u00FCck");
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// oeffnet das Hauptmen\u00FC
con.closeThriftConnection();
// Öffnet das Hauptmenü
MainMenue_GUI main = new MainMenue_GUI();
main.setVisible(true);
dispose();
}
});
okButton.setActionCommand("OK");
buttonPane.add(okButton);
getRootPane().setDefaultButton(okButton);
}
}
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);
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) {
String faq;
// Desktop desktop = Desktop.getDesktop();
faq = Links.getFAQ();
try {
// Runtime.getRuntime().exec( "rundll32 url.dll,FileProtocolHandler " + faq );
Desktop.getDesktop().browse(new URL(faq).toURI());
/*
if (os.indexOf( "win" ) >= 0) {
// this doesn't support showing urls in the form of "page.html#nameLink"
rt.exec( "rundll32 url.dll,FileProtocolHandler " + url);
} else if (os.indexOf( "mac" ) >= 0) {
rt.exec( "open " + url);
} else if (os.indexOf( "nix") >=0 || os.indexOf( "nux") >=0) {
// Do a best guess on unix until we get a platform independent way
// Build a list of browsers to try, in this order.
String[] browsers = {"epiphany", "firefox", "mozilla", "konqueror",
"netscape","opera","links","lynx"};
// Build a command string which looks like "browser1 "url" || browser2 "url" ||..."
StringBuffer cmd = new StringBuffer();
for (int i=0; i<browsers.length; i++)
cmd.append( (i==0 ? "" : " || " ) + browsers[i] +" \"" + url + "\" ");
rt.exec(new String[] { "sh", "-c", cmd.toString() });
*/
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} 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) {
String otrs;
otrs = Links.getOTRS();
try {
Runtime.getRuntime().exec( "rundll32 url.dll,FileProtocolHandler " + otrs );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
mnNewMenu_1.add(mntmOtrs);
}
// Initiale Beff\u00FClung eines Table models
public DefaultTableModel initTableModel(DefaultTableModel model) {
List<server.Image> images;
try {
// Hole eine Liste der Images
images = client.getImageList();
Iterator<server.Image> i = images.iterator();
int x = 0;
while (i.hasNext()) {
// erzeuge Objekte f\u00FCr die Tabelle
Object[] obj = { images.get(x).getImageName(),
images.get(x).getLicenseRestriction(),
images.get(x).getOsName(),
images.get(x).getLectureName(),
images.get(x).getUserData(),
images.get(x).getUpdateTime(), "", images.get(x).id,
images.get(x).getVersion() };
// System.out.println("id:"+images.get(x).getId());
// F\u00FCge diese Objekte der Tabelle hinzu
model.addRow(obj);
x++;
i.next();
}
return model;
} catch (TException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
JOptionPane.showMessageDialog(null,
e1.getCause()+"\n"+e1.getMessage(),
"Debug-Message", JOptionPane.ERROR_MESSAGE);
}
return model;
}
}