package gui.image;
import gui.intro.About_GUI;
import gui.intro.Login_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.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.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.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.Links;
import models.person;
import org.apache.log4j.Logger;
import org.apache.thrift.TException;
import server.generated.Server.Client;
import thrift.ThriftConnection;
import util.GuiOrganizer;
import util.OpenLinks;
import javax.swing.JScrollPane;
@SuppressWarnings("serial")
public class EditImageAllgemein_GUI extends JFrame {
/**
* Logger instance for this class.
*/
private final static Logger LOGGER = Logger.getLogger(EditImageAllgemein_GUI.class);
private final JPanel contentPanel = new JPanel();
String[] result;
private JTextField Vorname;
private JTextField Nachname;
private JTextField Hochschule;
private JTextField EMail;
private JTextField imagename;
private JTextArea textAreadesc;
ThriftConnection con = new ThriftConnection();
Client client = models.Client.clientcon.getClient();
private JPanel panel_2;
private JLabel lblNewLabel;
private JTextPane txtpnBitteWhlenSie;
private JPanel buttonPane;
private JButton backButton;
private JButton okButton;
private boolean textfieldsHaveContent = false; //no textfield is empty
private boolean nameIsOK = false; //imagename only contains letters
private boolean descriptionLengthOK = false; //description may not be longer than MAX_DESCRIPTION_LENGTH
private final int MAX_DESCRIPTION_LENGTH = 254;
Component c = null;
private static final String HELP_MESSAGE = "<html><div align = \"center\">" +
"Bearbeiten Sie hier die allgemeinen Angaben, die Sie beim Erzeugen des Images hinterlegt haben.<br />" +
"Sie können sowohl den Anzeigenamen als auch die Beschreibung ändern.<br />" +
"Änderungen der Informationen zum Besitzer sind nicht zulässig." +
"</div></html>";
/**
* Create the dialog.
*/
public EditImageAllgemein_GUI(Component formerGUI) {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent arg0) {
// Beendet die Anwendung bei einem Klick auf das X
con.closeThriftConnection();
System.exit(0);
}
});
// Verhindert das vergroessern des Fensters
setResizable(false);
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException
| IllegalAccessException | UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
// Setzt den Fenstertitel
setTitle("bwLehrpool Suite - Image bearbeiten");
// Zentriert das Fenster in der Bildmitte
setBounds(0, 0, 603, 722);
setLocationRelativeTo(formerGUI);
initData();
getContentPane().setLayout(null);
{
panel_2 = new JPanel();
panel_2.setBackground(SystemColor.menu);
panel_2.setBounds(10, 11, 577, 57);
getContentPane().add(panel_2);
panel_2.setLayout(null);
{
lblNewLabel = new JLabel("Bearbeiten Ihrer Daten");
lblNewLabel.setBounds(10, 11, 509, 22);
panel_2.add(lblNewLabel);
lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 18));
}
txtpnBitteWhlenSie = new JTextPane();
txtpnBitteWhlenSie.setEditable(false);
txtpnBitteWhlenSie.setBackground(SystemColor.menu);
txtpnBitteWhlenSie
.setText("Geben Sie hier bitte einen sprechenden Imagename sowie Ihre Kontaktdaten an");
txtpnBitteWhlenSie.setBounds(10, 36, 509, 32);
panel_2.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, 66, 557, 369);
contentPanel.add(panel_1);
panel_1.setLayout(null);
JLabel label = new JLabel("Vorname: *");
label.setBackground(SystemColor.menu);
label.setBounds(10, 245, 125, 20);
panel_1.add(label);
Vorname = new JTextField();
Vorname.setEditable(false);
Vorname.setEnabled(false);
Vorname.setBackground(Color.WHITE);
//Vorname.setText(person.verantwortlicher.getVorname());
Vorname.setText(ItemOwner.itemOwner.getVorname());
Vorname.setColumns(10);
Vorname.setBounds(145, 245, 350, 20);
panel_1.add(Vorname);
JLabel label_7 = new JLabel("Nachname: *");
label_7.setBackground(SystemColor.menu);
label_7.setBounds(10, 276, 125, 20);
panel_1.add(label_7);
Nachname = new JTextField();
Nachname.setEnabled(false);
Nachname.setEditable(false);
Nachname.setBackground(Color.WHITE);
//Nachname.setText(person.verantwortlicher.getName());
Nachname.setText(ItemOwner.itemOwner.getNachname());
Nachname.setColumns(10);
Nachname.setBounds(145, 276, 350, 20);
panel_1.add(Nachname);
JLabel label_8 = new JLabel("Hochschule: *");
label_8.setBackground(SystemColor.menu);
label_8.setBounds(10, 307, 125, 20);
panel_1.add(label_8);
Hochschule = new JTextField();
Hochschule.setEnabled(false);
Hochschule.setEditable(false);
Hochschule.setBackground(Color.WHITE);
//Hochschule.setText(person.verantwortlicher.getHochschule());
Hochschule.setText(ItemOwner.itemOwner.getHochschule());
Hochschule.setColumns(10);
Hochschule.setBounds(145, 307, 350, 20);
panel_1.add(Hochschule);
JLabel label_9 = new JLabel("E-Mail: *");
label_9.setBackground(SystemColor.menu);
label_9.setBounds(10, 338, 125, 20);
panel_1.add(label_9);
EMail = new JTextField();
EMail.setEnabled(false);
EMail.setEditable(false);
EMail.setBackground(Color.WHITE);
//EMail.setText(person.verantwortlicher.getEMail());
EMail.setText(ItemOwner.itemOwner.getEmail());
EMail.setColumns(10);
EMail.setBounds(145, 338, 350, 20);
panel_1.add(EMail);
JLabel lblImagename = new JLabel("Imagename: *");
lblImagename.setBackground(SystemColor.menu);
lblImagename.setBounds(10, 23, 125, 20);
panel_1.add(lblImagename);
imagename = new JTextField();
imagename
.setToolTipText("Bitte geben Sie hier den Namen des Image ein, z.B. \"Programmieren\".");
imagename.setBackground(Color.WHITE);
imagename.setText(Image.image.getImagename());
imagename.setColumns(10);
imagename.setBounds(145, 23, 350, 20);
panel_1.add(imagename);
JTextArea txtrGebenSieBitte = new JTextArea();
txtrGebenSieBitte.setBackground(SystemColor.menu);
txtrGebenSieBitte.setLineWrap(true);
txtrGebenSieBitte.setFont(new Font("Tahoma", Font.PLAIN, 12));
txtrGebenSieBitte
.setText("Geben Sie bitte einen sprechenden Namen für das Image an.\r\nDieser soll jedoch recht allgemein gehalten werden.\r\nBeispiel: \"Programmieren\", nicht \"Java Wintersemester bei...\"");
txtrGebenSieBitte.setBounds(145, 48, 350, 55);
panel_1.add(txtrGebenSieBitte);
JLabel lblBeschreibung = new JLabel("Beschreibung: *");
lblBeschreibung.setBackground(SystemColor.menu);
lblBeschreibung.setBounds(10, 110, 125, 20);
panel_1.add(lblBeschreibung);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(145, 110, 350, 60);
panel_1.add(scrollPane);
textAreadesc = new JTextArea();
textAreadesc.setFont(new Font("Tahoma", Font.PLAIN, 11));
textAreadesc.setLineWrap(true);
textAreadesc.setText((String) null);
textAreadesc.setText(Image.image.getDesc());// null am Anfang, aber
// speichert die Eingabe,
// wenn man zurueck kommt
// zur Seite
scrollPane.setViewportView(textAreadesc);
JTextArea textArea = new JTextArea();
textArea.setText("Geben Sie bitte eine Beschreibung für das Image an.\r\nDiese soll jedoch recht spezifisch gehalten werden.\r\nBeispiel: \"Java-Enticklung mit eclipse und MySQL\"");
textArea.setLineWrap(true);
textArea.setFont(new Font("Tahoma", Font.PLAIN, 12));
textArea.setEditable(false);
textArea.setBackground(SystemColor.menu);
textArea.setBounds(145, 177, 350, 49);
panel_1.add(textArea);
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 lblPflichtfelder = new JLabel("* Pflichtfelder");
lblPflichtfelder.setBounds(10, 442, 136, 14);
contentPanel.add(lblPflichtfelder);
JLabel lblHauptmen = new JLabel("Hauptmenü");
lblHauptmen.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
// Durch den Klick auf Button Hauptmenpue wird dieses Fenster
// unsichtbar und das Hauptmenue sichtbar
EditImageAllgemein_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("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("Bearbeiten");
lblNewLabel_1.setBounds(146, 11, 155, 14);
contentPanel.add(lblNewLabel_1);
{
buttonPane = new JPanel();
buttonPane.setBounds(0, 640, 597, 33);
buttonPane.setBackground(SystemColor.menu);
buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
getContentPane().add(buttonPane);
{
backButton = new JButton("Zurück");
backButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// Setzen der Eingabe im Model, dadurch bleiben die
// Daten bei einem erneuten Aufruf verfuegbar
// Image.image.setImagename(imagename.getText().trim());
SearchEditImage_GUI se = new SearchEditImage_GUI(c);
se.setVisible(true);
dispose();
}
});
backButton.setActionCommand("CANCEL");
buttonPane.add(backButton);
}
{
okButton = new JButton("Weiter");
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
// Prueft die Eingabe und leitet weiter zur naechsten
// Seite
if (checkContent() == true && checkNameIsLettersOrNumbers() == true && descriptionLenghtOK()== true) {
// setze Namen, egal ob alt oder nicht
Image.image.setImagename(imagename.getText().trim());
Image.image.setDesc(textAreadesc.getText().trim());
// Info
//LOGGER.info("Alle Eingaben in Ordnung. Imagename= \""
// + Image.image.getImagename()
// + ", NewImageName=\""
// + Image.image.getNewName()
// + "\", Imagebeschreibung=\""
// + Image.image.getDesc()+"\"");
EditImageTechnisch_GUI ea = new EditImageTechnisch_GUI(c);
ea.setVisible(true);
dispose();
} else {
}// end else
}
});
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) {
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 menuItem = new JMenuItem("About");
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
About_GUI ab = new About_GUI();
ab.setVisible(true);
}
});
mnNewMenu_1.add(menuItem);
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;
}
public void initData() {
try {
Map<String, String> map = client.getImageData(
Image.image.getImageId(), Image.image.getVersion());
if (map.get("internet").equals("0")) {
Image.image.setInternet(false);
} else {
Image.image.setInternet(true);
}
if (map.get("license").equals("0")) {
Image.image.setLicensed(false);
} else {
Image.image.setLicensed(true);
}
//LOGGER.debug(map.get("template"));
if (map.get("template").equals("false")) {
Image.image.setVorlage(false);
} else {
Image.image.setVorlage(true);
}
Image.image.setImagename(map.get("name"));
Image.image.setRam(Integer.parseInt(map.get("ram")));
Image.image.setCpu(Integer.parseInt(map.get("cpu")));
Image.image.setImagepath(map.get("path"));
Image.image.setDesc(map.get("desc"));
Image.image.setFilesize(Long.parseLong(map.get("filesize")));
int mode=0;
if(map.get("shareMode").equals("only_local")){
mode=0;
}
else
{
mode=1;
}
Image.image.setShareMode(mode);
Image.image.setOS(map.get("os"));
} catch (TException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(c,
e.getCause() + "\n" + e.getStackTrace(), "Debug-Message",
JOptionPane.ERROR_MESSAGE);
}
}//end initData()
public boolean checkNameIsLettersOrNumbers() {
nameIsOK = false;
//only allow letter from alphabet and nothing else
if (imagename.getText().trim().matches("[a-zA-Z0-9\\x2B\\x2D\\x3A\\x5F]+")) {
nameIsOK = true;
} else {
JOptionPane
.showMessageDialog(
c,
"Der Imagename darf nur aus Buchstaben, Zahlen und den Zeichen + - _ : bestehen.",
"Unerlaubte Zeichen",
JOptionPane.INFORMATION_MESSAGE);
}// if
return nameIsOK;
}// end nameIsOK
public boolean checkContent(){
textfieldsHaveContent=false;
//check if any textfield is empty
if(imagename.getText().trim().isEmpty() == false
&& textAreadesc.getText().trim().isEmpty() == false
&& Vorname.getText().trim().isEmpty() == false
&& Nachname.getText().trim().isEmpty() == false
&& Hochschule.getText().trim().isEmpty() == false
&& EMail.getText().trim().isEmpty() == false) {
//all textfields have content
textfieldsHaveContent = true;
} else {
JOptionPane
.showMessageDialog(
c,
"Bitte geben Sie alle notwendigen Daten an!",
"Daten unvollständig",
JOptionPane.INFORMATION_MESSAGE);
}//end if
return textfieldsHaveContent;
}//end checkContent
public boolean descriptionLenghtOK(){
descriptionLengthOK=false;
//max length is 254 chars
if (textAreadesc.getText().trim().length() >= MAX_DESCRIPTION_LENGTH) {
descriptionLengthOK=false;
JOptionPane
.showMessageDialog(c,
"Die Beschreibung darf max 254 Zeichen enthalten. Aktuell enthält sie "+textAreadesc.getText().trim().length()+".",
"Beschreibung zu umfangreich",
JOptionPane.ERROR_MESSAGE);
}else {
descriptionLengthOK=true;
}
return descriptionLengthOK;
}// enddescriptionLenghtOK()
}//end class