import java.applet.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.geom.*;
import javax.swing.*;

/**
 * Applet d'affiche du CCD  obtenu suite a des 
 * valeurs données par l'utilisateur
 *
 * @author Delphine Dard (partie calcul par Philippe Rousselot), Aout 2001
 */
public class CCDApplet extends Applet{
    SelectionPanel selectionPanel;

    static String magnitudeMessage = "La magnitude doit être positive";
    static String seeingMessage = "Le seeing doit être entre 0.3\" et 3.0\"";
    static String diametreMessage = "Le diamètre doit être une valeur positive";
    static String focaleMessage = "La focale doit être une valeur positive";
    static String gainMessage = "Le gain doit être une valeur positive";
    static String integrationMessage = "L'intégration doit être une valeur positive";

    /** magnitude de l'objet (objet ponctuel) */
    public float magnitude;
    /** Valeur du seeing, en arcsecondes (entre 0.3 et 3.0) */
    public float seeing;
    /** Diametre du telescope, en metres */
    public float diametre;
    /** temps d'integration, en secondes */
    public float integration;
    /** Rapport focale/diametre (sans dimensions) */
    public float focale;
    /** gain du CCD (electrons/ADU) */
    public float gain;
    /** 
     * Nombre de jours ecoules par rapport a
     * la nouvelle Lune (= 0, 3, 7, 10, 14) 
     */
    public int jour;

    /** Affichage du resultat */
    public ResultatFrame resultatFrame;

    /**
     * Initialisation de l'applet
     */
    public void init() {
	super.init();
	setBackground(Color.white);
	setLayout(new BorderLayout());

	resultatFrame = new ResultatFrame();

	selectionPanel = new SelectionPanel(this);
	setDefaultValeur();
	add("Center", selectionPanel);
    }

    
    /**
     * redessine l'applet
     */
    public void paint(Graphics g){
	selectionPanel.repaint();
    }

    /**
     * Met les valeurs par defaut
     */
    public void setDefaultValeur(){
	selectionPanel.setValeur(21.0f,
				 0.5f,
				 2.0f,
				 300f,
				 20.0f,
				 8.0f,
				 14);
    }

    /**
     * obtient des nouvelles valeurs
     * @param magnitude la magnitude
     * @param seeing le seeing
     * @param integration le temps d'integration
     * @param focale la focale
     * @param gain le gain
     * @param jour le nombre de jours depuis la nouvelle lune 
     */
    public void newValeur(float magnitude, 
			  float seeing,
			  float diametre,
			  float integration,
			  float focale,
			  float gain,
			  int jour) {
	this.magnitude = magnitude;
	this.seeing = seeing;
	this.diametre = diametre;
	this.integration = integration;
	this.focale = focale;
	this.gain = gain;
	this.jour = jour;

	resultatFrame.newValeur(magnitude,
				seeing,
				diametre,
				integration,
				focale,
				gain,
				jour);
	resultatFrame.repaint();
	resultatFrame.show();
    }

    /**
     * Affichage d'un message
     * @param string le message
     */
    public void erreurMessage(String string){
	JOptionPane.showMessageDialog((Component)this, string);
    }

    /** 
     * utilisé lorsque l'applet est lancée en tant qu'application
     */
    public static void main(String args[]) {
	Frame frame = new Frame("Test en Application");
	CCDApplet ccdApplet = new CCDApplet();
	ccdApplet.init();
	ccdApplet.start();
	frame.add("Center",ccdApplet);
	frame.setSize(700,500);
	frame.show();
    }

}


