[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