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

Reply via email to