Tony CHEMIT pushed to branch develop-7.x at ultreiaio / ird-observe Commits: 195e34fb by tchemit at 2020-02-13T14:51:58+01:00 Petit problème sur déplacement d'activité - Closes #1435 - - - - - 14 changed files: - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglineUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglinesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeineUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeinesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveMultipleDataUIActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRouteUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRoutesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveSingleDataUIActionSupport.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripSeinesUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripsUIAction.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTree.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java - client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java Changes: ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglineUIAction.java ===================================== @@ -29,7 +29,6 @@ import fr.ird.observe.client.ui.tree.navigation.nodes.longline.TripLonglineNavig import fr.ird.observe.client.ui.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.longline.ActivityLonglineDto; import fr.ird.observe.dto.data.longline.TripLonglineReference; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; import javax.swing.JOptionPane; @@ -60,7 +59,7 @@ public class MoveActivityLonglineUIAction extends MoveSingleDataUIActionSupport } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewTripLongline(mainUI, oldParentNode); } @@ -76,15 +75,14 @@ public class MoveActivityLonglineUIAction extends MoveSingleDataUIActionSupport } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - NavigationTreeNodeSupport tripLonglineNode = treeHelper.getChild(grandParentNode, newParentId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivityLonglineDto.class); - return treeHelper.getChild(tripLonglineNode, activitiesNodeId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + NavigationTreeNodeSupport<?> parentNode = grandParentNode.findChildById(newParentId); + return parentNode.findChildByClass(ActivityLonglineDto.class); } - static Optional<String> chooseNewTripLongline(ObserveMainUI ui, NavigationTreeNodeSupport oldParentNode) { + static Optional<String> chooseNewTripLongline(ObserveMainUI ui, NavigationTreeNodeSupport<?> oldParentNode) { - NavigationTreeNodeSupport programNode = oldParentNode.getParent(); + NavigationTreeNodeSupport<?> programNode = oldParentNode.getParent(); String oldTripLonglineId = oldParentNode.getId(); int tripLonglineNb = programNode.getChildCount(); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivityLonglinesUIAction.java ===================================== @@ -29,9 +29,9 @@ import fr.ird.observe.client.ui.content.data.longline.ActivityLonglinesUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.dto.data.longline.ActivityLonglineDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import java.util.List; +import java.util.Objects; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -64,22 +64,21 @@ public class MoveActivityLonglinesUIAction extends MoveMultipleDataUIActionSuppo } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveActivityLonglineUIAction.chooseNewTripLongline(getMainUI(), oldParentNode); } @Override - void updateUI(ActivityLonglinesUI ui, NavigationTreeNodeSupport oldActivitiesNode, String tripLonglineId, ImmutableSet<String> activityIds, List<Integer> positions) { + void updateUI(ActivityLonglinesUI ui, NavigationTreeNodeSupport<?> oldActivitiesNode, String tripLonglineId, ImmutableSet<String> activityIds, List<Integer> positions) { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport oldTripLonglineNode = oldActivitiesNode.getParent(); - NavigationTreeNodeSupport programNode = oldTripLonglineNode.getParent(); - NavigationTreeNodeSupport newTripLonglineNode = treeHelper.getChild(programNode, tripLonglineId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivityLonglineDto.class); - NavigationTreeNodeSupport newActivitiesNode = treeHelper.getChild(newTripLonglineNode, activitiesNodeId); + NavigationTreeNodeSupport<?> oldTripLonglineNode = Objects.requireNonNull(oldActivitiesNode.getParent()); + NavigationTreeNodeSupport<?> programNode = Objects.requireNonNull(oldTripLonglineNode.getParent()); + NavigationTreeNodeSupport<?> newTripLonglineNode = Objects.requireNonNull(programNode.findChildById(tripLonglineId)); + NavigationTreeNodeSupport<?> newActivitiesNode = Objects.requireNonNull(newTripLonglineNode.findChildByClass(ActivityLonglineDto.class)); // Let's check if we're moving an open activity Optional<String> openActivity = activityIds @@ -93,7 +92,7 @@ public class MoveActivityLonglinesUIAction extends MoveMultipleDataUIActionSuppo // 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(oldActivitiesNode); - treeHelper.reloadNodeSubTree(newActivitiesNode); + treeHelper.reloadNodeSubTree(newActivitiesNode, true); // Let's put the focus on the activities node which received the activities treeHelper.selectSafeNode(newActivitiesNode); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeineUIAction.java ===================================== @@ -29,7 +29,6 @@ import fr.ird.observe.client.ui.tree.navigation.nodes.seine.RouteSeineNavigation import fr.ird.observe.client.ui.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.seine.ActivitySeineDto; import fr.ird.observe.dto.data.seine.RouteReference; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; import javax.swing.JOptionPane; @@ -60,7 +59,7 @@ public class MoveActivitySeineUIAction extends MoveSingleDataUIActionSupport { } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewRoute(mainUI, oldParentNode); } @@ -75,15 +74,14 @@ public class MoveActivitySeineUIAction extends MoveSingleDataUIActionSupport { } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - NavigationTreeNodeSupport routeNode = treeHelper.getChild(grandParentNode, newParentId); - String activitiesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivitySeineDto.class); - return treeHelper.getChild(routeNode, activitiesNodeId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + NavigationTreeNodeSupport<?> parentNode = grandParentNode.findChildById(newParentId); + return parentNode.findChildByClass( ActivitySeineDto.class); } - static Optional<String> chooseNewRoute(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + static Optional<String> chooseNewRoute(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { - NavigationTreeNodeSupport routesNode = oldParentNode.getParent(); + NavigationTreeNodeSupport<?> routesNode = oldParentNode.getParent(); String oldRouteId = oldParentNode.getId(); int routeNb = routesNode.getChildCount(); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveActivitySeinesUIAction.java ===================================== @@ -29,9 +29,9 @@ import fr.ird.observe.client.ui.content.data.seine.ActivitySeinesUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.dto.data.seine.ActivitySeineDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import java.util.List; +import java.util.Objects; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -59,7 +59,7 @@ public class MoveActivitySeinesUIAction extends MoveMultipleDataUIActionSupport< } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveActivitySeineUIAction.chooseNewRoute(getMainUI(), oldParentNode); } @@ -69,17 +69,16 @@ public class MoveActivitySeinesUIAction extends MoveMultipleDataUIActionSupport< } @Override - void updateUI(ActivitySeinesUI ui, NavigationTreeNodeSupport oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { + void updateUI(ActivitySeinesUI ui, NavigationTreeNodeSupport<?> oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().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); + NavigationTreeNodeSupport<?> oldRouteNode = Objects.requireNonNull(oldParentNode.getParent()); + NavigationTreeNodeSupport<?> routesNode = Objects.requireNonNull(oldRouteNode.getParent()); + NavigationTreeNodeSupport<?> newRouteNode = Objects.requireNonNull(routesNode.findChildById(newParentId)); + NavigationTreeNodeSupport<?> newActivitiesNode = Objects.requireNonNull(newRouteNode.findChildByClass(ActivitySeineDto.class)); // Let's check if we're moving an open activity Optional<String> openActivity = dataIds @@ -93,7 +92,7 @@ public class MoveActivitySeinesUIAction extends MoveMultipleDataUIActionSupport< // 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); + treeHelper.reloadNodeSubTree(newActivitiesNode, true); // Let's put the focus on the activities node which received the activities treeHelper.selectSafeNode(newActivitiesNode); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveMultipleDataUIActionSupport.java ===================================== @@ -73,9 +73,9 @@ public abstract class MoveMultipleDataUIActionSupport<U extends ContentListUI<?, @SuppressWarnings("unchecked") U ui = (U) ui1; NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport node = treeHelper.getSelectedNode(); + NavigationTreeNodeSupport<?> node = treeHelper.getSelectedNode(); - NavigationTreeNodeSupport oldParentNode = node.getParent().isRoot() ? node : node.getParent(); + NavigationTreeNodeSupport<?> oldParentNode = node.getParent().isRoot() ? node : node.getParent(); Optional<String> optionalNewParentId = getNewParentId(getMainUI(), oldParentNode); @@ -90,10 +90,10 @@ public abstract class MoveMultipleDataUIActionSupport<U extends ContentListUI<?, } - abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode); + abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode); abstract List<Integer> moveData(ImmutableSet<String> dataIds, String newParentId); - abstract void updateUI(U ui, NavigationTreeNodeSupport oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions); + abstract void updateUI(U ui, NavigationTreeNodeSupport<?> oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions); } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRouteUIAction.java ===================================== @@ -29,7 +29,6 @@ import fr.ird.observe.client.ui.tree.navigation.nodes.seine.TripSeineNavigationT import fr.ird.observe.client.ui.util.DecoratedNodeEntity; import fr.ird.observe.dto.data.seine.RouteDto; import fr.ird.observe.dto.data.seine.TripSeineReference; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.dto.decoration.decorators.DataReferenceDecorator; import javax.swing.JOptionPane; @@ -60,7 +59,7 @@ public class MoveRouteUIAction extends MoveSingleDataUIActionSupport { } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewTripSeine(mainUI, oldParentNode); } @@ -75,14 +74,13 @@ public class MoveRouteUIAction extends MoveSingleDataUIActionSupport { } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - NavigationTreeNodeSupport tripNode = treeHelper.getChild(grandParentNode, newParentId); - String routesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(RouteDto.class); - return treeHelper.getChild(tripNode, routesNodeId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + NavigationTreeNodeSupport<?> parentNode = grandParentNode.findChildById(newParentId); + return parentNode.findChildByClass(RouteDto.class); } - static Optional<String> chooseNewTripSeine(ObserveMainUI mainUI, NavigationTreeNodeSupport oldTripSeineNode) { - NavigationTreeNodeSupport programNode = oldTripSeineNode.getParent(); + static Optional<String> chooseNewTripSeine(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldTripSeineNode) { + NavigationTreeNodeSupport<?> programNode = oldTripSeineNode.getParent(); String oldTripSeineId = oldTripSeineNode.getId(); int tripSeineNb = programNode.getChildCount(); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveRoutesUIAction.java ===================================== @@ -28,9 +28,9 @@ import fr.ird.observe.client.ui.content.data.seine.RoutesUI; import fr.ird.observe.client.ui.tree.navigation.NavigationTree; import fr.ird.observe.client.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.dto.data.seine.RouteDto; -import fr.ird.observe.dto.decoration.ObserveI18nDecoratorHelper; import java.util.List; +import java.util.Objects; import java.util.Optional; import static io.ultreia.java4all.i18n.I18n.n; @@ -58,7 +58,7 @@ public class MoveRoutesUIAction extends MoveMultipleDataUIActionSupport<RoutesUI } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveRouteUIAction.chooseNewTripSeine(getMainUI(), oldParentNode); } @@ -69,16 +69,15 @@ public class MoveRoutesUIAction extends MoveMultipleDataUIActionSupport<RoutesUI @Override - void updateUI(RoutesUI ui, NavigationTreeNodeSupport oldRoutesNode, String tripSeineId, ImmutableSet<String> routeIds, List<Integer> positions) { + void updateUI(RoutesUI ui, NavigationTreeNodeSupport<?> oldRoutesNode, String tripSeineId, ImmutableSet<String> routeIds, List<Integer> positions) { ObserveOpenDataManager openDataManager = getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport oldTripSeineNode = oldRoutesNode.getParent(); - NavigationTreeNodeSupport programNode = oldTripSeineNode.getParent(); - NavigationTreeNodeSupport newTripSeineNode = treeHelper.getChild(programNode, tripSeineId); - String routesNodeId = ObserveI18nDecoratorHelper.getTypePluralI18nKey(RouteDto.class); - NavigationTreeNodeSupport newRoutesNode = treeHelper.getChild(newTripSeineNode, routesNodeId); + NavigationTreeNodeSupport<?> oldTripSeineNode = Objects.requireNonNull(oldRoutesNode.getParent()); + NavigationTreeNodeSupport<?> programNode = Objects.requireNonNull(oldTripSeineNode.getParent()); + NavigationTreeNodeSupport<?> newTripSeineNode = Objects.requireNonNull(programNode.findChildById(tripSeineId)); + NavigationTreeNodeSupport<?> newRoutesNode = Objects.requireNonNull(newTripSeineNode.findChildByClass(RouteDto.class)); // Let's check if we're moving an open route Optional<String> openRoute = routeIds @@ -92,7 +91,7 @@ public class MoveRoutesUIAction extends MoveMultipleDataUIActionSupport<RoutesUI // 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(oldRoutesNode); - treeHelper.reloadNodeSubTree(newRoutesNode); + treeHelper.reloadNodeSubTree(newRoutesNode, true); // 1. Select the newRoutesNode : // only a selected node can be reloaded (@see fr.ird.observe.client.ui.tree.ObserveTreeBridge.canLoadChild). ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveSingleDataUIActionSupport.java ===================================== @@ -52,22 +52,22 @@ public abstract class MoveSingleDataUIActionSupport extends UIActionSupport { public final void actionPerformed(ActionEvent e) { NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport node = treeHelper.getSelectedNode(); - NavigationTreeNodeSupport oldParentNode = node.getParent().getParent().equals(node.getRoot()) ? node.getParent() : node.getParent().getParent(); + NavigationTreeNodeSupport<?> node = treeHelper.getSelectedNode(); + NavigationTreeNodeSupport<?> oldParentNode = node.getParent().getParent().equals(node.getRoot()) ? node.getParent() : node.getParent().getParent(); Optional<String> optionalNewParentId = getNewParentId(getMainUI(), oldParentNode); optionalNewParentId.ifPresent(newParentId -> SwingUtilities.invokeLater(() -> apply(oldParentNode, node.getId(), newParentId))); } - abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode); + abstract Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode); - private void apply(NavigationTreeNodeSupport oldParentNode, String dataId, String newParentId) { + private void apply(NavigationTreeNodeSupport<?> oldParentNode, String dataId, String newParentId) { NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport node = treeHelper.getSelectedNode(); - NavigationTreeNodeSupport grandParentNode = oldParentNode.getParent(); - NavigationTreeNodeSupport newParentNode = getNewParentNode(treeHelper, grandParentNode, newParentId); + NavigationTreeNodeSupport<?> node = treeHelper.getSelectedNode(); + NavigationTreeNodeSupport<?> grandParentNode = oldParentNode.getParent(); + NavigationTreeNodeSupport<?> newParentNode = getNewParentNode(treeHelper, grandParentNode, newParentId); closeNode(node.getId()); @@ -77,7 +77,7 @@ public abstract class MoveSingleDataUIActionSupport extends UIActionSupport { treeHelper.removeNode(node); - NavigationTreeNodeSupport newNode = treeHelper.getChild(newParentNode, dataId); + NavigationTreeNodeSupport<?> newNode = treeHelper.getChild(newParentNode, dataId); if (newNode == null) { @@ -95,5 +95,5 @@ public abstract class MoveSingleDataUIActionSupport extends UIActionSupport { abstract void closeNode(String dataId); - abstract NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId); + abstract NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId); } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripSeinesUIAction.java ===================================== @@ -54,7 +54,7 @@ public class MoveTripSeinesUIAction extends MoveTripsUIAction<TripSeinesUI> { @Override protected void updateModelData(TripSeinesUI ui) { TripSeinesUIModel model = ui.getModel(); - List<TripSeineReference> data = new ArrayList(model.getData()); + List<TripSeineReference> data = new ArrayList<>(model.getData()); data.removeAll(model.getSelectedDatas()); model.setData(data); } ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripUIAction.java ===================================== @@ -65,7 +65,7 @@ public abstract class MoveTripUIAction extends MoveSingleDataUIActionSupport { } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return chooseNewProgram(mainUI, gearType, oldParentNode.getId()); } @@ -88,8 +88,8 @@ public abstract class MoveTripUIAction extends MoveSingleDataUIActionSupport { } @Override - NavigationTreeNodeSupport getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport grandParentNode, String newParentId) { - return treeHelper.getChild(grandParentNode, newParentId); + NavigationTreeNodeSupport<?> getNewParentNode(NavigationTree treeHelper, NavigationTreeNodeSupport<?> grandParentNode, String newParentId) { + return grandParentNode.findChildById(newParentId); } static Optional<String> chooseNewProgram(ObserveMainUI mainUI, GearType gearType, String oldProgramId) { @@ -97,7 +97,7 @@ public abstract class MoveTripUIAction extends MoveSingleDataUIActionSupport { NavigationTree treeHelper = mainUI.getNavigationUI().getTree(); // racine - NavigationTreeNodeSupport rootNode = treeHelper.getRootNode(); + 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<>(); @@ -106,7 +106,7 @@ public abstract class MoveTripUIAction extends MoveSingleDataUIActionSupport { for (int i = 0, n = rootNode.getChildCount(); i < n; i++) { - NavigationTreeNodeSupport programNode = (NavigationTreeNodeSupport) rootNode.getChildAt(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 ===================================== client-core/src/main/java/fr/ird/observe/client/ui/actions/content/MoveTripsUIAction.java ===================================== @@ -66,12 +66,12 @@ public abstract class MoveTripsUIAction<U extends ContentListUI<?, ?, ?, ?>> ext } @Override - Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport oldParentNode) { + Optional<String> getNewParentId(ObserveMainUI mainUI, NavigationTreeNodeSupport<?> oldParentNode) { return MoveTripUIAction.chooseNewProgram(getMainUI(), gearType, oldParentNode.getId()); } @Override - void updateUI(U ui, NavigationTreeNodeSupport oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { + void updateUI(U ui, NavigationTreeNodeSupport<?> oldParentNode, String newParentId, ImmutableSet<String> dataIds, List<Integer> positions) { String oldProgramId = oldParentNode.getId(); @@ -79,14 +79,14 @@ public abstract class MoveTripsUIAction<U extends ContentListUI<?, ?, ?, ?>> ext ObserveOpenDataManager openDataManager = applicationContext.getOpenDataManager(); NavigationTree treeHelper = getMainUI().getNavigationUI().getTree(); - NavigationTreeNodeSupport rootNode = treeHelper.getRootNode(); - NavigationTreeNodeSupport newProgramNode = treeHelper.getChild(rootNode, newParentId); + NavigationTreeNodeSupport<?> rootNode = treeHelper.getRootNode(); + NavigationTreeNodeSupport<?> newProgramNode = rootNode.findChildById(newParentId); UnmodifiableIterator<String> iterator = dataIds.iterator(); for (Integer position : positions) { String tripId = iterator.next(); - NavigationTreeNodeSupport tripNode = treeHelper.getChild(oldParentNode, tripId); + NavigationTreeNodeSupport<?> tripNode = oldParentNode.findChildById(tripId); boolean wasOpen = tripNode.isOpen(); treeHelper.removeNode(tripNode); @@ -95,7 +95,7 @@ public abstract class MoveTripsUIAction<U extends ContentListUI<?, ?, ?, ?>> ext openDataManager.openProgram(newParentId); } - NavigationTreeNodeSupport newTripNode = treeHelper.getChild(newProgramNode, tripId); + NavigationTreeNodeSupport<?> newTripNode = treeHelper.getChild(newProgramNode, tripId); if (newTripNode == null) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTree.java ===================================== @@ -407,20 +407,17 @@ public class NavigationTree extends JXTree { SwingUtilities.invokeLater(this::grabFocus); } - public void reloadNodeSubTree(NavigationTreeNodeSupport node) { - Objects.requireNonNull(node, "node is null, we can not reload its structure"); + public void reloadNodeSubTree(NavigationTreeNodeSupport<?> node) { + reloadNodeSubTree(node, false); + } - // 1. Let's clear node structure - while (node.getChildCount() > 0) { - removeNode((NavigationTreeNodeSupport) node.getFirstChild()); + public void reloadNodeSubTree(NavigationTreeNodeSupport<?> node, boolean expand) { + Objects.requireNonNull(node, "node is null, we can not reload its structure"); + getTreeModel().update(node); + if (expand) { + // Fix bug (if no child in parent node, it will not expand...) + fireTreeExpanded(new TreePath(node.getPath())); } - - // 3. Let's re-generate node's children by populating the node : this will call the child loaders. - node.updateNode(); - - // Fix bug (if no child in parent node, it will not expand...) - fireTreeExpanded(new TreePath(node.getPath())); - } public void reloadNode(NavigationTreeNodeSupport<?> node, boolean deep) { ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/NavigationTreeModel.java ===================================== @@ -79,6 +79,11 @@ public class NavigationTreeModel extends DefaultTreeModel { super.reload(node); } + public <N extends NavigationTreeNodeSupport> void update(N node) { + node.updateNode(); + super.reload(node); + } + public <N extends NavigationTreeNodeSupport> void open(N node) { if (node instanceof WithChildsToReload) { boolean updated = node.populateChilds(); ===================================== client-core/src/main/java/fr/ird/observe/client/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java ===================================== @@ -25,8 +25,8 @@ package fr.ird.observe.client.ui.tree.navigation.nodes; import fr.ird.observe.client.ui.actions.content.SelectNodeUIAction; import fr.ird.observe.client.ui.content.ContentUI; import fr.ird.observe.client.ui.tree.ObserveTreeNodeSupport; -import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.nuiton.jaxx.runtime.JAXXObject; import javax.swing.AbstractAction; @@ -163,9 +163,9 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor // au final le noeud est une feuille, donc ne convient pas return null; } - Enumeration<NavigationTreeNodeSupport> children = children(); + Enumeration<NavigationTreeNodeSupport<?>> children = children(); while (children.hasMoreElements()) { - NavigationTreeNodeSupport node = children.nextElement(); + NavigationTreeNodeSupport<?> node = children.nextElement(); if (childType.isAssignableFrom(node.getClass())) { return node; } @@ -187,10 +187,10 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor // au final le noeud est une feuille, donc ne convient pas return null; } - Enumeration<NavigationTreeNodeSupport> children = children(); + Enumeration<NavigationTreeNodeSupport<?>> children = children(); while (children.hasMoreElements()) { - NavigationTreeNodeSupport node = children.nextElement(); - if (childType.isAssignableFrom((Class) node.getUserObject())) { + NavigationTreeNodeSupport<?> node = children.nextElement(); + if (childType.isAssignableFrom(node.getDataType())) { return node; } } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/195e34fb951a533cb69328d7d0... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/195e34fb951a533cb69328d7d0... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT