package net.sf.sahi.ui;
import java.awt.Cursor;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import net.sf.sahi.util.Utils;
public class LinkButton extends JLabel {
private static final long serialVersionUID = 8273875024682878518L;
public LinkButton(final String text) {
this(text, null);
}
public LinkButton(final String text, final String uri) {
super();
setText(text);
if (uri != null) setToolTipText(uri.toString());
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
open(uri);
}
public void mouseEntered(MouseEvent e) {
setCursor(new Cursor(Cursor.HAND_CURSOR));
setText(text, true);
}
public void mouseExited(MouseEvent e) {
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
setText(text, false);
}
});
}
@Override
public void setText(String text) {
setText(text, false);
}
public void setText(String text, boolean highlight) {
text = "<u>" + text + "</u>";
super.setText("<html><span style=\"color: " + (highlight ? "#FF0000" : "#000099;") + "\">" + text + "</span></html>");
}
protected void open(String url) {
String osName = System.getProperty("os.name");
String cmd = null;
if (osName.startsWith("Mac OS")) {
cmd = "open ";
} else if (osName.startsWith("Windows")) {
cmd = "cmd.exe /C start ";
} else {
cmd = "xdg-open ";
}
cmd += url.toString();
try {
Utils.executeAndGetProcess(Utils.getCommandTokens(cmd));
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null,
"Please navigate to http://localost:9999/_s_/ControllerUI to configure browsers for Sahi",
"Cannot Launch Link", JOptionPane.WARNING_MESSAGE);
}
}
}