branch feature/3468 created (now 2ec1a8d)
This is an automated email from the git hooks/post-receive script. New change to branch feature/3468 in repository jaxx. See https://gitlab.nuiton.org/nuiton/jaxx.git at 2ec1a8d Use JLayer instead of JXLayer (but requires to up jdk level to 1.7) (See #3468) This branch includes the following new commits: new 2ec1a8d Use JLayer instead of JXLayer (but requires to up jdk level to 1.7) (See #3468) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: 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) -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
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>.
participants (1)
-
nuiton.org scm