Revision: 14693
http://gate.svn.sourceforge.net/gate/?rev=14693&view=rev
Author: markagreenwood
Date: 2011-12-07 19:34:16 +0000 (Wed, 07 Dec 2011)
Log Message:
-----------
moved the select all header renderer out into a separate class, and then
subclassed it to dissalow load all plugins
Modified Paths:
--------------
gate/trunk/src/gate/gui/creole/manager/AvailablePlugins.java
gate/trunk/src/gate/gui/creole/manager/PluginUpdateManager.java
gate/trunk/src/gate/gui/creole/manager/RemoteUpdateSite.java
Added Paths:
-----------
gate/trunk/src/gate/swing/SelectAllHeaderRenderer.java
Modified: gate/trunk/src/gate/gui/creole/manager/AvailablePlugins.java
===================================================================
--- gate/trunk/src/gate/gui/creole/manager/AvailablePlugins.java
2011-12-07 19:13:25 UTC (rev 14692)
+++ gate/trunk/src/gate/gui/creole/manager/AvailablePlugins.java
2011-12-07 19:34:16 UTC (rev 14693)
@@ -30,20 +30,17 @@
import gate.resources.img.svg.ResetIcon;
import gate.resources.img.svg.UserPluginIcon;
import gate.swing.CheckBoxTableCellRenderer;
+import gate.swing.SelectAllHeaderRenderer;
import gate.swing.XJFileChooser;
import gate.swing.XJTable;
import gate.util.GateException;
import gate.util.GateRuntimeException;
import java.awt.BorderLayout;
-import java.awt.Color;
import java.awt.Component;
-import java.awt.Container;
-import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
-import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.net.MalformedURLException;
@@ -69,7 +66,6 @@
import javax.swing.Icon;
import javax.swing.InputMap;
import javax.swing.JButton;
-import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JList;
@@ -84,15 +80,11 @@
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.ToolTipManager;
-import javax.swing.UIManager;
-import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
-import javax.swing.event.TableModelEvent;
-import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
@@ -190,10 +182,10 @@
.setCellRenderer(cbCellRenderer);
mainTable.getColumnModel().getColumn(LOAD_ALWAYS_COLUMN)
- .setHeaderRenderer(new SelectAllHeaderRenderer(mainTable,
LOAD_ALWAYS_COLUMN));
+ .setHeaderRenderer(new LoadHeaderRenderer(mainTable,
LOAD_ALWAYS_COLUMN));
mainTable.getColumnModel().getColumn(LOAD_NOW_COLUMN)
- .setHeaderRenderer(new SelectAllHeaderRenderer(mainTable,
LOAD_NOW_COLUMN));
+ .setHeaderRenderer(new LoadHeaderRenderer(mainTable, LOAD_NOW_COLUMN));
resourcesListModel = new ResourcesListModel();
resourcesList = new JList(resourcesListModel);
@@ -497,7 +489,7 @@
mainTable.requestFocusInWindow();
renderer =
- (SelectAllHeaderRenderer)mainTable
+ (LoadHeaderRenderer)mainTable
.getColumnModel()
.getColumn(
mainTable
@@ -510,7 +502,7 @@
mainTable.requestFocusInWindow();
renderer =
- (SelectAllHeaderRenderer)mainTable
+ (LoadHeaderRenderer)mainTable
.getColumnModel()
.getColumn(
mainTable
@@ -775,174 +767,33 @@
}
}
- static class SelectAllHeaderRenderer extends DefaultTableCellRenderer {
-
- enum Status {
- SELECTED, DESELECTED, INDETERMINATE
- }
-
- private JCheckBox checkBox = new JCheckBox();
-
- private JTable table;
-
- private Icon icon = new Icon() {
-
- @Override
- public int getIconWidth() {
- return checkBox.getPreferredSize().width;
- }
-
- @Override
- public int getIconHeight() {
- return checkBox.getPreferredSize().height;
- }
-
- @Override
- public void paintIcon(Component c, Graphics g, int x, int y) {
- SwingUtilities.paintComponent(g, checkBox, (Container)c, x, y,
- getIconWidth(), getIconHeight());
- }
- };
-
- private int column;
+ private static class LoadHeaderRenderer extends SelectAllHeaderRenderer {
- private boolean updating = false;
+ @Override
+ public void clicked(MouseEvent e) {
+ JTableHeader header = (JTableHeader)e.getSource();
- public void update() {
-
- if (updating) return;
-
- updating = true;
-
- TableColumn col =
table.getColumnModel().getColumn(table.convertColumnIndexToView((column)));
-
- int selected = 0;
- TableModel m = table.getModel();
- for(int i = 0; i < m.getRowCount(); i++) {
- if(Boolean.TRUE.equals(m.getValueAt(i, column))) {
- selected++;
+ TableColumnModel columnModel = table.getColumnModel();
+ int viewColumn = columnModel.getColumnIndexAtX(e.getX());
+ int modelColumn = table.convertColumnIndexToModel(viewColumn);
+ if(modelColumn == column) {
+ if(e.getX() <= header.getHeaderRect(viewColumn).x +
icon.getIconWidth()) {
+ TableColumn column = columnModel.getColumn(viewColumn);
+ Object v = column.getHeaderValue();
+ boolean b = Status.DESELECTED.equals(v) ? true : false;
+ if(!b) {
+ TableModel m = table.getModel();
+ for(int i = 0; i < m.getRowCount(); i++)
+ m.setValueAt(b, i, modelColumn);
+ column.setHeaderValue(b ? Status.SELECTED : Status.DESELECTED);
+ }
+ header.repaint();
}
}
-
- if(selected == 0) {
- col.setHeaderValue(SelectAllHeaderRenderer.Status.DESELECTED);
- } else if(selected == table.getRowCount()) {
- col.setHeaderValue(SelectAllHeaderRenderer.Status.SELECTED);
- } else {
- col.setHeaderValue(SelectAllHeaderRenderer.Status.INDETERMINATE);
- }
-
- table.getTableHeader().repaint();
-
- updating = false;
-
}
- public SelectAllHeaderRenderer(final JTable table, final int column) {
- super();
- this.column = column;
- this.table = table;
-
- // force the text to be to the right of the icon
- this.setHorizontalTextPosition(TRAILING);
-
- setOpaque(true);
-
- table.getTableHeader().addMouseListener(new MouseAdapter() {
- @Override
- public void mouseClicked(MouseEvent e) {
-
- JTableHeader header = (JTableHeader)e.getSource();
-
- TableColumnModel columnModel = table.getColumnModel();
- int vci = columnModel.getColumnIndexAtX(e.getX());
- int mci = table.convertColumnIndexToModel(vci);
- if(mci == column) {
- if(e.getX() <= header.getHeaderRect(vci).x + icon.getIconWidth()) {
- TableColumn column = columnModel.getColumn(vci);
- Object v = column.getHeaderValue();
- boolean b = Status.DESELECTED.equals(v) ? true : false;
- if(!b) {
- TableModel m = table.getModel();
- for(int i = 0; i < m.getRowCount(); i++)
- m.setValueAt(b, i, mci);
- column.setHeaderValue(b ? Status.SELECTED : Status.DESELECTED);
- }
- header.repaint();
- }
- }
- }
- });
-
- table.getModel().addTableModelListener(new TableModelListener() {
- @Override
- public void tableChanged(TableModelEvent e) {
- update();
- }
- });
-
- update();
+ public LoadHeaderRenderer(final JTable table, final int column) {
+ super(table,column);
}
-
- @Override
- public Component getTableCellRendererComponent(JTable table, Object val,
- boolean isSelected, boolean hasFocus, int row, int col) {
- super.getTableCellRendererComponent(table, table.getModel()
- .getColumnName(column), isSelected, hasFocus, row, col);
-
- JTableHeader header = table.getTableHeader();
- if(header != null) {
- Color fgColor = null;
- Color bgColor = null;
- if(hasFocus) {
- fgColor = UIManager.getColor("TableHeader.focusCellForeground");
- bgColor = UIManager.getColor("TableHeader.focusCellBackground");
- }
- if(fgColor == null) {
- fgColor = header.getForeground();
- }
- if(bgColor == null) {
- bgColor = header.getBackground();
- }
- setForeground(fgColor);
- setBackground(bgColor);
-
- setFont(header.getFont());
- }
-
- if(val instanceof Status) {
- switch((Status)val){
- case SELECTED:
- checkBox.setSelected(true);
- checkBox.setEnabled(true);
- break;
- case DESELECTED:
- checkBox.setSelected(false);
- checkBox.setEnabled(true);
- break;
- case INDETERMINATE:
- checkBox.setSelected(true);
- checkBox.setEnabled(true);
- break;
- }
- } else {
- checkBox.setSelected(true);
- checkBox.setEnabled(false);
- }
-
- setIcon(icon);
-
- Border border = null;
- if(hasFocus) {
- border = UIManager.getBorder("TableHeader.focusCellBorder");
- }
- if(border == null) {
- border = UIManager.getBorder("TableHeader.cellBorder");
- }
-
- setBorder(border);
-
- return this;
- }
}
}
Modified: gate/trunk/src/gate/gui/creole/manager/PluginUpdateManager.java
===================================================================
--- gate/trunk/src/gate/gui/creole/manager/PluginUpdateManager.java
2011-12-07 19:13:25 UTC (rev 14692)
+++ gate/trunk/src/gate/gui/creole/manager/PluginUpdateManager.java
2011-12-07 19:34:16 UTC (rev 14693)
@@ -11,6 +11,7 @@
*
* Mark A. Greenwood, 29/10/2011
*/
+
package gate.gui.creole.manager;
import gate.Gate;
Modified: gate/trunk/src/gate/gui/creole/manager/RemoteUpdateSite.java
===================================================================
--- gate/trunk/src/gate/gui/creole/manager/RemoteUpdateSite.java
2011-12-07 19:13:25 UTC (rev 14692)
+++ gate/trunk/src/gate/gui/creole/manager/RemoteUpdateSite.java
2011-12-07 19:34:16 UTC (rev 14693)
@@ -15,7 +15,6 @@
package gate.gui.creole.manager;
import java.net.URI;
-import java.net.URL;
import java.net.URLConnection;
import java.util.Collections;
import java.util.List;
Added: gate/trunk/src/gate/swing/SelectAllHeaderRenderer.java
===================================================================
--- gate/trunk/src/gate/swing/SelectAllHeaderRenderer.java
(rev 0)
+++ gate/trunk/src/gate/swing/SelectAllHeaderRenderer.java 2011-12-07
19:34:16 UTC (rev 14693)
@@ -0,0 +1,209 @@
+/*
+ * SelectAllHeaderRenderer.java
+ *
+ * Copyright (c) 2011, The University of Sheffield. See the file COPYRIGHT.txt
+ * in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
+ *
+ * This file is part of GATE (see http://gate.ac.uk/), and is free software,
+ * licenced under the GNU Library General Public License, Version 2, June 1991
+ * (in the distribution as file licence.html, and also available at
+ * http://gate.ac.uk/gate/licence.html).
+ *
+ * Mark A. Greenwood, 7/12/2011
+ */
+
+package gate.swing;
+
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Container;
+import java.awt.Graphics;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
+import javax.swing.Icon;
+import javax.swing.JCheckBox;
+import javax.swing.JTable;
+import javax.swing.SwingUtilities;
+import javax.swing.UIManager;
+import javax.swing.border.Border;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.JTableHeader;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+import javax.swing.table.TableModel;
+
+@SuppressWarnings("serial")
+public class SelectAllHeaderRenderer extends DefaultTableCellRenderer {
+
+ public enum Status {
+ SELECTED, DESELECTED, INDETERMINATE
+ }
+
+ protected JCheckBox checkBox = new JCheckBox();
+
+ protected JTable table;
+
+ protected Icon icon = new Icon() {
+
+ @Override
+ public int getIconWidth() {
+ return checkBox.getPreferredSize().width;
+ }
+
+ @Override
+ public int getIconHeight() {
+ return checkBox.getPreferredSize().height;
+ }
+
+ @Override
+ public void paintIcon(Component c, Graphics g, int x, int y) {
+ SwingUtilities.paintComponent(g, checkBox, (Container)c, x, y,
+ getIconWidth(), getIconHeight());
+ }
+ };
+
+ protected int column;
+
+ private volatile boolean updating = false;
+
+ public void update() {
+
+ if (updating) return;
+
+ updating = true;
+
+ TableColumn col =
table.getColumnModel().getColumn(table.convertColumnIndexToView((column)));
+
+ int selected = 0;
+ TableModel m = table.getModel();
+ for(int i = 0; i < m.getRowCount(); i++) {
+ if(Boolean.TRUE.equals(m.getValueAt(i, column))) {
+ selected++;
+ }
+ }
+
+ if(selected == 0) {
+ col.setHeaderValue(SelectAllHeaderRenderer.Status.DESELECTED);
+ } else if(selected == table.getRowCount()) {
+ col.setHeaderValue(SelectAllHeaderRenderer.Status.SELECTED);
+ } else {
+ col.setHeaderValue(SelectAllHeaderRenderer.Status.INDETERMINATE);
+ }
+
+ table.getTableHeader().repaint();
+
+ updating = false;
+
+ }
+
+ public void clicked(MouseEvent e) {
+ JTableHeader header = (JTableHeader)e.getSource();
+
+ TableColumnModel columnModel = table.getColumnModel();
+ int viewColumn = columnModel.getColumnIndexAtX(e.getX());
+ int modelColumn = table.convertColumnIndexToModel(viewColumn);
+ if(modelColumn == column) {
+ if(e.getX() <= header.getHeaderRect(viewColumn).x + icon.getIconWidth())
{
+ TableColumn column = columnModel.getColumn(viewColumn);
+ Object v = column.getHeaderValue();
+ boolean b = Status.DESELECTED.equals(v) ? true : false;
+ TableModel m = table.getModel();
+ for(int i = 0; i < m.getRowCount(); i++)
+ m.setValueAt(b, i, modelColumn);
+ column.setHeaderValue(b ? Status.SELECTED : Status.DESELECTED);
+ header.repaint();
+ }
+ }
+ }
+
+ public SelectAllHeaderRenderer(final JTable table, final int column) {
+ super();
+ this.column = column;
+ this.table = table;
+
+ // force the text to be to the right of the icon
+ this.setHorizontalTextPosition(TRAILING);
+
+ setOpaque(true);
+
+ table.getTableHeader().addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ clicked(e);
+ }
+ });
+
+ table.getModel().addTableModelListener(new TableModelListener() {
+ @Override
+ public void tableChanged(TableModelEvent e) {
+ update();
+ }
+ });
+
+ update();
+ }
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object val,
+ boolean isSelected, boolean hasFocus, int row, int col) {
+ super.getTableCellRendererComponent(table, table.getModel()
+ .getColumnName(column), isSelected, hasFocus, row, col);
+
+ JTableHeader header = table.getTableHeader();
+ if(header != null) {
+ Color fgColor = null;
+ Color bgColor = null;
+ if(hasFocus) {
+ fgColor = UIManager.getColor("TableHeader.focusCellForeground");
+ bgColor = UIManager.getColor("TableHeader.focusCellBackground");
+ }
+ if(fgColor == null) {
+ fgColor = header.getForeground();
+ }
+ if(bgColor == null) {
+ bgColor = header.getBackground();
+ }
+ setForeground(fgColor);
+ setBackground(bgColor);
+
+ setFont(header.getFont());
+ }
+
+ if(val instanceof Status) {
+ switch((Status)val){
+ case SELECTED:
+ checkBox.setSelected(true);
+ checkBox.setEnabled(true);
+ break;
+ case DESELECTED:
+ checkBox.setSelected(false);
+ checkBox.setEnabled(true);
+ break;
+ case INDETERMINATE:
+ checkBox.setSelected(true);
+ checkBox.setEnabled(false);
+ break;
+ }
+ } else {
+ checkBox.setSelected(true);
+ checkBox.setEnabled(false);
+ }
+
+ setIcon(icon);
+
+ Border border = null;
+ if(hasFocus) {
+ border = UIManager.getBorder("TableHeader.focusCellBorder");
+ }
+ if(border == null) {
+ border = UIManager.getBorder("TableHeader.cellBorder");
+ }
+
+ setBorder(border);
+
+ return this;
+ }
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Cloud Services Checklist: Pricing and Packaging Optimization
This white paper is intended to serve as a reference, checklist and point of
discussion for anyone considering optimizing the pricing and packaging model
of a cloud services business. Read Now!
http://www.accelacomm.com/jaw/sfnl/114/51491232/
_______________________________________________
GATE-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gate-cvs