KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfree > ui > about > SystemPropertiesPanel


1 /* ========================================================================
2  * JCommon : a free general purpose class library for the Java(tm) platform
3  * ========================================================================
4  *
5  * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
6  *
7  * Project Info: http://www.jfree.org/jcommon/index.html
8  *
9  * This library is free software; you can redistribute it and/or modify it
10  * under the terms of the GNU Lesser General Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful, but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17  * License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
22  * USA.
23  *
24  * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
25  * in the United States and other countries.]
26  *
27  * --------------------------
28  * SystemPropertiesPanel.java
29  * --------------------------
30  * (C) Copyright 2001-2004, by Object Refinery Limited.
31  *
32  * Original Author: David Gilbert (for Object Refinery Limited);
33  * Contributor(s): -;
34  *
35  * $Id: SystemPropertiesPanel.java,v 1.4 2005/10/18 13:19:13 mungady Exp $
36  *
37  * Changes
38  * -------
39  * 26-Nov-2001 : Version 1 (DG);
40  * 28-Feb-2002 : Changed package to com.jrefinery.ui.about (DG);
41  * 04-Mar-2002 : Added popup menu code by Carl ?? (DG);
42  * 15-Mar-2002 : Modified to use ResourceBundle for elements that require localisation (DG);
43  * 26-Jun-2002 : Removed unnecessary import (DG);
44  * 08-Oct-2002 : Fixed errors reported by Checkstyle (DG);
45  *
46  */

47
48 package org.jfree.ui.about;
49
50 import java.awt.BorderLayout JavaDoc;
51 import java.awt.Toolkit JavaDoc;
52 import java.awt.datatransfer.Clipboard JavaDoc;
53 import java.awt.datatransfer.StringSelection JavaDoc;
54 import java.awt.event.ActionEvent JavaDoc;
55 import java.awt.event.ActionListener JavaDoc;
56 import java.awt.event.MouseAdapter JavaDoc;
57 import java.awt.event.MouseEvent JavaDoc;
58 import java.util.ResourceBundle JavaDoc;
59
60 import javax.swing.JMenuItem JavaDoc;
61 import javax.swing.JPanel JavaDoc;
62 import javax.swing.JPopupMenu JavaDoc;
63 import javax.swing.JScrollPane JavaDoc;
64 import javax.swing.JTable JavaDoc;
65 import javax.swing.KeyStroke JavaDoc;
66 import javax.swing.ListSelectionModel JavaDoc;
67
68 /**
69  * A panel containing a table of system properties.
70  *
71  * @author David Gilbert
72  */

73 public class SystemPropertiesPanel extends JPanel JavaDoc {
74
75     /** The table that displays the system properties. */
76     private JTable JavaDoc table;
77
78     /** Allows for a popup menu for copying. */
79     private JPopupMenu JavaDoc copyPopupMenu;
80
81     /** A copy menu item. */
82     private JMenuItem JavaDoc copyMenuItem;
83
84     /** A popup listener. */
85     private PopupListener copyPopupListener;
86
87     /**
88      * Constructs a new panel.
89      */

90     public SystemPropertiesPanel() {
91
92         final String JavaDoc baseName = "org.jfree.ui.about.resources.AboutResources";
93         final ResourceBundle JavaDoc resources = ResourceBundle.getBundle(baseName);
94
95         setLayout(new BorderLayout JavaDoc());
96         this.table = SystemProperties.createSystemPropertiesTable();
97         add(new JScrollPane JavaDoc(this.table));
98
99         // Add a popup menu to copy to the clipboard...
100
this.copyPopupMenu = new JPopupMenu JavaDoc();
101
102         final String JavaDoc label = resources.getString("system-properties-panel.popup-menu.copy");
103         final KeyStroke JavaDoc accelerator = (KeyStroke JavaDoc)
104             resources.getObject("system-properties-panel.popup-menu.copy.accelerator");
105         this.copyMenuItem = new JMenuItem JavaDoc(label);
106         this.copyMenuItem.setAccelerator(accelerator);
107         this.copyMenuItem.getAccessibleContext().setAccessibleDescription(label);
108         this.copyMenuItem.addActionListener(new ActionListener JavaDoc() {
109             public void actionPerformed(final ActionEvent JavaDoc e) {
110                 copySystemPropertiesToClipboard();
111             }
112         });
113         this.copyPopupMenu.add(this.copyMenuItem);
114
115         // add popup Listener to the table
116
this.copyPopupListener = new PopupListener();
117         this.table.addMouseListener(this.copyPopupListener);
118
119     }
120
121     /**
122      * Copies the selected cells in the table to the clipboard, in tab-delimited format.
123      */

124     public void copySystemPropertiesToClipboard() {
125
126         final StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
127         final ListSelectionModel JavaDoc selection = this.table.getSelectionModel();
128         final int firstRow = selection.getMinSelectionIndex();
129         final int lastRow = selection.getMaxSelectionIndex();
130         if ((firstRow != -1) && (lastRow != -1)) {
131             for (int r = firstRow; r <= lastRow; r++) {
132                 for (int c = 0; c < this.table.getColumnCount(); c++) {
133                     buffer.append(this.table.getValueAt(r, c));
134                     if (c != 2) {
135                         buffer.append("\t");
136                     }
137                 }
138                 buffer.append("\n");
139             }
140         }
141         final StringSelection JavaDoc ss = new StringSelection JavaDoc(buffer.toString());
142         final Clipboard JavaDoc cb = Toolkit.getDefaultToolkit().getSystemClipboard();
143         cb.setContents(ss, ss);
144
145     }
146
147     
148     /**
149      * Returns the copy popup menu.
150      *
151      * @return Returns the copyPopupMenu.
152      */

153     protected final JPopupMenu JavaDoc getCopyPopupMenu()
154     {
155       return copyPopupMenu;
156     }
157     
158     /**
159      * Returns the table containing the system properties.
160      * @return Returns the table.
161      */

162     protected final JTable JavaDoc getTable()
163     {
164       return table;
165     }
166     
167     /**
168      * A popup listener.
169      */

170     private class PopupListener extends MouseAdapter JavaDoc {
171
172         /**
173          * Default constructor.
174          */

175         public PopupListener() {
176         }
177
178         /**
179          * Mouse pressed event.
180          *
181          * @param e the event.
182          */

183         public void mousePressed(final MouseEvent JavaDoc e) {
184             maybeShowPopup(e);
185         }
186
187         /**
188          * Mouse released event.
189          *
190          * @param e the event.
191          */

192         public void mouseReleased(final MouseEvent JavaDoc e) {
193             maybeShowPopup(e);
194         }
195
196         /**
197          * Event handler.
198          *
199          * @param e the event.
200          */

201         private void maybeShowPopup(final MouseEvent JavaDoc e) {
202             if (e.isPopupTrigger()) {
203                 getCopyPopupMenu().show(
204                     getTable(), e.getX(), e.getY()
205                 );
206             }
207         }
208     }
209
210
211 }
212
213
Popular Tags