This is an automated email from the ASF dual-hosted git repository. ntimofeev pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 2625c45d978c6303c2d3506df950fe93e1aee437 Author: Nikita Timofeev <stari...@gmail.com> AuthorDate: Thu Oct 1 11:41:05 2020 +0300 CAY-2681 Modeler: All selected checkboxes cause project to become dirty at initialization --- RELEASE-NOTES.txt | 1 + .../cayenne/swing/components/JCayenneCheckBox.java | 23 +++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index e8b706b..c9ad278 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -32,6 +32,7 @@ CAY-2591 Modeler: project becomes dirty after click on dbImport or cgen tab CAY-2671 QualifierTranslator fails to translate expressions with compound PKs/FKs CAY-2675 A one-to-one relationship with meaningful PK can be nullified in the nested context CAY-2679 Unstable ordering of relationships in the .map.xml file +CAY-2681 Modeler: All selected checkboxes cause project to become dirty at initialization ---------------------------------- Release: 4.2.M1 diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/JCayenneCheckBox.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/JCayenneCheckBox.java index 1adcf25..b452a35 100644 --- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/JCayenneCheckBox.java +++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/JCayenneCheckBox.java @@ -21,15 +21,36 @@ package org.apache.cayenne.swing.components; import org.apache.cayenne.modeler.undo.JCheckBoxUndoListener; -import javax.swing.*; import java.awt.event.ActionListener; +import java.awt.event.ItemListener; +import javax.swing.JCheckBox; public class JCayenneCheckBox extends JCheckBox { private ActionListener actionListener; + private boolean modelUpdateDisabled; public JCayenneCheckBox() { this.actionListener = new JCheckBoxUndoListener(); this.addActionListener(this.actionListener); } + + @Override + public void setSelected(boolean b) { + modelUpdateDisabled = true; + try { + super.setSelected(b); + } finally { + modelUpdateDisabled = false; + } + } + + @Override + public void addItemListener(ItemListener l) { + super.addItemListener(e -> { + if(!modelUpdateDisabled) { + l.itemStateChanged(e); + } + }); + } } \ No newline at end of file