/**
*
*/
package tirateima.main;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import tirateima.gui.arquivos.AbstractArquivo;
import tirateima.gui.editortexto.Linguagem;
/**
* Esta é uma classe temporária para testar applet com
* janela escondidas.
*
* @author Luciano
*/
@SuppressWarnings("serial")
public class AppletEscondida extends Applet {
private static AppletEscondida instance = null;
private JButton btnAbrir;
private Programa janela;
/**
* Normaliza uma URL.
*/
public URL normalizarURL(String url) throws MalformedURLException {
if (!url.toLowerCase().startsWith("http://"))
return new URL(getCodeBase() + url);
else
return new URL(url);
}
/**
* Retorna uma referencia do applet, caso tenha sido iniciado nesse modo
* @return
*/
public static AppletEscondida getInstance(){
return instance;
}
/**
* Retorna um Reader correspondente a uma URL (relativa ou absoluta).
*/
public Reader getArquivo(URL url) throws Exception {
return new InputStreamReader(url.openConnection().getInputStream());
}
@Override
public void init() {
try {
instance = this;
AbstractArquivo.url_base = normalizarURL("").toString();
//Pega a linguagem
Linguagem linguagem = null;
if(getParameter("arq_fonte").endsWith(".c") || getParameter("arq_fonte").endsWith(".C"))
linguagem = Linguagem.C;
else if(getParameter("arq_fonte").endsWith(".pas") || getParameter("arq_fonte").endsWith(".PAS"))
linguagem = Linguagem.PASCAL;
//Pega a url dos arquivos
URL url_fonte = normalizarURL(getParameter("arq_fonte"));
URL url_texto = normalizarURL(getParameter("arq_texto"));
/* Pega largura e altura da janela.
* Se não existirem, usa valores padrão.
*/
int largura, altura;
try{
String l_temp = getParameter("largura");
largura = l_temp != null ?
Integer.parseInt(l_temp) :
800;
String a_temp = getParameter("altura");
altura = l_temp != null ?
Integer.parseInt(a_temp) :
800;
}catch(NumberFormatException e){
largura = 800;
altura = 600;
}
janela = new Programa(getArquivo(url_fonte), getArquivo(url_texto),linguagem);
janela.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
janela.setSize(largura, altura);
setLayout(new BorderLayout());
add(getBtnAbrir(getParameter("nome")), BorderLayout.CENTER);
} catch(Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, e, "Tira-Teima",
JOptionPane.ERROR_MESSAGE);
}
}
private JButton getBtnAbrir(String nome){
if(nome == null) nome = "Teste";
if(btnAbrir == null){
btnAbrir = new JButton(nome);
btnAbrir.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
janela.setVisible(true);
}
});
}
return btnAbrir;
}
}