[Schmitzm-commits] r706 - trunk/src/schmitzm/swing
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Mon Feb 15 10:08:14 CET 2010
Author: alfonx
Date: 2010-02-15 10:08:12 +0100 (Mon, 15 Feb 2010)
New Revision: 706
Modified:
trunk/src/schmitzm/swing/JPanel.java
Log:
* Improved the setEnabled() method in schmitzm JPanel - there was a bug with the titled border color if the method was called multiple times with the same value.
Modified: trunk/src/schmitzm/swing/JPanel.java
===================================================================
--- trunk/src/schmitzm/swing/JPanel.java 2010-02-14 22:03:37 UTC (rev 705)
+++ trunk/src/schmitzm/swing/JPanel.java 2010-02-15 09:08:12 UTC (rev 706)
@@ -41,49 +41,61 @@
/**
* Diese Klasse erweitert das {@link javax.swing.JPanel} aus Standard-Java um
* einige (nuetzliche) Funktionen.
- * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a> (University of Bonn/Germany)
+ *
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+ * (University of Bonn/Germany)
* @version 1.0
*/
public class JPanel extends javax.swing.JPanel {
- /** Wenn beim deaktivieren evt. ein {@link TitledBorder} ausgegraut wird, dann wird sich in dieser Variable die orginale Farbe gemerkt.**/
- private Color backupColor = null;
+ /**
+ * Wenn beim deaktivieren evt. ein {@link TitledBorder} ausgegraut wird,
+ * dann wird sich in dieser Variable die orginale Farbe gemerkt.
+ **/
+ private Color backupColor = null;
-/**
- * Erzeugt ein neues Panel.
- * @param layout {@link LayoutManager} fuer das Panel
- * @param isDoubleBuffered Flag, ob zusaetzlicher Speicher verwendet werden soll um
- * flicker-freie Updates zu gewaehrleisten
- */
- public JPanel(LayoutManager layout, boolean isDoubleBuffered) {
- super(layout, isDoubleBuffered);
- }
+ /**
+ * Erzeugt ein neues Panel.
+ *
+ * @param layout
+ * {@link LayoutManager} fuer das Panel
+ * @param isDoubleBuffered
+ * Flag, ob zusaetzlicher Speicher verwendet werden soll um
+ * flicker-freie Updates zu gewaehrleisten
+ */
+ public JPanel(LayoutManager layout, boolean isDoubleBuffered) {
+ super(layout, isDoubleBuffered);
+ }
- /**
- * Erzeugt ein neues Panel.
- * @param layout {@link LayoutManager} fuer das Panel
- */
- public JPanel(LayoutManager layout) {
- super(layout);
- }
+ /**
+ * Erzeugt ein neues Panel.
+ *
+ * @param layout
+ * {@link LayoutManager} fuer das Panel
+ */
+ public JPanel(LayoutManager layout) {
+ super(layout);
+ }
- /**
- * Erzeugt ein neues Panel mit einem {@link FlowLayout}.
- * @param isDoubleBuffered Flag, ob zusaetzlicher Speicher verwendet werden soll um
- * flicker-freie Updates zu gewaehrleisten
- */
- public JPanel(boolean isDoubleBuffered) {
- super(isDoubleBuffered);
- }
+ /**
+ * Erzeugt ein neues Panel mit einem {@link FlowLayout}.
+ *
+ * @param isDoubleBuffered
+ * Flag, ob zusaetzlicher Speicher verwendet werden soll um
+ * flicker-freie Updates zu gewaehrleisten
+ */
+ public JPanel(boolean isDoubleBuffered) {
+ super(isDoubleBuffered);
+ }
- /**
- * Erzeugt ein neues Panel mit einem {@link FlowLayout}.
- */
- public JPanel() {
- super();
- }
+ /**
+ * Erzeugt ein neues Panel mit einem {@link FlowLayout}.
+ */
+ public JPanel() {
+ super();
+ }
- /**
+ /**
* Erzeugt ein neues Panel mit angegebenen {@link LayoutManager} und einem
* {@link TitledBorder}
*
@@ -98,51 +110,64 @@
}
}
-/**
- * Aktiviert und deaktiviert alle Komponenten des Panels.
- */
- @Override
- public void setEnabled(boolean enabled) {
- super.setEnabled(enabled);
-
- if (getBorder() instanceof TitledBorder) {
- TitledBorder tb = (TitledBorder)getBorder();
- if(enabled) {
- if (backupColor != null) tb.setTitleColor(backupColor);
- } else {
- backupColor = tb.getTitleColor();
- tb.setTitleColor(backupColor.brighter().brighter());
- }
- }
-
- for (Component c : getComponents())
- c.setEnabled(enabled);
- }
+ /**
+ * Enables or disables all Components of this panel recursively.<br/>
+ * If this component has a {@link TitledBorder}, the font color will be
+ * brightened while it is disabled.
+ */
+ @Override
+ public void setEnabled(boolean enabled) {
+
+ // Color changing may not be done twice, even if setEnabled(false)
+ // is called multiple times.
+ if (enabled != isEnabled() && getBorder() instanceof TitledBorder) {
+ TitledBorder tb = (TitledBorder) getBorder();
+ if (enabled) {
+ // We are enabling this component
+ if (backupColor != null) {
+ tb.setTitleColor(backupColor);
+ backupColor = null;
+ }
+ } else {
+ // We are disabling this component
+ backupColor = tb.getTitleColor();
+ tb.setTitleColor(backupColor.brighter().brighter());
+ }
+ }
- /**
- * Setzt die Hintergrund-Farbe der Komponente und optional die der
- * untergeordneten Komponenten
- * @param color neue Hintergrund-Farbe
- * @param components bestimmt, ob auch die Hintergrundfarbe der Unterkomponenten
- * gesetzt werden soll
- */
- public void setBackground(Color color, boolean components) {
- // Hintergrund von Panel selbst setzen
- super.setBackground(color);
- // wenn rekursive Verarbeitung, dann auch den Hintergrund
- // der Componenten aendern
- if ( components )
- for ( Component c : getComponents() )
- if ( c instanceof JPanel )
- ((JPanel)c).setBackground(color,components);
- else
- c.setBackground(color);
- }
-
+ super.setEnabled(enabled);
+
+ // Passing it down to all sub-components
+ for (Component c : getComponents())
+ c.setEnabled(enabled);
+ }
/**
- * Nuetzlich wenn die Componente gedruckt (z.B. wenn ein Screenshot
- * gemacht wird) wird. Dann werden wird der Hintergrund auf {@link Color#WHITE}
+ * Setzt die Hintergrund-Farbe der Komponente und optional die der
+ * untergeordneten Komponenten
+ *
+ * @param color
+ * neue Hintergrund-Farbe
+ * @param components
+ * bestimmt, ob auch die Hintergrundfarbe der Unterkomponenten
+ * gesetzt werden soll
+ */
+ public void setBackground(Color color, boolean components) {
+ // Hintergrund von Panel selbst setzen
+ super.setBackground(color);
+ // wenn rekursive Verarbeitung, dann auch den Hintergrund
+ // der Componenten aendern
+ if (components)
+ for (Component c : getComponents())
+ if (c instanceof JPanel)
+ ((JPanel) c).setBackground(color, components);
+ else
+ c.setBackground(color);
+ }
+
+ /**
+ * Nuetzlich wenn die Componente gedruckt (z.B. wenn ein Screenshot gemacht
+ * wird) wird. Dann werden wird der Hintergrund auf {@link Color#WHITE}
* gesetzt.
*/
@Override
More information about the Schmitzm-commits
mailing list