package com.limegroup.gnutella.gui; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.IOException; import com.limegroup.gnutella.version.Version; import com.limegroup.gnutella.version.VersionFormatException; import com.limegroup.gnutella.util.Launcher; class Java14Notice extends JDialog { private static final String REQUIRED = "1.4.1"; private static final String CURRENT = System.getProperty("java.version"); private static final String URL = "http://www.limewire.com/whyupgradejava"; public static void showIfNecessary() { try { Version rq = new Version(REQUIRED); Version cr = new Version(CURRENT); if(cr.compareTo(rq) < 0) new Java14Notice().show(); } catch(VersionFormatException ignored) {} } private Java14Notice() { construct(); } private void construct() { setTitle("Upgrade Java"); setSize(new Dimension(100, 300)); setModal(true); JPanel mainPanel = new JPanel(); mainPanel.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.Y_AXIS)); MultiLineLabel label = new MultiLineLabel( "LimeWire requires Java " + REQUIRED + " or higher in order to run. " + "You are currently running an out-of-date version of Java. " + "Please visit " + URL + " in order to upgrade your version of Java.\n\n" + "Current Java Version : " + CURRENT + "\n" + "Required Java Version: " + REQUIRED + "\n\n", 400); JPanel labelPanel = new JPanel(); labelPanel.setLayout(new BoxLayout(labelPanel, BoxLayout.X_AXIS)); labelPanel.add(Box.createHorizontalGlue()); labelPanel.add(label); JPanel buttonPanel = new JPanel(); JButton now = new JButton("Upgrade Java"); now.setToolTipText("Visit " + URL); now.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { loadWindowsLibrary(); Launcher.openURL(URL); } catch(UnsatisfiedLinkError ule) { openURLFailed(); } catch(IOException iox) { openURLFailed(); } System.exit(1); } }); JButton later = new JButton("Upgrade Later"); later.setToolTipText("Visit " + URL + " Later"); later.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(1); } }); buttonPanel.add(now); buttonPanel.add(later); mainPanel.add(labelPanel); mainPanel.add(buttonPanel); getContentPane().add(mainPanel); pack(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension dialogSize = getSize(); setLocation((screenSize.width - dialogSize.width)/2, (screenSize.height - dialogSize.height)/2); } private void loadWindowsLibrary() throws UnsatisfiedLinkError { String os = System.getProperty("os.name").toLowerCase(); if(os.indexOf("windows") != -1) System.loadLibrary("LimeWire20"); } private void openURLFailed() { JOptionPane.showMessageDialog(this, "To update, please direct your web-browser to " + URL + ".", "Unable to open browser", JOptionPane.ERROR_MESSAGE); } }