r1259 - in jaxx/trunk/jaxx-runtime-swing: . src/main/java/jaxx/runtime/swing
Author: tchemit Date: 2009-03-09 00:35:43 +0000 (Mon, 09 Mar 2009) New Revision: 1259 Modified: jaxx/trunk/jaxx-runtime-swing/changelog.txt jaxx/trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/BlockingLayerUI.java Log: in BlockingLayerUI, add a new state 'block' to enable/disable blocking mode with a blockingColor Modified: jaxx/trunk/jaxx-runtime-swing/changelog.txt =================================================================== --- jaxx/trunk/jaxx-runtime-swing/changelog.txt 2009-03-04 23:12:53 UTC (rev 1258) +++ jaxx/trunk/jaxx-runtime-swing/changelog.txt 2009-03-09 00:35:43 UTC (rev 1259) @@ -1,4 +1,5 @@ 1.3 ?? 200903?? + * 20090309 [chemit] - in BlockingLayerUI, add a new state 'block' to enable/disable blocking mode with a blockingColor * 20090303 [chemit] - in BlockingLayerUI, add a new state 'useIcon' to enable/disable use of the action icon - add a simple WizardModel * 20090301 [chemit] - add usefull methods in JAXXButtonGroup Modified: jaxx/trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/BlockingLayerUI.java =================================================================== --- jaxx/trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/BlockingLayerUI.java 2009-03-04 23:12:53 UTC (rev 1258) +++ jaxx/trunk/jaxx-runtime-swing/src/main/java/jaxx/runtime/swing/BlockingLayerUI.java 2009-03-09 00:35:43 UTC (rev 1259) @@ -1,8 +1,12 @@ package jaxx.runtime.swing; +import java.awt.AlphaComposite; +import java.awt.Color; import java.awt.Component; import java.awt.Graphics2D; +import java.awt.Insets; import java.awt.Point; +import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; @@ -34,6 +38,7 @@ public static final String CAN_CLICK_PROPERTY = "canClick"; public static final String ACCEPT_ICON_PROPERTY = "acceptIcon"; public static final String BLOCK_ICON_PROPERTY = "blockIcon"; + public static final String BLOCK_PROPERTY = "block"; private static final long serialVersionUID = 1L; /** * Action to be treated when click on icon @@ -48,6 +53,10 @@ */ protected BufferedImage acceptIcon; /** + * Optinal color to put fill background when blocking + */ + protected Color blockingColor; + /** * Internal state to known when we can accept click */ protected boolean canClick; @@ -60,6 +69,10 @@ * By default, this is active. */ protected boolean useIcon = true; + /** + * Internal state when should block event and paint layer + */ + protected boolean block; public void setAcceptAction(Action acceptAction) { this.acceptAction = acceptAction; @@ -86,6 +99,28 @@ } } + public void setBlock(boolean block) { + boolean oldvalue = this.block; + this.block = block; + firePropertyChange(BLOCK_PROPERTY, oldvalue, block); + if (oldvalue != block) { + setDirty(true); + } + } + + @Override + public void setDirty(boolean isDirty) { + super.setDirty(isDirty); + } + + public void setBlockIcon(BufferedImage blockIcon) { + this.blockIcon = blockIcon; + } + + public void setBlockingColor(Color blockingColor) { + this.blockingColor = blockingColor; + } + public BufferedImage getBlockIcon() { return blockIcon; } @@ -99,7 +134,11 @@ } public void setUseIcon(boolean useIcon) { + boolean oldvalue = this.useIcon; this.useIcon = useIcon; + if (oldvalue != useIcon) { + setDirty(true); + } } @Override @@ -109,13 +148,17 @@ clone.acceptIcon = acceptIcon; clone.blockIcon = blockIcon; clone.useIcon = useIcon; + clone.block = block; + clone.blockingColor = blockingColor; clone.setCanClick(false); return clone; } @Override protected void processKeyEvent(KeyEvent e, JXLayer<JComponent> l) { - e.consume(); + if (useIcon || block) { + e.consume(); + } } @Override @@ -123,7 +166,9 @@ if (useIcon) { updateCanClickState(l, e); } - e.consume(); + if (useIcon || block) { + e.consume(); + } } @Override @@ -143,12 +188,32 @@ break; } } - e.consume(); + if (useIcon || block) { + e.consume(); + } + } @Override protected void paintLayer(Graphics2D g2, JXLayer<JComponent> l) { super.paintLayer(g2, l); + if (block && blockingColor != null) { + // to be in sync with the view if the layer has a border + /*Insets layerInsets = l.getInsets(); + g2.translate(layerInsets.left, layerInsets.top); + + JComponent view = l.getView(); + // To prevent painting on view's border + Insets insets = view.getInsets(); + g2.clip(new Rectangle(insets.left, insets.top, + view.getWidth() - insets.left - insets.right, + view.getHeight() - insets.top - insets.bottom)); + */ + + g2.setColor(blockingColor); + g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .1f)); + g2.fillRect(0, 0, l.getWidth(), l.getHeight()); + } if (useIcon && getCurrentIcon() != null) { g2.drawImage(getCurrentIcon(), l.getWidth() - getCurrentIcon().getWidth() - 1, 0, null); }
participants (1)
-
tchemit@users.labs.libre-entreprise.org