/*
* Copyright (C) 2004 The Concord Consortium, Inc.,
* 10 Concord Crossing, Concord, MA 01742
*
* Web Site: http://www.concord.org
* Email: info@concord.org
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* END LICENSE */
package org.concord.swing.about;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
public class AboutBox extends JButton
implements ActionListener
{
Component parent;
JFrame frame;
String interactiveName;
String aboutFile;
static String TYPE = "text/html";
public AboutBox(String interactiveName)
{
this.interactiveName = interactiveName;
this.setText("About");
this.setToolTipText("About " + interactiveName);
this.setContentAreaFilled(false);
//this.setPreferredSize(new Dimension(80,24));
this.addActionListener(this);
SwingUtilities.invokeLater(new Runnable() {
public void run() {
setUpFrame();
}
});
}
private void setUpFrame() {
parent = this.getParent();
JButton close;
JTabbedPane content;
frame = new JFrame("About " + interactiveName);
frame.setSize(600,400);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation(d.width/2 - 225, d.height/2 - 200);
frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
if(parent != null)
frame.setLocation(parent.getLocation());
Container contentPane = frame.getContentPane();
contentPane.setLayout(new BorderLayout());
JPanel closePanel = new JPanel(new FlowLayout());
close = new JButton("Close");
closePanel.add(close);
close.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent e) {
frame.hide();
}
});
contentPane.add(closePanel, BorderLayout.SOUTH);
try {
//content= AboutTextFromXML.getTabbedPane("xml/" + removeSpaces(interactiveName) + ".xml");
content= AboutTextFromHTML.getTabbedPane(removeSpaces(interactiveName));
content.add(getSystemInformationTab(), "System Information");
content.setPreferredSize(new Dimension(100, 500));
contentPane.add(content, BorderLayout.CENTER);
} catch (Exception e) {
System.err.println("Exception caught parsing file");
System.err.println(e.getMessage());
e.printStackTrace();
}
}
public void actionPerformed (ActionEvent e)
{
String message = "Your java vm is not up-todate.\n" +
"Version 1.4 or higher is recommended.\n" +
"Do you want to continue?";
if(System.getProperty("java.vm.version").compareTo("1.3.1") <= 0) {
int retVal = JOptionPane.showConfirmDialog(null, message, "Warning", JOptionPane.YES_NO_CANCEL_OPTION);
if(retVal == JOptionPane.CANCEL_OPTION ||
retVal == JOptionPane.CLOSED_OPTION ||
retVal == JOptionPane.NO_OPTION)
return;
//JOptionPane.showMessageDialog(this,
// "You need to upgrage java vm to 1.4!",
//"Warning",JOptionPane.INFORMATION_MESSAGE );
//return;
}
frame.show();
}
public static String readTextFromJar(String s) {
String thisLine;;
StringBuffer everything = new StringBuffer();
try {
InputStream is = AboutBox.class.getResourceAsStream(s);
BufferedReader br = new BufferedReader
(new InputStreamReader(is));
while ((thisLine = br.readLine()) != null) {
// System.out.println(thisLine);
everything.append(thisLine);
}
}
catch (Exception e) {
e.printStackTrace();
}
return everything.toString();
}
public String removeSpaces(String s) {
StringTokenizer st = new StringTokenizer(s," ",false);
String t="";
while (st.hasMoreElements()) t += st.nextElement();
return t;
}
public static JComponent getSystemInformationTab() {
StringBuffer sysInfo = new StringBuffer();
sysInfo.append("<html>");
// operating system
sysInfo.append("<p><b>Operating System:</b> ");
sysInfo.append(System.getProperty("os.name") + " "
+ System.getProperty("os.version") + "</p>");
// java version
sysInfo.append("<p><b>Java VM Version:</b> ");
sysInfo.append(System.getProperty("java.vm.version") + "</p>");
// java version
sysInfo.append("<p><b>Java VM Vendor:</b> ");
sysInfo.append(System.getProperty("java.vm.vendor") + "</p>");
// java version
sysInfo.append("<p><b>Java VM Path:</b> ");
sysInfo.append(System.getProperty("java.home") + "</p>");
sysInfo.append("</html>");
JEditorPane retval = new JEditorPane(TYPE, sysInfo.toString());
retval.setEditable(false);
JScrollPane tab = new JScrollPane(retval, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
return tab;
}
public static void main(String args[]) {
JFrame that = new JFrame("About test");
that.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
that.getContentPane().add(new AboutBox("FunctionAnalyzer"));
that.pack();
that.show();
}
}