Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 54c95a00 by Tony CHEMIT at 2018-07-13T09:29:41Z Création automatique de l'activité de fin de veille non fonctionnelle - Closes #996 - - - - - 5 changed files: - client/src/main/java/fr/ird/observe/client/ui/content/data/seine/RouteUIHandler.java - client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTree.java - client/src/main/resources/i18n/client_en_GB.properties - client/src/main/resources/i18n/client_es_ES.properties - client/src/main/resources/i18n/client_fr_FR.properties Changes: ===================================== client/src/main/java/fr/ird/observe/client/ui/content/data/seine/RouteUIHandler.java ===================================== @@ -6,15 +6,15 @@ * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the + * 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 + * + * 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% @@ -33,7 +33,6 @@ import fr.ird.observe.dto.data.seine.ActivitySeineDto; import fr.ird.observe.dto.data.seine.RouteDto; import fr.ird.observe.dto.data.seine.RouteHelper; import fr.ird.observe.dto.data.seine.TripSeineDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.form.Form; import fr.ird.observe.dto.referential.seine.VesselActivitySeineHelper; import fr.ird.observe.dto.referential.seine.VesselActivitySeineReference; @@ -46,7 +45,6 @@ import org.nuiton.validator.NuitonValidatorScope; import javax.swing.JOptionPane; import java.util.Date; -import java.util.Objects; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -88,8 +86,8 @@ class RouteUIHandler extends ContentOpenableUIHandler<RouteDto, RouteUI> impleme if (!dataContext.isSelectedOpen(TripSeineDto.class)) { addMessage(ui, NuitonValidatorScope.INFO, - getTypeI18nKey(TripSeineDto.class), - t("observe.common.TripSeineDto.message.not.open")); + getTypeI18nKey(TripSeineDto.class), + t("observe.common.TripSeineDto.message.not.open")); } else { @@ -157,14 +155,14 @@ class RouteUIHandler extends ContentOpenableUIHandler<RouteDto, RouteUI> impleme if (create) { addMessage(ui, - NuitonValidatorScope.INFO, - getTypeI18nKey(RouteDto.class), - t("observe.common.RouteDto.message.creating")); + NuitonValidatorScope.INFO, + getTypeI18nKey(RouteDto.class), + t("observe.common.RouteDto.message.creating")); } else { addMessage(ui, - NuitonValidatorScope.INFO, - getTypeI18nKey(RouteDto.class), - t("observe.common.RouteDto.message.updating")); + NuitonValidatorScope.INFO, + getTypeI18nKey(RouteDto.class), + t("observe.common.RouteDto.message.updating")); if (getModel().isHistoricalData()) { @@ -173,11 +171,11 @@ class RouteUIHandler extends ContentOpenableUIHandler<RouteDto, RouteUI> impleme } super.startEditUI(RouteUI.BINDING_DATE_DATE, - RouteUI.BINDING_START_LOG_VALUE_NUMBER_VALUE, - RouteUI.BINDING_END_LOG_VALUE_ENABLED, - RouteUI.BINDING_COMMENT_MODEL, - RouteUI.BINDING_CLOSE_ENABLED, - RouteUI.BINDING_CLOSE_AND_CREATE_ENABLED); + RouteUI.BINDING_START_LOG_VALUE_NUMBER_VALUE, + RouteUI.BINDING_END_LOG_VALUE_ENABLED, + RouteUI.BINDING_COMMENT_MODEL, + RouteUI.BINDING_CLOSE_ENABLED, + RouteUI.BINDING_CLOSE_AND_CREATE_ENABLED); // le formulaire est en état modifié uniquement si on est en création getModel().setModified(create); @@ -270,17 +268,11 @@ class RouteUIHandler extends ContentOpenableUIHandler<RouteDto, RouteUI> impleme RouteDto route = getBean(); - // on doit vérifier qu'il existe une activité de fin - // de veille (type activity vessel == 16) + // on doit vérifier qu'il existe une activité de fin de veille (type activity vessel == 16) - boolean mustAddFinVeille = !route.isActivityFindDeVeilleFound(); + boolean mustAddFinVeille = !route.isActivitySeineEmpty() && !route.isActivityFindDeVeilleFound(); boolean createActivityFinDeVeille = false; - boolean closeActivityFinDeVeille = false; - boolean gotoActivityFinDeVeille = false; - - NavigationTree treeHelper = getNavigationTree(); - NavigationTreeNodeSupport routeNode = treeHelper.getSelectedNode(); if (mustAddFinVeille) { @@ -292,11 +284,12 @@ class RouteUIHandler extends ContentOpenableUIHandler<RouteDto, RouteUI> impleme t("observe.common.RouteDto.message.need.fin.veille.activity"), JOptionPane.WARNING_MESSAGE, new Object[]{ - t("observe.common.RouteDto.choice.not.create.fin.veille.activity.and.continue"), - t("observe.common.RouteDto.choice.create.fin.veille.activity.and.continue"), + t("observe.choice.cancel"), t("observe.common.RouteDto.choice.create.fin.veille.activity"), - t("observe.choice.cancel")}, - 0); + t("observe.common.RouteDto.choice.not.create.fin.veille.activity.and.continue"), + + }, + 2); if (log.isDebugEnabled()) { log.debug("response : " + reponse); } @@ -304,11 +297,11 @@ class RouteUIHandler extends ContentOpenableUIHandler<RouteDto, RouteUI> impleme switch (reponse) { case JOptionPane.CLOSED_OPTION: - case 3: + case 0: - // abandon objectOperation + // abandon operation return false; - case 0: + case 2: // rien a faire // on veut juste cloturer la route @@ -319,15 +312,7 @@ class RouteUIHandler extends ContentOpenableUIHandler<RouteDto, RouteUI> impleme // fermeture de l'activity de fin de veille // fermeture de la route createActivityFinDeVeille = true; - closeActivityFinDeVeille = true; - - break; - case 2: - // creation de l'activity de fin de veille - // selection de cette activity de fin de veille - createActivityFinDeVeille = true; - gotoActivityFinDeVeille = true; break; } } @@ -338,18 +323,11 @@ class RouteUIHandler extends ContentOpenableUIHandler<RouteDto, RouteUI> impleme stopEditUI(); // creation de l'action de fin de veille - addActivityFinDeVeille(closeActivityFinDeVeille); - - if (gotoActivityFinDeVeille) { + addActivityFinDeVeille(); - // on selection l'activity de fin de veille et on y reste - // donc on ne continue pas la fermeture de la route - return false; - } - - // on retourne sur la route - // que l'on va refermer - treeHelper.selectNode(routeNode); + // on selection l'activity de fin de veille et on y reste + // donc on ne continue pas la fermeture de la route + return false; } // fermeture de la route @@ -357,16 +335,18 @@ class RouteUIHandler extends ContentOpenableUIHandler<RouteDto, RouteUI> impleme return true; } - private ActivitySeineUI addActivityFinDeVeille(boolean close) { + private ActivitySeineUI addActivityFinDeVeille() { NavigationTree treeHelper = getNavigationTree(); // on créee l'activity de fin de veille NavigationTreeNodeSupport<?> parentNode = treeHelper.getSelectedNode().findChildByClass(ActivitySeineDto.class); log.debug("PARENT NODE = " + parentNode); - treeHelper.addUnsavedNode(Objects.requireNonNull(parentNode), ActivitySeineDto.class); - NavigationTreeNodeSupport activityNode = treeHelper.getSelectedNode(); - Objects.requireNonNull(activityNode); + // select activities node before adding new node, otherwise, the new unsaved activity node may no more be selected + // at the end of addUnsavedNode method (reloading sub node will empty selection...) + treeHelper.selectNode(parentNode); + treeHelper.addUnsavedNode(parentNode, ActivitySeineDto.class); + // on recupère l'écran d'édition ActivitySeineUI selectedUI = (ActivitySeineUI) ObserveSwingApplicationContext.get().getContentUIManager().getSelectedContentUI(); @@ -387,17 +367,6 @@ class RouteUIHandler extends ContentOpenableUIHandler<RouteDto, RouteUI> impleme // on initialise la fin de veille a la dernière minute du jour selectedUI.getBean().setTime(DateUtil.getEndOfDay(DateUtil.createDate(0, 0, 0))); - if (close) { - - // on sauvegarde l'activité - selectedUI.save(false); - - // on ferme l'activité - selectedUI.closeData(); - - // on ferme l'écran - selectedUI.stopEdit(); - } return selectedUI; } ===================================== client/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTree.java ===================================== @@ -98,7 +98,7 @@ public class NavigationTree extends JXTree { setSelectionModel(new DefaultTreeSelectionModel() { @Override public void setSelectionPath(TreePath path) { - boolean canChange = adjusting || (!Objects.equals(path, getSelectionPath()) && ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI()); + boolean canChange = !Objects.equals(path, getSelectionPath()) && ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); if (!canChange) { // cancel the change of node return; @@ -401,8 +401,6 @@ public class NavigationTree extends JXTree { reloadNode(node, refreshChilds); } - private boolean adjusting; - public NavigationTreeNodeSupport addUnsavedNode(NavigationTreeNodeSupport parentNode, Class<?> type) { // noeud en mode creation @@ -435,13 +433,8 @@ public class NavigationTree extends JXTree { // Fix bug (if no child in parent node, it will not expand...) fireTreeExpanded(new TreePath(result.getPath())); - adjusting=true; - try { - // Select new node - selectNode(result); - } finally { - adjusting=false; - } + // Select new node + selectNode(result); return result; } ===================================== client/src/main/resources/i18n/client_en_GB.properties ===================================== @@ -844,13 +844,12 @@ observe.common.RouteDto.action.reopen.tip=Reopen route observe.common.RouteDto.action.reopenSelected=Reopen route observe.common.RouteDto.action.reopenSelected.tip=Reopen route observe.common.RouteDto.choice.create.fin.veille.activity=Create end activity -observe.common.RouteDto.choice.create.fin.veille.activity.and.continue=Create end watch activity and continue observe.common.RouteDto.choice.not.create.fin.veille.activity.and.continue=do not create end watch activity and continue observe.common.RouteDto.list=List of routes observe.common.RouteDto.message.active.found=A route was found. observe.common.RouteDto.message.active.found.for.other.trip=An open route exists in another trip. observe.common.RouteDto.message.creating=Route is in creation -observe.common.RouteDto.message.need.fin.veille.activity=No end watch activity was found in route to close.\nyou can\:\n\n\t- Cancel and go back to route\n\t- Create and go the end watch activity\n\t- Create end watch activity and close route\n\t- Close route without creating the end watch activity. +observe.common.RouteDto.message.need.fin.veille.activity=No end watch activity was found in route to close.\nyou can\:\n\n\t- Close route without creating the end watch activity\n\t- Create and go the end watch activity\n\t- Cancel and go back to route observe.common.RouteDto.message.no.active.found=No open route found, you can create a new one or reopen one. observe.common.RouteDto.message.no.active.found.for.other.trip=No open route found on open trip observe.common.RouteDto.message.not.open=Current route is not open, no modification is possible. ===================================== client/src/main/resources/i18n/client_es_ES.properties ===================================== @@ -844,13 +844,12 @@ observe.common.RouteDto.action.reopen.tip=Reabrir la ruta observe.common.RouteDto.action.reopenSelected=Reabrir la ruta observe.common.RouteDto.action.reopenSelected.tip=Reabrir la ruta seleccionada observe.common.RouteDto.choice.create.fin.veille.activity=Crear la actividad de fin de guardia -observe.common.RouteDto.choice.create.fin.veille.activity.and.continue=Crear la actividad de fin de guardia y continuar observe.common.RouteDto.choice.not.create.fin.veille.activity.and.continue=No crear la actividad de fin de guardia y continuar observe.common.RouteDto.list=Lista de rutas observe.common.RouteDto.message.active.found=Ruta abierta. observe.common.RouteDto.message.active.found.for.other.trip=Existe una ruta abierta en otra marea. observe.common.RouteDto.message.creating=Ruta en proceso de creación. -observe.common.RouteDto.message.need.fin.veille.activity=Ninguna actividad de fin de guardia registrada en la ruta a cerrar.\n Puede \:\n\n\t- Cancelar el cierre y continuar con la ruta\n\t- Crear la actividad de fin de guardia e ir a ella.\n\t- Crear la actividad de fin de guardia y a continuación cerra la ruta\n\t- Continuar con el cierra de la ruta sin crear la actividad de fin de guardia. +observe.common.RouteDto.message.need.fin.veille.activity=Ninguna actividad de fin de guardia registrada en la ruta a cerrar.\n Puede \:\n\n\t- Continuar con el cierra de la ruta sin crear la actividad de fin de guardia\n\t- Crear la actividad de fin de guardia e ir a ella\n\t- Cancelar el cierre y continuar con la ruta observe.common.RouteDto.message.no.active.found=Ninguna ruta abierta, puede crear una nueva o reabrir una. observe.common.RouteDto.message.no.active.found.for.other.trip=Ninguna ruta abierta sobre la marea abierta observe.common.RouteDto.message.not.open=la ruta actual no está abierta, no se pueden hacer modificaciones. ===================================== client/src/main/resources/i18n/client_fr_FR.properties ===================================== @@ -844,13 +844,12 @@ observe.common.RouteDto.action.reopen.tip=Rouvrir la route observe.common.RouteDto.action.reopenSelected=Rouvrir la route observe.common.RouteDto.action.reopenSelected.tip=Rouvrir la route sélectionnée observe.common.RouteDto.choice.create.fin.veille.activity=Créer l'activité de fin de veille -observe.common.RouteDto.choice.create.fin.veille.activity.and.continue=Créer l'activité de fin de veille et continuer observe.common.RouteDto.choice.not.create.fin.veille.activity.and.continue=Ne pas créer l'activité de fin de veille et continuer observe.common.RouteDto.list=Liste des routes observe.common.RouteDto.message.active.found=Une route est ouverte. observe.common.RouteDto.message.active.found.for.other.trip=Une route ouverte existe dans une autre marée. observe.common.RouteDto.message.creating=La route est en cours de création. -observe.common.RouteDto.message.need.fin.veille.activity=Aucune activité de fin de veille enregistrée sur la route à clôturer.\nVous pouvez \:\n\n\t- Annuler la fermeture et rester sur la route\n\t- Créer l'activité de fin de veille et vous y rendre\n\t- Créer l'activité de fin de veille, la clôturer puis clôturer la route\n\t- Continuer la clôture de la route sans créer cette activité de fin de veille. +observe.common.RouteDto.message.need.fin.veille.activity=Aucune activité de fin de veille enregistrée sur la route à clôturer.\nVous pouvez \:\n\n\t- Continuer la clôture de la route sans créer cette activité de fin de veille\n\t- Créer l'activité de fin de veille et vous y rendre\n\t- Annuler la fermeture et rester sur la route observe.common.RouteDto.message.no.active.found=Aucune route ouverte, vous pouvez soit en créer une nouvelle, soit en réouvrir une. observe.common.RouteDto.message.no.active.found.for.other.trip=Aucune route ouverte sur la marée ouverte observe.common.RouteDto.message.not.open=La route courante n'est pas ouverte, aucune modification possible. View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/54c95a00f9b14f06a0ef98f00994... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/54c95a00f9b14f06a0ef98f00994... You're receiving this email because of your account on gitlab.com.