    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     * LibraryReferencePanel.java
    029     * --------------------------
    030     * (C) Copyright 2002-2004, by Object Refinery Limited.
    031     *
    032     * Original Author:  David Gilbert (for Object Refinery Limited);
    033     * Contributor(s):   -;
    034     *
    035     * $Id: LibraryPanel.java,v 1.6 2008/09/10 09:18:12 mungady Exp $
    036     *
    037     * Changes
    038     * -------
    039     * 28-Feb-2002 : Version 1 (DG);
    040     * 08-Oct-2002 : Fixed errors reported by Checkstyle (DG);
    041     *
    042     */
    043
    044    package org.jfree.ui.about;
    045
    046    import java.awt.BorderLayout;
    047    import java.util.ArrayList;
    048    import java.util.List;
    049    import javax.swing.JPanel;
    050    import javax.swing.JScrollPane;
    051    import javax.swing.JTable;
    052
    053    /**
    054     * A panel containing a table that lists the libraries used in a project.
    055     * <P>
    056     * Used in the AboutFrame class.
    057     *
    058     * @author David Gilbert
    059     */
    060    public class LibraryPanel extends JPanel {
    061
    062        /** The table. */
    063        private JTable table;
    064
    065        /** The data. */
    066        private LibraryTableModel model;
    067
    068        /**
    069         * Constructs a LibraryPanel.
    070         *
    071         * @param libraries  a list of libraries (represented by Library objects).
    072         */
    073        public LibraryPanel(final List libraries) {
    074
    075            setLayout(new BorderLayout());
    076            this.model = new LibraryTableModel(libraries);
    077            this.table = new JTable(this.model);
    078            add(new JScrollPane(this.table));
    079
    080        }
    081
    082        /**
    083         * Creates a new library panel for the specified project.
    084         *
    085         * @param projectInfo  the project information.
    086         */
    087        public LibraryPanel(final ProjectInfo projectInfo) {
    088            this(getLibraries(projectInfo));
    089        }
    090
    091        private static List getLibraries (final ProjectInfo info) {
    092            if (info == null) {
    093                return new ArrayList();
    094            }
    095            final ArrayList libs = new ArrayList();
    096            collectLibraries(info, libs);
    097            return libs;
    098        }
    099
    100        private static void collectLibraries (final ProjectInfo info,
    101                                              final List list) {
    102            org.jfree.base.Library[] libs = info.getLibraries();
    103            for (int i = 0; i < libs.length; i++) {
    104                final org.jfree.base.Library lib = libs[i];
    105                if (list.contains(lib) == false) {
    106                    // prevent duplicates, they look ugly ..
    107                    list.add(lib);
    108                    if (lib instanceof ProjectInfo) {
    109                        collectLibraries((ProjectInfo) lib, list);
    110                    }
    111                }
    112            }
    113
    114            libs = info.getOptionalLibraries();
    115            for (int i = 0; i < libs.length; i++) {
    116                final org.jfree.base.Library lib = libs[i];
    117                if (list.contains(lib) == false) {
    118                    // prevent duplicates, they look ugly ..
    119                    list.add(lib);
    120                    if (lib instanceof ProjectInfo) {
    121                        collectLibraries((ProjectInfo) lib, list);
    122                    }
    123                }
    124            }
    125        }
    126
    127        /**
    128         * Returns the table model for the library.
    129         *
    130         * @return The table model.
    131         */
    132        public LibraryTableModel getModel() {
    133          return this.model;
    134        }
    135
    136        /**
    137         * Returns the <code>JTable</code> for the library.
    138         *
    139         * @return The table.
    140         */
    141        protected JTable getTable() {
    142          return this.table;
    143        }
    144    }