branch feature/7623 created (now a9e38e3)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7623 in repository observe. See http://git.codelutin.com/observe.git at a9e38e3 refactoring des menus contextuels de l'arbre + ajout des menus sur les activites seines (refs #7623) This branch includes the following new commits: new 97a63ac ajout de la méthode pour déplacer une activité seine (refs #7623) new 72a1041 refactoring des menus contextuels de l'arbre + correction des actions (refs #7623) new a9e38e3 refactoring des menus contextuels de l'arbre + ajout des menus sur les activites seines (refs #7623) The 3 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit a9e38e34e39682420549e7787b6c6aa98167d7ab Author: Kevin Morin <morin@codelutin.com> Date: Tue Nov 17 18:16:16 2015 +0100 refactoring des menus contextuels de l'arbre + ajout des menus sur les activites seines (refs #7623) commit 72a1041a8d64dd1bbe788c3922219cc71194eb9f Author: Kevin Morin <morin@codelutin.com> Date: Tue Nov 17 18:15:52 2015 +0100 refactoring des menus contextuels de l'arbre + correction des actions (refs #7623) commit 97a63ac1040f18af11dd0e4ed89ba204c4812665 Author: Kevin Morin <morin@codelutin.com> Date: Tue Nov 17 18:14:01 2015 +0100 ajout de la méthode pour déplacer une activité seine (refs #7623) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7623 in repository observe. See http://git.codelutin.com/observe.git commit 97a63ac1040f18af11dd0e4ed89ba204c4812665 Author: Kevin Morin <morin@codelutin.com> Date: Tue Nov 17 18:14:01 2015 +0100 ajout de la méthode pour déplacer une activité seine (refs #7623) --- .../v1/seine/ActivitySeineServiceController.java | 4 ++++ .../services/service/seine/ActivitySeineService.java | 3 +++ .../services/service/seine/ActivitySeineServiceTopia.java | 14 ++++++++++++++ .../observe/services/service/seine/RouteServiceTopia.java | 4 ++++ 4 files changed, 25 insertions(+) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/ActivitySeineServiceController.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/ActivitySeineServiceController.java index 7339cf0..033d735 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/ActivitySeineServiceController.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/controller/v1/seine/ActivitySeineServiceController.java @@ -89,4 +89,8 @@ public class ActivitySeineServiceController extends ObserveAuthenticatedServiceC service.delete(routeId, activitySeineId); } + @Override + public int moveActivitySeineToRoute(String activitySeineId, String routeId) { + return service.moveActivitySeineToRoute(activitySeineId, routeId); + } } diff --git a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineService.java b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineService.java index 1fb15f8..29b8b77 100644 --- a/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineService.java +++ b/observe-services-api/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineService.java @@ -73,4 +73,7 @@ public interface ActivitySeineService extends ObserveService { @DeleteRequest void delete(String routeId, String activitySeineId); + @Write + @WriteDataPermission + int moveActivitySeineToRoute(String activitySeineId, String routeId); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineServiceTopia.java index a822aa3..bed0d8c 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/ActivitySeineServiceTopia.java @@ -25,6 +25,7 @@ package fr.ird.observe.services.service.seine; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Sets; +import fr.ird.observe.ObserveTopiaPersistenceContext; import fr.ird.observe.entities.constants.ReferenceLocale; import fr.ird.observe.entities.referentiel.FpaZone; import fr.ird.observe.entities.seine.ActivitySeine; @@ -234,4 +235,17 @@ public class ActivitySeineServiceTopia extends ObserveServiceTopia implements Ac } + @Override + public int moveActivitySeineToRoute(String activitySeineId, String routeId) { + ActivitySeine activitySeine = loadEntity(ActivitySeineDto.class, ActivitySeine.class, activitySeineId); + Route route = loadEntity(RouteDto.class, Route.class, routeId); + route.addActivitySeine(activitySeine); + saveEntity(Route.class, route); + + ObserveTopiaPersistenceContext persistenceContext = serviceContext.getTopiaPersistenceContext(); + persistenceContext.flush(); + + return getActivitySeinePositionInRoute(routeId, activitySeineId); + } + } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/RouteServiceTopia.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/RouteServiceTopia.java index 7e41a96..11d6c8f 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/RouteServiceTopia.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/seine/RouteServiceTopia.java @@ -269,6 +269,10 @@ public class RouteServiceTopia extends ObserveServiceTopia implements RouteServi TripSeine tripSeine = loadEntity(TripSeineDto.class, TripSeine.class, tripSeineId); tripSeine.addRoute(route); saveEntity(TripSeine.class, tripSeine); + + ObserveTopiaPersistenceContext persistenceContext = serviceContext.getTopiaPersistenceContext(); + persistenceContext.flush(); + return getRoutePositionInTripSeine(tripSeineId, routeId); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7623 in repository observe. See http://git.codelutin.com/observe.git commit 72a1041a8d64dd1bbe788c3922219cc71194eb9f Author: Kevin Morin <morin@codelutin.com> Date: Tue Nov 17 18:15:52 2015 +0100 refactoring des menus contextuels de l'arbre + correction des actions (refs #7623) --- .../actions/ChangeRouteTripActionListener.java | 14 +++- .../actions/ChangeTripProgramActionListener.java | 4 +- .../ui/tree/actions/NodeChangeActionListener.java | 13 ++-- .../fr/ird/observe/ui/tree/menu/MoveNodeData.java | 37 +++++++++++ .../observe/ui/tree/menu/MoveRouteNodeData.java | 66 +++++++++++++++++++ .../ird/observe/ui/tree/menu/MoveTripNodeData.java | 75 ++++++++++++++++++++++ 6 files changed, 197 insertions(+), 12 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeRouteTripActionListener.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeRouteTripActionListener.java index 23bdd99..e7f8e1c 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeRouteTripActionListener.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeRouteTripActionListener.java @@ -84,8 +84,18 @@ public class ChangeRouteTripActionListener extends NodeChangeActionListener { } @Override - protected void openParent(String parentNodeId, String grandParentNodeId) { + protected void openParent(ObserveNode routesNode) { + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - applicationContext.getOpenDataManager().openTripSeine(grandParentNodeId, parentNodeId); + + ObserveNode tripNode = routesNode.getParent(); + String tripId = tripNode.getId(); + + ObserveNode programNode = tripNode.getParent(); + String programId = programNode.getId(); + + applicationContext.getOpenDataManager().openTripSeine(programId, tripId); + + getTreeHelper().reloadNode(programNode, true); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java index b41f3c4..2b57c35 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeTripProgramActionListener.java @@ -86,8 +86,8 @@ public class ChangeTripProgramActionListener extends NodeChangeActionListener { } @Override - protected void openParent(String parentNodeId, String grandParentNodeId) { + protected void openParent(ObserveNode programNode) { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - applicationContext.getOpenDataManager().openProgram(parentNodeId); + applicationContext.getOpenDataManager().openProgram(programNode.getId()); } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/NodeChangeActionListener.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/NodeChangeActionListener.java index ad4320f..6854c5a 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/NodeChangeActionListener.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/NodeChangeActionListener.java @@ -68,13 +68,14 @@ public abstract class NodeChangeActionListener implements ActionListener { ObserveNode oldParentNode = getParentNode(node); String oldParentId = oldParentNode.getId(); ObserveNode grandParentNode = oldParentNode.getParent(); - String grandParentNodeId = grandParentNode.getId(); ObserveNode newParentNode = getNewParentNode(grandParentNode, parentNodeId); closeParent(oldParentId); int position = moveNodeToParent(nodeId, parentNodeId); + treeHelper.selectNode(newParentNode); + treeHelper.removeNode(node); ObserveNode newNode = treeHelper.getChild(newParentNode, nodeId); @@ -89,17 +90,13 @@ public abstract class NodeChangeActionListener implements ActionListener { newNode = node; } - openParent(parentNodeId, grandParentNodeId); + openParent(newParentNode); - treeHelper.reloadNode(grandParentNode, true); -// treeHelper.reloadNode(newParentNode, true); -// treeHelper.refreshNode(oldParentNode, true); -// treeHelper.refreshNode(newParentNode, true); treeHelper.selectNode(newNode); } - public ObserveTreeHelper getTreeHelper() { + protected ObserveTreeHelper getTreeHelper() { return treeHelper; } @@ -111,5 +108,5 @@ public abstract class NodeChangeActionListener implements ActionListener { protected abstract int moveNodeToParent(String nodeId, String parentNodeId); - protected abstract void openParent(String parentNodeId, String grandParentNodeId); + protected abstract void openParent(ObserveNode parentNode); } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/menu/MoveNodeData.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/menu/MoveNodeData.java new file mode 100644 index 0000000..5211e1a --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/menu/MoveNodeData.java @@ -0,0 +1,37 @@ +package fr.ird.observe.ui.tree.menu; + +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.ui.tree.ObserveNode; +import fr.ird.observe.ui.tree.ObserveTreeHelper; +import fr.ird.observe.ui.tree.actions.NodeChangeActionListener; + +import java.util.Map; + +/** + * @author Kevin Morin (Code Lutin) + * @since 5.0 + */ +public abstract class MoveNodeData { + + /** + * Crée une action pour déplacer le noeud quand on sélectionne le menu du nouveau parent + * @param treeHelper + * @param dataSource + * @param id + * @param parentId + * @return + */ + public abstract NodeChangeActionListener createChangeActionListener(ObserveTreeHelper treeHelper, + ObserveSwingDataSource dataSource, + String id, + String parentId); + + /** + * + * @param node + * @param treeHelper + * @return + */ + public abstract Map<String, String> getPossibleParentNodes(ObserveNode node, ObserveTreeHelper treeHelper); + +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/menu/MoveRouteNodeData.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/menu/MoveRouteNodeData.java new file mode 100644 index 0000000..6ca89b6 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/menu/MoveRouteNodeData.java @@ -0,0 +1,66 @@ +package fr.ird.observe.ui.tree.menu; + +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.dto.IdDtos; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.ui.DecoratorService; +import fr.ird.observe.ui.tree.DtoNodeSupport; +import fr.ird.observe.ui.tree.ObserveNode; +import fr.ird.observe.ui.tree.ObserveTreeHelper; +import fr.ird.observe.ui.tree.actions.ChangeRouteTripActionListener; +import fr.ird.observe.ui.tree.actions.NodeChangeActionListener; +import org.nuiton.decorator.Decorator; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class MoveRouteNodeData extends MoveNodeData { + + @Override + public NodeChangeActionListener createChangeActionListener(ObserveTreeHelper treeHelper, + ObserveSwingDataSource dataSource, + String id, + String parentId) { + return new ChangeRouteTripActionListener(treeHelper, dataSource, id, parentId); + } + + @Override + public Map<String,String> getPossibleParentNodes(ObserveNode routeNode, ObserveTreeHelper treeHelper) { + + // noeud de marée parent + ObserveNode parentNode = routeNode.getParent().getParent(); + + // noeud de marée du programme sans le parent actuel + Map<String, String> possibleParents = new LinkedHashMap<>(); + + // noeud du programme + ObserveNode programNode = parentNode.getParent(); + + + DecoratorService decoratorService = treeHelper.getTreeCellRenderer().getDecoratorService(); + Decorator<ReferenceDto> tripDecorator = + decoratorService.getDecoratorByType(ReferenceDto.class, TripSeineDto.class.getSimpleName()); + + for (int i = 0, n = programNode.getChildCount() ; i < n ; i++) { + + ObserveNode tripNode = programNode.getChildAt(i); + String tripId = tripNode.getId(); + + // si le noeud de marée n'est pas le même que le parent actuel + if (!parentNode.equals(tripNode) + // si le noeud est bien un noeud de marée seine + && IdDtos.isTripSeineId(tripId)) { + + String decoratedTrip = tripDecorator.toString(((DtoNodeSupport) tripNode).getEntity()); + possibleParents.put(tripId, decoratedTrip); + } + } + + return possibleParents; + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/menu/MoveTripNodeData.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/menu/MoveTripNodeData.java new file mode 100644 index 0000000..6169037 --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/menu/MoveTripNodeData.java @@ -0,0 +1,75 @@ +package fr.ird.observe.ui.tree.menu; + +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.dto.IdDtos; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.constants.GearType; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.ui.DecoratorService; +import fr.ird.observe.ui.tree.DtoNodeSupport; +import fr.ird.observe.ui.tree.ObserveNode; +import fr.ird.observe.ui.tree.ObserveTreeHelper; +import fr.ird.observe.ui.tree.actions.ChangeTripProgramActionListener; +import fr.ird.observe.ui.tree.actions.NodeChangeActionListener; +import org.nuiton.decorator.Decorator; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class MoveTripNodeData extends MoveNodeData { + + @Override + public NodeChangeActionListener createChangeActionListener(ObserveTreeHelper treeHelper, + ObserveSwingDataSource dataSource, + String id, + String parentId) { + return new ChangeTripProgramActionListener(treeHelper, dataSource, id, parentId); + } + + @Override + public Map<String, String> getPossibleParentNodes(ObserveNode tripNode, ObserveTreeHelper treeHelper) { + + // noeud du programme parent + ObserveNode parentNode = tripNode.getParent(); + + // programmes du même type que le noeud de marée, sans le parent actuel + Map<String, String> possibleParents = new LinkedHashMap<>(); + + // noeud longline ? + GearType geartype = IdDtos.isLonglineId(tripNode.getId()) ? GearType.longline : GearType.seine; + + // racine + ObserveNode rootNode = treeHelper.getRootNode(); + + DecoratorService decoratorService = treeHelper.getTreeCellRenderer().getDecoratorService(); + Decorator<ReferenceDto> programDecorator = + decoratorService.getDecoratorByType(ReferenceDto.class, ProgramDto.class.getSimpleName()); + + for (int i = 0, n = rootNode.getChildCount() ; i < n ; i++) { + + ObserveNode programNode = rootNode.getChildAt(i); + String programId = programNode.getId(); + + // si le noeud programme n'est pas le même que le parent actuel + if (!parentNode.equals(programNode) + // si le noeud est bien un noeud de programme + && IdDtos.isProgramId(programId)) { + + ReferenceDto<ProgramDto> program = ((DtoNodeSupport) programNode).getEntity(); + + // si le type de marée et le type de prgramme sont les même + if (geartype.equals(program.getPropertyValue(ProgramDto.PROPERTY_GEAR_TYPE))) { + + String decoratedProgram = programDecorator.toString(program); + possibleParents.put(programId, decoratedProgram); + } + } + } + + return possibleParents; + } +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7623 in repository observe. See http://git.codelutin.com/observe.git commit a9e38e34e39682420549e7787b6c6aa98167d7ab Author: Kevin Morin <morin@codelutin.com> Date: Tue Nov 17 18:16:16 2015 +0100 refactoring des menus contextuels de l'arbre + ajout des menus sur les activites seines (refs #7623) --- .../tree/ObserveNavigationTreeShowPopupAction.java | 153 ++++----------------- .../java/fr/ird/observe/ui/tree/ObserveNode.java | 12 +- .../actions/ChangeActivityRouteActionListener.java | 102 ++++++++++++++ .../ui/tree/menu/MoveActivitySeineNodeData.java | 65 +++++++++ 4 files changed, 206 insertions(+), 126 deletions(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java index 90f6379..cd0dc65 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNavigationTreeShowPopupAction.java @@ -22,30 +22,20 @@ package fr.ird.observe.ui.tree; * #L% */ -import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Lists; import fr.ird.observe.ObserveSwingApplicationContext; import fr.ird.observe.db.DataContext; import fr.ird.observe.db.ObserveSwingDataSource; -import fr.ird.observe.services.dto.IdDtos; -import fr.ird.observe.services.dto.ReferenceDto; -import fr.ird.observe.services.dto.constants.GearType; -import fr.ird.observe.services.dto.referential.ProgramDto; -import fr.ird.observe.services.dto.referential.ProgramDtos; -import fr.ird.observe.services.dto.seine.TripSeineDto; -import fr.ird.observe.services.service.ReferentialService; -import fr.ird.observe.services.service.seine.TripSeineService; import fr.ird.observe.ui.content.ContentUI; import fr.ird.observe.ui.content.open.ContentOpenableUI; -import fr.ird.observe.ui.tree.actions.ChangeRouteTripActionListener; -import fr.ird.observe.ui.tree.actions.ChangeTripProgramActionListener; -import fr.ird.observe.ui.tree.actions.NodeChangeActionListener; +import fr.ird.observe.ui.tree.menu.MoveActivitySeineNodeData; +import fr.ird.observe.ui.tree.menu.MoveNodeData; +import fr.ird.observe.ui.tree.menu.MoveRouteNodeData; +import fr.ird.observe.ui.tree.menu.MoveTripNodeData; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.decorator.Decorator; import javax.swing.JButton; import javax.swing.JMenuItem; @@ -61,9 +51,7 @@ import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import java.lang.reflect.Constructor; -import java.util.LinkedHashSet; -import java.util.List; +import java.util.Map; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -81,10 +69,12 @@ public class ObserveNavigationTreeShowPopupAction { private static final String TRIP_MENU_ITEMS = "trip"; private static final String ROUTE_MENU_ITEMS = "route"; + private static final String ACTIVITY_SEINE_MENU_ITEMS = "activitySeine"; static { n("observe.navigationMenu.move.trip"); n("observe.navigationMenu.move.route"); + n("observe.navigationMenu.move.activity"); } private final ObserveTreeHelper treeHelper; @@ -101,9 +91,9 @@ public class ObserveNavigationTreeShowPopupAction { private final JMenuItem moveAction; private final JMenuItem deleteAction; - private final ImmutableMap<String, NavigationPopupMenuItems> menuItemsByNodeType; + private final ImmutableMap<String, MoveNodeData> moveNodeDataByNodeType; - public ObserveNavigationTreeShowPopupAction(ObserveTreeHelper treeHelper, JScrollPane pane, JPopupMenu popup) { + public ObserveNavigationTreeShowPopupAction(final ObserveTreeHelper treeHelper, JScrollPane pane, JPopupMenu popup) { this.treeHelper = treeHelper; this.pane = pane; @@ -142,46 +132,9 @@ public class ObserveNavigationTreeShowPopupAction { this.moveAction = moveComponent; this.deleteAction = deleteActionComponent; - Function<String, List<ReferenceDto>> getProgramsFunction = new Function<String, List<ReferenceDto>>() { - - @Override - public List<ReferenceDto> apply(String nodeId) { - GearType gearType = IdDtos.isLonglineId(nodeId) ? GearType.longline : GearType.seine; - - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - - LinkedHashSet<ReferenceDto> allPrograms = applicationContext.newService(ReferentialService.class) - .getReferentialReferenceSet(ProgramDto.class) - .getReference(); - - List<ReferenceDto> result = Lists.newArrayList(ProgramDtos.filterReferencesByGearType(allPrograms, gearType)); - - return result; - } - }; - NavigationPopupMenuItems tripItems = new NavigationPopupMenuItems(ProgramDto.class, - ChangeTripProgramActionListener.class, - getProgramsFunction); - - Function<String, List<ReferenceDto>> getTripSeinesFunction = new Function<String, List<ReferenceDto>>() { - - @Override - public List<ReferenceDto> apply(String nodeId) { - - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - - LinkedHashSet<ReferenceDto> allTripSeine = applicationContext.newService(TripSeineService.class) - .getAllTripSeine() - .getReference(); - - return Lists.newArrayList(allTripSeine); - } - }; - NavigationPopupMenuItems routeItems = new NavigationPopupMenuItems(TripSeineDto.class, - ChangeRouteTripActionListener.class, - getTripSeinesFunction); - - menuItemsByNodeType = ImmutableMap.of(TRIP_MENU_ITEMS, tripItems, ROUTE_MENU_ITEMS, routeItems); + moveNodeDataByNodeType = ImmutableMap.of(TRIP_MENU_ITEMS, new MoveTripNodeData(), + ROUTE_MENU_ITEMS, new MoveRouteNodeData(), + ACTIVITY_SEINE_MENU_ITEMS, new MoveActivitySeineNodeData()); KeyAdapter keyAdapter = new KeyAdapter() { @Override @@ -317,6 +270,13 @@ public class ObserveNavigationTreeShowPopupAction { openAction.setEnabled(!dataContext.isOpenRoute()); closeAction.setEnabled(closeActionEnabled); + } else if (selectedNode.isActivitySeineNode()) { + + beforeOpenMenu(selectedNode, ACTIVITY_SEINE_MENU_ITEMS); + + openAction.setEnabled(!dataContext.isOpenActivitySeine()); + closeAction.setEnabled(closeActionEnabled); + } else { popup.add(noAction); @@ -328,7 +288,7 @@ public class ObserveNavigationTreeShowPopupAction { log.info("Will load popup for " + nodeType + " node."); } - NavigationPopupMenuItems items = menuItemsByNodeType.get(nodeType); + MoveNodeData moveNodeData = moveNodeDataByNodeType.get(nodeType); ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); @@ -350,48 +310,20 @@ public class ObserveNavigationTreeShowPopupAction { ObserveSwingDataSource dataSource = treeHelper.getDataProvider().getDataSource(); - List<ReferenceDto> parents = items.getGetParentsFunction().apply(id); + Map<String, String> possibleParentNodes = moveNodeData.getPossibleParentNodes(selectedNode, treeHelper); + for (String possibleParentId : possibleParentNodes.keySet()) { - Class<?> parentClass = items.getParentClass(); - String[] openIds = applicationContext.getDataContext().getOpenIds(parentClass); - String openParentId = openIds[openIds.length - 1]; + JMenuItem item = new JMenuItem(possibleParentNodes.get(possibleParentId)); + item.setName(possibleParentId); - Decorator<ReferenceDto> decorator = applicationContext.getDecorator(ReferenceDto.class, - parentClass.getSimpleName()); - for (ReferenceDto parent : parents) { - - String parentId = parent.getId(); - - if (!parentId.equals(openParentId)) { - - JMenuItem item = new JMenuItem(decorator.toString(parent)); - item.setName(parentId); - - try { - Constructor<? extends NodeChangeActionListener> actionListenerConstructor = - items.getChangeActionListenerClass().getConstructor(ObserveTreeHelper.class, - ObserveSwingDataSource.class, - String.class, - String.class); - - item.addActionListener(actionListenerConstructor.newInstance(treeHelper, - dataSource, - id, - parentId)); - - moveAction.add(item); - - } catch (ReflectiveOperationException e) { - if (log.isErrorEnabled()) { - log.error("error while creating the item listener", e); - } - } - - - } + item.addActionListener(moveNodeData.createChangeActionListener(treeHelper, + dataSource, + id, + possibleParentId)); + moveAction.add(item); } } else { @@ -441,31 +373,4 @@ public class ObserveNavigationTreeShowPopupAction { } - private class NavigationPopupMenuItems { - - private final Class<?> parentClass; - private final Class<? extends NodeChangeActionListener> changeActionListenerClass; - private final Function<String, List<ReferenceDto>> getParentsFunction; - - public NavigationPopupMenuItems(Class<?> parentClass, - Class<? extends NodeChangeActionListener> changeActionListenerClass, - Function<String, List<ReferenceDto>> getParentsFunction) { - this.parentClass = parentClass; - this.changeActionListenerClass = changeActionListenerClass; - this.getParentsFunction = getParentsFunction; - } - - public Class<?> getParentClass() { - return parentClass; - } - - public Class<? extends NodeChangeActionListener> getChangeActionListenerClass() { - return changeActionListenerClass; - } - - public Function<String, List<ReferenceDto>> getGetParentsFunction() { - return getParentsFunction; - } - } - } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNode.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNode.java index 5bb8f23..ab547b7 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNode.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/ObserveNode.java @@ -22,7 +22,9 @@ package fr.ird.observe.ui.tree; import fr.ird.observe.services.dto.OpenableDto; +import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.dto.seine.RouteDto; import fr.ird.observe.services.dto.seine.TripSeineDto; import jaxx.runtime.swing.nav.tree.NavTreeNode; @@ -104,8 +106,14 @@ public class ObserveNode extends NavTreeNode<ObserveNode> { } public boolean isRouteNode() { - return isDataNode() && - (RouteDto.class.isAssignableFrom(internalClass)); + return isDataNode() && RouteDto.class.isAssignableFrom(internalClass); + } + + public boolean isActivitySeineNode() { + return isDataNode() && ActivitySeineDto.class.isAssignableFrom(internalClass); } + public boolean isActivityLonglineNode() { + return isDataNode() && ActivityLonglineDto.class.isAssignableFrom(internalClass); + } } diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeActivityRouteActionListener.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeActivityRouteActionListener.java new file mode 100644 index 0000000..75c13eb --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/actions/ChangeActivityRouteActionListener.java @@ -0,0 +1,102 @@ +package fr.ird.observe.ui.tree.actions; + +/* + * #%L + * ObServe :: Swing + * %% + * Copyright (C) 2008 - 2015 IRD, Codelutin, Tony Chemit + * %% + * 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.ObserveSwingApplicationContext; +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.dto.seine.RouteDto; +import fr.ird.observe.services.service.seine.ActivitySeineService; +import fr.ird.observe.ui.DecoratorService; +import fr.ird.observe.ui.tree.ObserveNode; +import fr.ird.observe.ui.tree.ObserveTreeHelper; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Created on 1/9/15. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.11 + */ +public class ChangeActivityRouteActionListener extends NodeChangeActionListener { + + /** Logger. */ + private static final Log log = LogFactory.getLog(ChangeActivityRouteActionListener.class); + + public ChangeActivityRouteActionListener(ObserveTreeHelper treeHelper, + ObserveSwingDataSource dataSource, + String activityId, + String routeId) { + super(treeHelper, dataSource, activityId, routeId); + } + + @Override + protected ObserveNode getParentNode(ObserveNode node) { + return node.getParent().getParent(); + } + + @Override + protected ObserveNode getNewParentNode(ObserveNode grandParentNode, String parentNodeId) { + ObserveNode routeNode = getTreeHelper().getChild(grandParentNode, parentNodeId); + String activitiesNodeId = DecoratorService.getPropertyLabel(ObserveTreeHelper.TREE_NODE_PREFIX, + RouteDto.PROPERTY_ACTIVITY_SEINE); + ObserveNode activities = getTreeHelper().getChild(routeNode, activitiesNodeId); + return activities; + } + + @Override + protected void closeParent(String oldParentId) { + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + applicationContext.getOpenDataManager().closeRoute(oldParentId); + } + + @Override + protected int moveNodeToParent(String nodeId, String parentNodeId) { + int position; + + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + + ActivitySeineService service = applicationContext.newService(ActivitySeineService.class); + position = service.moveActivitySeineToRoute(nodeId, parentNodeId); + + return position; + } + + @Override + protected void openParent(ObserveNode activitiesNode) { + + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + + ObserveNode routeNode = activitiesNode.getParent(); + String routeId = routeNode.getId(); + + ObserveNode routesNode = routeNode.getParent(); + ObserveNode tripNode = routesNode.getParent(); + String tripId = tripNode.getId(); + + applicationContext.getOpenDataManager().openRoute(tripId, routeId); + + getTreeHelper().reloadNode(tripNode, true); + } +} diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/menu/MoveActivitySeineNodeData.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/menu/MoveActivitySeineNodeData.java new file mode 100644 index 0000000..bfc508b --- /dev/null +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/tree/menu/MoveActivitySeineNodeData.java @@ -0,0 +1,65 @@ +package fr.ird.observe.ui.tree.menu; + +import fr.ird.observe.db.ObserveSwingDataSource; +import fr.ird.observe.services.dto.IdDtos; +import fr.ird.observe.services.dto.ReferenceDto; +import fr.ird.observe.services.dto.seine.RouteDto; +import fr.ird.observe.ui.DecoratorService; +import fr.ird.observe.ui.tree.DtoNodeSupport; +import fr.ird.observe.ui.tree.ObserveNode; +import fr.ird.observe.ui.tree.ObserveTreeHelper; +import fr.ird.observe.ui.tree.actions.ChangeActivityRouteActionListener; +import fr.ird.observe.ui.tree.actions.NodeChangeActionListener; +import org.nuiton.decorator.Decorator; + +import java.util.LinkedHashMap; +import java.util.Map; + +/** + * @author Kevin Morin (Code Lutin) + * @since x.x + */ +public class MoveActivitySeineNodeData extends MoveNodeData { + + @Override + public NodeChangeActionListener createChangeActionListener(ObserveTreeHelper treeHelper, + ObserveSwingDataSource dataSource, + String id, + String parentId) { + return new ChangeActivityRouteActionListener(treeHelper, dataSource, id, parentId); + } + + @Override + public Map<String, String> getPossibleParentNodes(ObserveNode activitySeineNode, ObserveTreeHelper treeHelper) { + + // noeud de route parent + ObserveNode parentNode = activitySeineNode.getParent().getParent(); + + // noeud de route de la marée sans le parent actuel + Map<String, String> possibleParents = new LinkedHashMap<>(); + + // noeud de la marée + ObserveNode routesNode = parentNode.getParent(); + + DecoratorService decoratorService = treeHelper.getTreeCellRenderer().getDecoratorService(); + Decorator<ReferenceDto> routeDecorator = + decoratorService.getDecoratorByType(ReferenceDto.class, RouteDto.class.getSimpleName()); + + for (int i = 0, n = routesNode.getChildCount() ; i < n ; i++) { + + ObserveNode routeNode = routesNode.getChildAt(i); + String routeId = routeNode.getId(); + + // si le noeud de marée n'est pas le même que le parent actuel + if (!parentNode.equals(routeNode) + // si le noeud est bien un noeud de marée seine + && IdDtos.isRouteId(routeId)) { + + String decoratedRoute = routeDecorator.toString(((DtoNodeSupport) routeNode).getEntity()); + possibleParents.put(routeId, decoratedRoute); + } + } + + return possibleParents; + } +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@list.forge.codelutin.com>.
participants (1)
-
codelutin.com scm