[Schmitzm-commits] r2115 - in trunk/schmitzm-core/src/main/java/de/schmitzm/swing: . table

scm-commit at wald.intevation.org scm-commit at wald.intevation.org
Mon Oct 15 20:08:10 CEST 2012


Author: mojays
Date: 2012-10-15 20:08:10 +0200 (Mon, 15 Oct 2012)
New Revision: 2115

Modified:
   trunk/schmitzm-core/src/main/java/de/schmitzm/swing/SwingUtil.java
   trunk/schmitzm-core/src/main/java/de/schmitzm/swing/table/ComponentRenderer.java
   trunk/schmitzm-core/src/main/java/de/schmitzm/swing/table/MutableTable.java
Log:
MutableTable: parameter for createScrollPane(.) to automatically adapt tables background color
SwingUtil: method to totally hide table grid
ComponentRenderer: attribute to hide border of focus cell


Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/swing/SwingUtil.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/swing/SwingUtil.java	2012-10-15 13:11:18 UTC (rev 2114)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/swing/SwingUtil.java	2012-10-15 18:08:10 UTC (rev 2115)
@@ -142,6 +142,7 @@
 import de.schmitzm.swing.input.InputOption;
 import de.schmitzm.swing.input.ManualInputOption;
 import de.schmitzm.swing.input.MultipleOptionPane;
+import de.schmitzm.swing.table.ComponentRenderer;
 
 /**
  * Diese Klasse beinhaltet statische Hilfsfunktionen fuer das Arbeiten mit
@@ -2559,6 +2560,19 @@
         rootPane.getGlassPane().removeMouseListener(DUMMY_MOUSEADAPTER);
         rootPane.getGlassPane().setVisible(false);      }
     }
+
+    /**
+     * Configures a table that the grid becomes completely invisible, also
+     * when selecting rows.<br>
+     * Note: This method does not hide the cell border, when a cell has the
+     *       focus! To hide also this border a new {@link TableCellRenderer} has
+     *       to be used (e.g. {@link ComponentRenderer} which allows to configure
+     *       this behavior)
+     */
+    public static void hideTableGrid(JTable table) {
+      table.setShowGrid(false);
+      table.setIntercellSpacing(new Dimension(0,0));
+    }
     
 
 

Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/swing/table/ComponentRenderer.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/swing/table/ComponentRenderer.java	2012-10-15 13:11:18 UTC (rev 2114)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/swing/table/ComponentRenderer.java	2012-10-15 18:08:10 UTC (rev 2115)
@@ -32,6 +32,8 @@
 import java.awt.Component;
 
 import javax.swing.AbstractButton;
+import javax.swing.BorderFactory;
+import javax.swing.JComponent;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
 import javax.swing.SwingConstants;
@@ -54,6 +56,9 @@
   /** Vertikale Ausrichtung der Componente innerhalb der Tabellenzelle
    *  (Default: {@link SwingConstants#CENTER}). */
   protected int vertAlign = CENTER;
+  /** Gibt an, ob die Zell-Umrandung dargestellt wird, wenn die Zelle den Fokus
+   *  hat. */
+  protected boolean focusBorderVisible = false;
 
   /**
    * Erzeugt einen neuen Zellen-Renderer. <b>Die Ausrichtung ist nur relevant
@@ -64,14 +69,31 @@
    * @param vertAlign vertikale Ausrichtung der Komponente innerhalb der
    *                  Tabellenzelle (CENTER, TOP, BOTTOM aus
    *                  {@link SwingConstants}; Default = CENTER)
+   * @param focusBorderVisible Gibt an, ob die Zell-Umrandung dargestellt wird,
+   *                           wenn die Zelle den Fokus hat           
    */
