package model.root;

import java.applet.Applet;
import java.awt.*;
import jv.object.*;
import jv.viewer.PvViewer;

/**
 * Class applet do modelo
 * @author		Tomé Matos
 */
@SuppressWarnings("serial")
public class AppletRaizSolo extends Applet {
	/** Frame para caso seja corrido em "standalone" */
	public		Frame				m_frame			= null;
	/** Janela que recebe o output 3D para visualização */
	protected	PvViewer			m_viewer;
	
	/** Interface do applet que mostra o autor e o nome. */
	public String getAppletInfo() {
		return "Name: "		+ this.getClass().getName()+ "\r\n" +
				 "Author: "		+ "Tomé Matos" + "\r\n" +
				 "Modelo de Raíz" + "\r\n";
	}

	/**
	 * Configura e inicializa o viewer.
	 */
	public void init() {
		// Cria o viewer para se verem as geometrias 3D
		m_viewer = new PvViewer(this, m_frame);		
		
		// Cria e faz load ao projecto
		RaizSolo test = new RaizSolo();
		m_viewer.addProject(test);
		m_viewer.selectProject(test);

			setLayout(new BorderLayout());
		add((Component)m_viewer.getDisplay(), BorderLayout.CENTER);
		m_viewer.getDisplay().setEnabledAntiAlias(false);
		m_viewer.getDisplay().setEnabledAnimation(false);
		m_viewer.getDisplay().showAxes(true);
		validate();
	}
	/**
	 * Suporte para ser corrido "standalone". É ignorado se o applet for corrido de uma pagina de internet
	 */
	public static void main(String args[]) {	
		AppletRaizSolo va	= new AppletRaizSolo();
		// Cria uma janela contendo a applet
		Frame frame	= new jv.object.PsMainFrame(va, args);
		frame.setBounds(new Rectangle(420, 5, 640, 550));
		frame.setVisible(true);
		va.m_frame = frame;
		va.init();
		va.start();
	}
	
	/** 
	 * Imprimir informação enquanto inicializa a applet e o viewer
	 *  */
	public void paint(Graphics g) {
		g.setColor(Color.blue);
		g.drawString("Geometry Browser, Version "+PsConfig.getVersion(), 20, 40);
		g.drawString("Loading Projects .....", 20, 60);
	}

	/**
	 * Faz o clean-up quando a applet é destruída pelo browser
	 */
	public void destroy()	{ m_viewer.destroy(); }

	/** Começa o viewer*/
	public void start()		{ m_viewer.start(); }

	/** Pára o viewer*/
	public void stop()		{ m_viewer.stop(); }
}
