[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