    001    /* ========================================================================
    002     * JCommon : a free general purpose class library for the Java(tm) platform
    003     * ========================================================================
    004     *
    005     * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
    006     *
    007     * Project Info:  http://www.jfree.org/jcommon/index.html
    008     *
    009     * This library is free software; you can redistribute it and/or modify it
    010     * under the terms of the GNU Lesser General Public License as published by
    011     * the Free Software Foundation; either version 2.1 of the License, or
    012     * (at your option) any later version.
    013     *
    014     * This library is distributed in the hope that it will be useful, but
    015     * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
    016     * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
    017     * License for more details.
    018     *
    019     * You should have received a copy of the GNU Lesser General Public
    020     * License along with this library; if not, write to the Free Software
    021     * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
    022     * USA.
    023     *
    024     * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
    025     * in the United States and other countries.]
    026     *
    027     * ----------------
    028     * ProjectInfo.java
    029     * ----------------
    030     * (C) Copyright 2001-2004, by Object Refinery Limited.
    031     *
    032     * Original Author:  David Gilbert (for Object Refinery Limited);
    033     * Contributor(s):   -;
    034     *
    035     * $Id: ProjectInfo.java,v 1.5 2005/11/16 15:58:41 taqua Exp $
    036     *
    037     * Changes (since 27-Jun-2002)
    038     * ---------------------------
    039     * 27-Jun-2002 : Added logo, updated source header and Javadocs (DG);
    040     * 08-Oct-2002 : Added set methods for most attributes. Fixed errors reported by Checkstyle (DG);
    041     *
    042     */
    043
    044    package org.jfree.ui.about;
    045
    046    import java.awt.Image;
    047    import java.util.Iterator;
    048    import java.util.List;
    049
    050    import org.jfree.base.BootableProjectInfo;
    051    import org.jfree.base.Library;
    052
    053    /**
    054     * A class for recording the basic information about a free or open source software project.
    055     *
    056     * @author David Gilbert
    057     */
    058    public class ProjectInfo extends BootableProjectInfo {
    059
    060        /** An optional project logo. */
    061        private Image logo;
    062
    063        /** The licence text. */
    064        private String licenceText;
    065
    066        /** A list of contributors. */
    067        private List contributors;
    068
    069        /**
    070         * Constructs an empty project info object.
    071         */
    072        public ProjectInfo() {
    073            // nothing required
    074        }
    075
    076        /**
    077         * Constructs a project info object.
    078         *
    079         * @param name  the name of the project.
    080         * @param version  the version.
    081         * @param info  other info (usually a URL).
    082         * @param logo  the project logo.
    083         * @param copyright  a copyright statement.
    084         * @param licenceName  the name of the licence that applies to the project.
    085         * @param licenceText  the text of the licence that applies to the project.
    086         */
    087        public ProjectInfo(final String name,
    088                           final String version,
    089                           final String info,
    090                           final Image logo,
    091                           final String copyright,
    092                           final String licenceName,
    093                           final String licenceText) {
    094
    095            super(name, version, info, copyright, licenceName);
    096            this.logo = logo;
    097            this.licenceText = licenceText;
    098
    099        }
    100
    101        /**
    102         * Returns the logo.
    103         *
    104         * @return the project logo.
    105         */
    106        public Image getLogo() {
    107            return this.logo;
    108        }
    109
    110        /**
    111         * Sets the project logo.
    112         *
    113         * @param logo  the project logo.
    114         */
    115        public void setLogo(final Image logo) {
    116            this.logo = logo;
    117        }
    118
    119        /**
    120         * Returns the licence text.
    121         *
    122         * @return the licence text.
    123         */
    124        public String getLicenceText() {
    125            return this.licenceText;
    126        }
    127
    128        /**
    129         * Sets the project licence text.
    130         *
    131         * @param licenceText  the licence text.
    132         */
    133        public void setLicenceText(final String licenceText) {
    134            this.licenceText = licenceText;
    135        }
    136
    137        /**
    138         * Returns the list of contributors for the project.
    139         *
    140         * @return the list of contributors.
    141         */
    142        public List getContributors() {
    143            return this.contributors;
    144        }
    145
    146        /**
    147         * Sets the list of contributors.
    148         *
    149         * @param contributors  the list of contributors.
    150         */
    151        public void setContributors(final List contributors) {
    152            this.contributors = contributors;
    153        }
    154
    155        /**
    156         * Returns a string describing the project.
    157         *
    158         * @return a string describing the project.
    159         */
    160        public String toString() {
    161
    162            final StringBuffer result = new StringBuffer();
    163            result.append(getName());
    164            result.append(" version ");
    165            result.append(getVersion());
    166            result.append(".\n");
    167            result.append(getCopyright());
    168            result.append(".\n");
    169            result.append("\n");
    170            result.append("For terms of use, see the licence below.\n");
    171            result.append("\n");
    172            result.append("FURTHER INFORMATION:");
    173            result.append(getInfo());
    174            result.append("\n");
    175            result.append("CONTRIBUTORS:");
    176            if (this.contributors != null) {
    177                final Iterator iterator = this.contributors.iterator();
    178                while (iterator.hasNext()) {
    179                    final Contributor contributor = (Contributor) iterator.next();
    180                    result.append(contributor.getName());
    181                    result.append(" (");
    182                    result.append(contributor.getEmail());
    183                    result.append(").");
    184                }
    185            }
    186            else {
    187                result.append("None");
    188            }
    189
    190            result.append("\n");
    191            result.append("OTHER LIBRARIES USED BY ");
    192            result.append(getName());
    193            result.append(":");
    194            final Library[] libraries = getLibraries();
    195            if (libraries.length != 0) {
    196                for (int i = 0; i < libraries.length; i++) {
    197                    final Library lib = libraries[i];
    198                    result.append(lib.getName());
    199                    result.append(" ");
    200                    result.append(lib.getVersion());
    201                    result.append(" (");
    202                    result.append(lib.getInfo());
    203                    result.append(").");
    204                }
    205            }
    206            else {
    207                result.append("None");
    208            }
    209            result.append("\n");
    210            result.append(getName());
    211            result.append(" LICENCE TERMS:");
    212            result.append("\n");
    213            result.append(getLicenceText());
    214
    215            return result.toString();
    216
    217        }
    218
    219    }