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

                  
                           
                               
 
                      
                           

                            





                                     

                                   
                     
 
                           




                             
                               
                          



                              


                                                   
                                       
 
                    
                    
                     


                                    
                                      
                               
                         
                      
                               
 








                                                         
                                     
                                       
                                                      
                                                            





                                             



                                                                                                                







                                                                     
                                                                                  
                                                            


                                               
                                                           
                                    
 






                                                                                               
                                         
                                                                
 
                                                         

                                             
                           

                                                 




                                                                
                         
                                                                                   
                                                                       
                                                         

                                                                                       
 
                                                             

                                                                           

                                                                                                                                
                                                                      
                                                        





                                                                    
 

                                                        

                                                                                      


                                                    
 

                                                        
                                                  
                                   
 
                                           

                                           
                                                   
                                                                      
                                       
                                                     
                                     
 

                                                           
                                                    
                                     
 
                                            

                                            
                                                    
                                                                    
                                        
                                                      
                                      
 

                                                             
                                                    
                                     
 
                                              

                                              
                                                      
                                                                            
                                          
                                                        
                                        
 

                                                         
                                                    
                                     
 
                                         

                                         
                                                 
                                                                  
                                     
                                                   
                                   
 

                                                                 
                                                        
                                          
 
                                             

                                                                                                                         


                                                              
                                                      
                                       
 



                                                                              
                                 
                                                                                                                                                                                                                        
                                                              
                                               



























                                                                                                                                                                                                       
 





                                                             
 


                                                                        
 
                                                              


                                                                   

                                                                                             
                                
                                                                              
                                                                         





                                                      
 


                                                  
 
                                                        


                                                     
 


                                                   
 



                                                                
                                                  




                                                                               
                                                                    
                                                                                   
                                                                                    

                                                                                                   
                                                                                             
                                                                                                 
                                                
                                                                                                   
                                                                    


                                                          

                                                                      
 

                         


                                                                                       


                                                                                                                                                      

                                                                                              
                                                                                                      






                                                                                                                          
 
                                                        
                                                                                                                 

                                                                            


                                                        
                                                            

                                         
 


                                                                         

                         
 


                                                        
 


                                                          
 

                                                  
 

                                                       
 
                                                         

                                                             
                                                                   
                                











                                                                          

                         
                                         
                
 
                                                           

                                                              
                                                                   
 












                                                                           

                         
                                          








                                                                    








                                                                                       
         

                                
                     



                                                                                            
                                                               
                                

                                                              
                                                             
                                                               
                                

                                                              





                                                                  
                                                                  

                                                                             
                                                                  
                                                             









                                                                                     
                                                         


                                                          
                                                           
                                                                                                 
                                                                   
                 




































                                                                                                                       
                                                               

























                                                                                                                                                     
package gui.image;

import gui.intro.About_GUI;
import gui.intro.MainMenue_GUI;

import java.awt.Color;
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.Links;
import models.person;

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 {

	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;

	/**
	 * Create the dialog.
	 */
	public EditImageAllgemein_GUI() {
		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) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		// Setzt den Fenstertitel
		setTitle("bwLehrpool Suite - Image bearbeiten");

		// Zentriert das Fenster in der Bildmitte
		setBounds(0, 0, 603, 722);
		GuiOrganizer.centerGUI(this);
		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.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.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.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.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 \"Programmieren 1\"");
		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();
				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, 71, 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();
						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
							System.out
									.println("Alle Eingaben in Ordnung. Imagename= \""
											+ Image.image.getImagename()
											+ "\", Imagebeschreibung=\""
											+ Image.image.getDesc()+"\"");

							
							EditImageTechnisch_GUI ea = new EditImageTechnisch_GUI();
							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) {
					// 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) {

				OpenLinks open = new OpenLinks();
				
				URI windows;
				try {
					windows = new URI(Links.getOTRS());
					
					open.openWebpage(windows);
					
				} catch (URISyntaxException e) {
					// TODO Auto-generated catch block
					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);
		// setFocusTraversalPolicy(new FocusTraversalOnArray(new
		// Component[]{getContentPane(), panel_2, lblNewLabel,
		// txtpnBitteWhlenSie, contentPanel, panel_1, label, Vorname, label_7,
		// Nachname, label_8, Hochschule, label_9, EMail, lblImagename,
		// imagename, txtrGebenSieBitte, panel, lblPflichtfelder, lblHauptmen,
		// label_1, lblVlimage, label_2, lblNewLabel_1, buttonPane, backButton,
		// okButton, separator, separator_1, menuBar, mnNewMenu_1, mntmFaq,
		// mntmOtrs}));

	}

	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);
			}
			System.out.println(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) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			JOptionPane.showMessageDialog(null,
					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]+")) {
			nameIsOK = true;
		} else {
			JOptionPane
					.showMessageDialog(
							null,
							"Der Imagename darf keine Leer- oder Sonderzeichen enthalten.",
							"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(
					null,
					"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(null,
					"Die Beschreibung darf max 254 Zeichen enthalten. Aktuell enthält sie "+textAreadesc.getText().length()+".",
					"Beschreibung zu umfangreich",
					JOptionPane.INFORMATION_MESSAGE);
		}else {
			descriptionLengthOK=true;
			
		}
		
		return descriptionLengthOK;
	}// enddescriptionLenghtOK()
	
}//end class