This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository jaxx. See http://git.nuiton.org/jaxx.git commit f2d018c61c48b7ef812aab828452ae0e5c847ad9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Wed Apr 22 18:41:09 2015 +0200 Can now specify components to accept by their type (refs #3678) --- .../jaxx/swing/extra/layer/BlockingLayerUI.java | 143 +++++++++++---------- 1 file changed, 73 insertions(+), 70 deletions(-) diff --git a/jaxx-swing-extra/src/main/java/org/nuiton/jaxx/swing/extra/layer/BlockingLayerUI.java b/jaxx-swing-extra/src/main/java/org/nuiton/jaxx/swing/extra/layer/BlockingLayerUI.java index 8061ca5..71099b3 100644 --- a/jaxx-swing-extra/src/main/java/org/nuiton/jaxx/swing/extra/layer/BlockingLayerUI.java +++ b/jaxx-swing-extra/src/main/java/org/nuiton/jaxx/swing/extra/layer/BlockingLayerUI.java @@ -36,13 +36,15 @@ import java.awt.Graphics2D; import java.awt.Point; import java.awt.RenderingHints; import java.awt.event.ActionEvent; +import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; import java.awt.image.BufferedImage; import java.beans.PropertyChangeEvent; import java.util.Arrays; -import java.util.List; +import java.util.HashSet; +import java.util.Set; /** * A JXLayer ui implementation that permits to block a component but still @@ -100,10 +102,25 @@ public class BlockingLayerUI extends LayerUI<JComponent> { protected boolean block; /** Extra components names to accept even in block mode */ - protected List<String> acceptedComponentNames; + protected final Set<String> acceptedComponentNames; + + /** Extra components types to accept even in block mode */ + protected final Set<Class<?>> acceptedComponentTypes; + + public BlockingLayerUI() { + acceptedComponentNames = new HashSet<String>(); + acceptedComponentTypes = new HashSet<Class<?>>(); + } public void setAcceptedComponentNames(String... acceptedComponentNames) { - this.acceptedComponentNames = Arrays.asList(acceptedComponentNames); + this.acceptedComponentNames.clear(); + this.acceptedComponentNames.addAll(Arrays.asList(acceptedComponentNames)); + setDirty(true); + } + + public void setAcceptedComponentTypes(Class<?>... acceptedComponentTypes) { + this.acceptedComponentTypes.clear(); + this.acceptedComponentTypes.addAll(Arrays.asList(acceptedComponentTypes)); setDirty(true); } @@ -199,21 +216,10 @@ public class BlockingLayerUI extends LayerUI<JComponent> { protected void processKeyEvent(KeyEvent e, JLayer<? extends JComponent> l) { if (useIcon) { e.consume(); - return; - } + } else if (block) { + + acceptEventOrConsumeIt(e); - if (block) { - Object source = e.getSource(); - if (!(source instanceof JComponent)) { - e.consume(); - return; - } - JComponent comp = (JComponent) source; - String compName = comp.getName(); - if (acceptedComponentNames == null || - !acceptedComponentNames.contains(compName)) { - e.consume(); - } } } @@ -222,20 +228,10 @@ public class BlockingLayerUI extends LayerUI<JComponent> { if (useIcon) { updateCanClickState(l, e); e.consume(); - } + } else if (block) { + + acceptEventOrConsumeIt(e); - if (block) { - Object source = e.getSource(); - if (!(source instanceof JComponent)) { - e.consume(); - return; - } - JComponent comp = (JComponent) source; - String compName = comp.getName(); - if (acceptedComponentNames == null || - !acceptedComponentNames.contains(compName)) { - e.consume(); - } } } @@ -255,35 +251,23 @@ public class BlockingLayerUI extends LayerUI<JComponent> { } break; } - } - if (useIcon) { - e.consume(); - return; - } + } else if (block) { + + if (acceptEventOrConsumeIt(e)) { + + switch (e.getID()) { + case MouseEvent.MOUSE_ENTERED: + break; + case MouseEvent.MOUSE_EXITED: + break; + case MouseEvent.MOUSE_CLICKED: + acceptEvent(e, l); + break; + } - if (block) { - Object source = e.getSource(); - if (!(source instanceof JComponent)) { - e.consume(); - return; - } - JComponent comp = (JComponent) source; - String compName = comp.getName(); - if (acceptedComponentNames == null || - !acceptedComponentNames.contains(compName)) { - e.consume(); - return; - } - switch (e.getID()) { - case MouseEvent.MOUSE_ENTERED: - break; - case MouseEvent.MOUSE_EXITED: - break; - case MouseEvent.MOUSE_CLICKED: - acceptEvent(e, l); - break; } + } } @@ -294,27 +278,46 @@ public class BlockingLayerUI extends LayerUI<JComponent> { if (useIcon) { e.consume(); - return; - } + } else if (block) { - if (block) { - Object source = e.getSource(); - if (!(source instanceof JComponent)) { - e.consume(); - return; + if (acceptEventOrConsumeIt(e)) { + acceptEvent(e, l); } - JComponent comp = (JComponent) source; - String compName = comp.getName(); - if (acceptedComponentNames == null || - !acceptedComponentNames.contains(compName)) { - e.consume(); - return; + + } + + } + + protected boolean acceptEventOrConsumeIt(InputEvent e) { + + Object source = e.getSource(); + + boolean accept = source instanceof JComponent; + if (accept) { + + JComponent component = (JComponent) source; + + accept = acceptedComponentNames.contains(component.getName()); + + if (!accept) { + + for (Class<?> acceptedComponentType : acceptedComponentTypes) { + accept = acceptedComponentType.isAssignableFrom(component.getClass()); + if (accept) { + break; + } + } + } - acceptEvent(e, l); + } + if (!accept) { + e.consume(); } + return accept; + } @Override -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.