[Bprocessor-commit] gui/src/net/sourceforge/bprocessor/gui/actions AboutActionListener.java, NONE,
Status: Pre-Alpha
Brought to you by:
henryml
|
From: rimestad <rim...@us...> - 2006-11-28 20:52:04
|
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(); } } } } } } |