This is an automated email from the git hooks/post-receive script. New commit to branch feature/3468 in repository jaxx. See https://gitlab.nuiton.org/nuiton/jaxx.git commit 2ec1a8d1d1987fb9ddbbe85e68fb118a41fada1e Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Dec 30 11:17:28 2016 +0100 Use JLayer instead of JXLayer (but requires to up jdk level to 1.7) (See #3468) --- jaxx-compiler/pom.xml | 5 - .../jaxx/compiler/spi/DefaultInitializer.java | 8 +- .../{JXLayerHandler.java => JLayerHandler.java} | 32 +++--- jaxx-demo/pom.xml | 5 - jaxx-runtime/pom.xml | 5 - .../java/org/nuiton/jaxx/runtime/SwingUtil.java | 30 +++--- .../jaxx/runtime/awt/visitor/BuildTreeVisitor.java | 7 +- .../nuiton/jaxx/runtime/swing/BlockingLayerUI.java | 94 +++++++++++------- .../jaxx/runtime/swing/BlockingLayerUI2.java | 110 +++++++++++++-------- jaxx-validator/pom.xml | 5 - .../jaxx/validator/swing/SwingValidator.java | 16 +-- .../swing/ui/AbstractBeanValidatorUI.java | 6 +- .../jaxx/validator/swing/ui/IconValidationUI.java | 19 +++- .../jaxx/validator/swing/ui/ImageValidationUI.java | 22 +++-- .../swing/ui/TranslucentValidationUI.java | 52 +++++++--- pom.xml | 6 -- 16 files changed, 240 insertions(+), 182 deletions(-) diff --git a/jaxx-compiler/pom.xml b/jaxx-compiler/pom.xml index 7656f6d..8262a67 100644 --- a/jaxx-compiler/pom.xml +++ b/jaxx-compiler/pom.xml @@ -87,11 +87,6 @@ </dependency> <dependency> - <groupId>org.swinglabs</groupId> - <artifactId>jxlayer</artifactId> - </dependency> - - <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> diff --git a/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/spi/DefaultInitializer.java b/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/spi/DefaultInitializer.java index 19bddb8..d928513 100644 --- a/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/spi/DefaultInitializer.java +++ b/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/spi/DefaultInitializer.java @@ -43,6 +43,7 @@ import org.nuiton.jaxx.compiler.tags.swing.JAXXTreeHandler; import org.nuiton.jaxx.compiler.tags.swing.JCheckBoxHandler; import org.nuiton.jaxx.compiler.tags.swing.JComboBoxHandler; import org.nuiton.jaxx.compiler.tags.swing.JInternalFrameHandler; +import org.nuiton.jaxx.compiler.tags.swing.JLayerHandler; import org.nuiton.jaxx.compiler.tags.swing.JListHandler; import org.nuiton.jaxx.compiler.tags.swing.JMenuHandler; import org.nuiton.jaxx.compiler.tags.swing.JPasswordFieldHandler; @@ -58,7 +59,6 @@ import org.nuiton.jaxx.compiler.tags.swing.JTextComponentHandler; import org.nuiton.jaxx.compiler.tags.swing.JToolBarHandler; import org.nuiton.jaxx.compiler.tags.swing.JTreeHandler; import org.nuiton.jaxx.compiler.tags.swing.JWindowHandler; -import org.nuiton.jaxx.compiler.tags.swing.JXLayerHandler; import org.nuiton.jaxx.compiler.tags.swing.RowHandler; import org.nuiton.jaxx.compiler.tags.swing.TabHandler; import org.nuiton.jaxx.compiler.tags.swing.TableHandler; @@ -75,7 +75,6 @@ import org.nuiton.jaxx.runtime.swing.Table; import org.nuiton.jaxx.runtime.swing.editor.EnumEditor; import org.nuiton.jaxx.runtime.swing.editor.LocaleEditor; import org.nuiton.jaxx.validator.swing.SwingValidator; -import org.jdesktop.jxlayer.JXLayer; import javax.swing.JCheckBox; import javax.swing.JCheckBoxMenuItem; @@ -85,6 +84,7 @@ import javax.swing.JEditorPane; import javax.swing.JFormattedTextField; import javax.swing.JFrame; import javax.swing.JInternalFrame; +import javax.swing.JLayer; import javax.swing.JList; import javax.swing.JMenu; import javax.swing.JPasswordField; @@ -184,8 +184,8 @@ public class DefaultInitializer implements Initializer { registerBean(JFrame.class, JWindowHandler.class); registerBean(JWindow.class, JWindowHandler.class); - // JXLayer - registerBean(JXLayer.class, JXLayerHandler.class); + // JLayer + registerBean(JLayer.class, JLayerHandler.class); registerBean(Application.class, ApplicationHandler.class); diff --git a/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/tags/swing/JXLayerHandler.java b/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/tags/swing/JLayerHandler.java similarity index 76% rename from jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/tags/swing/JXLayerHandler.java rename to jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/tags/swing/JLayerHandler.java index 5a063c9..f97e33f 100644 --- a/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/tags/swing/JXLayerHandler.java +++ b/jaxx-compiler/src/main/java/org/nuiton/jaxx/compiler/tags/swing/JLayerHandler.java @@ -21,40 +21,30 @@ */ package org.nuiton.jaxx.compiler.tags.swing; +import org.apache.commons.collections4.CollectionUtils; import org.nuiton.jaxx.compiler.CompiledObject; import org.nuiton.jaxx.compiler.CompilerException; import org.nuiton.jaxx.compiler.JAXXCompiler; import org.nuiton.jaxx.compiler.reflect.ClassDescriptor; import org.nuiton.jaxx.compiler.reflect.ClassDescriptorHelper; import org.nuiton.jaxx.compiler.tags.DefaultComponentHandler; -import org.apache.commons.collections4.CollectionUtils; -import org.jdesktop.jxlayer.JXLayer; +import javax.swing.JLayer; import java.awt.Component; /** - * To deal with JXLayer, since from version 3.0.4, we can not use any longer - * the {@link JXLayer#add(Component)} ! but must now use the - * method {@link JXLayer#setView(Component)}. + * To deal with JLayer, since from version 3.0.4, we can not use any longer + * the {@link JLayer#add(Component)} ! but must now use the + * method {@link JLayer#setView(Component)}. * * @author Tony Chemit - chemit@codelutin.com * @since 2.4 */ -public class JXLayerHandler extends DefaultComponentHandler { - - public static final String ATTRIBUTE_ORIENTATION = "orientation"; - - public static final String ORIENTATION_VALUE_HORIZONTAL = "horizontal"; - - public static final String ORIENTATION_VALUE_VERTICAL = "vertical"; - - public static final String ORIENTATION_VALUE_VERTICAL_SPLIT = "vertical_split"; - - public static final String ORIENTATION_VALUE_HORIZONTAL_SPLIT = "horizontal_split"; +public class JLayerHandler extends DefaultComponentHandler { - public JXLayerHandler(ClassDescriptor beanClass) { + public JLayerHandler(ClassDescriptor beanClass) { super(beanClass); - ClassDescriptorHelper.checkSupportClass(getClass(), beanClass, JXLayer.class); + ClassDescriptorHelper.checkSupportClass(getClass(), beanClass, JLayer.class); } @Override @@ -67,16 +57,16 @@ public class JXLayerHandler extends DefaultComponentHandler { JAXXCompiler compiler) throws CompilerException { if (constraints != null) { - compiler.reportError("JXLayer does not accept constraints"); + compiler.reportError("JLayer does not accept constraints"); return; } if (CollectionUtils.isNotEmpty(getChilds())) { // already one child, authrozied only one child... - compiler.reportError("JXLayer is limited to one children"); + compiler.reportError("JLayer is limited to one children"); return; } - super.addChild(child, constraints, compiler); + super.addChild(child, null, compiler); } diff --git a/jaxx-demo/pom.xml b/jaxx-demo/pom.xml index 654183a..a797731 100644 --- a/jaxx-demo/pom.xml +++ b/jaxx-demo/pom.xml @@ -182,11 +182,6 @@ </dependency> <dependency> - <groupId>org.swinglabs</groupId> - <artifactId>jxlayer</artifactId> - </dependency> - - <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </dependency> diff --git a/jaxx-runtime/pom.xml b/jaxx-runtime/pom.xml index e854045..249e94f 100644 --- a/jaxx-runtime/pom.xml +++ b/jaxx-runtime/pom.xml @@ -97,11 +97,6 @@ </dependency> <dependency> - <groupId>org.swinglabs</groupId> - <artifactId>jxlayer</artifactId> - </dependency> - - <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <scope>test</scope> diff --git a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/SwingUtil.java b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/SwingUtil.java index 3554caa..5136908 100644 --- a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/SwingUtil.java +++ b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/SwingUtil.java @@ -33,8 +33,6 @@ import org.nuiton.jaxx.runtime.swing.renderer.EnumTableCellRenderer; import org.nuiton.jaxx.runtime.swing.renderer.I18nTableCellRenderer; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.jdesktop.jxlayer.JXLayer; -import org.jdesktop.jxlayer.plaf.LayerUI; import org.jdesktop.swingx.JXTreeTable; import javax.swing.ComboBoxModel; @@ -45,6 +43,7 @@ import javax.swing.ImageIcon; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JLabel; +import javax.swing.JLayer; import javax.swing.JLayeredPane; import javax.swing.JList; import javax.swing.JRootPane; @@ -61,6 +60,7 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; +import javax.swing.plaf.LayerUI; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; @@ -452,17 +452,17 @@ public class SwingUtil extends JAXXUtil { } /** - * Box a component in a {@link JXLayer}. + * Box a component in a {@link JLayer}. * * @param component the component to box - * @return the {@link JXLayer} boxing the component + * @return the {@link JLayer} boxing the component */ - public static <V extends JComponent> JXLayer<V> boxComponentWithJxLayer(V component) { - JXLayer<V> layer = getLayer(component); + public static <V extends JComponent> JLayer<V> boxComponentWithJxLayer(V component) { + JLayer<V> layer = getLayer(component); if (layer != null) { return layer; } - layer = new JXLayer<V>(); + layer = new JLayer<V>(); layer.setView(component); return layer; } @@ -484,21 +484,21 @@ public class SwingUtil extends JAXXUtil { return result; } - public static <V extends JComponent> JXLayer<V> getLayer(V comp) { + public static <V extends JComponent> JLayer<V> getLayer(V comp) { if (!isLayered(comp)) { return null; } - return (JXLayer<V>) comp.getParent(); + return (JLayer<V>) comp.getParent(); } public static void setLayerUI(JComponent comp, LayerUI<JComponent> ui) { - JXLayer<JComponent> layer = getLayer(comp); + JLayer<JComponent> layer = getLayer(comp); layer.setUI(ui); } public static boolean isLayered(JComponent comp) { Container parent = comp.getParent(); - return parent != null && parent instanceof JXLayer<?>; + return parent != null && parent instanceof JLayer<?>; } /** @@ -963,8 +963,8 @@ public class SwingUtil extends JAXXUtil { if (rect == null || rect.width == 0 || rect.height == 0) { rect = comp.getBounds(); } - if (comp instanceof JXLayer<?>) { - JXLayer<?> layer = (JXLayer<?>) comp; + if (comp instanceof JLayer<?>) { + JLayer<?> layer = (JLayer<?>) comp; comp = layer.getView(); } if (comp instanceof Container) { @@ -992,8 +992,8 @@ public class SwingUtil extends JAXXUtil { if (rect == null || rect.width == 0 || rect.height == 0) { rect = comp.getBounds(); } - if (comp instanceof JXLayer<?>) { - JXLayer<?> layer = (JXLayer<?>) comp; + if (comp instanceof JLayer<?>) { + JLayer<?> layer = (JLayer<?>) comp; comp = layer.getView(); } if (comp instanceof Container) { diff --git a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/awt/visitor/BuildTreeVisitor.java b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/awt/visitor/BuildTreeVisitor.java index 6fa8c4c..7d93949 100644 --- a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/awt/visitor/BuildTreeVisitor.java +++ b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/awt/visitor/BuildTreeVisitor.java @@ -22,8 +22,7 @@ package org.nuiton.jaxx.runtime.awt.visitor; * #L% */ -import org.jdesktop.jxlayer.JXLayer; - +import javax.swing.JLayer; import javax.swing.JRootPane; import java.awt.Component; import java.awt.Container; @@ -52,8 +51,8 @@ public class BuildTreeVisitor implements ComponentTreeNodeVisitor { Container container = (Container) component; //TODO-TC-2013-03-17 Should use some rules to add this. for (Component child : container.getComponents()) { - if (child instanceof JXLayer<?>) { - child = ((JXLayer<?>) child).getView(); + if (child instanceof JLayer<?>) { + child = ((JLayer<?>) child).getView(); } else if (child instanceof JRootPane) { child = ((JRootPane) child).getLayeredPane(); } diff --git a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/BlockingLayerUI.java b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/BlockingLayerUI.java index bd32214..00549b7 100644 --- a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/BlockingLayerUI.java +++ b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/BlockingLayerUI.java @@ -21,15 +21,16 @@ */ package org.nuiton.jaxx.runtime.swing; -import org.jdesktop.jxlayer.JXLayer; -import org.jdesktop.jxlayer.plaf.AbstractLayerUI; import javax.swing.Action; import javax.swing.ImageIcon; import javax.swing.JComponent; +import javax.swing.JLayer; +import javax.swing.plaf.LayerUI; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Component; +import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.RenderingHints; @@ -52,13 +53,13 @@ import java.util.Set; * To hook an click on the layer's icon, you can : * * <ul><li>pass an Action via method {@link #setAcceptAction(Action)}</li> - * <li>override the method {@link #acceptEvent(MouseEvent, JXLayer)}</li> + * <li>override the method {@link #acceptEvent(MouseEvent, JLayer)}</li> * </ul> * * @author Tony Chemit - chemit@codelutin.com * @since 1.2 */ -public class BlockingLayerUI extends AbstractLayerUI<JComponent> { +public class BlockingLayerUI extends LayerUI<JComponent> { public static final String CAN_CLICK_PROPERTY = "canClick"; @@ -67,7 +68,6 @@ public class BlockingLayerUI extends AbstractLayerUI<JComponent> { 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 */ protected Action acceptAction; @@ -111,13 +111,13 @@ public class BlockingLayerUI extends AbstractLayerUI<JComponent> { public void setAcceptedComponentNames(String... acceptedComponentNames) { this.acceptedComponentNames.clear(); this.acceptedComponentNames.addAll(Arrays.asList(acceptedComponentNames)); - setDirty(true); +// setDirty(true); } public void setAcceptedComponentTypes(Class<?>... acceptedComponentTypes) { this.acceptedComponentTypes.clear(); this.acceptedComponentTypes.addAll(Arrays.asList(acceptedComponentTypes)); - setDirty(true); +// setDirty(true); } public void setAcceptAction(Action acceptAction) { @@ -127,37 +127,37 @@ public class BlockingLayerUI extends AbstractLayerUI<JComponent> { public void setAcceptIcon(ImageIcon acceptIcon) { this.acceptIcon = prepareIcon(acceptIcon); firePropertyChange(ACCEPT_ICON_PROPERTY, null, acceptIcon); - setDirty(true); +// setDirty(true); } public void setBlockIcon(ImageIcon blockIcon) { this.blockIcon = prepareIcon(blockIcon); firePropertyChange(BLOCK_ICON_PROPERTY, null, blockIcon); - setDirty(true); +// setDirty(true); } public void setCanClick(boolean canClick) { boolean oldvalue = this.canClick; this.canClick = canClick; firePropertyChange(CAN_CLICK_PROPERTY, oldvalue, canClick); - if (oldvalue != canClick) { - setDirty(true); - } +// if (oldvalue != canClick) { +// setDirty(true); +// } } public void setBlock(boolean block) { boolean oldvalue = this.block; this.block = block; firePropertyChange(BLOCK_PROPERTY, oldvalue, block); - if (oldvalue != block) { - setDirty(true); - } +// if (oldvalue != block) { +// setDirty(true); +// } } - @Override - public void setDirty(boolean isDirty) { - super.setDirty(isDirty); - } +// @Override +// public void setDirty(boolean isDirty) { +// super.setDirty(isDirty); +// } public void setBlockIcon(BufferedImage blockIcon) { this.blockIcon = blockIcon; @@ -182,9 +182,9 @@ public class BlockingLayerUI extends AbstractLayerUI<JComponent> { public void setUseIcon(boolean useIcon) { boolean oldvalue = this.useIcon; this.useIcon = useIcon; - if (oldvalue != useIcon) { - setDirty(true); - } +// if (oldvalue != useIcon) { +// setsetDirty(true); +// } } @Override @@ -201,7 +201,7 @@ public class BlockingLayerUI extends AbstractLayerUI<JComponent> { } @Override - protected void processKeyEvent(KeyEvent e, JXLayer<? extends JComponent> l) { + protected void processKeyEvent(KeyEvent e, JLayer<? extends JComponent> l) { if (useIcon) { e.consume(); } else if (block) { @@ -212,7 +212,7 @@ public class BlockingLayerUI extends AbstractLayerUI<JComponent> { } @Override - protected void processMouseMotionEvent(MouseEvent e, JXLayer<? extends JComponent> l) { + protected void processMouseMotionEvent(MouseEvent e, JLayer<? extends JComponent> l) { if (useIcon) { updateCanClickState(l, e); e.consume(); @@ -224,7 +224,7 @@ public class BlockingLayerUI extends AbstractLayerUI<JComponent> { } @Override - protected void processMouseEvent(MouseEvent e, JXLayer<? extends JComponent> l) { + protected void processMouseEvent(MouseEvent e, JLayer<? extends JComponent> l) { if (useIcon) { switch (e.getID()) { case MouseEvent.MOUSE_ENTERED: @@ -261,7 +261,7 @@ public class BlockingLayerUI extends AbstractLayerUI<JComponent> { } @Override - protected void processMouseWheelEvent(MouseWheelEvent e, JXLayer<? extends JComponent> l) { + protected void processMouseWheelEvent(MouseWheelEvent e, JLayer<? extends JComponent> l) { if (useIcon) { @@ -309,8 +309,8 @@ public class BlockingLayerUI extends AbstractLayerUI<JComponent> { } @Override - protected void paintLayer(Graphics2D g2, JXLayer<? extends JComponent> l) { - super.paintLayer(g2, l); + public void paint(Graphics g, JComponent c) { + super.paint(g, c); if (block && blockingColor != null) { // to be in sync with the view if the layer has a border /*Insets layerInsets = l.getInsets(); @@ -324,16 +324,42 @@ public class BlockingLayerUI extends AbstractLayerUI<JComponent> { 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()); + g.setColor(blockingColor); + ((Graphics2D) g).setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .1f)); + g.fillRect(0, 0, c.getWidth(), c.getHeight()); } if (useIcon && getCurrentIcon() != null) { - g2.drawImage(getCurrentIcon(), l.getWidth() - getCurrentIcon().getWidth() - 1, 0, null); + g.drawImage(getCurrentIcon(), c.getWidth() - getCurrentIcon().getWidth() - 1, 0, null); } + } - protected void acceptEvent(MouseEvent e, JXLayer<? extends JComponent> l) { +// @Override +// protected void paintLayer(Graphics2D g2, JLayer<? extends 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); +// } +// } + + protected void acceptEvent(MouseEvent e, JLayer<? extends JComponent> l) { if (acceptAction != null) { acceptAction.putValue("layer", l); Component source = l.getView(); @@ -355,7 +381,7 @@ public class BlockingLayerUI extends AbstractLayerUI<JComponent> { return icon; } - protected void updateCanClickState(JXLayer<? extends JComponent> l, MouseEvent e) { + protected void updateCanClickState(JLayer<? extends JComponent> l, MouseEvent e) { // udpate toolTipText Point layerLocation = l.getView().getLocation(); Point mousePoint = e.getPoint(); diff --git a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/BlockingLayerUI2.java b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/BlockingLayerUI2.java index e8de4ef..241c2b0 100644 --- a/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/BlockingLayerUI2.java +++ b/jaxx-runtime/src/main/java/org/nuiton/jaxx/runtime/swing/BlockingLayerUI2.java @@ -21,15 +21,16 @@ */ package org.nuiton.jaxx.runtime.swing; -import org.jdesktop.jxlayer.JXLayer; -import org.jdesktop.jxlayer.plaf.AbstractLayerUI; import javax.swing.Action; import javax.swing.ImageIcon; import javax.swing.JComponent; +import javax.swing.JLayer; +import javax.swing.plaf.LayerUI; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Component; +import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.RenderingHints; @@ -40,7 +41,7 @@ import java.awt.event.MouseWheelEvent; import java.awt.image.BufferedImage; /** - * A JXLayer ui implementation that permits to block a component but still + * A JLayer ui implementation that permits to block a component but still * allow an action when clicking everywhere on the layer. * * Moreover, an icon can be added on the right-top icon painted and changed @@ -51,13 +52,13 @@ import java.awt.image.BufferedImage; * To hook an click on the layer's icon, you can : * * <ul><li>pass an Action via method {@link #setAcceptAction(Action)}</li> - * <li>override the method {@link #acceptEvent(MouseEvent, JXLayer)}</li> + * <li>override the method {@link #acceptEvent(MouseEvent, JLayer)}</li> * </ul> * * @author Tony Chemit - chemit@codelutin.com * @since 1.3 */ -public class BlockingLayerUI2 extends AbstractLayerUI<JComponent> { +public class BlockingLayerUI2 extends LayerUI<JComponent> { public static final String CAN_CLICK_PROPERTY = "canClick"; @@ -87,28 +88,28 @@ public class BlockingLayerUI2 extends AbstractLayerUI<JComponent> { public void setAcceptIcon(ImageIcon acceptIcon) { this.acceptIcon = prepareIcon(acceptIcon); firePropertyChange(ACCEPT_ICON_PROPERTY, null, acceptIcon); - setDirty(true); +// setDirty(true); } public void setBlockIcon(ImageIcon blockIcon) { this.blockIcon = prepareIcon(blockIcon); firePropertyChange(BLOCK_ICON_PROPERTY, null, blockIcon); - setDirty(true); +// setDirty(true); } public void setCanClick(boolean canClick) { boolean oldvalue = this.canClick; this.canClick = canClick; firePropertyChange(CAN_CLICK_PROPERTY, oldvalue, canClick); - if (oldvalue != canClick) { - setDirty(true); - } +// if (oldvalue != canClick) { +// setDirty(true); +// } } - @Override - public void setDirty(boolean isDirty) { - super.setDirty(isDirty); - } +// @Override +// public void setDirty(boolean isDirty) { +// super.setDirty(isDirty); +// } public void setBlockingColor(Color blockingColor) { this.blockingColor = blockingColor; @@ -142,22 +143,22 @@ public class BlockingLayerUI2 extends AbstractLayerUI<JComponent> { } @Override - protected void processKeyEvent(KeyEvent e, JXLayer<? extends JComponent> l) { + protected void processKeyEvent(KeyEvent e, JLayer<? extends JComponent> l) { e.consume(); } @Override - protected void processMouseMotionEvent(MouseEvent e, JXLayer<? extends JComponent> l) { + protected void processMouseMotionEvent(MouseEvent e, JLayer<? extends JComponent> l) { e.consume(); } @Override - protected void processMouseWheelEvent(MouseWheelEvent e, JXLayer<? extends JComponent> l) { + protected void processMouseWheelEvent(MouseWheelEvent e, JLayer<? extends JComponent> l) { e.consume(); } @Override - protected void processMouseEvent(MouseEvent e, JXLayer<? extends JComponent> l) { + protected void processMouseEvent(MouseEvent e, JLayer<? extends JComponent> l) { switch (e.getID()) { case MouseEvent.MOUSE_ENTERED: setCanClick(true); @@ -175,8 +176,8 @@ public class BlockingLayerUI2 extends AbstractLayerUI<JComponent> { } @Override - protected void paintLayer(Graphics2D g2, JXLayer<? extends JComponent> l) { - super.paintLayer(g2, l); + public void paint(Graphics g, JComponent c) { + super.paint(g, c); if (blockingColor != null) { // to be in sync with the view if the layer has a border /*Insets layerInsets = l.getInsets(); @@ -190,16 +191,41 @@ public class BlockingLayerUI2 extends AbstractLayerUI<JComponent> { 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()); + g.setColor(blockingColor); + ((Graphics2D) g).setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .1f)); + g.fillRect(0, 0, c.getWidth(), c.getHeight()); } if (getCurrentIcon() != null) { - g2.drawImage(getCurrentIcon(), l.getWidth() - getCurrentIcon().getWidth() - 1, 0, null); + g.drawImage(getCurrentIcon(), c.getWidth() - getCurrentIcon().getWidth() - 1, 0, null); } } - protected void acceptEvent(MouseEvent e, JXLayer<? extends JComponent> l) { +// @Override +// protected void paintLayer(Graphics2D g2, JLayer<? extends JComponent> l) { +// super.paintLayer(g2, l); +// if (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 (getCurrentIcon() != null) { +// g2.drawImage(getCurrentIcon(), l.getWidth() - getCurrentIcon().getWidth() - 1, 0, null); +// } +// } + + protected void acceptEvent(MouseEvent e, JLayer<? extends JComponent> l) { if (acceptAction != null) { acceptAction.putValue("layer", l); Component source = l.getView(); @@ -221,21 +247,21 @@ public class BlockingLayerUI2 extends AbstractLayerUI<JComponent> { return icon; } - protected void updateCanClickState(JXLayer<JComponent> l, MouseEvent e) { - // udpate toolTipText - Point layerLocation = l.getView().getLocation(); - Point mousePoint = e.getPoint(); - BufferedImage currentIcon = getCurrentIcon(); - if (currentIcon == null) { - setCanClick(false); - return; - } - int minX = (int) layerLocation.getX() + l.getWidth() - currentIcon.getWidth(); - int maxX = (int) layerLocation.getX() + l.getWidth(); - int minY = 0; - int maxY = currentIcon.getHeight(); - boolean accept = minX <= mousePoint.getX() && mousePoint.getX() <= maxX; - accept &= minY <= mousePoint.getLocation().getY() && mousePoint.getLocation().getY() <= maxY; - setCanClick(accept); - } +// protected void updateCanClickState(JLayer<JComponent> l, MouseEvent e) { +// // udpate toolTipText +// Point layerLocation = l.getView().getLocation(); +// Point mousePoint = e.getPoint(); +// BufferedImage currentIcon = getCurrentIcon(); +// if (currentIcon == null) { +// setCanClick(false); +// return; +// } +// int minX = (int) layerLocation.getX() + l.getWidth() - currentIcon.getWidth(); +// int maxX = (int) layerLocation.getX() + l.getWidth(); +// int minY = 0; +// int maxY = currentIcon.getHeight(); +// boolean accept = minX <= mousePoint.getX() && mousePoint.getX() <= maxX; +// accept &= minY <= mousePoint.getLocation().getY() && mousePoint.getLocation().getY() <= maxY; +// setCanClick(accept); +// } } diff --git a/jaxx-validator/pom.xml b/jaxx-validator/pom.xml index 4c47e50..ed71412 100644 --- a/jaxx-validator/pom.xml +++ b/jaxx-validator/pom.xml @@ -86,11 +86,6 @@ </dependency> <dependency> - <groupId>org.swinglabs</groupId> - <artifactId>jxlayer</artifactId> - </dependency> - - <dependency> <groupId>org.swinglabs.swingx</groupId> <artifactId>swingx-core</artifactId> </dependency> diff --git a/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/SwingValidator.java b/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/SwingValidator.java index 5a235c1..35c8773 100644 --- a/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/SwingValidator.java +++ b/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/SwingValidator.java @@ -28,7 +28,6 @@ import org.nuiton.jaxx.validator.swing.ui.AbstractBeanValidatorUI; import org.nuiton.jaxx.validator.swing.ui.IconValidationUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.jdesktop.jxlayer.JXLayer; import org.nuiton.validator.NuitonValidator; import org.nuiton.validator.NuitonValidatorFactory; import org.nuiton.validator.NuitonValidatorProvider; @@ -36,6 +35,7 @@ import org.nuiton.validator.NuitonValidatorScope; import org.nuiton.validator.bean.simple.SimpleBeanValidator; import javax.swing.JComponent; +import javax.swing.JLayer; import java.awt.Container; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -49,7 +49,7 @@ import java.util.Map.Entry; * * Permet d'ajouter facilement le support de la validation des champs d'un bean * et de le relier a une interface graphique. Utilise xwork pour la validation - * et JXLayer pour la visualisation. + * et JLayer pour la visualisation. * * * Le mieux pour son integration dans Jaxx est de faire de la generation pour @@ -407,8 +407,8 @@ public class SwingValidator<B> extends SimpleBeanValidator<B> { // ajout du jxlayer sous ce composant Container container = c.getParent(); - if (container instanceof JXLayer<?>) { - JXLayer jx = (JXLayer<?>) container; + if (container instanceof JLayer<?>) { + JLayer jx = (JLayer<?>) container; Object oldUI = jx.getUI(); if (oldUI != null && oldUI instanceof AbstractBeanValidatorUI) { @@ -450,8 +450,8 @@ public class SwingValidator<B> extends SimpleBeanValidator<B> { if (old != null) { // suppression du jxlayer sous l'ancien composant Container container = old.getParent(); - if (container instanceof JXLayer<?>) { - JXLayer<?> jx = (JXLayer<?>) container; + if (container instanceof JLayer<?>) { + JLayer<?> jx = (JLayer<?>) container; Object ui = jx.getUI(); if (ui != null && ui instanceof AbstractBeanValidatorUI) { removeSimpleBeanValidatorListener((AbstractBeanValidatorUI) ui); @@ -463,8 +463,8 @@ public class SwingValidator<B> extends SimpleBeanValidator<B> { if (c != null) { // ajout du jxlayer sous ce composant Container container = c.getParent(); - if (container instanceof JXLayer<?>) { - JXLayer jx = (JXLayer<?>) container; + if (container instanceof JLayer<?>) { + JLayer jx = (JLayer<?>) container; Object oldUI = jx.getUI(); if (oldUI != null && oldUI instanceof AbstractBeanValidatorUI) { diff --git a/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/AbstractBeanValidatorUI.java b/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/AbstractBeanValidatorUI.java index eda8725..05f5fda 100644 --- a/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/AbstractBeanValidatorUI.java +++ b/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/AbstractBeanValidatorUI.java @@ -25,13 +25,13 @@ import com.google.common.collect.Ordering; import com.google.common.collect.Sets; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.jdesktop.jxlayer.plaf.AbstractLayerUI; import org.nuiton.validator.NuitonValidatorScope; import org.nuiton.validator.bean.simple.SimpleBeanValidator; import org.nuiton.validator.bean.simple.SimpleBeanValidatorEvent; import org.nuiton.validator.bean.simple.SimpleBeanValidatorListener; import javax.swing.JComponent; +import javax.swing.plaf.LayerUI; import java.util.Collection; import java.util.Set; @@ -40,7 +40,7 @@ import java.util.Set; * * @author Tony Chemit - chemit@codelutin.com */ -public abstract class AbstractBeanValidatorUI extends AbstractLayerUI<JComponent> implements SimpleBeanValidatorListener { +public abstract class AbstractBeanValidatorUI extends LayerUI<JComponent> implements SimpleBeanValidatorListener { /** Logger */ private static final Log log = LogFactory.getLog(AbstractBeanValidatorUI.class); @@ -82,7 +82,7 @@ public abstract class AbstractBeanValidatorUI extends AbstractLayerUI<JComponent log.debug("set new scope : " + scope + " to field " + fields); } // ask to repaint the layer - setDirty(true); +// setDirty(true); } } diff --git a/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/IconValidationUI.java b/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/IconValidationUI.java index db468c5..31b57b8 100644 --- a/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/IconValidationUI.java +++ b/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/IconValidationUI.java @@ -23,12 +23,12 @@ package org.nuiton.jaxx.validator.swing.ui; import com.google.common.collect.Sets; import org.nuiton.jaxx.validator.swing.SwingValidatorUtil; -import org.jdesktop.jxlayer.JXLayer; import org.nuiton.validator.NuitonValidatorScope; import javax.swing.BorderFactory; import javax.swing.JComponent; import java.awt.Color; +import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; @@ -78,16 +78,27 @@ public class IconValidationUI extends AbstractBeanValidatorUI { } @Override - protected void paintLayer(Graphics2D g2, JXLayer<? extends JComponent> l) { - super.paintLayer(g2, l); + public void paint(Graphics g, JComponent c) { + super.paint(g, c); // There is no need to take insets into account for this painter NuitonValidatorScope scope = getScope(); if (scope != null) { BufferedImage icon = icons.get(scope); - g2.drawImage(icon, l.getWidth() - icon.getWidth() - 1, 0, null); + g.drawImage(icon, c.getWidth() - icon.getWidth() - 1, 0, null); } } +// @Override +// protected void paintLayer(Graphics2D g2, JXLayer<? extends JComponent> l) { +// super.paintLayer(g2, l); +// // There is no need to take insets into account for this painter +// NuitonValidatorScope scope = getScope(); +// if (scope != null) { +// BufferedImage icon = icons.get(scope); +// g2.drawImage(icon, l.getWidth() - icon.getWidth() - 1, 0, null); +// } +// } + protected static BufferedImage prepareIcon(Color color) { int width = 7; int height = 8; diff --git a/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/ImageValidationUI.java b/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/ImageValidationUI.java index 9c97491..caf7aff 100644 --- a/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/ImageValidationUI.java +++ b/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/ImageValidationUI.java @@ -23,12 +23,12 @@ package org.nuiton.jaxx.validator.swing.ui; import com.google.common.collect.Sets; import org.nuiton.jaxx.validator.swing.SwingValidatorUtil; -import org.jdesktop.jxlayer.JXLayer; import org.nuiton.validator.NuitonValidatorScope; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JComponent; +import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; @@ -76,22 +76,32 @@ public class ImageValidationUI extends AbstractBeanValidatorUI { @Override public void installUI(JComponent c) { super.installUI(c); - c.setBorder(BorderFactory.createEmptyBorder(2, 0, 0, 3)); +// c.setBorder(BorderFactory.createEmptyBorder(2, 0, 0, 3)); } @Override public void uninstallUI(JComponent c) { super.uninstallUI(c); - c.setBorder(null); +// c.setBorder(null); } @Override - protected void paintLayer(Graphics2D g2, JXLayer<? extends JComponent> l) { - super.paintLayer(g2, l); + public void paint(Graphics g, JComponent c) { + super.paint(g, c); NuitonValidatorScope scope = getScope(); if (scope != null) { BufferedImage icon = icons.get(scope); - g2.drawImage(icon, l.getWidth() - icon.getWidth() - 1, 0, null); + g.drawImage(icon, c.getWidth() - icon.getWidth() - 1, 0, null); } } + +// @Override +// protected void paintLayer(Graphics2D g2, JXLayer<? extends JComponent> l) { +// super.paintLayer(g2, l); +// NuitonValidatorScope scope = getScope(); +// if (scope != null) { +// BufferedImage icon = icons.get(scope); +// g2.drawImage(icon, l.getWidth() - icon.getWidth() - 1, 0, null); +// } +// } } diff --git a/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/TranslucentValidationUI.java b/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/TranslucentValidationUI.java index 565ecfd..a4b92d5 100644 --- a/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/TranslucentValidationUI.java +++ b/jaxx-validator/src/main/java/org/nuiton/jaxx/validator/swing/ui/TranslucentValidationUI.java @@ -22,12 +22,12 @@ package org.nuiton.jaxx.validator.swing.ui; import org.nuiton.jaxx.validator.swing.SwingValidatorUtil; -import org.jdesktop.jxlayer.JXLayer; import org.nuiton.validator.NuitonValidatorScope; import javax.swing.JComponent; import java.awt.AlphaComposite; import java.awt.Color; +import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Rectangle; @@ -53,26 +53,48 @@ public class TranslucentValidationUI extends AbstractBeanValidatorUI { } @Override - protected void paintLayer(Graphics2D g2, JXLayer<? extends JComponent> l) { - // paints the layer as is - super.paintLayer(g2, l); - + public void paint(Graphics g, JComponent c) { + super.paint(g, c); // to be in sync with the view if the layer has a border - Insets layerInsets = l.getInsets(); - g2.translate(layerInsets.left, layerInsets.top); + Insets layerInsets = c.getInsets(); + g.translate(layerInsets.left, layerInsets.top); - JComponent view = l.getView(); + JComponent view = c; // 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)); + ((Graphics2D) g).clip(new Rectangle(insets.left, insets.top, + view.getWidth() - insets.left - insets.right, + view.getHeight() - insets.top - insets.bottom)); NuitonValidatorScope scope = getScope(); - Color c = scope == null ? Color.WHITE : SwingValidatorUtil.getColor(scope); - g2.setColor(c); - g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .2f)); - g2.fillRect(0, 0, l.getWidth(), l.getHeight()); + Color color = scope == null ? Color.WHITE : SwingValidatorUtil.getColor(scope); + g.setColor(color); + ((Graphics2D) g).setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .2f)); + g.fillRect(0, 0, c.getWidth(), c.getHeight()); } + +// @Override +// protected void paintLayer(Graphics2D g2, JXLayer<? extends JComponent> l) { +// // paints the layer as is +// super.paintLayer(g2, l); +// +// // 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)); +// +// NuitonValidatorScope scope = getScope(); +// +// Color c = scope == null ? Color.WHITE : SwingValidatorUtil.getColor(scope); +// g2.setColor(c); +// g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .2f)); +// g2.fillRect(0, 0, l.getWidth(), l.getHeight()); +// } } diff --git a/pom.xml b/pom.xml index f6b6421..b439341 100644 --- a/pom.xml +++ b/pom.xml @@ -418,12 +418,6 @@ <!-- swinglabs dependencies --> <dependency> - <groupId>org.swinglabs</groupId> - <artifactId>jxlayer</artifactId> - <version>3.0.4</version> - </dependency> - - <dependency> <groupId>org.swinglabs.swingx</groupId> <artifactId>swingx-core</artifactId> <version>${swingXVersion}</version> -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.