Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 106dfb41 by Tony CHEMIT at 2018-06-18T18:50:30Z [PS] Formulaire DCP / matériaux / recopie de l'état départ <-> arrivée - Closes #971 - - - - - 3 changed files: - client/src/main/java/fr/ird/observe/client/ui/actions/content/CopyFloatingObjectPartToLeftAction.java - client/src/main/java/fr/ird/observe/client/ui/actions/content/CopyFloatingObjectPartToRightAction.java - client/src/main/java/fr/ird/observe/client/ui/content/data/seine/dcp/FloatingObjectPartsTreeTableModel.java Changes: ===================================== client/src/main/java/fr/ird/observe/client/ui/actions/content/CopyFloatingObjectPartToLeftAction.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/CopyFloatingObjectPartToLeftAction.java +++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/CopyFloatingObjectPartToLeftAction.java @@ -10,12 +10,12 @@ package fr.ird.observe.client.ui.actions.content; * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. @@ -27,12 +27,14 @@ import fr.ird.observe.client.ui.ObserveMainUI; import fr.ird.observe.client.ui.content.ContentUI; import fr.ird.observe.client.ui.content.data.seine.FloatingObjectUI; import fr.ird.observe.client.ui.content.data.seine.dcp.FloatingObjectPartsTreeNode; +import fr.ird.observe.client.ui.content.data.seine.dcp.FloatingObjectPartsTreeTableModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTreeTable; import org.jdesktop.swingx.treetable.DefaultTreeTableModel; import org.jdesktop.swingx.treetable.MutableTreeTableNode; +import javax.swing.SwingUtilities; import java.util.Enumeration; import static org.nuiton.i18n.I18n.t; @@ -51,7 +53,7 @@ public class CopyFloatingObjectPartToLeftAction extends AbstractContentUIAction public CopyFloatingObjectPartToLeftAction(ObserveMainUI mainUI) { super(mainUI, ACTION_NAME, t("observe.action.copyFloatingObjectPartToLeft"), - t("observe.action.copyFloatingObjectPartToLeft.tip"), "copyToLeft", ObserveKeyStrokes.KEY_STROKE_COPY_FLOATING_OBJECT_PART_TO_LEFT); + t("observe.action.copyFloatingObjectPartToLeft.tip"), "copyToLeft", ObserveKeyStrokes.KEY_STROKE_COPY_FLOATING_OBJECT_PART_TO_LEFT); } @Override @@ -60,12 +62,23 @@ public class CopyFloatingObjectPartToLeftAction extends AbstractContentUIAction FloatingObjectUI ui = (FloatingObjectUI) contentUI; JXTreeTable table = ui.getTable(); log.info("Start action from " + table); - DefaultTreeTableModel treeTableModel = (DefaultTreeTableModel) table.getTreeTableModel(); - FloatingObjectPartsTreeNode root = (FloatingObjectPartsTreeNode) treeTableModel.getRoot(); - Enumeration<? extends MutableTreeTableNode> children = root.children(); - while (children.hasMoreElements()) { - FloatingObjectPartsTreeNode mutableTreeTableNode = (FloatingObjectPartsTreeNode) children.nextElement(); - move(treeTableModel, mutableTreeTableNode); + getMainUI().getModel().setBusy(true); + try { + FloatingObjectPartsTreeTableModel treeTableModel = (FloatingObjectPartsTreeTableModel) table.getTreeTableModel(); + FloatingObjectPartsTreeNode root = treeTableModel.getRoot(); + Enumeration<? extends MutableTreeTableNode> children = root.children(); + treeTableModel.setAdjusting(true); + try { + while (children.hasMoreElements()) { + FloatingObjectPartsTreeNode mutableTreeTableNode = (FloatingObjectPartsTreeNode) children.nextElement(); + move(treeTableModel, mutableTreeTableNode); + } + } finally { + treeTableModel.setAdjusting(false); + } + SwingUtilities.invokeLater(table::revalidate); + } finally { + getMainUI().getModel().setBusy(false); } } ===================================== client/src/main/java/fr/ird/observe/client/ui/actions/content/CopyFloatingObjectPartToRightAction.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/actions/content/CopyFloatingObjectPartToRightAction.java +++ b/client/src/main/java/fr/ird/observe/client/ui/actions/content/CopyFloatingObjectPartToRightAction.java @@ -10,29 +10,32 @@ package fr.ird.observe.client.ui.actions.content; * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. - * + * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ +import fr.ird.observe.client.ObserveSwingApplicationContext; import fr.ird.observe.client.ui.ObserveKeyStrokes; import fr.ird.observe.client.ui.ObserveMainUI; import fr.ird.observe.client.ui.content.ContentUI; import fr.ird.observe.client.ui.content.data.seine.FloatingObjectUI; import fr.ird.observe.client.ui.content.data.seine.dcp.FloatingObjectPartsTreeNode; +import fr.ird.observe.client.ui.content.data.seine.dcp.FloatingObjectPartsTreeTableModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTreeTable; import org.jdesktop.swingx.treetable.DefaultTreeTableModel; import org.jdesktop.swingx.treetable.MutableTreeTableNode; +import javax.swing.SwingUtilities; import java.util.Enumeration; import static org.nuiton.i18n.I18n.t; @@ -51,7 +54,7 @@ public class CopyFloatingObjectPartToRightAction extends AbstractContentUIAction public CopyFloatingObjectPartToRightAction(ObserveMainUI mainUI) { super(mainUI, ACTION_NAME, t("observe.action.copyFloatingObjectPartToRight"), - t("observe.action.copyFloatingObjectPartToRight.tip"), "copyToRight", ObserveKeyStrokes.KEY_STROKE_COPY_FLOATING_OBJECT_PART_TO_RIGHT); + t("observe.action.copyFloatingObjectPartToRight.tip"), "copyToRight", ObserveKeyStrokes.KEY_STROKE_COPY_FLOATING_OBJECT_PART_TO_RIGHT); } @Override @@ -60,15 +63,24 @@ public class CopyFloatingObjectPartToRightAction extends AbstractContentUIAction FloatingObjectUI ui = (FloatingObjectUI) contentUI; JXTreeTable table = ui.getTable(); log.info("Start action from " + table); - - DefaultTreeTableModel treeTableModel = (DefaultTreeTableModel) table.getTreeTableModel(); - FloatingObjectPartsTreeNode root = (FloatingObjectPartsTreeNode) treeTableModel.getRoot(); - Enumeration<? extends MutableTreeTableNode> children = root.children(); - while (children.hasMoreElements()) { - FloatingObjectPartsTreeNode mutableTreeTableNode = (FloatingObjectPartsTreeNode) children.nextElement(); - move(treeTableModel, mutableTreeTableNode); + getMainUI().getModel().setBusy(true); + try { + FloatingObjectPartsTreeTableModel treeTableModel = (FloatingObjectPartsTreeTableModel) table.getTreeTableModel(); + FloatingObjectPartsTreeNode root = treeTableModel.getRoot(); + Enumeration<? extends MutableTreeTableNode> children = root.children(); + treeTableModel.setAdjusting(true); + try { + while (children.hasMoreElements()) { + FloatingObjectPartsTreeNode mutableTreeTableNode = (FloatingObjectPartsTreeNode) children.nextElement(); + move(treeTableModel, mutableTreeTableNode); + } + } finally { + treeTableModel.setAdjusting(false); + } + SwingUtilities.invokeLater(table::revalidate); + } finally { + getMainUI().getModel().setBusy(false); } - table.revalidate(); } private void move(DefaultTreeTableModel treeTableModel, FloatingObjectPartsTreeNode node) { ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/seine/dcp/FloatingObjectPartsTreeTableModel.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/dcp/FloatingObjectPartsTreeTableModel.java +++ b/client/src/main/java/fr/ird/observe/client/ui/content/data/seine/dcp/FloatingObjectPartsTreeTableModel.java @@ -52,6 +52,7 @@ public class FloatingObjectPartsTreeTableModel extends DefaultTreeTableModel { private ImmutableSet<FloatingObjectPartsTreeNode> needOneSelectionNodes; private ImmutableSet<FloatingObjectPartsTreeNode> mandatoryNodes; private ImmutableSet<FloatingObjectPartsTreeNode> withValidationNodes; + private boolean adjusting; public FloatingObjectPartsTreeTableModel(FloatingObjectUIModel uiModel) { super(FloatingObjectPartsTreeNode.createRoot(uiModel, null), Arrays.asList( @@ -113,6 +114,9 @@ public class FloatingObjectPartsTreeTableModel extends DefaultTreeTableModel { previousNode.ifPresent(p -> log.info("Previous selected node: " + p)); super.setValueAt(value, node, column); previousNode.ifPresent(t -> super.setValueAt(null, t, column)); + if (adjusting) { + return; + } reset(); uiModel.setModified(true); } @@ -131,4 +135,15 @@ public class FloatingObjectPartsTreeTableModel extends DefaultTreeTableModel { uiModel.getBean().setMaterialsValid(!notValid); } + public boolean isAdjusting() { + return adjusting; + } + + public void setAdjusting(boolean adjusting) { + this.adjusting = adjusting; + if (!adjusting) { + reset(); + uiModel.setModified(true); + } + } } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/106dfb41d501317fea7476b5e8fa... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/106dfb41d501317fea7476b5e8fa... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT