📄 plugintablemodel.java
字号:
/* Copyright (C) 2003 Adam Olsen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program 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 General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */package com.valhalla.pluginmanager;import java.text.DecimalFormat;import java.util.ArrayList;import java.util.Locale;import java.util.Properties;import java.util.ResourceBundle;import javax.swing.JButton;import javax.swing.JTable;import javax.swing.event.TableModelEvent;import javax.swing.table.AbstractTableModel;import javax.swing.table.TableColumn;/** * Represents a list of plugins in a table * * @author Adam Olsen * @version 1.0 */class PluginTableModel extends AbstractTableModel { private ResourceBundle resources = ResourceBundle.getBundle( "PluginManager", Locale.getDefault()); private PluginManagerPanel panel; private String[] columns = new String[] { " ", resources.getString("Name"), resources.getString("Version"), resources.getString("Size") }; private JTable table; private ArrayList list = new ArrayList(); private boolean managePanel = false; /** * Sets up the list model * * @param panel * the PluginManagerListPanel that encloses this model's table */ PluginTableModel(PluginManagerPanel panel) { this.panel = panel; } /** * Sets up the list model as a manage panel */ public void setManageModel() { columns = new String[] { resources.getString("Name"), resources.getString("Version"), resources.getString("Status") }; managePanel = true; } /** * Finds out whether or not a cell is editable * * @param row * the row to check * @param column * the column to check * @return true if the cell is editable */ public boolean isCellEditable(int row, int column) { if (column == 0 && !managePanel) return true; else return false; } /** * Fired when the tables data is changed * * @param value * the new value of the data * @param row * the row of the item * @param col * the column of the item */ public void setValueAt(Object value, int row, int col) { boolean b = ((Boolean) value).booleanValue(); Properties props = (Properties) list.get(row); if (b) props.setProperty("selected", "true"); else props.remove("selected"); JButton button = panel.getButton(); boolean selected = false; for (int i = 0; i < list.size(); i++) { Properties p = (Properties) list.get(i); if (p.getProperty("selected") != null) selected = true; } button.setEnabled(selected); fireTableCellUpdated(row, col); } /** * Gets a description for a plugin * * @param index * the index of plugin to get the description of * @return a description of the plugin */ public String getDescription(int index) { Properties props = (Properties) list.get(index); String author = props.getProperty("author"); if (author == null) author = "Unknown"; String releaseDate = props.getProperty("releaseDate"); if (releaseDate == null) releaseDate = "Unknown"; String desc = "Author: " + author + "\n"; desc += "Release Date: " + releaseDate + "\n"; desc += props.getProperty("description"); return desc; } /** * Sets the list of plugins in the Table * * @param list * the list of plugins */ public void setPlugins(ArrayList list) { this.list = list; table.tableChanged(new TableModelEvent(this)); } /** * Sets the table value for this model * * @param table * the table that this model represents */ public void setTable(JTable table) { this.table = table; TableColumn column = null; int versionWidth = 270; // set the default column widths for (int i = 0; i < getColumnCount(); i++) { column = table.getColumnModel().getColumn(i); if (i == 0) { if (!managePanel) column.setPreferredWidth(1); else { column.setPreferredWidth(310); versionWidth = 65; } } else if (i == 1) column.setPreferredWidth(versionWidth); else column.setPreferredWidth(65); } table.validate(); } /** * Returns the column name for a specified index * * @param index * the index you want * @return the column name */ public String getColumnName(int index) { return columns[index]; } /** * Gets the column class * * @param index * the column index to return * @return the Class that represents the column */ public Class getColumnClass(int index) { if (managePanel) index++; if (index == 0) return Boolean.class; else if (index == 1) return Object.class; else return Number.class; } /** * @return the number of columns in the table */ public int getColumnCount() { return columns.length; } /** * @return the number of rows in the table */ public int getRowCount() { if (list == null) return 0; return list.size(); } /** * @param props * the properties of the plugin to get * @return the status of the plugin specified in props */ private String getLoaded(Properties props) { PluginLoader loader = PluginLoader.getInstance(); PluginJAR jar = loader.getPlugin(props.getProperty("name")); if (jar == null || !jar.getLoaded()) return "Not Loaded"; else return "Loaded"; } /** * Get the Object for a specific coordinate in the table * * @param row * the row of the item * @param column * the column of the item * @return the Object at the specified coordinates */ public Object getValueAt(int row, int column) { Properties props = (Properties) list.get(row); boolean selected = false; if (props.getProperty("selected") != null) selected = true; if (managePanel) column++; if (column == 0) return new Boolean(selected); else if (column == 1) return props.getProperty("name"); else if (column == 2) return props.getProperty("version"); else if (column == 3) { if (managePanel) return getLoaded(props); String num = "k"; try { DecimalFormat nf = new DecimalFormat( "###,###,###,##0.0;(#,##0.0)"); double i = Double.parseDouble(props.getProperty("size")); i = i / 1024.0; num = nf.format(i) + num; } catch (NumberFormatException e) { } return num; } return new String(""); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -