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.5 2006/03/23 19:47:05 taqua 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: public LibraryPanel(final ProjectInfo projectInfo) {
083: this (getLibraries(projectInfo));
084: }
085:
086: private static List getLibraries(final ProjectInfo info) {
087: if (info == null) {
088: return new ArrayList();
089: }
090: final ArrayList libs = new ArrayList();
091: collectLibraries(info, libs);
092: return libs;
093: }
094:
095: private static void collectLibraries(final ProjectInfo info,
096: final List list) {
097: org.jfree.base.Library[] libs = info.getLibraries();
098: for (int i = 0; i < libs.length; i++) {
099: final org.jfree.base.Library lib = libs[i];
100: if (list.contains(lib) == false) {
101: // prevent duplicates, they look ugly ..
102: list.add(lib);
103: if (lib instanceof ProjectInfo) {
104: collectLibraries((ProjectInfo) lib, list);
105: }
106: }
107: }
108:
109: libs = info.getOptionalLibraries();
110: for (int i = 0; i < libs.length; i++) {
111: final org.jfree.base.Library lib = libs[i];
112: if (list.contains(lib) == false) {
113: // prevent duplicates, they look ugly ..
114: list.add(lib);
115: if (lib instanceof ProjectInfo) {
116: collectLibraries((ProjectInfo) lib, list);
117: }
118: }
119: }
120: }
121:
122: public LibraryTableModel getModel() {
123: return model;
124: }
125:
126: protected JTable getTable() {
127: return table;
128: }
129: }
|