Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 07e5ddaa by Tony CHEMIT at 2018-09-13T14:19:45Z il faut supprimer ler nœud sélectionné avant d'en crée un nouveau - - - - - e7dc3070 by Tony CHEMIT at 2018-09-13T14:20:17Z correction de la création de la calée suite à la création de l'activité - - - - - bf0e3c24 by Tony CHEMIT at 2018-09-13T14:20:46Z correction de la mise à jour des nœuds de sélection - - - - - 569d11c6 by Tony CHEMIT at 2018-09-13T14:21:51Z correction de la sélection d'un nœud (on doit pouvoir le faire sans faire de check sur l'état du formulaire lorsqu'on programme des changements de nœud dans les actions). - - - - - 5 changed files: - client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java - client/src/main/java/fr/ird/observe/client/ui/content/ContentUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/ActivityLonglineLogbookUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/content/data/longline/obs/ActivityLonglineObsUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTree.java Changes: ===================================== client/src/main/java/fr/ird/observe/client/ui/ObserveMainUIInitializer.java ===================================== @@ -46,8 +46,8 @@ import fr.ird.observe.dto.navigation.edit.ObserveLonglineEditModel; import fr.ird.observe.dto.navigation.edit.ObserveSeineEditModel; import fr.ird.observe.dto.navigation.select.ObserveSelectModel; import fr.ird.observe.dto.referential.ReferentialLocale; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.nuiton.i18n.I18n; import org.nuiton.jaxx.runtime.context.JAXXInitialContext; import org.nuiton.jaxx.validator.swing.SwingValidatorMessageTableModel; @@ -231,14 +231,15 @@ public class ObserveMainUIInitializer { List<ReferenceNavigationTreeNodeSupport<?, ?>> ids = new ArrayList<>(); for (Object o : nodes) { NavigationTreeNodeSupport n = (NavigationTreeNodeSupport) o; - if (n instanceof ReferenceNavigationTreeNodeSupport && n.getSelectNode().isDisabled()) { - n.getSelectNode().setId(n.getId()); + if (n instanceof ReferenceNavigationTreeNodeSupport) { + log.info("Keep node with id: " + n.getId()); ids.add((ReferenceNavigationTreeNodeSupport<?, ?>) n); } } ObserveSelectModel navigationSelect = ObserveSwingApplicationContext.get().getNavigationSelect(); navigationSelect.clear(); for (ReferenceNavigationTreeNodeSupport<?, ?> node : ids) { + log.info("Apply to select model: " + node); node.getSelectNode().setId(node.getId()); } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/ContentUIHandler.java ===================================== @@ -429,6 +429,7 @@ public abstract class ContentUIHandler<E extends IdDto, U extends ContentUI<E, U NavigationTreeNodeSupport parentNode = treeHelper.getSelectedNode().getParent(); log.debug("PARENT NODE = " + parentNode); + getSelectedNode().setId(null); treeHelper.addUnsavedNode(parentNode, getBeanType()); } ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/logbook/ActivityLonglineLogbookUIHandler.java ===================================== @@ -35,8 +35,8 @@ import fr.ird.observe.dto.navigation.edit.node.ObserveLonglineLogbookActivityEdi import fr.ird.observe.dto.navigation.select.node.ObserveLonglineLogbookActivitySelectNode; import fr.ird.observe.dto.reference.DataDtoReference; import fr.ird.observe.dto.result.TripChildSaveResultDto; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.spi.UIHandler; import org.nuiton.validator.NuitonValidatorScope; @@ -55,6 +55,7 @@ import static org.nuiton.i18n.I18n.t; class ActivityLonglineLogbookUIHandler extends ContentOpenableUIHandler<ActivityLonglineLogbookDto, ActivityLonglineLogbookUI> implements UIHandler<ActivityLonglineLogbookUI> { private static final Logger log = LogManager.getLogger(ActivityLonglineLogbookUIHandler.class); + private boolean addSet; ActivityLonglineLogbookUIHandler() { super(ObserveLonglineLogbookActivitySelectNode.class, ObserveLonglineLogbookActivityEditNode.class, n("observe.common.ActivityLonglineLogbookDto.message.not.open")); @@ -214,12 +215,10 @@ class ActivityLonglineLogbookUIHandler extends ContentOpenableUIHandler<Activity if (notPersisted) { // ouverture de l'activité après création getEditNode().setId(bean.getId()); - if (ActivityLonglineLogbookHelper.FISHING_OPERATION_ID.equals(bean.getVesselActivityLongline().getId())) { - // création de l'opération de pêche - SwingUtilities.invokeLater(() -> getUi().getAddSet().doClick()); - } } + addSet = notPersisted && ActivityLonglineLogbookHelper.FISHING_OPERATION_ID.equals(bean.getVesselActivityLongline().getId()); + return true; } @@ -253,6 +252,17 @@ class ActivityLonglineLogbookUIHandler extends ContentOpenableUIHandler<Activity protected void afterSave(boolean refresh) { super.afterSave(refresh); repaintTripNode(); + if (addSet) { + try { + // création de l'opération de pêche + // FIXME On doit effectuer l'action sur l'ui rechargée car pour executer une action on regarde si son éditeur + // FIXME est showing et dans ce cas précis ce n'est pas vrai (getUI() retourne l'ui avant resélection du noeud... + ActivityLonglineLogbookUI content = ObserveSwingApplicationContext.get().getContentUIManager().getContent(); + SwingUtilities.invokeLater(() -> content.getAddSet().doClick()); + } finally { + addSet = false; + } + } } @Override ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/longline/obs/ActivityLonglineObsUIHandler.java ===================================== @@ -10,12 +10,12 @@ package fr.ird.observe.client.ui.content.data.longline.obs; * 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>. @@ -35,8 +35,8 @@ import fr.ird.observe.dto.navigation.edit.node.ObserveLonglineObsActivityEditNod import fr.ird.observe.dto.navigation.select.node.ObserveLonglineObsActivitySelectNode; import fr.ird.observe.dto.reference.DataDtoReference; import fr.ird.observe.dto.result.TripChildSaveResultDto; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.spi.UIHandler; import org.nuiton.validator.NuitonValidatorScope; @@ -55,6 +55,7 @@ import static org.nuiton.i18n.I18n.t; class ActivityLonglineObsUIHandler extends ContentOpenableUIHandler<ActivityLonglineObsDto, ActivityLonglineObsUI> implements UIHandler<ActivityLonglineObsUI> { private static final Logger log = LogManager.getLogger(ActivityLonglineObsUIHandler.class); + private boolean addSet; ActivityLonglineObsUIHandler() { super(ObserveLonglineObsActivitySelectNode.class, ObserveLonglineObsActivityEditNode.class, n("observe.common.ActivityLonglineObsDto.message.not.open")); @@ -213,12 +214,10 @@ class ActivityLonglineObsUIHandler extends ContentOpenableUIHandler<ActivityLong if (notPersisted) { // ouverture de l'activité après création - getEditNode().setId(null); - if (ActivityLonglineObsHelper.FISHING_OPERATION_ID.equals(bean.getVesselActivityLongline().getId())) { - // création de l'opération de pêche - SwingUtilities.invokeLater(() -> getUi().getAddSet().doClick()); - } + getEditNode().setId(bean.getId()); } + addSet = notPersisted && ActivityLonglineObsHelper.FISHING_OPERATION_ID.equals(bean.getVesselActivityLongline().getId()); + return true; } @@ -251,6 +250,17 @@ class ActivityLonglineObsUIHandler extends ContentOpenableUIHandler<ActivityLong protected void afterSave(boolean refresh) { super.afterSave(refresh); repaintTripNode(); + if (addSet) { + try { + // création de l'opération de pêche + // FIXME On doit effectuer l'action sur l'ui rechargée car pour executer une action on regarde si son éditeur + // FIXME est showing et dans ce cas précis ce n'est pas vrai (getUI() retourne l'ui avant resélection du noeud... + ActivityLonglineObsUI content = ObserveSwingApplicationContext.get().getContentUIManager().getContent(); + SwingUtilities.invokeLater(() -> content.getAddSet().doClick()); + } finally { + addSet = false; + } + } } @Override ===================================== client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTree.java ===================================== @@ -10,12 +10,12 @@ package fr.ird.observe.client.ui.tree.navigation; * 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>. @@ -74,8 +74,8 @@ import fr.ird.observe.dto.referential.ProgramReference; import fr.ird.observe.dto.referential.ReferentialLocale; import fr.ird.observe.spi.DtoModelHelper; import org.apache.commons.collections4.CollectionUtils; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.jdesktop.swingx.JXTree; import javax.swing.SwingUtilities; @@ -104,15 +104,19 @@ public class NavigationTree extends JXTree { private static final Logger log = LogManager.getLogger(NavigationTree.class); private final ImmutableList<SelectNodeStrategy> selectNodeStrategies; + private boolean skipContentCheck; public NavigationTree() { super(new NavigationTreeModel()); setSelectionModel(new DefaultTreeSelectionModel() { @Override public void setSelectionPath(TreePath path) { - boolean canChange = !Objects.equals(path, getSelectionPath()) && ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); + boolean skipContentCheck = NavigationTree.this.skipContentCheck; + NavigationTree.this.skipContentCheck = false; + boolean canChange = !Objects.equals(path, getSelectionPath()) && (skipContentCheck || ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI()); if (!canChange) { // cancel the change of node + log.warn(String.format("Do not change selection path: %s against: %s", path, getSelectionPath())); return; } super.setSelectionPath(path); @@ -207,7 +211,7 @@ public class NavigationTree extends JXTree { log.info("try to select node [" + node + "]"); } TreePath path = new TreePath(getTreeModel().getPathToRoot(node)); - + skipContentCheck = true; setSelectionPath(path); SwingUtilities.invokeLater(() -> scrollPathToVisible(path)); } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/e7d28acc041e6ca4a8dc9ce8b9c... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/compare/e7d28acc041e6ca4a8dc9ce8b9c... You're receiving this email because of your account on gitlab.com.