    001    /* ========================================================================
    002     * JCommon : a free general purpose class library for the Java(tm) platform
    003     * ========================================================================
    004     *
    005     * (C) Copyright 2000-2008, 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     * LibraryTableModel.java
    029     * ----------------------
    030     * (C) Copyright 2002-2008, by Object Refinery Limited.
    031     *
    032     * Original Author:  David Gilbert (for Object Refinery Limited);
    033     * Contributor(s):   -;
    034     *
    035     * $Id: LibraryTableModel.java,v 1.8 2008/12/18 09:57:32 mungady Exp $
    036     *
    037     * Changes
    038     * -------
    039     * 28-Feb-2002 : Version 1 (DG);
    040     * 15-Mar-2002 : Modified to use ResourceBundle for elements that require
    041     *               localisation (DG);
    042     * 08-Oct-2002 : Fixed errors reported by Checkstyle (DG);
    043     * 18-Dec-2008 : Use ResourceBundleWrapper - see JFreeChart patch 1607918 by
    044     *               Jess Thrysoee (DG);
    045     *
    046     */
    047
    048    package org.jfree.ui.about;
    049
    050    import java.util.List;
    051    import java.util.ResourceBundle;
    052
    053    import javax.swing.table.AbstractTableModel;
    054
    055    import org.jfree.base.Library;
    056    import org.jfree.util.ResourceBundleWrapper;
    057
    058    /**
    059     * A table model containing a list of libraries used in a project.
    060     * <P>
    061     * Used in the LibraryPanel class.
    062     *
    063     * @author David Gilbert
    064     */
    065    public class LibraryTableModel extends AbstractTableModel {
    066
    067        /** Storage for the libraries. */
    068        private Library[] libraries;
    069
    070        /** Localised name column label. */
    071        private String nameColumnLabel;
    072
    073        /** Localised version column label. */
    074        private String versionColumnLabel;
    075
    076        /** Localised licence column label. */
    077        private String licenceColumnLabel;
    078
    079        /** Localised info column label. */
    080        private String infoColumnLabel;
    081
    082        /**
    083         * Constructs a LibraryTableModel.
    084         *
    085         * @param libraries  the libraries.
    086         */
    087        public LibraryTableModel(final List libraries) {
    088
    089            this.libraries = (Library[])
    090                    libraries.toArray(new Library[libraries.size()]);
    091
    092            final String baseName = "org.jfree.ui.about.resources.AboutResources";
    093            final ResourceBundle resources = ResourceBundleWrapper.getBundle(
    094                    baseName);
    095
    096            this.nameColumnLabel = resources.getString(
    097                    "libraries-table.column.name");
    098            this.versionColumnLabel = resources.getString(
    099                    "libraries-table.column.version");
    100            this.licenceColumnLabel = resources.getString(
    101                    "libraries-table.column.licence");
    102            this.infoColumnLabel = resources.getString(
    103                    "libraries-table.column.info");
    104
    105        }
    106
    107        /**
    108         * Returns the number of rows in the table model.
    109         *
    110         * @return the number of rows.
    111         */
    112        public int getRowCount() {
    113            return this.libraries.length;
    114        }
    115
    116        /**
    117         * Returns the number of columns in the table model.  In this case, there
    118         * are always four columns (name, version, licence and other info).
    119         *
    120         * @return the number of columns in the table model.
    121         */
    122        public int getColumnCount() {
    123            return 4;
    124        }
    125
    126        /**
    127         * Returns the name of a column in the table model.
    128         *
    129         * @param column  the column index (zero-based).
    130         *
    131         * @return the name of the specified column.
    132         */
    133        public String getColumnName(final int column) {
    134
    135            String result = null;
    136
    137            switch (column) {
    138
    139                case 0:  result = this.nameColumnLabel;
    140                         break;
    141
    142                case 1:  result = this.versionColumnLabel;
    143                         break;
    144
    145                case 2:  result = this.licenceColumnLabel;
    146                         break;
    147
    148                case 3:  result = this.infoColumnLabel;
    149                         break;
    150
    151            }
    152
    153            return result;
    154
    155        }
    156
    157        /**
    158         * Returns the value for a cell in the table model.
    159         *
    160         * @param row  the row index (zero-based).
    161         * @param column  the column index (zero-based).
    162         *
    163         * @return the value.
    164         */
    165        public Object getValueAt(final int row, final int column) {
    166
    167            Object result = null;
    168            final Library library = this.libraries[row];
    169
    170            if (column == 0) {
    171                result = library.getName();
    172            }
    173            else if (column == 1) {
    174                result = library.getVersion();
    175            }
    176            else if (column == 2) {
    177                result = library.getLicenceName();
    178            }
    179            else if (column == 3) {
    180                result = library.getInfo();
    181            }
    182            return result;
    183
    184        }
    185
    186        /**
    187         * Returns an array of the libraries in the table.
    188         *
    189         * @return An array of libraries.
    190         */
    191        public Library[] getLibraries() {
    192          return (Library[]) this.libraries.clone();
    193        }
    194    }