/*
 * Created on 6 juil. 2005
 */
package geonoteInterface;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
 * @author lefevre
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class FenetreParametresEditionImage extends JFrame {
	private JLabel typeLabel = new JLabel("Type géologique :"); 
	private JTextField typeText = new JTextField(45);
	private JButton mesureBouton = new JButton("Mesure ..."); 
	private JCheckBox cbReglet = new JCheckBox("Reglet"); 
	private JCheckBox cbZoom = new JCheckBox("Zoom"); 
	private JLabel niveauLabel = new JLabel("Niveau d'utilisation :"); 
	private JCheckBox jcbCollege = new JCheckBox("Collège"); 
	private JCheckBox jcbLycee = new JCheckBox("Lycée"); 
	private JCheckBox jcbUniv = new JCheckBox("Université"); 
	private JTextArea auteurText = new JTextArea();
	private JTextArea titreText = new JTextArea();
	private JTextArea commentText = new JTextArea();
	private JTextArea motsClésText = new JTextArea();
	private Interface diplomate = null;
	private boolean mesureEffectuee = false;
	
	public FenetreParametresEditionImage(Interface i) {
		super("Paramètres de la donnée"); 
		diplomate = i;
		setLayout(new BorderLayout());
		setSize(487,350);
		setLocationRelativeTo(null);	//centrage de la fenetre
//		setResizable(false);
		
		Box hBox1 = Box.createHorizontalBox();
		hBox1.add(Box.createHorizontalStrut(5));
		hBox1.add(typeLabel);
		hBox1.add(Box.createHorizontalStrut(5));
		typeText.setMaximumSize(typeText.getPreferredSize());
		hBox1.add(typeText);
		hBox1.add(Box.createGlue());
		hBox1.add(Box.createHorizontalStrut(5));
		
		Box hBox2 = Box.createHorizontalBox();
		hBox2.add(Box.createHorizontalStrut(5));
		hBox2.add(new JLabel("Fonctionnalités :")); 
		hBox2.add(Box.createHorizontalStrut(5));
		hBox2.add(cbReglet);
		cbReglet.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				mesureBouton.setEnabled(cbReglet.isSelected());
			}
		});
		hBox2.add(Box.createHorizontalStrut(5));
		mesureBouton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				setExtendedState(JFrame.ICONIFIED);
			}
		});
		mesureBouton.setEnabled(cbReglet.isSelected());
		hBox2.add(mesureBouton);
		hBox2.add(Box.createHorizontalStrut(5));
		hBox2.add(cbZoom);
		hBox2.add(Box.createGlue());
		hBox2.add(Box.createHorizontalStrut(5));
		
		Box hBox3 = Box.createHorizontalBox();
		hBox3.add(Box.createHorizontalStrut(5));
		hBox3.add(niveauLabel);
		hBox3.add(Box.createHorizontalStrut(5));
		hBox3.add(jcbCollege);
		hBox3.add(Box.createHorizontalStrut(5));
		hBox3.add(jcbLycee);
		hBox3.add(Box.createHorizontalStrut(5));
		hBox3.add(jcbUniv);
		hBox3.add(Box.createGlue());
		hBox3.add(Box.createHorizontalStrut(5));
		
		Box hBox4 = Box.createHorizontalBox();
		hBox4.add(Box.createHorizontalStrut(5));
		hBox4.add(new JLabel("Auteur et source :")); 
		hBox4.add(Box.createGlue());
		hBox4.add(Box.createHorizontalStrut(5));
		
		Box hBox5 = Box.createHorizontalBox();
		hBox5.add(Box.createHorizontalStrut(5));
		auteurText.setBorder(BorderFactory.createLoweredBevelBorder());
		hBox5.add(auteurText);
		hBox5.add(Box.createGlue());
		hBox5.add(Box.createHorizontalStrut(5));
		
		Box hBox6 = Box.createHorizontalBox();
		hBox6.add(Box.createHorizontalStrut(5));
		hBox6.add(new JLabel("Titre :")); 
		hBox6.add(Box.createGlue());
		hBox6.add(Box.createHorizontalStrut(5));
		
		Box hBox7 = Box.createHorizontalBox();
		hBox7.add(Box.createHorizontalStrut(5));
		titreText.setBorder(BorderFactory.createLoweredBevelBorder());
		hBox7.add(titreText);
		hBox7.add(Box.createGlue());
		hBox7.add(Box.createHorizontalStrut(5));
		
		Box hBox8 = Box.createHorizontalBox();
		hBox8.add(Box.createHorizontalStrut(5));
		hBox8.add(new JLabel("Commentaire :")); 
		hBox8.add(Box.createGlue());
		hBox8.add(Box.createHorizontalStrut(5));
		
		Box hBox9 = Box.createHorizontalBox();
		hBox9.add(Box.createHorizontalStrut(5));
		commentText.setBorder(BorderFactory.createLoweredBevelBorder());
		hBox9.add(commentText);
		hBox9.add(Box.createGlue());
		hBox9.add(Box.createHorizontalStrut(5));
		
		Box hBox10 = Box.createHorizontalBox();
		hBox10.add(Box.createHorizontalStrut(5));
		hBox10.add(new JLabel("Mots clés (nécessaires pour la recherche, séparés par un espace) :")); 
		hBox10.add(Box.createGlue());
		hBox10.add(Box.createHorizontalStrut(5));
		
		Box hBox11 = Box.createHorizontalBox();
		hBox11.add(Box.createHorizontalStrut(5));
		motsClésText.setBorder(BorderFactory.createLoweredBevelBorder());
		hBox11.add(motsClésText);
		hBox11.add(Box.createGlue());
		hBox11.add(Box.createHorizontalStrut(5));
		
		Box vboxH = Box.createVerticalBox();
		vboxH.add(hBox1);
		vboxH.add(Box.createVerticalStrut(5));
		vboxH.add(hBox2);
		vboxH.add(Box.createVerticalStrut(5));
		vboxH.add(hBox3);
		vboxH.add(Box.createVerticalStrut(5));
		vboxH.add(hBox6);
		vboxH.add(Box.createVerticalStrut(5));
		vboxH.add(hBox7);
		vboxH.add(Box.createVerticalStrut(5));
		vboxH.add(hBox4);
		vboxH.add(Box.createVerticalStrut(5));
		vboxH.add(hBox5);
		vboxH.add(Box.createVerticalStrut(5));
		vboxH.add(hBox8);
		vboxH.add(Box.createVerticalStrut(5));
		vboxH.add(hBox9);
		vboxH.add(Box.createVerticalStrut(5));
		vboxH.add(hBox10);
		vboxH.add(Box.createVerticalStrut(5));
		vboxH.add(hBox11);
		vboxH.setBorder(BorderFactory.createTitledBorder("")); 
		
		Box hBoxF = Box.createHorizontalBox();
		hBoxF.add(Box.createGlue());
		JButton okBouton = new JButton("OK"); 
		okBouton.grabFocus();
		okBouton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				boolean ok = verification();
				if (ok) {
					setVisible(false);
					String niveau = ""; 
					if (jcbCollege.isSelected()) niveau = niveau+" college"; 
					if (jcbLycee.isSelected()) niveau = niveau+" lycee"; 
					if (jcbUniv.isSelected()) niveau = niveau+" universite"; 
					diplomate.enregParamDonneeEditee(typeText.getText(), cbReglet.isSelected(), cbZoom.isSelected(), niveau, auteurText.getText(), titreText.getText(), commentText.getText(), motsClésText.getText());
					diplomate.activerEnregEdition();
				}
			}
		});
		hBoxF.add(okBouton);
		hBoxF.add(Box.createHorizontalStrut(5));
		JButton quitterBouton = new JButton("Quitter"); 
		quitterBouton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
