Update of /cvsroot/bprocessor/gui/src/net/sourceforge/bprocessor/gui/actions
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv30754/src/net/sourceforge/bprocessor/gui/actions
Added Files:
AboutActionListener.java
Log Message:
enabled the about button and made a actionlistener for it... made a somewhat boring about splash, should be improved, but contains a link that can be clicked.
--- NEW FILE: AboutActionListener.java ---
//---------------------------------------------------------------------------------
// $Id: AboutActionListener.java,v 1.1 2006/11/28 20:51:57 rimestad Exp $
//
// Copyright (c) 2005 The BProcessor Team (http://bprocessor.sourceforge.net)
// Released under the Lesser GNU Public License v2.1
//---------------------------------------------------------------------------------
package net.sourceforge.bprocessor.gui.actions;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.lang.reflect.Method;
import java.net.URL;
import javax.swing.Box;
import javax.swing.ImageIcon;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.HTMLFrameHyperlinkEvent;
import org.apache.log4j.Logger;
/**
* The FileCloseActionListener
*/
public class AboutActionListener implements ActionListener {
/** The logger */
private static Logger log = Logger.getLogger(AboutActionListener.class);
/**
* Constructs the FileCloseActionListner
*/
public AboutActionListener() {
super();
}
/**
* Clears the project
* @param event The event
*/
public void actionPerformed(ActionEvent event) {
JFrame frame = new JFrame("About");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
ClassLoader cl = Thread.currentThread().getContextClassLoader();
URL url = cl.getResource("splash3_24bit.png");
JLabel l = new JLabel(new ImageIcon(url));
Container c = frame.getContentPane();
c.setBackground(Color.WHITE);
c.add(l, BorderLayout.CENTER);
Box txt = Box.createVerticalBox();
txt.setBackground(Color.WHITE);
try {
BufferedReader br = new BufferedReader(new FileReader(".version.file"));
String s = "Version: " + br.readLine();
Box version = Box.createHorizontalBox();
JLabel ver = new JLabel(s);
ver.setForeground(Color.GRAY);
version.add(Box.createHorizontalStrut(10));
version.add(ver);
version.add(Box.createHorizontalGlue());
txt.add(version);
} catch (Exception e) {
log.error(e.getMessage());
}
String rest = "<html>The B-processor is a open source project driven by " +
"Alexandra instituttet,<br>" +
"Aarhus School of Architecture and Technological Institute.<br><br>" +
"To read more about the project visit " +
"<a href=http://www.b-processor.dk>www.b-processor.dk</a></html>";
JEditorPane hmm = new JEditorPane();
hmm.setEditorKit(new HTMLEditorKit());
hmm.setText(rest);
hmm.setEditable(false);
hmm.addHyperlinkListener(new Hyperactive());
Box insert = Box.createHorizontalBox();
insert.add(Box.createHorizontalStrut(10));
insert.add(hmm);
insert.add(Box.createHorizontalGlue());
txt.add(insert);
c.add(txt, BorderLayout.SOUTH);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension labelSize = l.getPreferredSize();
frame.setLocation(screenSize.width / 2 - (labelSize.width / 2), screenSize.height
/ 2 - (labelSize.height / 2));
frame.pack();
frame.pack();
frame.setVisible(true);
}
/**
* Static method to open url in a system browser
* @param url the string url to open
*/
public static void openURL(String url) {
String osName = System.getProperty("os.name");
try {
if (osName.startsWith("Mac OS")) {
Class fileMgr = Class.forName("com.apple.eio.FileManager");
Method openURL = fileMgr.getDeclaredMethod("openURL", new Class[] {String.class});
openURL.invoke(null, new Object[] {url});
} else if (osName.startsWith("Windows")) {
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
} else { //assume Unix or Linux
String[] browsers = {"firefox", "opera", "konqueror", "epiphany", "mozilla", "netscape"};
String browser = null;
for (int count = 0; count < browsers.length && browser == null; count++) {
if (Runtime.getRuntime().exec(new String[]{"which", browsers[count]}).waitFor() == 0) {
browser = browsers[count];
}
}
if (browser == null) {
throw new Exception("Could not find web browser");
} else {
Runtime.getRuntime().exec(new String[] {browser, url});
}
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null,
"Error attempting to launch web browser" + ":\n" + e.getLocalizedMessage());
}
}
/**
* Listener for reacting on the hyperlink event
*/
class Hyperactive implements HyperlinkListener {
/**
* The method for the update event
* @param e the hyperlinkevent
*/
public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
if (e instanceof HTMLFrameHyperlinkEvent) {
HTMLFrameHyperlinkEvent evt = (HTMLFrameHyperlinkEvent)e;
AboutActionListener.openURL(evt.getURL().toString());
} else {
try {
AboutActionListener.openURL(e.getURL().toString());
} catch (Throwable t) {
t.printStackTrace();
}
}
}
}
}
}
|