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>.