summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/gui/image/EditImageAllgemein_GUI.java
blob: 89548a9bcf63558fc1bc5248c310cb17ded8ff5d (plain) (tree)
1
2
3
4
5
6
7
8
9

                  
                           
                           
                               
 
                      
                          
                           

                            





                                     

                                   
                     
 
                           




                             
                               
                          



                              


                                                   
                                       
 
                    
                        
                    
                     
 
                               

                                    
                                      
                               
                         
                      
 
                               
 


                                                    




                                                                                            





                                                         
                                     
                                       
                                                      
                                                            





                                             



                                                                                                                
                           




                                                                                                                                 



                             
                                                            


                                                                     
                                                                                  
                                                            


                                               
                                                           
                                    
 



                                                                                               

                                            
                                         
                                                                
 
                                                         
                                          
                                                 
                           

                                                 




                                                                
                         
                                                                                   
                                                                       
                                                         

                                                                                       
 
                                                             

                                                                           

                                                                                                                                
                                                                      
                                                        





                                                                    
 

                                                        

                                                                                      


                                                    
 

                                                        
                                                  
                                   
 
                                           

                                           
                                                   

                                                                        
                                       
                                                     
                                     
 

                                                           
                                                    
                                     
 
                                            

                                            
                                                    

                                                                      
                                        
                                                      
                                      
 

                                                             
                                                    
                                     
 
                                              

                                              
                                                      

                                                                              
                                          
                                                        
                                        
 

                                                         
                                                    
                                     
 
                                         

                                         
                                                 

                                                                    
                                     
                                                   
                                   
 

                                                                 
                                                        
                                          
 
                                             

                                                                                                                         


                                                              
                                                      
                                       
 



                                                                              
                                 
                                                                                                                                                                                                                                   
                                                              
                                               



























                                                                                                                                                                                                       
 





                                                             
 


                                                                        
 
                                                              


                                                                   

                                                                                             
                                
                                                                              
                                                                          





                                                      
 


                                                  
 
                                                        


                                                     
 


                                                   
 
                                                                
                                                          

                                                
                                                  




                                                                               
                                                                    
                                                                                   
                                                                                    

                                                                                                   
                                                                                             
                                                                                                 
                                                
                                                                                                    
                                                                    


                                                          

                                                                      
 

                         


                                                                                       


                                                                                                                                                      

                                                                                              
                                                                                                      

                                                                                                    





                                                                                                                      
 
                                                        
                                                                                                                  

                                                                            


                                                        
                                                            

                                         
 


                                                                         

                         
 


                                                        
 


                                                          
 

                                                  
 

                                                       
 
                                                         

                                                             
                                                                   
                                




                                                                          
                                                                  
                                                                

                                                            

                         
                                         
                
 
                                                           

                                                              
                                                                   
 




                                                                           
                                                                  
                                                                


                                                            

                         
                                          








                                                                    
 



                                                                    
                                                                                                                                               


                                            
                         
         

                                
                     



                                                                                            
                                                               
                                

                                                              
                                                             
                                                               
                                

                                                              
                                                            




                                                                  
                                                                  

                                                                             
                                                                  
                                                             









                                                                                     
                                                         
                                        
                                            
                                                        
                                                                                                 
                                                                   
                 





                                                                  
                                                                                      



                                                           
                                                          
                                                                                                                                              





















                                                                                         
                                          
                                                                                     
                                                               












                                                                                
                                             

                                                                                                                                                     
                                                                   








                                                 
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());
						
						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());
							Image.image.setDesc(textAreadesc.getText());
							// 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().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().isEmpty() == false
				&& textAreadesc.getText().isEmpty() == false
				&& Vorname.getText().isEmpty() == false
				&& Nachname.getText().isEmpty() == false
				&& Hochschule.getText().isEmpty() == false
				&& EMail.getText().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().length() >= MAX_DESCRIPTION_LENGTH) {
			descriptionLengthOK=false;
			JOptionPane
			.showMessageDialog(c,
					"Die Beschreibung darf max 254 Zeichen enthalten. Aktuell enthält sie "+textAreadesc.getText().length()+".",
					"Beschreibung zu umfangreich",
					JOptionPane.ERROR_MESSAGE);
		}else {
			descriptionLengthOK=true;
			
		}
		
		return descriptionLengthOK;
	}// enddescriptionLenghtOK()
	
}//end class