org.jfree.ui.about.AboutFrame Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jcommon Show documentation
Show all versions of jcommon Show documentation
JCommon is a free general purpose Java class library that is used in
several projects at www.jfree.org, including JFreeChart and
JFreeReport.
/* ========================================================================
* JCommon : a free general purpose class library for the Java(tm) platform
* ========================================================================
*
* (C) Copyright 2000-2008, by Object Refinery Limited and Contributors.
*
* Project Info: http://www.jfree.org/jcommon/index.html
*
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
* in the United States and other countries.]
*
* ---------------
* AboutFrame.java
* ---------------
* (C) Copyright 2001-2008, by Object Refinery Limited.
*
* Original Author: David Gilbert (for Object Refinery Limited);
* Contributor(s): -;
*
* $Id: AboutFrame.java,v 1.8 2008/12/18 09:57:32 mungady Exp $
*
* Changes (from 26-Nov-2001)
* --------------------------
* 26-Nov-2001 : Version 1, based on code from JFreeChart demo application (DG);
* 27-Nov-2001 : Added getPreferredSize() method (DG);
* 08-Feb-2002 : List of developers is now optional (DG);
* 15-Mar-2002 : Modified to use a ResourceBundle for elements that require
* localisation (DG);
* 25-Mar-2002 : Added new constructor (DG);
* 26-Jun-2002 : Removed redundant code (DG);
* 08-Oct-2002 : Fixed errors reported by Checkstyle (DG);
* 18-Dec-2008 : Use ResourceBundleWrapper - see JFreeChart patch 1607918 by
* Jess Thrysoee (DG);
*
*/
package org.jfree.ui.about;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Image;
import java.util.List;
import java.util.ResourceBundle;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.border.Border;
import org.jfree.util.ResourceBundleWrapper;
/**
* A frame that displays information about the demonstration application.
*
* @author David Gilbert
*/
public class AboutFrame extends JFrame {
/** The preferred size for the frame. */
public static final Dimension PREFERRED_SIZE = new Dimension(560, 360);
/** The default border for the panels in the tabbed pane. */
public static final Border STANDARD_BORDER
= BorderFactory.createEmptyBorder(5, 5, 5, 5);
/** Localised resources. */
private ResourceBundle resources;
/** The application name. */
private String application;
/** The application version. */
private String version;
/** The copyright string. */
private String copyright;
/** Other info about the application. */
private String info;
/** The project logo. */
private Image logo;
/** A list of contributors. */
private List contributors;
/** The licence. */
private String licence;
/**
* Constructs an about frame.
*
* @param title the frame title.
* @param project information about the project.
*/
public AboutFrame(final String title, final ProjectInfo project) {
this(title,
project.getName(),
"Version " + project.getVersion(),
project.getInfo(),
project.getLogo(),
project.getCopyright(),
project.getLicenceText(),
project.getContributors(),
project);
}
/**
* Constructs an 'About' frame.
*
* @param title the frame title.
* @param application the application name.
* @param version the version.
* @param info other info.
* @param logo an optional logo.
* @param copyright the copyright notice.
* @param licence the licence.
* @param contributors a list of developers/contributors.
* @param project info about the project.
*/
public AboutFrame(final String title,
final String application, final String version,
final String info,
final Image logo,
final String copyright, final String licence,
final List contributors,
final ProjectInfo project) {
super(title);
this.application = application;
this.version = version;
this.copyright = copyright;
this.info = info;
this.logo = logo;
this.contributors = contributors;
this.licence = licence;
final String baseName = "org.jfree.ui.about.resources.AboutResources";
this.resources = ResourceBundleWrapper.getBundle(baseName);
final JPanel content = new JPanel(new BorderLayout());
content.setBorder(STANDARD_BORDER);
final JTabbedPane tabs = createTabs(project);
content.add(tabs);
setContentPane(content);
pack();
}
/**
* Returns the preferred size for the about frame.
*
* @return the preferred size.
*/
public Dimension getPreferredSize() {
return PREFERRED_SIZE;
}
/**
* Creates a tabbed pane containing an about panel and a system properties
* panel.
*
* @return a tabbed pane.
* @param project
*/
private JTabbedPane createTabs(final ProjectInfo project) {
final JTabbedPane tabs = new JTabbedPane();
final JPanel aboutPanel = createAboutPanel(project);
aboutPanel.setBorder(AboutFrame.STANDARD_BORDER);
final String aboutTab = this.resources.getString(
"about-frame.tab.about");
tabs.add(aboutTab, aboutPanel);
final JPanel systemPanel = new SystemPropertiesPanel();
systemPanel.setBorder(AboutFrame.STANDARD_BORDER);
final String systemTab = this.resources.getString(
"about-frame.tab.system");
tabs.add(systemTab, systemPanel);
return tabs;
}
/**
* Creates a panel showing information about the application, including the
* name, version, copyright notice, URL for further information, and a list
* of contributors.
* @param project
*
* @return a panel.
*/
private JPanel createAboutPanel(final ProjectInfo project) {
final JPanel about = new JPanel(new BorderLayout());
final JPanel details = new AboutPanel(this.application, this.version,
this.copyright, this.info, this.logo);
boolean includetabs = false;
final JTabbedPane tabs = new JTabbedPane();
if (this.contributors != null) {
final JPanel contributorsPanel = new ContributorsPanel(
this.contributors);
contributorsPanel.setBorder(AboutFrame.STANDARD_BORDER);
final String contributorsTab = this.resources.getString(
"about-frame.tab.contributors");
tabs.add(contributorsTab, contributorsPanel);
includetabs = true;
}
if (this.licence != null) {
final JPanel licencePanel = createLicencePanel();
licencePanel.setBorder(STANDARD_BORDER);
final String licenceTab = this.resources.getString(
"about-frame.tab.licence");
tabs.add(licenceTab, licencePanel);
includetabs = true;
}
if (project != null) {
final JPanel librariesPanel = new LibraryPanel(project);
librariesPanel.setBorder(AboutFrame.STANDARD_BORDER);
final String librariesTab = this.resources.getString(
"about-frame.tab.libraries");
tabs.add(librariesTab, librariesPanel);
includetabs = true;
}
about.add(details, BorderLayout.NORTH);
if (includetabs) {
about.add(tabs);
}
return about;
}
/**
* Creates a panel showing the licence.
*
* @return a panel.
*/
private JPanel createLicencePanel() {
final JPanel licencePanel = new JPanel(new BorderLayout());
final JTextArea area = new JTextArea(this.licence);
area.setLineWrap(true);
area.setWrapStyleWord(true);
area.setCaretPosition(0);
area.setEditable(false);
licencePanel.add(new JScrollPane(area));
return licencePanel;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy