package tirateima.ui;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import javax.swing.JOptionPane;
import tirateima.main.Applet;
import tirateima.main.AppletEscondida;
/**
* Classe listener para o botao de ajuda
* @author Andrew Biller
*
*/
@SuppressWarnings("serial")
public class Ajuda extends Applet implements java.awt.event.ActionListener {
/**
* Abre a url de ajuda se estiver rodando via applet ou application
* @param e Evento
*/
public void actionPerformed(ActionEvent e) {
try{
Applet ap = Applet.getInstance();
AppletEscondida ape = AppletEscondida.getInstance();
if(ap != null || ape != null){
//Abre via url
System.out.println("Abrindo url no modo applet");
if(ap != null){
URL ajuda = new URL(ap.getDocumentBase(), "ajuda/ajuda.html");
ap.getAppletContext().showDocument(ajuda,"_blank");
}else{
URL ajuda = new URL(ape.getDocumentBase(), "ajuda/ajuda.html");
ape.getAppletContext().showDocument(ajuda,"_blank");
}
}else{
//Abre localmente a página html
System.out.println("Abrindo url no modo local");
showInBrowser("file://" + getCurrentDir() + "/ajuda/ajuda.html");
}
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "Não foi possível abrir a página de ajuda!",
"AlgoStep", JOptionPane.ERROR_MESSAGE);
System.err.println(ex);
}
}
/**
* Abre uma janela do browser com a url especificada.
* MAC e Win abre com o Browser padrao, no Linux ele tenta pelos browsers mais conhecidos.
* @param url
* @return False caso não seja possível abrir a url em algum browser
*/
private static boolean showInBrowser(String url){
String os = System.getProperty("os.name").toLowerCase();
Runtime rt = Runtime.getRuntime();
try{
if (os.indexOf( "win" ) >= 0) {
// this doesn't support showing urls in the form of "page.html#nameLink"
rt.exec( "rundll32 url.dll,FileProtocolHandler " + url);
} else if (os.indexOf( "mac" ) >= 0) {
rt.exec( "open " + url);
} else if (os.indexOf( "nix") >=0 || os.indexOf( "nux") >=0) {
// Do a best guess on unix until we get a platform independent way
// Build a list of browsers to try, in this order.
String[] browsers = {"epiphany", "firefox", "mozilla", "konqueror",
"netscape","opera","links","lynx"};
// Build a command string which looks like "browser1 "url" || browser2 "url" ||..."
StringBuffer cmd = new StringBuffer();
for (int i=0; i<browsers.length; i++)
cmd.append( (i==0 ? "" : " || " ) + browsers[i] +" \"" + url + "\" ");
rt.exec(new String[] { "sh", "-c", cmd.toString() });
} else {
return false;
}
}catch (IOException e){
return false;
}
return true;
}
/**
* Recupera o diretório do tirateima
* @return Uma String com diretório físico do tirateima.
*/
private String getCurrentDir() {
File dir1 = new File (".");
File dir2 = new File ("..");
String dir = null;
try {
System.out.println ("Current dir : " + dir1.getCanonicalPath());
System.out.println ("Parent dir : " + dir2.getCanonicalPath());
dir = dir1.getCanonicalPath();
}
catch(Exception e) {
e.printStackTrace();
}
return dir;
}
}