This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository jaxx. See https://gitlab.nuiton.org/nuiton/jaxx.git commit b15436df552a0f34c89ddceddf0e7474160e10eb Author: Tony CHEMIT <dev@tchemit.fr> Date: Wed Mar 8 16:31:06 2017 +0100 Be able to force the selected item in BeanComboBox (report from 2.x) (Closes #1902) --- .../nuiton/jaxx/widgets/select/BeanComboBox.jaxx | 2 ++ .../jaxx/widgets/select/BeanComboBoxHandler.java | 22 ++++++++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanComboBox.jaxx b/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanComboBox.jaxx index 971fa01..dd32109 100644 --- a/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanComboBox.jaxx +++ b/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanComboBox.jaxx @@ -86,6 +86,8 @@ <String id='i18nPrefix' javaBean='"entitycombobox.common."'/> + <Boolean id='force' javaBean='false'/> + <!-- popup to change sorted property--> <JPopupMenu id='popup' onPopupMenuWillBecomeInvisible='getChangeDecorator().setSelected(false)' diff --git a/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanComboBoxHandler.java b/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanComboBoxHandler.java index 7b9a064..802d04a 100644 --- a/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanComboBoxHandler.java +++ b/jaxx-widgets-select/src/main/java/org/nuiton/jaxx/widgets/select/BeanComboBoxHandler.java @@ -30,14 +30,12 @@ import org.nuiton.decorator.DecoratorUtil; import org.nuiton.decorator.JXPathDecorator; import org.nuiton.decorator.MultiJXPathDecorator; import org.nuiton.jaxx.runtime.spi.UIHandler; -import org.nuiton.jaxx.runtime.swing.SwingUtil; import org.nuiton.jaxx.runtime.swing.JAXXButtonGroup; +import org.nuiton.jaxx.runtime.swing.SwingUtil; import org.nuiton.jaxx.runtime.swing.renderer.DecoratorListCellRenderer; import org.nuiton.util.beans.BeanUtil; -import javax.swing.JComboBox; -import javax.swing.JComponent; -import javax.swing.JPopupMenu; +import javax.swing.*; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; import javax.swing.text.Document; @@ -49,6 +47,7 @@ import java.beans.PropertyChangeListener; import java.lang.reflect.Method; import java.util.Collections; import java.util.List; +import java.util.Objects; /** * Le handler d'un {@link BeanComboBox}. @@ -144,13 +143,18 @@ public class BeanComboBoxHandler<O> implements PropertyChangeListener, UIHandler public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { O newSelectedItem = (O) combobox.getSelectedItem(); + log.debug(String.format("old ui value: %s, new value: %s :: %s", ui.getSelectedItem(), newSelectedItem, Objects.equals(ui.getSelectedItem(), newSelectedItem))); + log.debug(String.format("old value: %s, new value: %s :: %s", selectedItem, newSelectedItem, Objects.equals(selectedItem, newSelectedItem))); + if (canceled) { ui.setSelectedItem(null); - } else if ((newSelectedItem == null ^ selectedItem == null) - || (newSelectedItem != null - && !selectedItem.equals(newSelectedItem))) { - ui.setSelectedItem(newSelectedItem); + } else { + + if (ui.isForce()) { + ui.setSelectedItem(null); + } + setSelectedItem(selectedItem, newSelectedItem); } selectedItem = null; canceled = false; @@ -434,6 +438,8 @@ public class BeanComboBoxHandler<O> implements PropertyChangeListener, UIHandler * @param newValue la nouvelle valeur */ protected void setSelectedItem(O oldValue, O newValue) { + log.debug(String.format("old value: %s, new value: %s", oldValue, newValue)); + if (ui.getBean() == null) { return; } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.