Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: baec96e5 by Tony CHEMIT at 2017-12-21T20:48:04+01:00 remove a lot of not clever code (yes it's mine...), we have nearly done all to do on oepn data ui (at laaaaast pff) - - - - - 25 changed files: - client/src/main/java/fr/ird/observe/client/ds/editor/form/MoveDataHelper.java - client/src/main/java/fr/ird/observe/client/ds/editor/form/open/longline/ActivityLonglineObsUIModel.java - client/src/main/java/fr/ird/observe/client/ds/editor/form/open/longline/TripLonglineUIModel.java - client/src/main/java/fr/ird/observe/client/ds/editor/form/open/seine/ActivitySeineUIModel.java - client/src/main/java/fr/ird/observe/client/ds/editor/form/open/seine/RouteUIModel.java - client/src/main/java/fr/ird/observe/client/ds/editor/form/open/seine/TripSeineUIModel.java - − client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/CommonOpenDataListFormUI.jcss - − client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/OpenDataListFormUIMoveMultipleTripActionSupport.java - client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/ActivityLonglineObsListUI.jaxx - client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/ActivityLonglineObsListUIModel.java - client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/TripLonglineListUI.jaxx - client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/TripLonglineListUIModel.java - − client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/actions/OpenDataListFormUICreateActivityLonglineObs.java - − client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/actions/OpenDataListFormUIMoveMultipleActivityLonglineObs.java - − client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/actions/OpenDataListFormUIMoveMultipleTripLongline.java - client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/ActivitySeineListUI.jaxx - client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/ActivitySeineListUIModel.java - client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/RouteListUI.jaxx - client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/RouteListUIModel.java - client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/TripSeineListUI.jaxx - client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/TripSeineListUIModel.java - − client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/actions/OpenDataListFormUICreateActivitySeine.java - − client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/actions/OpenDataListFormUIMoveMultipleActivitySeine.java - − client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/actions/OpenDataListFormUIMoveMultipleRoute.java - − client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/actions/OpenDataListFormUIMoveMultipleTripSeine.java Changes: ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/MoveDataHelper.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/MoveDataHelper.java +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/MoveDataHelper.java @@ -22,6 +22,7 @@ package fr.ird.observe.client.ds.editor.form; * #L% */ +import fr.ird.observe.client.ClientApplicationContext; import fr.ird.observe.client.ObserveClientApplicationContext; import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; @@ -30,7 +31,6 @@ import fr.ird.observe.client.ds.editor.tree.navigation.nodes.longline.TripLongli import fr.ird.observe.client.ds.editor.tree.navigation.nodes.seine.RouteSeineNavigationTreeNode; import fr.ird.observe.client.ds.editor.tree.navigation.nodes.seine.TripSeineListNavigationTreeNode; import fr.ird.observe.client.ds.editor.tree.navigation.nodes.seine.TripSeineNavigationTreeNode; -import fr.ird.observe.client.main.MainUI; import fr.ird.observe.client.util.DecoratedNodeEntity; import fr.ird.observe.dto.IdHelper; import fr.ird.observe.dto.data.longline.TripLonglineReference; @@ -38,15 +38,14 @@ import fr.ird.observe.dto.data.seine.RouteReference; import fr.ird.observe.dto.data.seine.TripSeineReference; import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; import fr.ird.observe.dto.decoration.decorators.ReferentialReferenceDecorator; -import fr.ird.observe.dto.referential.GearType; +import fr.ird.observe.dto.referential.ProgramDto; import fr.ird.observe.dto.referential.ProgramReference; +import fr.ird.observe.spi.application.ObserveApplicationDataContext; -import javax.swing.JOptionPane; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; -import java.util.Optional; - -import static org.nuiton.i18n.I18n.t; +import java.util.Set; /** * Created by tchemit on 26/11/17. @@ -55,135 +54,101 @@ import static org.nuiton.i18n.I18n.t; */ public class MoveDataHelper { - public static Optional<String> chooseNewTripLongline(MainUI ui, NavigationTreeNodeSupport oldParentNode) { - - NavigationTreeNodeSupport programNode = oldParentNode.getParent(); - String oldTripLonglineId = oldParentNode.getId(); - int tripLonglineNb = programNode.getChildCount(); + public static void moveTrips(NavigationTree treeHelper, String newParentId, Set<String> dataIds, List<Integer> positions, NavigationTreeNodeSupport oldParentNode) { ObserveClientApplicationContext applicationContext = ObserveClientApplicationContext.get(); - DataReferenceDecorator<TripLonglineReference> decorator = applicationContext.getDataReferenceDecorator(TripLonglineReference.class, null); + ObserveApplicationDataContext openDataManager = applicationContext.getApplicationDataContext(); - //on crée un tableau avec une marée en moins car on ne propose pas la marée actuelle - DecoratedNodeEntity[] decoratedTripLonglines = new DecoratedNodeEntity[tripLonglineNb - 1]; + NavigationTreeNodeSupport rootNode = treeHelper.getRootNode(); + NavigationTreeNodeSupport newProgramNode = treeHelper.getChild(rootNode, newParentId); - int j = 0; - for (int i = 0; i < tripLonglineNb; i++) { + Iterator<String> iterator = dataIds.iterator(); + for (Integer position : positions) { - TripLonglineNavigationTreeNode tripLonglineNode = (TripLonglineNavigationTreeNode) programNode.getChildAt(i); + String tripId = iterator.next(); + NavigationTreeNodeSupport tripNode = treeHelper.getChild(oldParentNode, tripId); + boolean wasOpen = tripNode.isOpen(); + treeHelper.removeNode(tripNode); - String tripLonglineId = tripLonglineNode.getId(); + if (wasOpen) { + openDataManager.close(ProgramDto.class); + openDataManager.open(ProgramDto.class, newParentId); + } + + NavigationTreeNodeSupport newTripNode = treeHelper.getChild(newProgramNode, tripId); + + if (newTripNode == null) { - if (!oldTripLonglineId.equals(tripLonglineId)) { - decoratedTripLonglines[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(tripLonglineNode, decorator); + // create it + treeHelper.insertNode(newProgramNode, tripNode, position); } } - Object decoratedTripLongline = JOptionPane.showInputDialog(ui, - t("observe.action.choose.tripLongline.message"), - t("observe.action.choose.tripLongline.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedTripLonglines, - null); - return Optional.ofNullable(decoratedTripLongline != null ? ((DecoratedNodeEntity) decoratedTripLongline).getId() : null); + treeHelper.reloadNode(oldParentNode, true); + treeHelper.reloadNode(newProgramNode, true); + treeHelper.selectNode(newProgramNode); + } - public static Optional<String> chooseNewRoute(MainUI ui, NavigationTreeNodeSupport oldParentNode) { + public static DecoratedNodeEntity[] getTripLonglineParentCandidates(FormUI ui, String parentId) { - NavigationTreeNodeSupport routesNode = oldParentNode.getParent(); - String oldRouteId = oldParentNode.getId(); - int routeNb = routesNode.getChildCount(); + NavigationTree treeHelper = ui.getDataSourceUI().getTree(); - ObserveClientApplicationContext applicationContext = ObserveClientApplicationContext.get(); - DataReferenceDecorator<RouteReference> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(RouteReference.class); + NavigationTreeNodeSupport rootNode = treeHelper.getRootNode(); - //on crée un tableau avec une route en moins car on ne propose pas la route actuel - DecoratedNodeEntity[] decoratedRoutes = new DecoratedNodeEntity[routeNb - 1]; + List<DecoratedNodeEntity> result = new ArrayList<>(); - int j = 0; - for (int i = 0; i < routeNb; i++) { + ReferentialReferenceDecorator<ProgramReference> programDecorator = ui.getMainUI().getApplicationContext().getDecoratorService().getReferentialReferenceDecorator(ProgramReference.class); - RouteSeineNavigationTreeNode routeNode = (RouteSeineNavigationTreeNode) routesNode.getChildAt(i); + for (int i = 0, n = rootNode.getChildCount(); i < n; i++) { - String routeId = routeNode.getId(); + NavigationTreeNodeSupport programNode = (NavigationTreeNodeSupport) rootNode.getChildAt(i); + String programId = programNode.getId(); - if (!oldRouteId.equals(routeId)) { - decoratedRoutes[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(routeNode, decorator); + if (programId != null && IdHelper.isProgramId(programId) && !parentId.equals(programId)) { + if (programNode instanceof TripLonglineListNavigationTreeNode) { + TripLonglineListNavigationTreeNode node = (TripLonglineListNavigationTreeNode) programNode; + result.add(DecoratedNodeEntity.newDecoratedNodeEntity(node, programDecorator)); + } } } - - Object decoratedRoute = JOptionPane.showInputDialog(ui, - t("observe.action.choose.route.message"), - t("observe.action.choose.route.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedRoutes, - null); - - return Optional.ofNullable(decoratedRoute != null ? ((DecoratedNodeEntity) decoratedRoute).getId() : null); + return result.toArray(new DecoratedNodeEntity[result.size()]); } - public static Optional<String> chooseNewProgram(MainUI mainUI, GearType gearType, String oldProgramId) { + public static DecoratedNodeEntity[] getTripSeineParentCandidates(FormUI ui, String parentId) { - NavigationTree treeHelper = mainUI.getDataSourceEditor().getTree(); + NavigationTree treeHelper = ui.getDataSourceUI().getTree(); - // racine NavigationTreeNodeSupport rootNode = treeHelper.getRootNode(); - //on crée un tableau avec un programme en moins car on ne propose pas le programme actuel - List<DecoratedNodeEntity> decoratedProgramList = new ArrayList<>(); + List<DecoratedNodeEntity> result = new ArrayList<>(); - ReferentialReferenceDecorator<ProgramReference> programDecorator = ObserveClientApplicationContext.get().getDecoratorService().getReferentialReferenceDecorator(ProgramReference.class); + ReferentialReferenceDecorator<ProgramReference> programDecorator = ui.getMainUI().getApplicationContext().getDecoratorService().getReferentialReferenceDecorator(ProgramReference.class); for (int i = 0, n = rootNode.getChildCount(); i < n; i++) { NavigationTreeNodeSupport programNode = (NavigationTreeNodeSupport) rootNode.getChildAt(i); String programId = programNode.getId(); - // si le noeud programme n'est pas le même que le parent actuel - // si le noeud est bien un noeud de programme - if (programId != null && IdHelper.isProgramId(programId) && !oldProgramId.equals(programId)) { - - if (programNode instanceof TripSeineListNavigationTreeNode && GearType.seine == gearType) { - + if (programId != null && IdHelper.isProgramId(programId) && !parentId.equals(programId)) { + if (programNode instanceof TripSeineListNavigationTreeNode) { TripSeineListNavigationTreeNode node = (TripSeineListNavigationTreeNode) programNode; - decoratedProgramList.add(DecoratedNodeEntity.newDecoratedNodeEntity(node, programDecorator)); - - } else if (programNode instanceof TripLonglineListNavigationTreeNode && GearType.longline == gearType) { - - TripLonglineListNavigationTreeNode node = (TripLonglineListNavigationTreeNode) programNode; - decoratedProgramList.add(DecoratedNodeEntity.newDecoratedNodeEntity(node, programDecorator)); - + result.add(DecoratedNodeEntity.newDecoratedNodeEntity(node, programDecorator)); } - } } - - DecoratedNodeEntity[] decoratedPrograms = - decoratedProgramList.toArray(new DecoratedNodeEntity[decoratedProgramList.size()]); - - DecoratedNodeEntity decoratedProgram = (DecoratedNodeEntity) JOptionPane.showInputDialog(mainUI, - t("observe.action.choose.program.message"), - t("observe.action.choose.program.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedPrograms, - null); - - return Optional.ofNullable(decoratedProgram == null ? null : decoratedProgram.getId()); + return result.toArray(new DecoratedNodeEntity[result.size()]); } - public static Optional<String> chooseNewTripSeine(MainUI mainUI, NavigationTreeNodeSupport oldTripSeineNode) { - NavigationTreeNodeSupport programNode = oldTripSeineNode.getParent(); - String oldTripSeineId = oldTripSeineNode.getId(); + public static DecoratedNodeEntity[] getRouteParentCandidates(String parentId, NavigationTreeNodeSupport oldParentNode) { + + NavigationTreeNodeSupport programNode = oldParentNode.getParent(); int tripSeineNb = programNode.getChildCount(); - ObserveClientApplicationContext applicationContext = ObserveClientApplicationContext.get(); - DataReferenceDecorator<TripSeineReference> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(TripSeineReference.class); + ClientApplicationContext applicationContext = ClientApplicationContext.get(); + DataReferenceDecorator decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(TripSeineReference.class); - //on crée un tableau avec une marée en moins car on ne propose pas la marée actuel - DecoratedNodeEntity[] decoratedTripSeines = new DecoratedNodeEntity[tripSeineNb - 1]; + DecoratedNodeEntity[] result = new DecoratedNodeEntity[tripSeineNb - 1]; int j = 0; for (int i = 0; i < tripSeineNb; i++) { @@ -192,18 +157,52 @@ public class MoveDataHelper { String tripSeineId = tripSeineNode.getId(); - if (!oldTripSeineId.equals(tripSeineId)) { - decoratedTripSeines[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(tripSeineNode, decorator); + if (!parentId.equals(tripSeineId)) { + result[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(tripSeineNode, decorator); } } + return result; + } + - Object decoratedTripSeine = JOptionPane.showInputDialog(mainUI, - t("observe.action.choose.tripSeine.message"), - t("observe.action.choose.tripSeine.title"), - JOptionPane.QUESTION_MESSAGE, - null, - decoratedTripSeines, - null); - return Optional.ofNullable(decoratedTripSeine != null ? ((DecoratedNodeEntity) decoratedTripSeine).getId() : null); + public static DecoratedNodeEntity[] getActivitySeineParentCandidates(String parentId, NavigationTreeNodeSupport oldParentNode) { + NavigationTreeNodeSupport routesNode = oldParentNode.getParent(); + int routeNb = routesNode.getChildCount(); + + ObserveClientApplicationContext applicationContext = ObserveClientApplicationContext.get(); + DataReferenceDecorator<RouteReference> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(RouteReference.class); + + DecoratedNodeEntity[] result = new DecoratedNodeEntity[routeNb - 1]; + + int j = 0; + for (int i = 0; i < routeNb; i++) { + RouteSeineNavigationTreeNode routeNode = (RouteSeineNavigationTreeNode) routesNode.getChildAt(i); + String routeId = routeNode.getId(); + if (!parentId.equals(routeId)) { + result[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(routeNode, decorator); + } + } + return result; + } + + public static DecoratedNodeEntity[] getActivityLonglineParentCandidates(String parentId, NavigationTreeNodeSupport oldParentNode) { + NavigationTreeNodeSupport programNode = oldParentNode.getParent(); + int tripLonglineNb = programNode.getChildCount(); + + ObserveClientApplicationContext applicationContext = ObserveClientApplicationContext.get(); + DataReferenceDecorator<TripLonglineReference> decorator = applicationContext.getDataReferenceDecorator(TripLonglineReference.class, null); + + DecoratedNodeEntity[] result = new DecoratedNodeEntity[tripLonglineNb - 1]; + + int j = 0; + for (int i = 0; i < tripLonglineNb; i++) { + TripLonglineNavigationTreeNode tripLonglineNode = (TripLonglineNavigationTreeNode) programNode.getChildAt(i); + String tripLonglineId = tripLonglineNode.getId(); + if (!parentId.equals(tripLonglineId)) { + result[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(tripLonglineNode, decorator); + } + } + return result; } + } ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/open/longline/ActivityLonglineObsUIModel.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/open/longline/ActivityLonglineObsUIModel.java +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/open/longline/ActivityLonglineObsUIModel.java @@ -24,6 +24,7 @@ package fr.ird.observe.client.ds.editor.form.open.longline; import fr.ird.observe.client.ObserveClientApplicationContext; import fr.ird.observe.client.ds.editor.form.FormUILayoutFocusTraversalPolicy; +import fr.ird.observe.client.ds.editor.form.MoveDataHelper; import fr.ird.observe.client.ds.editor.form.ObserveFormHelper; import fr.ird.observe.client.ds.editor.form.open.OpenDataFormUI; import fr.ird.observe.client.ds.editor.form.open.OpenDataFormUILayoutFocusTraversalPolicy; @@ -31,15 +32,12 @@ import fr.ird.observe.client.ds.editor.form.open.OpenDataFormUIModel; import fr.ird.observe.client.ds.editor.form.spi.FormUIValidationMessageManager; import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.client.ds.editor.tree.navigation.nodes.longline.TripLonglineNavigationTreeNode; import fr.ird.observe.client.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.longline.ActivityLonglineObsDto; import fr.ird.observe.dto.data.longline.ActivityLonglineObsHelper; import fr.ird.observe.dto.data.longline.ActivityLonglineObsReference; import fr.ird.observe.dto.data.longline.TripLonglineDto; -import fr.ird.observe.dto.data.longline.TripLonglineReference; import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; import fr.ird.observe.dto.reference.DataDtoReference; import fr.ird.observe.dto.referential.longline.VesselActivityLonglineHelper; import fr.ird.observe.dto.referential.longline.VesselActivityLonglineReference; @@ -181,26 +179,7 @@ public class ActivityLonglineObsUIModel extends OpenDataFormUIModel<ActivityLong @Override public DecoratedNodeEntity[] getParentCandidates(OpenDataFormUI<ActivityLonglineObsDto, ActivityLonglineObsReference> ui) { - NavigationTreeNodeSupport oldParentNode = getOldParentNode(ui); - NavigationTreeNodeSupport programNode = oldParentNode.getParent(); - String oldTripLonglineId = oldParentNode.getId(); - int tripLonglineNb = programNode.getChildCount(); - - ObserveClientApplicationContext applicationContext = ObserveClientApplicationContext.get(); - DataReferenceDecorator<TripLonglineReference> decorator = applicationContext.getDataReferenceDecorator(TripLonglineReference.class, null); - - //on crée un tableau avec une marée en moins car on ne propose pas la marée actuelle - DecoratedNodeEntity[] decoratedTripLonglines = new DecoratedNodeEntity[tripLonglineNb - 1]; - - int j = 0; - for (int i = 0; i < tripLonglineNb; i++) { - TripLonglineNavigationTreeNode tripLonglineNode = (TripLonglineNavigationTreeNode) programNode.getChildAt(i); - String tripLonglineId = tripLonglineNode.getId(); - if (!oldTripLonglineId.equals(tripLonglineId)) { - decoratedTripLonglines[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(tripLonglineNode, decorator); - } - } - return decoratedTripLonglines; + return MoveDataHelper.getActivityLonglineParentCandidates(getParentId(), getOldParentNode(ui)); } @Override ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/open/longline/TripLonglineUIModel.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/open/longline/TripLonglineUIModel.java +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/open/longline/TripLonglineUIModel.java @@ -27,6 +27,7 @@ import com.google.common.collect.ImmutableSet; import fr.ird.observe.client.ObserveClientApplicationContext; import fr.ird.observe.client.configuration.ClientConfig; import fr.ird.observe.client.ds.editor.form.FormUILayoutFocusTraversalPolicy; +import fr.ird.observe.client.ds.editor.form.MoveDataHelper; import fr.ird.observe.client.ds.editor.form.ObserveFormHelper; import fr.ird.observe.client.ds.editor.form.open.OpenDataFormUI; import fr.ird.observe.client.ds.editor.form.open.OpenDataFormUILayoutFocusTraversalPolicy; @@ -35,24 +36,19 @@ import fr.ird.observe.client.ds.editor.form.spi.FormUIValidationMessageManager; import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; import fr.ird.observe.client.ds.editor.tree.navigation.ObserveNavigationTree; import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.client.ds.editor.tree.navigation.nodes.longline.TripLonglineListNavigationTreeNode; import fr.ird.observe.client.util.DecoratedNodeEntity; -import fr.ird.observe.dto.IdHelper; import fr.ird.observe.dto.data.longline.TripLonglineDto; import fr.ird.observe.dto.data.longline.TripLonglineReference; -import fr.ird.observe.dto.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.dto.reference.DtoReferenceCollection; import fr.ird.observe.dto.reference.ReferentialReferencesFilter; import fr.ird.observe.dto.referential.PersonHelper; import fr.ird.observe.dto.referential.PersonReference; -import fr.ird.observe.dto.referential.ProgramReference; import fr.ird.observe.dto.referential.VesselHelper; import fr.ird.observe.dto.referential.VesselReference; import fr.ird.observe.services.service.data.longline.TripLonglineService; import java.awt.Component; import java.awt.Container; -import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -181,36 +177,9 @@ public class TripLonglineUIModel extends OpenDataFormUIModel<TripLonglineDto, Tr @Override public DecoratedNodeEntity[] getParentCandidates(OpenDataFormUI<TripLonglineDto, TripLonglineReference> ui) { - - NavigationTree treeHelper = ui.getDataSourceUI().getTree(); - - // racine - NavigationTreeNodeSupport rootNode = treeHelper.getRootNode(); - - //on crée un tableau avec un programme en moins car on ne propose pas le programme actuel - List<DecoratedNodeEntity> decoratedProgramList = new ArrayList<>(); - - ReferentialReferenceDecorator<ProgramReference> programDecorator = ui.getMainUI().getApplicationContext().getDecoratorService().getReferentialReferenceDecorator(ProgramReference.class); - - String parentId = getParentId(); - for (int i = 0, n = rootNode.getChildCount(); i < n; i++) { - - NavigationTreeNodeSupport programNode = (NavigationTreeNodeSupport) rootNode.getChildAt(i); - String programId = programNode.getId(); - - // si le noeud programme n'est pas le même que le parent actuel - // si le noeud est bien un noeud de programme - if (programId != null && IdHelper.isProgramId(programId) && !parentId.equals(programId)) { - if (programNode instanceof TripLonglineListNavigationTreeNode) { - TripLonglineListNavigationTreeNode node = (TripLonglineListNavigationTreeNode) programNode; - decoratedProgramList.add(DecoratedNodeEntity.newDecoratedNodeEntity(node, programDecorator)); - } - } - } - return decoratedProgramList.toArray(new DecoratedNodeEntity[decoratedProgramList.size()]); + return MoveDataHelper.getTripLonglineParentCandidates(ui, getParentId()); } - @Override public String getMoveTitle() { return t("observe.action.choose.program.title"); ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/open/seine/ActivitySeineUIModel.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/open/seine/ActivitySeineUIModel.java +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/open/seine/ActivitySeineUIModel.java @@ -26,6 +26,7 @@ import com.google.common.collect.ImmutableSet; import fr.ird.observe.client.ClientApplicationContext; import fr.ird.observe.client.ObserveClientApplicationContext; import fr.ird.observe.client.ds.editor.form.FormUILayoutFocusTraversalPolicy; +import fr.ird.observe.client.ds.editor.form.MoveDataHelper; import fr.ird.observe.client.ds.editor.form.ObserveFormHelper; import fr.ird.observe.client.ds.editor.form.open.OpenDataFormUI; import fr.ird.observe.client.ds.editor.form.open.OpenDataFormUILayoutFocusTraversalPolicy; @@ -33,15 +34,12 @@ import fr.ird.observe.client.ds.editor.form.open.OpenDataFormUIModel; import fr.ird.observe.client.ds.editor.form.spi.FormUIValidationMessageManager; import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.client.ds.editor.tree.navigation.nodes.seine.RouteSeineNavigationTreeNode; import fr.ird.observe.client.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.seine.ActivitySeineDto; import fr.ird.observe.dto.data.seine.ActivitySeineReference; import fr.ird.observe.dto.data.seine.RouteDto; -import fr.ird.observe.dto.data.seine.RouteReference; import fr.ird.observe.dto.data.seine.TripSeineDto; import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; import fr.ird.observe.dto.reference.DataDtoReference; import fr.ird.observe.dto.referential.seine.VesselActivitySeineHelper; import fr.ird.observe.dto.referential.seine.VesselActivitySeineReference; @@ -246,25 +244,7 @@ public class ActivitySeineUIModel extends OpenDataFormUIModel<ActivitySeineDto, @Override public DecoratedNodeEntity[] getParentCandidates(OpenDataFormUI<ActivitySeineDto, ActivitySeineReference> ui) { NavigationTreeNodeSupport oldParentNode = getOldParentNode(ui); - NavigationTreeNodeSupport routesNode = oldParentNode.getParent(); - String oldRouteId = oldParentNode.getId(); - int routeNb = routesNode.getChildCount(); - - ObserveClientApplicationContext applicationContext = ObserveClientApplicationContext.get(); - DataReferenceDecorator<RouteReference> decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(RouteReference.class); - - //on crée un tableau avec une route en moins car on ne propose pas la route actuel - DecoratedNodeEntity[] decoratedRoutes = new DecoratedNodeEntity[routeNb - 1]; - - int j = 0; - for (int i = 0; i < routeNb; i++) { - RouteSeineNavigationTreeNode routeNode = (RouteSeineNavigationTreeNode) routesNode.getChildAt(i); - String routeId = routeNode.getId(); - if (!oldRouteId.equals(routeId)) { - decoratedRoutes[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(routeNode, decorator); - } - } - return decoratedRoutes; + return MoveDataHelper.getActivitySeineParentCandidates(getParentId(), oldParentNode); } ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/open/seine/RouteUIModel.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/open/seine/RouteUIModel.java +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/open/seine/RouteUIModel.java @@ -25,6 +25,7 @@ package fr.ird.observe.client.ds.editor.form.open.seine; import fr.ird.observe.client.ClientApplicationContext; import fr.ird.observe.client.ds.editor.DataSourceUI; import fr.ird.observe.client.ds.editor.form.FormUILayoutFocusTraversalPolicy; +import fr.ird.observe.client.ds.editor.form.MoveDataHelper; import fr.ird.observe.client.ds.editor.form.ObserveFormHelper; import fr.ird.observe.client.ds.editor.form.open.OpenDataFormUI; import fr.ird.observe.client.ds.editor.form.open.OpenDataFormUILayoutFocusTraversalPolicy; @@ -33,15 +34,12 @@ import fr.ird.observe.client.ds.editor.form.spi.FormUIValidationMessageManager; import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; import fr.ird.observe.client.ds.editor.tree.navigation.ObserveNavigationTree; import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.client.ds.editor.tree.navigation.nodes.seine.TripSeineNavigationTreeNode; import fr.ird.observe.client.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.seine.ActivitySeineDto; import fr.ird.observe.dto.data.seine.RouteDto; import fr.ird.observe.dto.data.seine.RouteReference; import fr.ird.observe.dto.data.seine.TripSeineDto; -import fr.ird.observe.dto.data.seine.TripSeineReference; import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; import fr.ird.observe.dto.referential.seine.VesselActivitySeineHelper; import fr.ird.observe.dto.referential.seine.VesselActivitySeineReference; import fr.ird.observe.services.service.data.seine.RouteService; @@ -248,31 +246,7 @@ public class RouteUIModel extends OpenDataFormUIModel<RouteDto, RouteReference, @Override public DecoratedNodeEntity[] getParentCandidates(OpenDataFormUI<RouteDto, RouteReference> ui) { - - NavigationTreeNodeSupport oldTripSeineNode = getOldParentNode(ui); - - NavigationTreeNodeSupport programNode = oldTripSeineNode.getParent(); - String oldTripSeineId = oldTripSeineNode.getId(); - int tripSeineNb = programNode.getChildCount(); - - ClientApplicationContext applicationContext = ClientApplicationContext.get(); - DataReferenceDecorator decorator = applicationContext.getDecoratorService().getDataReferenceDecorator(TripSeineReference.class); - - //on crée un tableau avec une marée en moins car on ne propose pas la marée actuel - DecoratedNodeEntity[] decoratedTripSeines = new DecoratedNodeEntity[tripSeineNb - 1]; - - int j = 0; - for (int i = 0; i < tripSeineNb; i++) { - - TripSeineNavigationTreeNode tripSeineNode = (TripSeineNavigationTreeNode) programNode.getChildAt(i); - - String tripSeineId = tripSeineNode.getId(); - - if (!oldTripSeineId.equals(tripSeineId)) { - decoratedTripSeines[j++] = DecoratedNodeEntity.newDecoratedNodeEntity(tripSeineNode, decorator); - } - } - return decoratedTripSeines; + return MoveDataHelper.getRouteParentCandidates(getParentId(), getOldParentNode(ui)); } ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/open/seine/TripSeineUIModel.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/open/seine/TripSeineUIModel.java +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/open/seine/TripSeineUIModel.java @@ -27,6 +27,7 @@ import com.google.common.collect.ImmutableSet; import fr.ird.observe.client.ObserveClientApplicationContext; import fr.ird.observe.client.configuration.ClientConfig; import fr.ird.observe.client.ds.editor.form.FormUILayoutFocusTraversalPolicy; +import fr.ird.observe.client.ds.editor.form.MoveDataHelper; import fr.ird.observe.client.ds.editor.form.ObserveFormHelper; import fr.ird.observe.client.ds.editor.form.open.OpenDataFormUI; import fr.ird.observe.client.ds.editor.form.open.OpenDataFormUILayoutFocusTraversalPolicy; @@ -35,24 +36,19 @@ import fr.ird.observe.client.ds.editor.form.spi.FormUIValidationMessageManager; import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; import fr.ird.observe.client.ds.editor.tree.navigation.ObserveNavigationTree; import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.client.ds.editor.tree.navigation.nodes.seine.TripSeineListNavigationTreeNode; import fr.ird.observe.client.util.DecoratedNodeEntity; -import fr.ird.observe.dto.IdHelper; import fr.ird.observe.dto.data.seine.TripSeineDto; import fr.ird.observe.dto.data.seine.TripSeineReference; -import fr.ird.observe.dto.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.dto.reference.DtoReferenceCollection; import fr.ird.observe.dto.reference.ReferentialReferencesFilter; import fr.ird.observe.dto.referential.PersonHelper; import fr.ird.observe.dto.referential.PersonReference; -import fr.ird.observe.dto.referential.ProgramReference; import fr.ird.observe.dto.referential.VesselHelper; import fr.ird.observe.dto.referential.VesselReference; import fr.ird.observe.services.service.data.seine.TripSeineService; import java.awt.Component; import java.awt.Container; -import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -188,33 +184,7 @@ public class TripSeineUIModel extends OpenDataFormUIModel<TripSeineDto, TripSein @Override public DecoratedNodeEntity[] getParentCandidates(OpenDataFormUI<TripSeineDto, TripSeineReference> ui) { - - NavigationTree treeHelper = ui.getDataSourceUI().getTree(); - - // racine - NavigationTreeNodeSupport rootNode = treeHelper.getRootNode(); - - //on crée un tableau avec un programme en moins car on ne propose pas le programme actuel - List<DecoratedNodeEntity> decoratedProgramList = new ArrayList<>(); - - ReferentialReferenceDecorator<ProgramReference> programDecorator = ui.getMainUI().getApplicationContext().getDecoratorService().getReferentialReferenceDecorator(ProgramReference.class); - - String parentId = getParentId(); - for (int i = 0, n = rootNode.getChildCount(); i < n; i++) { - - NavigationTreeNodeSupport programNode = (NavigationTreeNodeSupport) rootNode.getChildAt(i); - String programId = programNode.getId(); - - // si le noeud programme n'est pas le même que le parent actuel - // si le noeud est bien un noeud de programme - if (programId != null && IdHelper.isProgramId(programId) && !parentId.equals(programId)) { - if (programNode instanceof TripSeineListNavigationTreeNode) { - TripSeineListNavigationTreeNode node = (TripSeineListNavigationTreeNode) programNode; - decoratedProgramList.add(DecoratedNodeEntity.newDecoratedNodeEntity(node, programDecorator)); - } - } - } - return decoratedProgramList.toArray(new DecoratedNodeEntity[decoratedProgramList.size()]); + return MoveDataHelper.getTripSeineParentCandidates(ui, getParentId()); } @Override ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/CommonOpenDataListFormUI.jcss deleted ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/CommonOpenDataListFormUI.jcss +++ /dev/null @@ -1,22 +0,0 @@ -/* - * #%L - * ObServe :: Client - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * 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 - * 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% - */ - ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/OpenDataListFormUIMoveMultipleTripActionSupport.java deleted ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/OpenDataListFormUIMoveMultipleTripActionSupport.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * #%L - * ObServe :: Client - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * 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 - * 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% - */ -package fr.ird.observe.client.ds.editor.form.openlist; - -import fr.ird.observe.client.ObserveClientApplicationContext; -import fr.ird.observe.client.ds.editor.form.MoveDataHelper; -import fr.ird.observe.client.ds.editor.form.openlist.actions.OpenDataListFormUIMoveMultipleDataActionSupport; -import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; -import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.dto.referential.GearType; -import fr.ird.observe.dto.referential.ProgramDto; -import fr.ird.observe.spi.application.ObserveApplicationDataContext; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import java.util.Iterator; -import java.util.List; -import java.util.Optional; -import java.util.Set; - -import static org.nuiton.i18n.I18n.n; - -/** - * Action pour changer le programme d'une ou plusieurs marée dans la liste. - * - * @author Kevin Morin (Code Lutin) - * @since 5.0 - */ -public abstract class OpenDataListFormUIMoveMultipleTripActionSupport extends OpenDataListFormUIMoveMultipleDataActionSupport { - - private static final Log log = LogFactory.getLog(OpenDataListFormUIMoveMultipleTripActionSupport.class); - - private final GearType gearType; - - protected OpenDataListFormUIMoveMultipleTripActionSupport(GearType gearType) { - super(n("observe.common.TripDto.action.moves"), - n("observe.common.TripDto.action.moves.tip"), - "move-trips"); - this.gearType = gearType; - } - - @Override - public Optional<String> getNewParentId() { - return MoveDataHelper.chooseNewProgram(getMainUI(), gearType, getOldParentNode().getId()); - } - - @Override - public void updateUI(String newParentId, Set<String> dataIds, List<Integer> positions) { - - NavigationTreeNodeSupport oldParentNode = getOldParentNode(); - - ObserveClientApplicationContext applicationContext = ObserveClientApplicationContext.get(); - ObserveApplicationDataContext openDataManager = applicationContext.getApplicationDataContext(); - NavigationTree treeHelper = getDataSourceEditor().getTree(); - - NavigationTreeNodeSupport rootNode = treeHelper.getRootNode(); - NavigationTreeNodeSupport newProgramNode = treeHelper.getChild(rootNode, newParentId); - - Iterator<String> iterator = dataIds.iterator(); - for (Integer position : positions) { - - String tripId = iterator.next(); - NavigationTreeNodeSupport tripNode = treeHelper.getChild(oldParentNode, tripId); - boolean wasOpen = tripNode.isOpen(); - treeHelper.removeNode(tripNode); - - if (wasOpen) { - openDataManager.close(ProgramDto.class); - openDataManager.open(ProgramDto.class, newParentId); - } - - NavigationTreeNodeSupport newTripNode = treeHelper.getChild(newProgramNode, tripId); - - if (newTripNode == null) { - - // create it - if (log.isInfoEnabled()) { - log.info("Insert trip node: "); - } - treeHelper.insertNode(newProgramNode, tripNode, position); - } - } - - treeHelper.reloadNode(oldParentNode, true); - treeHelper.reloadNode(newProgramNode, true); - treeHelper.selectNode(newProgramNode); - } - -} ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/ActivityLonglineObsListUI.jaxx ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/ActivityLonglineObsListUI.jaxx +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/ActivityLonglineObsListUI.jaxx @@ -28,9 +28,7 @@ org.nuiton.jaxx.widgets.select.BeanListHeader </import> - <style source="../CommonOpenDataListFormUI.jcss"/> - - <ActivityLonglineObsListUIModel id='model' title='observe.common.ActivityLonglineObsDto.types'/> + <ActivityLonglineObsListUIModel id='model'/> <JLabel id="emptyLabel" text='observe.common.ActivityLonglineObsDto.message.nonForTrip'/> <BeanListHeader id='listHeader' labelText='observe.common.ActivityDto.list'/> ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/ActivityLonglineObsListUIModel.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/ActivityLonglineObsListUIModel.java +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/ActivityLonglineObsListUIModel.java @@ -22,13 +22,26 @@ package fr.ird.observe.client.ds.editor.form.openlist.longline; * #L% */ +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.client.ObserveClientApplicationContext; +import fr.ird.observe.client.ds.editor.form.MoveDataHelper; +import fr.ird.observe.client.ds.editor.form.openlist.OpenDataListFormUI; import fr.ird.observe.client.ds.editor.form.openlist.OpenDataListFormUIModel; import fr.ird.observe.client.ds.editor.form.spi.FormUIValidationMessageManager; +import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; +import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.client.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.longline.ActivityLonglineObsDto; import fr.ird.observe.dto.data.longline.ActivityLonglineObsReference; +import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.services.service.data.longline.ActivityLonglineObsService; +import fr.ird.observe.spi.application.ObserveApplicationDataContext; + +import java.util.List; +import java.util.Optional; import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; /** * Created on 9/26/14. @@ -38,6 +51,10 @@ import static org.nuiton.i18n.I18n.n; */ public class ActivityLonglineObsListUIModel extends OpenDataListFormUIModel<ActivityLonglineObsDto, ActivityLonglineObsReference, ActivityLonglineObsService> { + public ActivityLonglineObsListUIModel() { + setTitle(t("observe.common.ActivityLonglineObsDto.types")); + } + @Override public void computeReadMessages(FormUIValidationMessageManager validationManager) { if (isAnotherParentOpen()) { @@ -61,4 +78,92 @@ public class ActivityLonglineObsListUIModel extends OpenDataListFormUIModel<Acti validationManager.addInfoMessage(n("observe.common.ActivityLonglineObsDto.message.active.found")); } + @Override + public DecoratedNodeEntity[] getParentCandidates(OpenDataListFormUI<ActivityLonglineObsDto, ActivityLonglineObsReference> ui) { + return MoveDataHelper.getActivityLonglineParentCandidates(getParentId(), getOldParentNode(ui)); + } + + @Override + public String getMoveTitle() { + return t("observe.action.choose.tripLongline.title"); + } + + @Override + public String getMoveMessage() { + return t("observe.action.choose.tripLongline.message"); + } + + @Override + public void afterMoveData(ImmutableSet<String> dataIds, String newParentId, List<Integer> positions, OpenDataListFormUI<ActivityLonglineObsDto, ActivityLonglineObsReference> ui) { + super.afterMoveData(dataIds, newParentId, positions, ui); + + NavigationTreeNodeSupport oldParentNode = getOldParentNode(ui); + + ObserveClientApplicationContext applicationContext = ObserveClientApplicationContext.get(); + ObserveApplicationDataContext openDataManager = applicationContext.getApplicationDataContext(); + NavigationTree tree = ui.getDataSourceUI().getTree(); + + NavigationTreeNodeSupport oldTripLonglineNode = oldParentNode.getParent(); + NavigationTreeNodeSupport programNode = oldTripLonglineNode.getParent(); + NavigationTreeNodeSupport newTripLonglineNode = tree.getChild(programNode, newParentId); + String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivityLonglineObsDto.class); + NavigationTreeNodeSupport newActivitiesNode = tree.getChild(newTripLonglineNode, activitiesNodeId); + + // Let's check if we're moving an open activity + String openId = openDataManager.getOpenId(ActivityLonglineObsDto.class); + Optional<String> openActivity = openId != null && dataIds.contains(openId) ? Optional.of(openId) : Optional.empty(); + + // If so, we closeData it to avoid ending up with an open activity into a closed trip. + if (openActivity.isPresent()) { + openDataManager.close(ActivityLonglineObsDto.class); + } + + // Let's reload the sub tree of each activities node. + // As the change have already be oldParentNode in database, we just call the child loaders to regenerate the activities nodes sub trees + tree.reloadNodeSubTree(oldParentNode); + tree.reloadNodeSubTree(newActivitiesNode); + + // Let's put the focus on the activities node which received the activities + tree.selectNode(newActivitiesNode); + } + + /* + + //FIXME!!! Voir si c'est vraiment nécessaire, je comprends pas pourquoi le comportement change des autres types + @Override + protected void doActionPerformed(ActionEvent e, OpenDataListFormUI ui) { + + String openId = ObserveClientApplicationContext.applicationDataContext().getOpenActivityLonglineObsId(); + + NavigationTree tree = getDataSourceUI().getTree(); + + boolean wasCollapsed = ObserveFormHelper.isOpenActivityNodeCollapsed(tree, openId); + + // selection du noeud de l'activity ouverte + NavigationTreeNodeSupport selectedNode = tree.getSelectedNode(); + selectedNode = tree.getActivityLonglineNode(selectedNode, openId); + tree.selectNode(selectedNode); + + // on conserve le path de l'activité + TreePath path = tree.getSelectionPath(); + + // recuperation de l'écran associé + ActivityLonglineObsUI selectedUI = (ActivityLonglineObsUI) getDataSourceUI().getSelectedContentUI(); + + if (openId != null) { + // fermeture de l'activité et création d'une nouvelle + selectedUI.getCloseData().doClick(); + } + + selectedUI.getCreate().doClick(); + + if (wasCollapsed) { + + // on ferme le noeud de l'activité (qui a ete ouverte lors de la selection de celle-ci) + tree.collapsePath(path); + } + + } + + */ } ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/TripLonglineListUI.jaxx ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/TripLonglineListUI.jaxx +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/TripLonglineListUI.jaxx @@ -28,9 +28,7 @@ org.nuiton.jaxx.widgets.select.BeanListHeader </import> - <style source="../CommonOpenDataListFormUI.jcss"/> - - <TripLonglineListUIModel id='model' title='observe.common.TripLonglineDto.types'/> + <TripLonglineListUIModel id='model'/> <JLabel id="emptyLabel" text='observe.common.TripDto.message.noneForTrip'/> <BeanListHeader id='listHeader' labelText='observe.common.TripDto.list'/> ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/TripLonglineListUIModel.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/TripLonglineListUIModel.java +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/TripLonglineListUIModel.java @@ -22,16 +22,24 @@ package fr.ird.observe.client.ds.editor.form.openlist.longline; * #L% */ +import com.google.common.collect.ImmutableSet; import fr.ird.observe.client.ClientApplicationContext; +import fr.ird.observe.client.ds.editor.form.MoveDataHelper; +import fr.ird.observe.client.ds.editor.form.openlist.OpenDataListFormUI; import fr.ird.observe.client.ds.editor.form.openlist.OpenDataListFormUIModel; import fr.ird.observe.client.ds.editor.form.spi.FormUIValidationMessageManager; +import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.client.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.longline.TripLonglineDto; import fr.ird.observe.dto.data.longline.TripLonglineReference; import fr.ird.observe.dto.reference.DtoReference; import fr.ird.observe.dto.referential.ProgramReference; import fr.ird.observe.services.service.data.longline.TripLonglineService; +import java.util.List; + import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; /** * Created on 9/26/14. @@ -41,6 +49,10 @@ import static org.nuiton.i18n.I18n.n; */ public class TripLonglineListUIModel extends OpenDataListFormUIModel<TripLonglineDto, TripLonglineReference, TripLonglineService> { + public TripLonglineListUIModel() { + setTitle(t("observe.common.TripLonglineDto.types")); + } + @Override public void computeReadMessages(FormUIValidationMessageManager validationManager) { validationManager.addInfoMessage(n("observe.common.TripLonglineDto.message.active.found.for.other.program")); @@ -63,4 +75,26 @@ public class TripLonglineListUIModel extends OpenDataListFormUIModel<TripLonglin setTitle(title); super.openUI(); } + + @Override + public String getMoveTitle() { + return t("observe.action.choose.program.title"); + } + + @Override + public String getMoveMessage() { + return t("observe.action.choose.program.message"); + } + + @Override + public DecoratedNodeEntity[] getParentCandidates(OpenDataListFormUI<TripLonglineDto, TripLonglineReference> ui) { + return MoveDataHelper.getTripLonglineParentCandidates(ui, getParentId()); + } + + @Override + public void afterMoveData(ImmutableSet<String> dataIds, String newParentId, List<Integer> positions, OpenDataListFormUI<TripLonglineDto, TripLonglineReference> ui) { + super.afterMoveData(dataIds, newParentId, positions, ui); + NavigationTreeNodeSupport oldParentNode = getOldParentNode(ui); + MoveDataHelper.moveTrips(ui.getDataSourceUI().getTree(), newParentId, dataIds, positions, oldParentNode); + } } ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/actions/OpenDataListFormUICreateActivityLonglineObs.java deleted ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/actions/OpenDataListFormUICreateActivityLonglineObs.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * #%L - * ObServe :: Client - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * 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 - * 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% - */ -package fr.ird.observe.client.ds.editor.form.openlist.longline.actions; - -import fr.ird.observe.client.ObserveClientApplicationContext; -import fr.ird.observe.client.ds.editor.form.ObserveFormHelper; -import fr.ird.observe.client.ds.editor.form.open.longline.ActivityLonglineObsUI; -import fr.ird.observe.client.ds.editor.form.openlist.OpenDataListFormUI; -import fr.ird.observe.client.ds.editor.form.openlist.actions.OpenDataListFormUICreateData; -import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; -import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; - -import javax.swing.tree.TreePath; -import java.awt.event.ActionEvent; - -/** - * FIXME!!! N'est plus utilisé mais on garde pour voir si ce n'est pas encore nécessaire - * Action pour fermer l'objet sous-jacent à l'écran et en créer un nouveau. - * - * @author Tony Chemit - dev@tchemit.fr - * @since 1.5 - */ -public class OpenDataListFormUICreateActivityLonglineObs extends OpenDataListFormUICreateData { - - public OpenDataListFormUICreateActivityLonglineObs() { -// super(n("observe.common.ActivityDto.action.closeAndCreate"), -// n("observe.common.ActivityDto.action.closeAndCreate.tip")); - } - - @Override - protected void doActionPerformed(ActionEvent e, OpenDataListFormUI ui) { - - //FIXME!!! Voir si c'est vraiment nécessaire, je comprends pas pourquoi le comportement change des autres types - String openId = ObserveClientApplicationContext.applicationDataContext().getOpenActivityLonglineObsId(); - - NavigationTree tree = getDataSourceEditor().getTree(); - - boolean wasCollapsed = ObserveFormHelper.isOpenActivityNodeCollapsed(tree, openId); - - // selection du noeud de l'activity ouverte - NavigationTreeNodeSupport selectedNode = tree.getSelectedNode(); - selectedNode = tree.getActivityLonglineNode(selectedNode, openId); - tree.selectNode(selectedNode); - - // on conserve le path de l'activité - TreePath path = tree.getSelectionPath(); - - // recuperation de l'écran associé - ActivityLonglineObsUI selectedUI = (ActivityLonglineObsUI) getDataSourceEditor().getSelectedContentUI(); - - if (openId != null) { - // fermeture de l'activité et création d'une nouvelle - selectedUI.getCloseData().doClick(); - } - - selectedUI.getCreate().doClick(); - - if (wasCollapsed) { - - // on ferme le noeud de l'activité (qui a ete ouverte lors de la selection de celle-ci) - tree.collapsePath(path); - } - - } - -} ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/actions/OpenDataListFormUIMoveMultipleActivityLonglineObs.java deleted ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/actions/OpenDataListFormUIMoveMultipleActivityLonglineObs.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * #%L - * ObServe :: Client - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * 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 - * 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% - */ -package fr.ird.observe.client.ds.editor.form.openlist.longline.actions; - -import fr.ird.observe.client.ObserveClientApplicationContext; -import fr.ird.observe.client.ds.editor.form.MoveDataHelper; -import fr.ird.observe.client.ds.editor.form.openlist.actions.OpenDataListFormUIMoveMultipleDataActionSupport; -import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; -import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.dto.data.longline.ActivityLonglineObsDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.spi.application.ObserveApplicationDataContext; - -import java.util.List; -import java.util.Optional; -import java.util.Set; - -import static org.nuiton.i18n.I18n.n; - -/** - * Action pour changer le programme d'une ou plusieurs marée dans la liste. - * - * @author Kevin Morin (Code Lutin) - * @since 5.0 - */ -public class OpenDataListFormUIMoveMultipleActivityLonglineObs extends OpenDataListFormUIMoveMultipleDataActionSupport { - - public OpenDataListFormUIMoveMultipleActivityLonglineObs() { - super(n("observe.common.ActivityLonglineObsDto.action.moves"), - n("observe.common.ActivityLonglineObsDto.action.moves.tip"), - "move-activities"); - } - - @Override - public Optional<String> getNewParentId() { - return MoveDataHelper.chooseNewTripLongline(getMainUI(), getOldParentNode()); - } - - @Override - public void updateUI(String tripLonglineId, Set<String> dataIds, List<Integer> positions) { - - NavigationTreeNodeSupport oldParentNode = getOldParentNode(); - - ObserveClientApplicationContext applicationContext = ObserveClientApplicationContext.get(); - ObserveApplicationDataContext openDataManager = applicationContext.getApplicationDataContext(); - NavigationTree treeHelper = getDataSourceEditor().getTree(); - - NavigationTreeNodeSupport oldTripLonglineNode = oldParentNode.getParent(); - NavigationTreeNodeSupport programNode = oldTripLonglineNode.getParent(); - NavigationTreeNodeSupport newTripLonglineNode = treeHelper.getChild(programNode, tripLonglineId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivityLonglineObsDto.class); - NavigationTreeNodeSupport newActivitiesNode = treeHelper.getChild(newTripLonglineNode, activitiesNodeId); - - // Let's check if we're moving an open activity - String openId = openDataManager.getOpenId(ActivityLonglineObsDto.class); - Optional<String> openActivity = openId != null && dataIds.contains(openId) ? Optional.of(openId) : Optional.empty(); - - // If so, we closeData it to avoid ending up with an open activity into a closed trip. - if (openActivity.isPresent()) { - openDataManager.close(ActivityLonglineObsDto.class); - } - - // Let's reload the sub tree of each activities node. - // As the change have already be oldParentNode in database, we just call the child loaders to regenerate the activities nodes sub trees - treeHelper.reloadNodeSubTree(oldParentNode); - treeHelper.reloadNodeSubTree(newActivitiesNode); - - // Let's put the focus on the activities node which received the activities - treeHelper.selectNode(newActivitiesNode); - } - -} ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/actions/OpenDataListFormUIMoveMultipleTripLongline.java deleted ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/longline/actions/OpenDataListFormUIMoveMultipleTripLongline.java +++ /dev/null @@ -1,37 +0,0 @@ -package fr.ird.observe.client.ds.editor.form.openlist.longline.actions; - -/*- - * #%L - * ObServe :: Client - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * 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 - * 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.ds.editor.form.openlist.OpenDataListFormUIMoveMultipleTripActionSupport; -import fr.ird.observe.dto.referential.GearType; - -/** - * @author Kevin Morin (Code Lutin) - * @since 5.0 - */ -public class OpenDataListFormUIMoveMultipleTripLongline extends OpenDataListFormUIMoveMultipleTripActionSupport { - - public OpenDataListFormUIMoveMultipleTripLongline() { - super(GearType.longline); - } -} ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/ActivitySeineListUI.jaxx ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/ActivitySeineListUI.jaxx +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/ActivitySeineListUI.jaxx @@ -28,9 +28,7 @@ org.nuiton.jaxx.widgets.select.BeanListHeader </import> - <style source="../CommonOpenDataListFormUI.jcss"/> - - <ActivitySeineListUIModel id='model' title='observe.common.ActivitySeineDto.types'/> + <ActivitySeineListUIModel id='model'/> <JLabel id="emptyLabel" text='observe.common.ActivitySeineDto.message.noneForRoute'/> <BeanListHeader id='listHeader' labelText='observe.common.ActivityDto.list'/> <JButton id='showSelectedData'/> ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/ActivitySeineListUIModel.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/ActivitySeineListUIModel.java +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/ActivitySeineListUIModel.java @@ -22,14 +22,26 @@ package fr.ird.observe.client.ds.editor.form.openlist.seine; * #L% */ +import com.google.common.collect.ImmutableSet; import fr.ird.observe.client.ObserveClientApplicationContext; +import fr.ird.observe.client.ds.editor.form.MoveDataHelper; +import fr.ird.observe.client.ds.editor.form.openlist.OpenDataListFormUI; import fr.ird.observe.client.ds.editor.form.openlist.OpenDataListFormUIModel; import fr.ird.observe.client.ds.editor.form.spi.FormUIValidationMessageManager; +import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; +import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.client.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.seine.ActivitySeineDto; import fr.ird.observe.dto.data.seine.ActivitySeineReference; +import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.services.service.data.seine.ActivitySeineService; +import fr.ird.observe.spi.application.ObserveApplicationDataContext; + +import java.util.List; +import java.util.Optional; import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; /** * Created on 9/26/14. @@ -39,6 +51,10 @@ import static org.nuiton.i18n.I18n.n; */ public class ActivitySeineListUIModel extends OpenDataListFormUIModel<ActivitySeineDto, ActivitySeineReference, ActivitySeineService> { + public ActivitySeineListUIModel() { + setTitle(t("observe.common.ActivitySeineDto.types")); + } + @Override public void computeReadMessages(FormUIValidationMessageManager validationManager) { if (!ObserveClientApplicationContext.applicationDataContext().isOpenRoute()) { @@ -62,4 +78,95 @@ public class ActivitySeineListUIModel extends OpenDataListFormUIModel<ActivitySe validationManager.addInfoMessage(n("observe.common.ActivitySeineDto.message.active.found")); } + + @Override + public String getMoveTitle() { + return t("observe.action.choose.route.title"); + } + + @Override + public String getMoveMessage() { + return t("observe.action.choose.route.message"); + } + + @Override + public DecoratedNodeEntity[] getParentCandidates(OpenDataListFormUI<ActivitySeineDto, ActivitySeineReference> ui) { + return MoveDataHelper.getActivitySeineParentCandidates(getParentId(), getOldParentNode(ui)); + } + + @Override + public void afterMoveData(ImmutableSet<String> dataIds, String newParentId, List<Integer> positions, OpenDataListFormUI<ActivitySeineDto, ActivitySeineReference> ui) { + super.afterMoveData(dataIds, newParentId, positions, ui); + + NavigationTreeNodeSupport oldParentNode = getOldParentNode(ui); + + ObserveApplicationDataContext openDataManager = ObserveClientApplicationContext.applicationDataContext(); + NavigationTree treeHelper = ui.getDataSourceUI().getTree(); + + NavigationTreeNodeSupport oldRouteNode = oldParentNode.getParent(); + NavigationTreeNodeSupport routesNode = oldRouteNode.getParent(); + NavigationTreeNodeSupport newRouteNode = treeHelper.getChild(routesNode, newParentId); + String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivitySeineDto.class); + NavigationTreeNodeSupport newActivitiesNode = treeHelper.getChild(newRouteNode, activitiesNodeId); + + // Let's check if we're moving an open activity + String openId = openDataManager.getOpenActivityLonglineObsId(); + Optional<String> openActivity = openId != null && dataIds.contains(openId) ? Optional.of(openId) : Optional.empty(); + + // If so, we closeData it to avoid ending up with an open activity into a closed route. + if (openActivity.isPresent()) { + openDataManager.close(ActivitySeineDto.class); + } + + // Let's reload the sub tree of each activities node. + // As the change have already be done in database, we just call the child loaders to regenerate the activities nodes sub trees + treeHelper.reloadNodeSubTree(oldParentNode); + treeHelper.reloadNodeSubTree(newActivitiesNode); + + // Let's put the focus on the activities node which received the activities + treeHelper.selectNode(newActivitiesNode); + } + + /* + //FIXME!!! Voir si c'est vraiment nécessaire, je comprends pas pourquoi le comportement change des autres types + @Override + protected void doActionPerformed(ActionEvent e, OpenDataListFormUI ui) { + + String openId = ObserveClientApplicationContext.applicationDataContext().getOpenActivitySeineId(); + + NavigationTree tree = getDataSourceUI().getTree(); + + boolean wasCollapsed = ObserveFormHelper.isOpenActivityNodeCollapsed(tree, openId); + + //FIXME!!! Voir si ça fonctionne bien + // selection du noeud de l'activité ouverte + ui.getActionMap().get(MainUIMenuNavigationGoToOpenActivity.class).actionPerformed(null); + + NavigationTreeNodeSupport selectedNode = tree.getSelectedNode(); + selectedNode = tree.getActivitySeineNode(selectedNode, openId); + + tree.selectNode(selectedNode); + + // on conserve le path de l'activité + TreePath path = tree.getSelectionPath(); + + // recuperation de l'écran associé + ActivitySeineUI selectedUI = (ActivitySeineUI) getDataSourceUI().getSelectedContentUI(); + + if (openId != null) { + // fermeture de l'activité et création d'une nouvelle + selectedUI.getCloseData().doClick(); + } + + selectedUI.getCreate().doClick(); + + if (wasCollapsed) { + + // on ferme le noeud de l'activity (qui a ete ouvert + // lors de la selection de celle-ci) + tree.collapsePath(path); + } + + } + */ } ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/RouteListUI.jaxx ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/RouteListUI.jaxx +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/RouteListUI.jaxx @@ -28,9 +28,7 @@ org.nuiton.jaxx.widgets.select.BeanListHeader </import> - <style source="../CommonOpenDataListFormUI.jcss"/> - - <RouteListUIModel id='model' title='observe.common.RouteDto.types'/> + <RouteListUIModel id='model'/> <JLabel id="emptyLabel" text='observe.common.RouteDto.noneForTrip'/> <BeanListHeader id='listHeader' labelText='observe.common.RouteDto.list'/> <JButton id='showSelectedData'/> ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/RouteListUIModel.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/RouteListUIModel.java +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/RouteListUIModel.java @@ -22,13 +22,26 @@ package fr.ird.observe.client.ds.editor.form.openlist.seine; * #L% */ +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.client.ObserveClientApplicationContext; +import fr.ird.observe.client.ds.editor.form.MoveDataHelper; +import fr.ird.observe.client.ds.editor.form.openlist.OpenDataListFormUI; import fr.ird.observe.client.ds.editor.form.openlist.OpenDataListFormUIModel; import fr.ird.observe.client.ds.editor.form.spi.FormUIValidationMessageManager; +import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; +import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.client.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.seine.RouteDto; import fr.ird.observe.dto.data.seine.RouteReference; +import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.services.service.data.seine.RouteService; +import fr.ird.observe.spi.application.ObserveApplicationDataContext; + +import java.util.List; +import java.util.Optional; import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; /** * Created on 9/26/14. @@ -38,6 +51,10 @@ import static org.nuiton.i18n.I18n.n; */ public class RouteListUIModel extends OpenDataListFormUIModel<RouteDto, RouteReference, RouteService> { + public RouteListUIModel() { + setTitle(t("observe.common.RouteDto.types")); + } + @Override public void computeReadMessages(FormUIValidationMessageManager validationManager) { if (isAnotherParentOpen()) { @@ -61,4 +78,62 @@ public class RouteListUIModel extends OpenDataListFormUIModel<RouteDto, RouteRef validationManager.addInfoMessage(n("observe.common.RouteDto.message.active.found")); } + @Override + public String getMoveTitle() { + return t("observe.action.choose.tripSeine.title"); + } + + @Override + public String getMoveMessage() { + return t("observe.action.choose.tripSeine.message"); + } + + @Override + public DecoratedNodeEntity[] getParentCandidates(OpenDataListFormUI<RouteDto, RouteReference> ui) { + return MoveDataHelper.getRouteParentCandidates(getParentId(), getOldParentNode(ui)); + } + + @Override + public void afterMoveData(ImmutableSet<String> dataIds, String newParentId, List<Integer> positions, OpenDataListFormUI<RouteDto, RouteReference> ui) { + super.afterMoveData(dataIds, newParentId, positions, ui); + + + NavigationTreeNodeSupport oldParentNode = getOldParentNode(ui); + + ObserveApplicationDataContext openDataManager = ObserveClientApplicationContext.applicationDataContext(); + NavigationTree treeHelper = ui.getDataSourceUI().getTree(); + + NavigationTreeNodeSupport oldTripSeineNode = oldParentNode.getParent(); + NavigationTreeNodeSupport programNode = oldTripSeineNode.getParent(); + NavigationTreeNodeSupport newTripSeineNode = treeHelper.getChild(programNode, newParentId); + String routesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(RouteDto.class); + NavigationTreeNodeSupport newRoutesNode = treeHelper.getChild(newTripSeineNode, routesNodeId); + + // Let's check if we're moving an open route + String openId = openDataManager.getOpenRouteId(); + Optional<String> openRoute = openId != null && dataIds.contains(openId) ? Optional.of(openId) : Optional.empty(); + + // If so, we closeData it to avoid ending up with an open route into a closed trip. + if (openRoute.isPresent()) { + openDataManager.close(RouteDto.class); + } + + // Let's reload the sub tree of each routes node. + // As the change have already be done in database, we just call the child loaders to regenerate the routes nodes sub trees + treeHelper.reloadNodeSubTree(oldParentNode); + treeHelper.reloadNodeSubTree(newRoutesNode); + + // 1. Select the newRoutesNode : + // only a selected node can be reloaded (@see fr.ird.observe.client.ui.tree.ObserveTreeBridge.canLoadChild). + // (And also it's better for user experience because it puts the focus on the routes node which receive the routes) + // + // However, the node selection has to be done after that the trip has been opened : + // selecting the newRoutesNode opens a list layout which compute a rendering mode associated to the trip state. + // After the mode has been computed, it is injected in the list component which triggers listeners on associated components, such as buttons. + // + // That's why, if we do this before the trip is opened, + // we will end up with an incoherent list view (some buttons will be deactivated while they should be activated for instance) + treeHelper.selectNode(newRoutesNode); + + } } ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/TripSeineListUI.jaxx ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/TripSeineListUI.jaxx +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/TripSeineListUI.jaxx @@ -27,9 +27,7 @@ org.nuiton.jaxx.widgets.select.BeanListHeader </import> - <style source="../CommonOpenDataListFormUI.jcss"/> - - <TripSeineListUIModel id='model' title='observe.common.TripSeineDto.types'/> + <TripSeineListUIModel id='model'/> <JLabel id="emptyLabel" text='observe.common.TripDto.message.noneForTrip'/> <BeanListHeader id='listHeader' labelText='observe.common.TripDto.list'/> <JButton id='showSelectedData'/> ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/TripSeineListUIModel.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/TripSeineListUIModel.java +++ b/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/TripSeineListUIModel.java @@ -22,16 +22,24 @@ package fr.ird.observe.client.ds.editor.form.openlist.seine; * #L% */ +import com.google.common.collect.ImmutableSet; import fr.ird.observe.client.ClientApplicationContext; +import fr.ird.observe.client.ds.editor.form.MoveDataHelper; +import fr.ird.observe.client.ds.editor.form.openlist.OpenDataListFormUI; import fr.ird.observe.client.ds.editor.form.openlist.OpenDataListFormUIModel; import fr.ird.observe.client.ds.editor.form.spi.FormUIValidationMessageManager; +import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.client.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.seine.TripSeineDto; import fr.ird.observe.dto.data.seine.TripSeineReference; import fr.ird.observe.dto.reference.DtoReference; import fr.ird.observe.dto.referential.ProgramReference; import fr.ird.observe.services.service.data.seine.TripSeineService; +import java.util.List; + import static org.nuiton.i18n.I18n.n; +import static org.nuiton.i18n.I18n.t; /** * Created on 9/26/14. @@ -41,6 +49,10 @@ import static org.nuiton.i18n.I18n.n; */ public class TripSeineListUIModel extends OpenDataListFormUIModel<TripSeineDto, TripSeineReference, TripSeineService> { + public TripSeineListUIModel() { + setTitle(t("observe.common.TripSeineDto.types")); + } + @Override public void computeReadMessages(FormUIValidationMessageManager validationManager) { validationManager.addInfoMessage(n("observe.common.TripSeineDto.message.active.found.for.other.program")); @@ -63,4 +75,26 @@ public class TripSeineListUIModel extends OpenDataListFormUIModel<TripSeineDto, setTitle(title); super.openUI(); } + + @Override + public String getMoveTitle() { + return t("observe.action.choose.program.title"); + } + + @Override + public String getMoveMessage() { + return t("observe.action.choose.program.message"); + } + + @Override + public DecoratedNodeEntity[] getParentCandidates(OpenDataListFormUI<TripSeineDto, TripSeineReference> ui) { + return MoveDataHelper.getTripSeineParentCandidates(ui, getParentId()); + } + + @Override + public void afterMoveData(ImmutableSet<String> dataIds, String newParentId, List<Integer> positions, OpenDataListFormUI<TripSeineDto, TripSeineReference> ui) { + super.afterMoveData(dataIds, newParentId, positions, ui); + NavigationTreeNodeSupport oldParentNode = getOldParentNode(ui); + MoveDataHelper.moveTrips(ui.getDataSourceUI().getTree(), newParentId, dataIds, positions, oldParentNode); + } } ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/actions/OpenDataListFormUICreateActivitySeine.java deleted ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/actions/OpenDataListFormUICreateActivitySeine.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * #%L - * ObServe :: Client - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * 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 - * 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% - */ -package fr.ird.observe.client.ds.editor.form.openlist.seine.actions; - -import fr.ird.observe.client.ObserveClientApplicationContext; -import fr.ird.observe.client.ds.editor.form.ObserveFormHelper; -import fr.ird.observe.client.ds.editor.form.open.seine.ActivitySeineUI; -import fr.ird.observe.client.ds.editor.form.openlist.OpenDataListFormUI; -import fr.ird.observe.client.ds.editor.form.openlist.actions.OpenDataListFormUICreateData; -import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; -import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.client.main.actions.MainUIMenuNavigationGoToOpenActivity; - -import javax.swing.tree.TreePath; -import java.awt.event.ActionEvent; - -/** - * FIXME!!! N'est plus utilisé mais on garde pour voir si ce n'est pas encore nécessaire - * Action pour fermer l'objet sous-jacent à l'écran et en créer un nouveau. - * - * @author Tony Chemit - dev@tchemit.fr - * @since 1.5 - */ -public class OpenDataListFormUICreateActivitySeine extends OpenDataListFormUICreateData { - - public OpenDataListFormUICreateActivitySeine() { -// super(n("observe.common.ActivityDto.action.closeAndCreate"), -// n("observe.common.ActivityDto.action.closeAndCreate.tip")); - } - - @Override - protected void doActionPerformed(ActionEvent e, OpenDataListFormUI ui) { - - //FIXME!!! Voir si c'est vraiment nécessaire, je comprends pas pourquoi le comportement change des autres types - String openId = ObserveClientApplicationContext.applicationDataContext().getOpenActivitySeineId(); - - NavigationTree tree = getDataSourceEditor().getTree(); - - boolean wasCollapsed = ObserveFormHelper.isOpenActivityNodeCollapsed(tree, openId); - - //FIXME!!! Voir si ça fonctionne bien - // selection du noeud de l'activité ouverte - getUi().getActionMap().get(MainUIMenuNavigationGoToOpenActivity.class).actionPerformed(null); - - NavigationTreeNodeSupport selectedNode = tree.getSelectedNode(); - selectedNode = tree.getActivitySeineNode(selectedNode, openId); - - tree.selectNode(selectedNode); - - // on conserve le path de l'activité - TreePath path = tree.getSelectionPath(); - - // recuperation de l'écran associé - ActivitySeineUI selectedUI = (ActivitySeineUI) getDataSourceEditor().getSelectedContentUI(); - - if (openId != null) { - // fermeture de l'activité et création d'une nouvelle - selectedUI.getCloseData().doClick(); - } - - selectedUI.getCreate().doClick(); - - if (wasCollapsed) { - - // on ferme le noeud de l'activity (qui a ete ouvert - // lors de la selection de celle-ci) - tree.collapsePath(path); - } - - } - -} ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/actions/OpenDataListFormUIMoveMultipleActivitySeine.java deleted ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/actions/OpenDataListFormUIMoveMultipleActivitySeine.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * #%L - * ObServe :: Client - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * 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 - * 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% - */ -package fr.ird.observe.client.ds.editor.form.openlist.seine.actions; - -import fr.ird.observe.client.ObserveClientApplicationContext; -import fr.ird.observe.client.ds.editor.form.MoveDataHelper; -import fr.ird.observe.client.ds.editor.form.openlist.actions.OpenDataListFormUIMoveMultipleDataActionSupport; -import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; -import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.dto.data.seine.ActivitySeineDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.spi.application.ObserveApplicationDataContext; - -import java.util.List; -import java.util.Optional; -import java.util.Set; - -import static org.nuiton.i18n.I18n.n; - -/** - * Action pour changer le programme d'une ou plusieurs marée dans la liste. - * - * @author Kevin Morin (Code Lutin) - * @since 5.0 - */ -public class OpenDataListFormUIMoveMultipleActivitySeine extends OpenDataListFormUIMoveMultipleDataActionSupport { - - public OpenDataListFormUIMoveMultipleActivitySeine() { - super(n("observe.common.ActivitySeineDto.action.moves"), - n("observe.common.ActivitySeineDto.action.moves.tip"), - "moveData-activities"); - } - - @Override - public Optional<String> getNewParentId() { - return MoveDataHelper.chooseNewRoute(getMainUI(), getOldParentNode()); - } - - @Override - public void updateUI(String newParentId, Set<String> dataIds, List<Integer> positions) { - - NavigationTreeNodeSupport oldParentNode = getOldParentNode(); - - ObserveApplicationDataContext openDataManager = ObserveClientApplicationContext.applicationDataContext(); - NavigationTree treeHelper = getDataSourceEditor().getTree(); - - NavigationTreeNodeSupport oldRouteNode = oldParentNode.getParent(); - NavigationTreeNodeSupport routesNode = oldRouteNode.getParent(); - NavigationTreeNodeSupport newRouteNode = treeHelper.getChild(routesNode, newParentId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivitySeineDto.class); - NavigationTreeNodeSupport newActivitiesNode = treeHelper.getChild(newRouteNode, activitiesNodeId); - - // Let's check if we're moving an open activity - String openId = openDataManager.getOpenActivityLonglineObsId(); - Optional<String> openActivity = openId != null && dataIds.contains(openId) ? Optional.of(openId) : Optional.empty(); - - // If so, we closeData it to avoid ending up with an open activity into a closed route. - if (openActivity.isPresent()) { - openDataManager.close(ActivitySeineDto.class); - } - - // Let's reload the sub tree of each activities node. - // As the change have already be done in database, we just call the child loaders to regenerate the activities nodes sub trees - treeHelper.reloadNodeSubTree(oldParentNode); - treeHelper.reloadNodeSubTree(newActivitiesNode); - - // Let's put the focus on the activities node which received the activities - treeHelper.selectNode(newActivitiesNode); - } - -} ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/actions/OpenDataListFormUIMoveMultipleRoute.java deleted ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/actions/OpenDataListFormUIMoveMultipleRoute.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * #%L - * ObServe :: Client - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * 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 - * 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% - */ -package fr.ird.observe.client.ds.editor.form.openlist.seine.actions; - -import fr.ird.observe.client.ObserveClientApplicationContext; -import fr.ird.observe.client.ds.editor.form.MoveDataHelper; -import fr.ird.observe.client.ds.editor.form.openlist.actions.OpenDataListFormUIMoveMultipleDataActionSupport; -import fr.ird.observe.client.ds.editor.tree.navigation.NavigationTree; -import fr.ird.observe.client.ds.editor.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.dto.data.seine.RouteDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.spi.application.ObserveApplicationDataContext; - -import java.util.List; -import java.util.Optional; -import java.util.Set; - -import static org.nuiton.i18n.I18n.n; - -/** - * Action pour changer le programme d'une ou plusieurs marée dans la liste. - * - * @author Kevin Morin (Code Lutin) - * @since 5.0 - */ -public class OpenDataListFormUIMoveMultipleRoute extends OpenDataListFormUIMoveMultipleDataActionSupport { - - public OpenDataListFormUIMoveMultipleRoute() { - super(n("observe.common.RouteDto.action.moves"), - n("observe.common.RouteDto.action.moves.tip"), - "moveData-routes"); - } - - @Override - public Optional<String> getNewParentId() { - return MoveDataHelper.chooseNewTripSeine(getMainUI(), getOldParentNode()); - } - - - @Override - public void updateUI(String tripSeineId, Set<String> dataIds, List<Integer> positions) { - - NavigationTreeNodeSupport oldParentNode = getOldParentNode(); - - ObserveApplicationDataContext openDataManager = ObserveClientApplicationContext.applicationDataContext(); - NavigationTree treeHelper = getDataSourceEditor().getTree(); - - NavigationTreeNodeSupport oldTripSeineNode = oldParentNode.getParent(); - NavigationTreeNodeSupport programNode = oldTripSeineNode.getParent(); - NavigationTreeNodeSupport newTripSeineNode = treeHelper.getChild(programNode, tripSeineId); - String routesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(RouteDto.class); - NavigationTreeNodeSupport newRoutesNode = treeHelper.getChild(newTripSeineNode, routesNodeId); - - // Let's check if we're moving an open route - String openId = openDataManager.getOpenRouteId(); - Optional<String> openRoute = openId != null && dataIds.contains(openId) ? Optional.of(openId) : Optional.empty(); - - // If so, we closeData it to avoid ending up with an open route into a closed trip. - if (openRoute.isPresent()) { - openDataManager.close(RouteDto.class); - } - - // Let's reload the sub tree of each routes node. - // As the change have already be done in database, we just call the child loaders to regenerate the routes nodes sub trees - treeHelper.reloadNodeSubTree(oldParentNode); - treeHelper.reloadNodeSubTree(newRoutesNode); - - // 1. Select the newRoutesNode : - // only a selected node can be reloaded (@see fr.ird.observe.client.ui.tree.ObserveTreeBridge.canLoadChild). - // (And also it's better for user experience because it puts the focus on the routes node which receive the routes) - // - // However, the node selection has to be done after that the trip has been opened : - // selecting the newRoutesNode opens a list layout which compute a rendering mode associated to the trip state. - // After the mode has been computed, it is injected in the list component which triggers listeners on associated components, such as buttons. - // - // That's why, if we do this before the trip is opened, - // we will end up with an incoherent list view (some buttons will be deactivated while they should be activated for instance) - treeHelper.selectNode(newRoutesNode); - - } - -} ===================================== client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/actions/OpenDataListFormUIMoveMultipleTripSeine.java deleted ===================================== --- a/client/src/main/java/fr/ird/observe/client/ds/editor/form/openlist/seine/actions/OpenDataListFormUIMoveMultipleTripSeine.java +++ /dev/null @@ -1,38 +0,0 @@ -package fr.ird.observe.client.ds.editor.form.openlist.seine.actions; - -/*- - * #%L - * ObServe :: Client - * %% - * Copyright (C) 2008 - 2017 IRD, Code Lutin, Ultreia.io - * %% - * 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 - * 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.ds.editor.form.openlist.OpenDataListFormUIMoveMultipleTripActionSupport; -import fr.ird.observe.dto.referential.GearType; - -/** - * @author Kevin Morin (Code Lutin) - * @since 5.0 - */ -public class OpenDataListFormUIMoveMultipleTripSeine extends OpenDataListFormUIMoveMultipleTripActionSupport { - - public OpenDataListFormUIMoveMultipleTripSeine() { - super(GearType.seine); - } - -} View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/baec96e5059068c2a48461457ce2... --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/baec96e5059068c2a48461457ce2... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT