/* * $Id$ * Copyright (c) 2005-2007 Carsten Hammer * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ /* * This class was originally published under the MPL by Bruno Lowagie, * Paulo Soares, and Carsten Hammer. * It was a part of iText, a Java-PDF library. You can now use it under * the MIT License; for backward compatibility you can also use it under * the MPL version 1.1: http://www.mozilla.org/MPL/ * A copy of the MPL license is bundled with the source code FYI. */ /* * This class was originally written by Carsten Hammer. * Changes were made by Bruno Lowagie, Paulo Soares and Xavier Le Vourch. * These people were contacted before changing the license from MPL/LGPL to MIT. * Current copyright holders are Bruno Lowagie and Carsten Hammer. */ package com.lowagie.toolbox; import java.awt.BorderLayout; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Properties; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableModel; import com.lowagie.text.Document; import javax.swing.ImageIcon; import javax.swing.RowSorter; import javax.swing.table.TableRowSorter; /** * JFrame that shows the plugin_versions of all the plugins. * @since 2.1.1 (imported from itexttoolbox project) */ public class Versions extends JFrame { /** The serial version UID of this class. */ private static final long serialVersionUID = 2925242862240301106L; /** A label with info about the library, JVM,... */ JLabel library_versions = new JLabel(); /** The table with all the plug-ins (name, version and date). */ JTable plugin_versions = new JTable(); /** A scrollpane for the plugin_versions table. */ JScrollPane scroll_versions = new JScrollPane(); /** Constructs a Versions object. */ public Versions() { super("Plugins and their version"); try { initialize(); } catch (Exception ex) { ex.printStackTrace(); } } /** * Initialization of the jFrame. * * @throws Exception */ private void initialize() throws Exception { this.getContentPane().setLayout(new BorderLayout()); scroll_versions.setViewportView(plugin_versions); library_versions.setIcon(new ImageIcon(Versions.class.getResource( "1t3xt.gif"))); this.getContentPane().add(library_versions, BorderLayout.NORTH); this.getContentPane().add(scroll_versions, BorderLayout.CENTER); Properties properties = System.getProperties(); Runtime runtime = Runtime.getRuntime(); StringBuffer sb = new StringBuffer(); sb.append("<html>"); sb.append("<p>iTexttoolbox version: " + Versions.class.getPackage().getImplementationVersion() + "</p>"); sb.append("<p>iText version: " + Document.getVersion() + "</p>"); sb.append("<p>java.version: " + properties.getProperty("java.version") + "</p>"); sb.append("<p>java.vendor: " + properties.getProperty("java.vendor") + "</p>"); sb.append("<p>java.home: " + properties.getProperty("java.home") + "</p>"); sb.append("<p>java.freeMemory: " + runtime.freeMemory() + " bytes" + "</p>"); sb.append("<p>java.totalMemory: " + runtime.totalMemory() + " bytes" + "</p>"); sb.append("<p>user.home: " + properties.getProperty("user.home") + "</p>"); sb.append("<p>os.name: " + properties.getProperty("os.name") + "</p>"); sb.append("<p>os.arch: " + properties.getProperty("os.arch") + "</p>"); sb.append("<p>os.version: " + properties.getProperty("os.version") + "</p>"); sb.append("</html>"); library_versions.setText(sb.toString()); TableModel model = getVersionTableModel(AbstractTool.versionsarray); RowSorter<TableModel> sorter = new TableRowSorter<TableModel> (model); plugin_versions.setRowSorter(sorter); plugin_versions.setModel(model); pack(); } /** * Returns the TableModel implementation that will be used to show the plugin_versions. * * @param versionsarray ArrayList * @return TableModel */ public TableModel getVersionTableModel(final ArrayList<String> versionsarray) { return new AbstractTableModel() { private static final long serialVersionUID = 5105003782164682777L; public int getColumnCount() { return 4; } public int getRowCount() { return versionsarray.size(); } public Object getValueAt(int rowIndex, int columnIndex) { String dummy; switch (columnIndex) { case 0: dummy = versionsarray.get(rowIndex); return dummy.split(".java")[0]; case 1: dummy = versionsarray.get(rowIndex); return dummy.split(" ")[1]; case 2: DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); dummy = versionsarray.get(rowIndex); try { return df.parse(dummy.split(" ")[2] + " " + dummy.split(" ")[3]); } catch (ParseException ex) { return null; } case 3: dummy = versionsarray.get(rowIndex); return dummy.split(" ")[4]; } return versionsarray; } public String getColumnName(int column) { switch (column) { case 0: return "Name"; case 1: return "Version"; case 2: return "Changed"; case 3: return "ChangeBy"; default: return ""; } } public Class<? extends Object> getColumnClass(int column) { switch (column) { case 0: return String.class; case 1: return String.class; case 2: return java.util.Date.class; case 3: return String.class; default: return null; } } }; } /** * Main method (test purposes only) * * @param args String[] */ public static void main(String[] args) { Versions version = new Versions(); version.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); version.setVisible(true); } }