-  public ComponentRenderer(int horAlign, int vertAlign) {
+  public ComponentRenderer(int horAlign, int vertAlign, boolean focusBorderVisible) {
     super();
     this.horAlign = horAlign;
     this.vertAlign = vertAlign;
+    this.focusBorderVisible = focusBorderVisible;
   }
 
   /**
+   * Erzeugt einen neuen Zellen-Renderer. <b>Die Ausrichtung ist nur relevant
+   * fuer Komponenten vom Typ {@link AbstractButton}!</b>
+   * @param horAlign horizontale Ausrichtung der Komponente innerhalb der
+   *                 Tabellenzelle (RIGHT, LEFT, CENTER, LEADING, TRAILING aus
+   *                 {@link SwingConstants}; Default = CENTER)
+   * @param vertAlign vertikale Ausrichtung der Komponente innerhalb der
+   *                  Tabellenzelle (CENTER, TOP, BOTTOM aus
+   *                  {@link SwingConstants}; Default = CENTER)
+   */
+  public ComponentRenderer(int horAlign, int vertAlign) {
+    this(horAlign,vertAlign,true);
+  }
+
+  /**
    * Erzeugt einen neuen Zellen-Renderer.
    */
   public ComponentRenderer() {
@@ -117,6 +139,20 @@
   }
 
   /**
+   * Liefert, ob die Zell-Umrandung der Zelle, die den Fokus hat, gezeichnet wird.
+   */
+  public boolean isFocusBorderVisible() {
+    return focusBorderVisible;
+  }
+
+  /**
+   * Setzt, ob die Zell-Umrandung der Zelle, die den Fokus hat, gezeichnet wird.
+   */
+  public void setFocusBorderVisible(boolean focusBorderVisible) {
+    this.focusBorderVisible = focusBorderVisible;
+  }
+
+  /**
    * Die von der Methode {@link #createRendererComponent(JTable,Object,boolean,boolean,int,int)}
    * gelieferte Komponente wird farblich hintelegt, wenn die Tabellenzeile
    * selektiert ist.
@@ -134,6 +170,9 @@
                                boolean hasFocus,
                                int row,
                                int column) {
+    if ( !isFocusBorderVisible() )
+      hasFocus = false;
+    
     Component rendComp = createRendererComponent(table,value,isSelected,hasFocus,row,column);
     if ( rendComp instanceof AbstractButton ) {
       ((AbstractButton)rendComp).setHorizontalAlignment(horAlign);
@@ -143,6 +182,7 @@
       rendComp.setBackground(table.getSelectionBackground());
       rendComp.setForeground(table.getSelectionForeground());
     }
+    
     return rendComp;
   }
 
@@ -169,7 +209,8 @@
       DefaultTableCellRenderer defaultTableCellRenderer = new DefaultTableCellRenderer();
       defaultTableCellRenderer.setHorizontalAlignment(getHorizontalAlignment());
       defaultTableCellRenderer.setVerticalAlignment(getVerticalAlignment());
-      return defaultTableCellRenderer.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
+      Component comp = defaultTableCellRenderer.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
+      return comp;
     }
     return (Component)value;
   }
@@ -262,6 +303,21 @@
   public static class JCheckBox extends ComponentRenderer  {
     /**
      * Erzeugt einen neuen Zellen-Renderer in Form einer {@link JCheckBox}.
+     * @param horAlign horizontale Ausrichtung der Combobox innerhalb der
+     *                 Tabellenzelle (RIGHT, LEFT, CENTER, LEADING, TRAILING aus
+     *                 {@link SwingConstants}; Default = CENTER)
+     * @param vertAlign vertikale Ausrichtung der Combobox innerhalb der
+     *                  Tabellenzelle (CENTER, TOP, BOTTOM aus
+     *                  {@link SwingConstants}; Default = CENTER)
+     * @param focusBorderVisible Gibt an, ob die Zell-Umrandung dargestellt wird,
+     *                           wenn die Zelle den Fokus hat           
+     */
+    public JCheckBox(int horAlign, int vertAlign, boolean focusBorderVisible) {
+      super(horAlign, vertAlign, focusBorderVisible);
+    }
+
+    /**
+     * Erzeugt einen neuen Zellen-Renderer in Form einer {@link JCheckBox}.
      * @param horAlign horizontale Ausrichtung der Checkbox innerhalb der
      *                 Tabellenzelle (RIGHT, LEFT, CENTER, LEADING, TRAILING aus
      *                 {@link SwingConstants}; Default = CENTER)
@@ -270,7 +326,7 @@
      *                  {@link SwingConstants}; Default = CENTER)
      */
     public JCheckBox(int horAlign, int vertAlign) {
-      super(horAlign, vertAlign);
+      this(horAlign, vertAlign, true);
     }
 
     /**
@@ -316,9 +372,24 @@
      * @param vertAlign vertikale Ausrichtung der Combobox innerhalb der
      *                  Tabellenzelle (CENTER, TOP, BOTTOM aus
      *                  {@link SwingConstants}; Default = CENTER)
+     * @param focusBorderVisible Gibt an, ob die Zell-Umrandung dargestellt wird,
+     *                           wenn die Zelle den Fokus hat           
      */
+    public JComboBox(int horAlign, int vertAlign, boolean focusBorderVisible) {
+      super(horAlign, vertAlign, focusBorderVisible);
+    }
+
+    /**
+     * Erzeugt einen neuen Zellen-Renderer in Form einer {@link JComboBox}.
+     * @param horAlign horizontale Ausrichtung der Combobox innerhalb der
+     *                 Tabellenzelle (RIGHT, LEFT, CENTER, LEADING, TRAILING aus
+     *                 {@link SwingConstants}; Default = CENTER)
+     * @param vertAlign vertikale Ausrichtung der Combobox innerhalb der
+     *                  Tabellenzelle (CENTER, TOP, BOTTOM aus
+     *                  {@link SwingConstants}; Default = CENTER)
+     */
     public JComboBox(int horAlign, int vertAlign) {
-      super(horAlign, vertAlign);
+      this(horAlign, vertAlign, true);
     }
 
     /**

Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/swing/table/MutableTable.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/swing/table/MutableTable.java	2012-10-15 13:11:18 UTC (rev 2114)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/swing/table/MutableTable.java	2012-10-15 18:08:10 UTC (rev 2115)
@@ -248,15 +248,29 @@
    * den gleichen ToolTip-Text und Popupmenue-Listener wie die Tabelle.
    * Der Anwender kann somit auch auf das ScrollPane klicken, um die Tabellen-Optionen
    * anzuwaehlen.
+   * @param adaptBackground indicates whether the background color of the {@link JScrollPane}
+   *                        is set according to the tables background
    */
-  public JScrollPane createScrollPane() {
+  public JScrollPane createScrollPane(boolean adaptBackground) {
     JScrollPane scrollPane = new JScrollPane( this );
     scrollPane.setToolTipText( this.getToolTipText() );
     scrollPane.addMouseListener( this.createPopupMenuListener( this.getMask() ) );
+    if ( adaptBackground )
+      scrollPane.getViewport().setBackground( getBackground() );
     return scrollPane;
   }
 
   /**
+   * Erzeugt ein {@link JScrollPane} fuer die Tabelle. Dieses erhaelt automatisch
+   * den gleichen ToolTip-Text und Popupmenue-Listener wie die Tabelle.
+   * Der Anwender kann somit auch auf das ScrollPane klicken, um die Tabellen-Optionen
+   * anzuwaehlen.
+   */
+  public JScrollPane createScrollPane() {
+    return createScrollPane(false);
+  }
+
+  /**
    * Diese Klasse stellt das Kontextmenue fuer einen {@link MutableTable}
    * dar.
    * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a> (University of Bonn/Germany)



More information about the Schmitzm-commits mailing list