//				if (typeText.getText().length()>0) {
//				    //obligation d'enregistrer au moins le nom et le fichier de la donnee pour la premiere fois
//				    String niveau = "";
//					if (jcbCollege.isSelected()) niveau = niveau+" college";
//					if (jcbLycee.isSelected()) niveau = niveau+" lycee";
//					if (jcbUniv.isSelected()) niveau = niveau+" universite";
//					diplomate.enregParamDonneeEditee(typeText.getText(), cbReglet.isSelected(), cbZoom.isSelected(), niveau, commentText.getText(), motsClésText.getText());
//				    setVisible(false);
			    dispose();
//				} else typeLabel.setForeground(Color.red);
			}
		});
		hBoxF.add(quitterBouton);
		hBoxF.add(Box.createHorizontalStrut(5));
		
		Box vBox = Box.createVerticalBox();
		vBox.add(Box.createVerticalStrut(5));
		vBox.add(vboxH);
		vBox.add(Box.createGlue());
		vBox.add(Box.createVerticalStrut(5));
		vBox.add(hBoxF);
		vBox.add(Box.createVerticalStrut(5));
		
		add(vBox,BorderLayout.CENTER);
		setVisible(true);
	}
	
	public void chargerParam(String typeGeol, boolean reglet, boolean zoom, String niveau, String auteur, String titre, String commentaire, String motscles) {
		typeText.setText(typeGeol);
		cbReglet.setSelected(reglet);
		cbZoom.setSelected(zoom);
		jcbCollege.setSelected(niveau.contains("college")); 
		jcbLycee.setSelected(niveau.contains("lycee")); 
		jcbUniv.setSelected(niveau.contains("universite")); 
		auteurText.setText(auteur);
		titreText.setText(titre);
		commentText.setText(commentaire);
		motsClésText.setText(motscles);
		mesureEffectuee = true;
	}
	
	private boolean verification() {
		boolean etat = true;
		if ((typeText.getText() == null) || typeText.getText().equals("")) { 
			etat = false;
			typeLabel.setForeground(Color.red);
		} else {
			typeLabel.setForeground(Color.black);
		}
		if (!jcbCollege.isSelected() && !jcbLycee.isSelected() && !jcbUniv.isSelected()) {
			etat = false;
			niveauLabel.setForeground(Color.red);
		} else {
			niveauLabel.setForeground(Color.black);
		}
		if (cbReglet.isSelected() && !mesureEffectuee) {
			etat = false;
			mesureBouton.setForeground(Color.red);
		} else {
			mesureBouton.setForeground(Color.black);
		}
		return etat;
	}
	
	public void setMesureEffectuee(boolean mesureEffectuee) {
		this.mesureEffectuee = mesureEffectuee;
	}
}
