This is an automated email from the git hooks/post-receive script. New commit to branch feature/8429 in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 946c8f9015acc618731f5857b9ca68df48c0dba8 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Nov 22 10:14:26 2016 +0100 refs #8429 revue des nœud de chargement et utilisation de NavigationService --- .../swing/ui/tree/navigation/NavigationTree.java | 91 ++++-------- .../navigation/NavigationTreeCellRenderer.java | 165 ++------------------- .../ui/tree/navigation/NavigationTreeHeader.jaxx | 45 ++++++ .../ui/tree/navigation/NavigationTreeHeader.jcss | 53 +++++++ .../navigation/NavigationTreeHeaderHandler.java | 106 +++++++++++++ .../ui/tree/navigation/NavigationTreeModel.java | 87 ++++++++--- .../nodes/ReferenceNavigationTreeNodeSupport.java | 2 +- .../navigation/nodes/RootNavigationTreeNode.java | 45 +----- .../ActivitiesLonglineNavigationTreeNode.java | 13 ++ .../ActivityLonglineNavigationTreeNode.java | 35 +++-- .../GearUseFeaturesLonglineNavigationTreeNode.java | 6 + .../ProgramLonglineNavigationTreeNode.java | 23 +-- .../longline/TripLonglineNavigationTreeNode.java | 16 +- .../seine/ActivitiesSeineNavigationTreeNode.java | 18 ++- .../seine/ActivitySeineNavigationTreeNode.java | 30 ++-- .../GearUseFeaturesSeineNavigationTreeNode.java | 7 + .../seine/ProgramSeineNavigationTreeNode.java | 24 +-- .../nodes/seine/RouteSeineNavigationTreeNode.java | 10 +- .../nodes/seine/RoutesSeineNavigationTreeNode.java | 20 ++- .../nodes/seine/TripSeineNavigationTreeNode.java | 16 +- .../ui/tree/selection/SelectionTreeModel.java | 66 ++++++++- .../selection/nodes/ProgramSelectionTreeNode.java | 5 +- .../selection/nodes/RootSelectionTreeNode.java | 54 ------- 23 files changed, 536 insertions(+), 401 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java index aacee98..84e0c71 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java @@ -1,6 +1,5 @@ package fr.ird.observe.application.swing.ui.tree.navigation; -import com.google.common.collect.Lists; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; @@ -40,8 +39,8 @@ import javax.swing.SwingUtilities; import javax.swing.event.TreeExpansionEvent; import javax.swing.event.TreeWillExpandListener; import javax.swing.tree.ExpandVetoException; -import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreePath; +import javax.swing.tree.TreeSelectionModel; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -61,7 +60,6 @@ public class NavigationTree extends JXTree { /** Logger */ private static final Log log = LogFactory.getLog(NavigationTree.class); - public static void sortPrograms(List<ReferentialReference<ProgramDto>> data) { ObserveSwingApplicationContext.get().getDecoratorService().sort(ProgramDto.class, data); } @@ -70,6 +68,8 @@ public class NavigationTree extends JXTree { super(new NavigationTreeModel()); setLargeModel(true); setRootVisible(false); + getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); + addTreeWillExpandListener(new TreeWillExpandListener() { @Override @@ -77,7 +77,7 @@ public class NavigationTree extends JXTree { if (!(getModel() instanceof NavigationTreeModel)) { return; } - NavigationTreeModel model = getNavigationTreeModel(); + NavigationTreeModel model = getTreeModel(); NavigationTreeNodeSupport node = (NavigationTreeNodeSupport) event.getPath().getLastPathComponent(); model.open(node); @@ -113,7 +113,7 @@ public class NavigationTree extends JXTree { return; } TreePath path = e.getPath(); - getNavigationTreeModel().open((NavigationTreeNodeSupport) path.getLastPathComponent()); + getTreeModel().open((NavigationTreeNodeSupport) path.getLastPathComponent()); }); NavigationTreeCellRenderer renderer = new NavigationTreeCellRenderer(); @@ -121,7 +121,7 @@ public class NavigationTree extends JXTree { } - public NavigationTreeModel getNavigationTreeModel() { + public NavigationTreeModel getTreeModel() { return (NavigationTreeModel) getModel(); } @@ -157,8 +157,8 @@ public class NavigationTree extends JXTree { if (log.isDebugEnabled()) { log.debug("try to select node from ids " + Arrays.toString(path)); } - RootNavigationTreeNode root = this.getNavigationTreeModel().getRoot(); - NavigationTreeNodeSupport node = NavigationTreeNodeSupport.findNode(getNavigationTreeModel(), root, path); + RootNavigationTreeNode root = this.getTreeModel().getRoot(); + NavigationTreeNodeSupport node = NavigationTreeNodeSupport.findNode(getTreeModel(), root, path); if (log.isDebugEnabled()) { log.debug("selected node [" + node + "]"); } @@ -177,42 +177,26 @@ public class NavigationTree extends JXTree { if (log.isDebugEnabled()) { log.debug("try to select node [" + node + "]"); } - TreePath path = new TreePath(getNavigationTreeModel().getPathToRoot(node)); + TreePath path = new TreePath(getTreeModel().getPathToRoot(node)); - addSelectionPath(path); + setSelectionPath(path); scrollPathToVisible(path); } public NavigationTreeNodeSupport getChild(NavigationTreeNodeSupport node, String id) { - return node.findNodeById(getNavigationTreeModel(), id); + return node.findNodeById(getTreeModel(), id); } - public NavigationTreeNodeSupport removeNode(NavigationTreeNodeSupport node) { - getNavigationTreeModel().removeNodeFromParent(node); - return null; + public void removeNode(NavigationTreeNodeSupport node) { + getTreeModel().removeNodeFromParent(node); } public void insertNode(NavigationTreeNodeSupport parentNode, NavigationTreeNodeSupport node, int position) { - getNavigationTreeModel().insertNodeInto(node, parentNode, position); + getTreeModel().insertNodeInto(node, parentNode, position); } public void clearModel() { - - NavigationTreeModel treeModel = new NavigationTreeModel(); - treeModel.setLoadLongline(false); - treeModel.setLoadReferential(false); - treeModel.setLoadSeine(false); - treeModel.setRoot(new RootNavigationTreeNode()); - setModel(treeModel); - } - - public void createModel() { - NavigationTreeModel treeModel = new NavigationTreeModel(); - treeModel.setLoadLongline(true); - treeModel.setLoadReferential(true); - treeModel.setLoadSeine(true); - treeModel.setRoot(new RootNavigationTreeNode()); - setModel(treeModel); + getTreeModel().setRoot(new RootNavigationTreeNode()); } /** @@ -253,7 +237,7 @@ public class NavigationTree extends JXTree { // on selectionne le premier noeud de $root - NavigationTreeNodeSupport node = getNavigationTreeModel().getRoot(); + NavigationTreeNodeSupport node = getTreeModel().getRoot(); if (!node.isLeaf()) { node = (NavigationTreeNodeSupport) node.getFirstChild(); } @@ -291,7 +275,7 @@ public class NavigationTree extends JXTree { // 3. Let's re-generate node's children by populating the node : this will call the child loaders. node.reload(); - node.populateChilds(getNavigationTreeModel()); + node.populateChilds(getTreeModel()); if (expandNode) { @@ -302,17 +286,17 @@ public class NavigationTree extends JXTree { } } - public void reloadNode(NavigationTreeNodeSupport node, boolean deep) { + public void reloadNode(NavigationTreeNodeSupport<?> node, boolean deep) { if (log.isDebugEnabled()) { log.debug("Will refresh (deep ? " + deep + ") node " + node); } - getNavigationTreeModel().nodeChanged(node); + getTreeModel().nodeChanged(node); if (deep) { // repaint childs nodes - Enumeration<NavigationTreeNodeSupport> e = node.children(); + Enumeration<NavigationTreeNodeSupport<?>> e = node.children(); while (e.hasMoreElements()) { - NavigationTreeNodeSupport child = e.nextElement(); + NavigationTreeNodeSupport<?> child = e.nextElement(); reloadNode(child, true); } } @@ -487,7 +471,7 @@ public class NavigationTree extends JXTree { ObserveSwingDataSource mainDataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); Set<ReferentialReference<ProgramDto>> programs = mainDataSource.getReferentialReferences(ProgramDto.class); - List<ReferentialReference<ProgramDto>> data = Lists.newArrayList(programs); + List<ReferentialReference<ProgramDto>> data = new ArrayList<>(programs); int newIndex = 0; if (CollectionUtils.isNotEmpty(data)) { sortPrograms(data); @@ -496,9 +480,9 @@ public class NavigationTree extends JXTree { NavigationTreeNodeSupport result; if (ProgramHelper.isProgramLongline(bean)) { - result = new ProgramLonglineNavigationTreeNode(bean); + result = new ProgramLonglineNavigationTreeNode(bean, Collections.emptyList()); } else { - result = new ProgramSeineNavigationTreeNode(bean); + result = new ProgramSeineNavigationTreeNode(bean, Collections.emptyList()); } insertNode(getRootNode(), result, newIndex); return result; @@ -520,22 +504,8 @@ public class NavigationTree extends JXTree { // refreshNode(result, false); } - public void removeTrip(ReferentialReference<ProgramDto> program, DataReference trip) { - - RootNavigationTreeNode rootNode = getRootNode(); - NavigationTreeNodeSupport programNode = getChild(rootNode, program.getId()); - Objects.requireNonNull(programNode, "Could not find program node with id: " + program); - NavigationTreeNodeSupport tripNode = getChild(programNode, trip.getId()); - Objects.requireNonNull(tripNode, "Could not find program node with id: " + trip); - removeNode(tripNode); - - if (programNode.isLeaf()) { - removeProgram(program.getId()); - } - } - public RootNavigationTreeNode getRootNode() { - return getNavigationTreeModel().getRoot(); + return getTreeModel().getRoot(); } /** @@ -548,16 +518,7 @@ public class NavigationTree extends JXTree { public void moveNode(NavigationTreeNodeSupport parentNode, NavigationTreeNodeSupport node, int position) { parentNode.remove(node); parentNode.insert(node, position); - getNavigationTreeModel().nodeStructureChanged(parentNode); + getTreeModel().nodeStructureChanged(parentNode); } - public NavigationTreeCellRenderer getNavigationCellRenderer() { - TreeCellRenderer render0 = getCellRenderer(); - if (render0 instanceof JXTree.DelegatingRenderer) { - JXTree.DelegatingRenderer render01 = (JXTree.DelegatingRenderer) render0; - return (NavigationTreeCellRenderer) render01.getDelegateRenderer(); - } else { - return (NavigationTreeCellRenderer) render0; - } - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeCellRenderer.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeCellRenderer.java index ff4e2a5..5594fd2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeCellRenderer.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeCellRenderer.java @@ -1,13 +1,11 @@ package fr.ird.observe.application.swing.ui.tree.navigation; -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.application.swing.decoration.DecoratorService; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.Icon; -import javax.swing.JComponent; +import javax.swing.JLabel; import javax.swing.JTree; import javax.swing.tree.DefaultTreeCellRenderer; import java.awt.Color; @@ -24,141 +22,19 @@ public class NavigationTreeCellRenderer extends DefaultTreeCellRenderer { /** Logger */ private static final Log log = LogFactory.getLog(NavigationTreeCellRenderer.class); - /** service de décoration */ - private transient DecoratorService decoratorService; - - public DecoratorService getDecoratorService() { - if (decoratorService == null) { - - // on récupère le service commun - decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); - } - return decoratorService; - } - - @Override - public Color getBackgroundSelectionColor() { - return null; - } - - @Override - public Color getBackgroundNonSelectionColor() { - // Fixes http://forge.codelutin.com/issues/830 for jdk 7 - return Color.WHITE; - } - - // protected void setDefaultIcons(Icon icon) { -// if (icon == null) { -// // the icon is not customized for this node -// setOpenIcon(getDefaultOpenIcon()); -// setClosedIcon(getDefaultClosedIcon()); -// setLeafIcon(getDefaultLeafIcon()); -// } else { -// // replace all possible icons for this node -// setOpenIcon(icon); -// setClosedIcon(icon); -// setLeafIcon(icon); -// } +// @Override +// public Color getBackgroundSelectionColor() { +// return null; // } - -// protected String computeNodeText(NavigationTreeNodeSupport node) { -// -// if (node instanceof StringNavigationTreeNodeSupport) { -// return t(((StringNavigationTreeNodeSupport) node).getData()); -// } -// -// Class dataType = node.getDataType(); -// -// if (node instanceof ReferenceNavigationTreeNodeSupport && node.getId() == null) { -// // nœud en création -// return t(ObserveI18nDecoratorHelper.getTypeI18nKey(dataType) + ".unsaved"); -// } -// -// if (node instanceof ClassNavigationTreeNode) { -// return t(ObserveI18nDecoratorHelper.getTypePluralI18nKey(dataType)); -// } -// -// if (node.isReferentielNode()) { -// return t(ObserveI18nDecoratorHelper.getTypeI18nKey(dataType)); -// } -// -// // noeud de donnée -// -// String id = node.getId(); -// -// if (id == null) { -// -// // noeud d'un objet en cours de création -// -// //FIXME -// return t(""); -// } -// -// -// if (node instanceof SetLonglineNavigationTreeNode) { -// return t(ObserveI18nDecoratorHelper.getTypeI18nKey(dataType)); -// } -// -// if (node instanceof SetSeineNavigationTreeNode) { -// return t(ObserveI18nDecoratorHelper.getTypeI18nKey(dataType)); -// } -// -// if (node instanceof ReferenceNavigationTreeNodeSupport && DataDto.class.isAssignableFrom(dataType)) { -// ReferenceNavigationTreeNodeSupport<?, ?> entityNodeSupport = (ReferenceNavigationTreeNodeSupport) node; -// -// AbstractReference<?> data = entityNodeSupport.getData(); -// Objects.requireNonNull(data, "L'entité doit être chargée dans le noeud: " + node); -// -// Decorator<?> decorator = getDecoratorService().getDataReferenceDecorator(dataType); -// -// String result = decorator.toString(data); -// if (node instanceof TripSeineNavigationTreeNode) { -// result += " (" + TripSeineHelper.getRouteCount(((TripSeineNavigationTreeNode) node).getData()) + ")"; -// } -// return result; -// } -// -// if (node instanceof ReferenceNavigationTreeNodeSupport) { -// ReferenceNavigationTreeNodeSupport<?, ?> entityNodeSupport = (ReferenceNavigationTreeNodeSupport) node; -// -// AbstractReference<?> data = entityNodeSupport.getData(); -// Objects.requireNonNull(data, "L'entité doit être chargée dans le noeud: " + node); -// -// Decorator<?> decorator = getDecoratorService().getReferentialReferenceDecorator(dataType); -// -// String result = decorator.toString(data); -// if (node instanceof ProgramSeineNavigationTreeNode || node instanceof ProgramLonglineNavigationTreeNode) { -// ReferentialReference<ProgramDto> nodeData = (ReferentialReference<ProgramDto>) node.getData(); -// result += " (" + ProgramHelper.getTripCount(nodeData) + ")"; -// } -// return result; -// } -// -// throw new IllegalStateException("Don't know how to render node: " + node); // +// @Override +// public Color getBackgroundNonSelectionColor() { +// // Fixes http://forge.codelutin.com/issues/830 for jdk 7 +// return Color.WHITE; // } - /** - * @param value the value which should be a node - * @return the cast {@link NavigationTreeNodeSupport}, or {@code null} if - * value is null. - */ - public static NavigationTreeNodeSupport getNode(Object value) { - NavigationTreeNodeSupport node = null; - if (value instanceof NavigationTreeNodeSupport) { - node = (NavigationTreeNodeSupport) value; - } - return node; - } - @Override - public Component getTreeCellRendererComponent(JTree tree, - Object value, - boolean sel, - boolean expanded, - boolean leaf, - int row, - boolean hasFocus) { + public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { if (!(tree.getModel() instanceof NavigationTreeModel)) { Component rendererComponent; @@ -167,10 +43,9 @@ public class NavigationTreeCellRenderer extends DefaultTreeCellRenderer { } // get the icon to set for the node - NavigationTreeNodeSupport node = getNode(value); + NavigationTreeNodeSupport node = (NavigationTreeNodeSupport) value; Icon icon = node.getIcon(""); - setDefaultIcons(icon); if (!sel) { @@ -182,27 +57,13 @@ public class NavigationTreeCellRenderer extends DefaultTreeCellRenderer { } String text = node.getText(); - if (log.isTraceEnabled()) { log.trace("===" + text + " for node " + node.getDataType() + " - " + node.getId()); } - Component comp = super.getTreeCellRendererComponent(tree, text, sel, expanded, leaf, row, hasFocus); - ((JComponent) comp).setToolTipText(text); + JLabel comp = (JLabel) super.getTreeCellRendererComponent(tree, text, sel, expanded, leaf, row, hasFocus); + comp.setToolTipText(text); + comp.setIcon(icon); return comp; } - protected void setDefaultIcons(Icon icon) { - if (icon == null) { - // the icon is not customized for this node - setOpenIcon(getDefaultOpenIcon()); - setClosedIcon(getDefaultClosedIcon()); - setLeafIcon(getDefaultLeafIcon()); - } else { - // replace all possible icons for this node - setOpenIcon(icon); - setClosedIcon(icon); - setLeafIcon(icon); - } - } - } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeader.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeader.jaxx new file mode 100644 index 0000000..7bf4717 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeader.jaxx @@ -0,0 +1,45 @@ +<!-- + #%L + ObServe :: Application Swing + %% + Copyright (C) 2008 - 2016 IRD, Code Lutin, 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% + --> +<JPanel layout='{new BorderLayout()}'> + + <JToolBar constraints='BorderLayout.WEST' layout="{new GridLayout(1,3)}"> + <JToggleButton id='showSeine' onActionPerformed="handler.tryToUpdateNavigationTree()"/> + <JToggleButton id='showLongline' onActionPerformed="handler.tryToUpdateNavigationTree()"/> + <JToggleButton id='showReferential' onActionPerformed="handler.tryToUpdateNavigationTree()"/> + </JToolBar> + + <!-- label --> + <String id='labelText' javaBean='null'/> + + <!-- tree --> + <NavigationTree id='tree' javaBean='new NavigationTree()'/> + + + <JLabel id="label" constraints='BorderLayout.CENTER'/> + + <JToolBar id='toolbar' constraints='BorderLayout.EAST'> + + <!-- les boutons pour grouper/déplier tout l'arbre --> + <JButton id='colapseAll' onActionPerformed='handler.collapseAll()'/> + <JButton id='expandAll' onActionPerformed='handler.expandAll()'/> + + </JToolBar> + +</JPanel> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeader.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeader.jcss new file mode 100644 index 0000000..71920e5 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeader.jcss @@ -0,0 +1,53 @@ +/* + * #%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% + */ + +#showSeine { + selected: {tree.getTreeModel().isLoadSeine()}; + text:"observe.enum.fr.ird.observe.services.dto.ObserveModelType.PS"; +} +#showLongline { + selected: {tree.getTreeModel().isLoadLongline()}; + text:"observe.enum.fr.ird.observe.services.dto.ObserveModelType.LL"; +} +#showReferential{ + selected: {tree.getTreeModel().isLoadReferential()}; + text:"observe.enum.fr.ird.observe.services.dto.ObserveModelType.REF"; +} + +#label { + text:{getLabelText()}; +} + +JButton { + focusable:false; + focusPainted:false; +} + +#colapseAll { + actionIcon:collapse; + toolTipText:"observe.tree.action.collapseAll.tip"; +} + +#expandAll { + actionIcon:expand; + toolTipText:"observe.tree.action.expandAll.tip"; +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeaderHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeaderHandler.java new file mode 100644 index 0000000..02c63c2 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeHeaderHandler.java @@ -0,0 +1,106 @@ +package fr.ird.observe.application.swing.ui.tree.navigation; + +/* + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, 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.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; +import jaxx.runtime.spi.UIHandler; + +/** + * @author Samuel Maisonneuve- maisonneuve@codelutin.com + */ +public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHeader> { + + private NavigationTreeHeader ui; + + public NavigationTreeHeader getUi() { + return ui; + } + + private NavigationTree getTree() { + return getUi().getTree(); + } + + @Override + public void beforeInit(NavigationTreeHeader navigationTreeHeader) { + this.ui = navigationTreeHeader; + } + + @Override + public void afterInit(NavigationTreeHeader navigationTreeHeader) { + } + + public void tryToUpdateNavigationTree() { + + boolean canContinue = ObserveSwingApplicationContext.get().getContentUIManager().closeSelectedContentUI(); + + if (!canContinue) { + return; + } + + NavigationTreeNodeSupport<?> selectedNode = getTree().getSelectedNode(); + + boolean showSeine = ui.getShowSeine().isSelected(); + boolean showLongline = ui.getShowLongline().isSelected(); + boolean showReferential = ui.getShowReferential().isSelected(); + + NavigationTreeModel treeModel = getTree().getTreeModel(); + treeModel.setLoadSeine(showSeine); + treeModel.setLoadLongline(showLongline); + treeModel.setLoadReferential(showReferential); + + treeModel.populate(); + + //FIXME repositionner le nœud sélectionné + if (!treeModel.getRoot().isLeaf()) { + getTree().setSelectionRow(0); + } + } + + public void collapseAll() { +// // Let's unselect the nodes before collapsing them +// unselectAll(); + + NavigationTree tree = getTree(); + tree.collapseAll(); + } + + public void expandAll() { + NavigationTree tree = getTree(); + tree.expandAll(); + ; + } + +// public void unselectAll() { +// JTree tree = getTree(); +// TreeSelectionModel selectionModel = tree.getSelectionModel(); +// +// for (int i = 0, l = tree.getRowCount(); i < l; i++) { +// +// TreePath path = tree.getPathForRow(i); +// if (selectionModel.isPathSelected(path)) { +// tree.setSelectionPath(path); +// } +// } +// } +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java index fc81607..c7a76ee 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java @@ -1,9 +1,30 @@ package fr.ird.observe.application.swing.ui.tree.navigation; -import fr.ird.observe.application.swing.ui.tree.navigation.nodes.RootNavigationTreeNode; +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.RootNavigationTreeNode; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.ProgramLonglineNavigationTreeNode; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.referential.ReferentialsNavigationTreeNode; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.ProgramSeineNavigationTreeNode; +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ProgramHelper; +import fr.ird.observe.services.dto.referential.ReferentialHelper; +import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.service.data.NavigationRequest; +import fr.ird.observe.services.service.data.NavigationResult; +import fr.ird.observe.services.service.data.NavigationService; import javax.swing.tree.DefaultTreeModel; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import static org.nuiton.i18n.I18n.n; /** * Created on 14/11/16. @@ -16,12 +37,57 @@ public class NavigationTreeModel extends DefaultTreeModel { private boolean loadSeine = true; private boolean loadLongline = true; private boolean loadReferential = true; - private boolean useSelectionModel; public NavigationTreeModel() { super(new RootNavigationTreeNode()); } + public void populate() { + + NavigationService navigationService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newNavigationService(); + + NavigationRequest navigationRequest = toNavigationRequest(); + NavigationResult navigationResult = navigationService.getNavigation(navigationRequest); + + List<ReferentialReference<ProgramDto>> programs = new ArrayList<>(navigationResult.getPrograms()); + NavigationTree.sortPrograms(programs); + + RootNavigationTreeNode root = new RootNavigationTreeNode(); + + Map<ReferentialReference<ProgramDto>, Collection<DataReference<TripLonglineDto>>> tripsLonglineByProgram = navigationResult.getTripsLonglineByProgram().asMap(); + Map<ReferentialReference<ProgramDto>, Collection<DataReference<TripSeineDto>>> tripsSeineByProgram = navigationResult.getTripsSeineByProgram().asMap(); + for (ReferentialReference<ProgramDto> program : programs) { + + if (ProgramHelper.isProgramLongline(program)) { + + Collection<DataReference<TripLonglineDto>> references = tripsLonglineByProgram.getOrDefault(program, Collections.emptyList()); + ProgramLonglineNavigationTreeNode programNode = new ProgramLonglineNavigationTreeNode(program, references); + root.add(programNode); + } else if (ProgramHelper.isProgramSeine(program)) { + + Collection<DataReference<TripSeineDto>> references = tripsSeineByProgram.getOrDefault(program, Collections.emptyList()); + ProgramSeineNavigationTreeNode programNode = new ProgramSeineNavigationTreeNode(program, references); + root.add(programNode); + } + + } + + if (isLoadReferential()) { + root.add(ReferentialsNavigationTreeNode.of(n("observe.type.reference.common"), ReferentialHelper.REFERENCE_COMMON_DTOS)); + root.add(ReferentialsNavigationTreeNode.of(n("observe.type.reference.longline"), ReferentialHelper.REFERENCE_LONGLINE_DTOS)); + root.add(ReferentialsNavigationTreeNode.of(n("observe.type.reference.seine"), ReferentialHelper.REFERENCE_SEINE_DTOS)); + } + + setRoot(root); + } + + private NavigationRequest toNavigationRequest() { + NavigationRequest navigationRequest = new NavigationRequest(); + navigationRequest.setLoadLongline(isLoadLongline()); + navigationRequest.setLoadSeine(isLoadSeine()); + return navigationRequest; + } + @Override public RootNavigationTreeNode getRoot() { return (RootNavigationTreeNode) super.getRoot(); @@ -29,24 +95,14 @@ public class NavigationTreeModel extends DefaultTreeModel { public void setLoadSeine(boolean loadSeine) { this.loadSeine = loadSeine; - getRoot().populateChilds(this); - nodeStructureChanged(getRoot()); } public void setLoadLongline(boolean loadLongline) { this.loadLongline = loadLongline; - getRoot().populateChilds(this); - nodeStructureChanged(getRoot()); } public void setLoadReferential(boolean loadReferential) { this.loadReferential = loadReferential; - getRoot().populateChilds(this); - nodeStructureChanged(getRoot()); - } - - public void setUseSelectionModel(boolean useSelectionModel) { - this.useSelectionModel = useSelectionModel; } public boolean isLoadSeine() { @@ -61,10 +117,6 @@ public class NavigationTreeModel extends DefaultTreeModel { return loadReferential; } - public boolean isUseSelectionModel() { - return useSelectionModel; - } - public <N extends NavigationTreeNodeSupport> void reload(N node) { node.reload(); super.reload(node); @@ -77,7 +129,4 @@ public class NavigationTreeModel extends DefaultTreeModel { } } - public void openRoot() { - open(getRoot()); - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java index 3bb37c4..16b2761 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java @@ -28,7 +28,7 @@ public abstract class ReferenceNavigationTreeNodeSupport<D extends IdDto, O exte } public boolean isOpen() { - return ObserveSwingApplicationContext.get().getOpenDataManager().isOpen(getId()); + return getId() == null || ObserveSwingApplicationContext.get().getOpenDataManager().isOpen(getId()); } @Override diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/RootNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/RootNavigationTreeNode.java index 09e76b6..523d7e1 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/RootNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/RootNavigationTreeNode.java @@ -1,22 +1,12 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes; -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.content.ContentUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; -import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.ProgramLonglineNavigationTreeNode; -import fr.ird.observe.application.swing.ui.tree.navigation.nodes.referential.ReferentialsNavigationTreeNode; -import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.ProgramSeineNavigationTreeNode; import fr.ird.observe.services.dto.referential.ProgramDto; -import fr.ird.observe.services.dto.referential.ProgramHelper; -import fr.ird.observe.services.dto.referential.ReferentialHelper; import fr.ird.observe.services.dto.referential.ReferentialReference; +import org.apache.commons.collections4.EnumerationUtils; -import java.util.ArrayList; -import java.util.List; - -import static org.nuiton.i18n.I18n.n; +import java.util.Iterator; /** * Created on 14/11/16. @@ -24,10 +14,11 @@ import static org.nuiton.i18n.I18n.n; * @author Tony Chemit - chemit@codelutin.com * @since 5.1 */ -public class RootNavigationTreeNode extends StringNavigationTreeNodeSupport { +public class RootNavigationTreeNode extends StringNavigationTreeNodeSupport implements Iterable<ReferenceNavigationTreeNodeSupport<ProgramDto, ReferentialReference<ProgramDto>>> { public RootNavigationTreeNode() { super("<ROOT>", true); + setLoaded(true); } @Override @@ -42,30 +33,10 @@ public class RootNavigationTreeNode extends StringNavigationTreeNodeSupport { @Override protected void populateChilds0(NavigationTreeModel treeModel) { - - removeAllChildren(); - - ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); - List<ReferentialReference<ProgramDto>> data = new ArrayList<>(source.getReferentialReferences(ProgramDto.class)); - NavigationTree.sortPrograms(data); - - if (treeModel.isLoadLongline()) { - data.stream().filter(ProgramHelper::isProgramLongline).forEach(reference -> { - add(new ProgramLonglineNavigationTreeNode(reference)); - }); - } - if (treeModel.isLoadSeine()) { - data.stream().filter(ProgramHelper::isProgramSeine).forEach(reference -> { - add(new ProgramSeineNavigationTreeNode(reference)); - }); - } - - if (treeModel.isLoadReferential()) { - add(ReferentialsNavigationTreeNode.of(n("observe.type.reference.common"), ReferentialHelper.REFERENCE_COMMON_DTOS)); - add(ReferentialsNavigationTreeNode.of(n("observe.type.reference.longline"), ReferentialHelper.REFERENCE_LONGLINE_DTOS)); - add(ReferentialsNavigationTreeNode.of(n("observe.type.reference.seine"), ReferentialHelper.REFERENCE_SEINE_DTOS)); - } - } + @Override + public Iterator<ReferenceNavigationTreeNodeSupport<ProgramDto, ReferentialReference<ProgramDto>>> iterator() { + return (Iterator) EnumerationUtils.toList(children()).stream().filter(c -> c instanceof ReferenceNavigationTreeNodeSupport).iterator(); + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivitiesLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivitiesLonglineNavigationTreeNode.java index 57f9d6b..b109059 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivitiesLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivitiesLonglineNavigationTreeNode.java @@ -1,5 +1,6 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline; +import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.application.swing.ui.content.list.impl.longline.ActivityLonglinesUI; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ClassNavigationTreeNode; @@ -8,6 +9,8 @@ import fr.ird.observe.services.dto.DataReferenceSet; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.service.data.longline.ActivityLonglineService; +import static org.nuiton.i18n.I18n.t; + /** * Created on 14/11/16. * @@ -26,11 +29,21 @@ public class ActivitiesLonglineNavigationTreeNode extends ClassNavigationTreeNod } @Override + public String getIconPath() { + return "navigation." + getData().getName(); + } + + @Override public Class<ActivityLonglinesUI> getContentClass() { return ActivityLonglinesUI.class; } @Override + public String getText() { + return t(ObserveI18nDecoratorHelper.getTypePluralI18nKey(getData())); + } + + @Override protected void populateChilds0(NavigationTreeModel treeModel) { removeAllChildren(); String id = getId(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivityLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivityLonglineNavigationTreeNode.java index 41e0f61..ab55e27 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivityLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivityLonglineNavigationTreeNode.java @@ -8,6 +8,8 @@ import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.SetLonglineDto; +import static org.nuiton.i18n.I18n.t; + /** * Created on 14/11/16. * @@ -31,6 +33,19 @@ public class ActivityLonglineNavigationTreeNode extends ReferenceNavigationTreeN public ActivityLonglineNavigationTreeNode(DataReference<ActivityLonglineDto> data) { super(data, true); + DataReference<SetLonglineDto> setLonglineRef = (DataReference) data.getPropertyValue(ActivityLonglineDto.PROPERTY_SET_LONGLINE); + if (setLonglineRef != null) { + add(new SetLonglineNavigationTreeNode(setLonglineRef)); + } + + String vesselActivityId = (String) data.getPropertyValue(ActivityLonglineDto.PROPERTY_VESSEL_ACTIVITY_LONGLINE + "Id"); + + if (ENCOUNTERS_ID.contains(vesselActivityId)) { + add(new EncounterLonglineNavigationTreeNode()); + } + if (SENSOR_USED_ID.contains(vesselActivityId)) { + add(new SensorUsedLonglineNavigationTreeNode()); + } } @Override @@ -39,26 +54,16 @@ public class ActivityLonglineNavigationTreeNode extends ReferenceNavigationTreeN } @Override + public String getText() { + return getId() == null ? t("observe.type.activityLongline.unsaved") : super.getText(); + } + + @Override public Class<ActivityLonglineUI> getContentClass() { return ActivityLonglineUI.class; } @Override public void populateChilds0(NavigationTreeModel treeModel) { - removeAllChildren(); - DataReference<ActivityLonglineDto> data = getData(); - DataReference<SetLonglineDto> setLonglineRef = (DataReference) data.getPropertyValue(ActivityLonglineDto.PROPERTY_SET_LONGLINE); - if (setLonglineRef != null) { - add(new SetLonglineNavigationTreeNode(setLonglineRef)); - } - - String vesselActivityId = (String) data.getPropertyValue(ActivityLonglineDto.PROPERTY_VESSEL_ACTIVITY_LONGLINE + "Id"); - - if (ENCOUNTERS_ID.contains(vesselActivityId)) { - add(new EncounterLonglineNavigationTreeNode()); - } - if (SENSOR_USED_ID.contains(vesselActivityId)) { - add(new SensorUsedLonglineNavigationTreeNode()); - } } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/GearUseFeaturesLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/GearUseFeaturesLonglineNavigationTreeNode.java index 34fb1a6..99bdffb 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/GearUseFeaturesLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/GearUseFeaturesLonglineNavigationTreeNode.java @@ -2,6 +2,7 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline; import fr.ird.observe.application.swing.ui.content.table.impl.longline.GearUseFeaturesLonglineUI; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ClassNavigationTreeNode; +import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.GearUseFeaturesLonglineDto; /** @@ -17,6 +18,11 @@ public class GearUseFeaturesLonglineNavigationTreeNode extends ClassNavigationTr } @Override + public String getIconPath() { + return "navigation." + ActivityLonglineDto.class.getName(); + } + + @Override public Class<GearUseFeaturesLonglineUI> getContentClass() { return GearUseFeaturesLonglineUI.class; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java index 1aba427..6402067 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java @@ -1,15 +1,14 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline; -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.content.list.impl.longline.TripLonglinesUI; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; -import fr.ird.observe.services.dto.DataReferenceSet; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; -import fr.ird.observe.services.service.data.longline.TripLonglineService; + +import java.util.Collection; /** * Created on 14/11/16. @@ -19,8 +18,12 @@ import fr.ird.observe.services.service.data.longline.TripLonglineService; */ public class ProgramLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<ProgramDto, ReferentialReference<ProgramDto>> { - public ProgramLonglineNavigationTreeNode(ReferentialReference<ProgramDto> data) { + public ProgramLonglineNavigationTreeNode(ReferentialReference<ProgramDto> data, Collection<DataReference<TripLonglineDto>> trips) { super(data, true); + for (DataReference<TripLonglineDto> trip : trips) { + add(new TripLonglineNavigationTreeNode(trip)); + } + setLoaded(true); } @Override @@ -29,19 +32,17 @@ public class ProgramLonglineNavigationTreeNode extends ReferenceNavigationTreeNo } @Override + public String getText() { + return super.getText() + " (" + getChildCount() + ")"; + } + + @Override public Class<TripLonglinesUI> getContentClass() { return TripLonglinesUI.class; } @Override protected void populateChilds0(NavigationTreeModel treeModel) { - removeAllChildren(); - TripLonglineService tripLonglineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripLonglineService(); - DataReferenceSet<TripLonglineDto> referenceSet = tripLonglineService.getTripLonglineByProgram(getData().getId()); - for (DataReference<TripLonglineDto> reference : referenceSet.getReferences()) { - TripLonglineNavigationTreeNode childNode = new TripLonglineNavigationTreeNode(reference); - add(childNode); - } } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TripLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TripLonglineNavigationTreeNode.java index 1b8e837..6e57774 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TripLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TripLonglineNavigationTreeNode.java @@ -5,6 +5,9 @@ import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.dto.longline.TripLonglineHelper; + +import static org.nuiton.i18n.I18n.t; /** * Created on 14/11/16. @@ -16,6 +19,8 @@ public class TripLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeS public TripLonglineNavigationTreeNode(DataReference<TripLonglineDto> data) { super(data, data.getId() != null); + add(new GearUseFeaturesLonglineNavigationTreeNode()); + add(new ActivitiesLonglineNavigationTreeNode()); } @Override @@ -24,16 +29,17 @@ public class TripLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeS } @Override + public String getText() { + return getId() == null ? t("observe.type.tripLongline.unsaved") : (super.getText() + " (" + TripLonglineHelper.getActivityCount(getData()) + ")"); + } + + @Override public Class<TripLonglineUI> getContentClass() { return TripLonglineUI.class; } @Override public void populateChilds0(NavigationTreeModel treeModel) { - removeAllChildren(); - if (!treeModel.isUseSelectionModel()) { - add(new GearUseFeaturesLonglineNavigationTreeNode()); - add(new ActivitiesLonglineNavigationTreeNode()); - } + // rien à ajouter } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitiesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitiesSeineNavigationTreeNode.java index 1f111bb..a9bf26e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitiesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitiesSeineNavigationTreeNode.java @@ -3,22 +3,31 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.application.swing.ui.content.list.impl.seine.ActivitySeinesUI; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ClassNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.StringNavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.DataReferenceSet; +import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.service.data.seine.ActivitySeineService; +import static org.nuiton.i18n.I18n.t; + /** * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com * @since 5.1 */ -public class ActivitiesSeineNavigationTreeNode extends StringNavigationTreeNodeSupport { +public class ActivitiesSeineNavigationTreeNode extends ClassNavigationTreeNode<ActivitySeineDto> { public ActivitiesSeineNavigationTreeNode() { - super(ObserveI18nDecoratorHelper.getTypePluralI18nKey(ActivitySeineDto.class), true); + super(ActivitySeineDto.class, true); + } + + @Override + public String getIconPath() { + return "navigation." + getData().getName(); } @Override @@ -32,6 +41,11 @@ public class ActivitiesSeineNavigationTreeNode extends StringNavigationTreeNodeS } @Override + public String getText() { + return t(ObserveI18nDecoratorHelper.getTypePluralI18nKey(getData())); + } + + @Override public void reload() { } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitySeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitySeineNavigationTreeNode.java index 7a64926..8be338d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitySeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitySeineNavigationTreeNode.java @@ -10,6 +10,8 @@ import fr.ird.observe.services.dto.seine.FloatingObjectDto; import fr.ird.observe.services.dto.seine.SetSeineDto; import fr.ird.observe.services.service.data.seine.FloatingObjectService; +import static org.nuiton.i18n.I18n.t; + /** * Created on 14/11/16. * @@ -20,6 +22,16 @@ public class ActivitySeineNavigationTreeNode extends ReferenceNavigationTreeNode public ActivitySeineNavigationTreeNode(DataReference<ActivitySeineDto> data) { super(data, true); + DataReference<SetSeineDto> set = (DataReference<SetSeineDto>) data.getPropertyValue(ActivitySeineDto.PROPERTY_SET_SEINE); + if (set != null) { + add(new SetSeineNavigationTreeNode(set)); + } + + FloatingObjectService service = getMainDataSourceServicesProvider().newFloatingObjectService(); + DataReferenceSet<FloatingObjectDto> referenceSet = service.getFloatingObjectByActivitySeine(getId()); + for (DataReference<FloatingObjectDto> reference : referenceSet.getReferences()) { + add(new FloatingObjectSeineNavigationTreeNode(reference)); + } } @Override @@ -27,24 +39,16 @@ public class ActivitySeineNavigationTreeNode extends ReferenceNavigationTreeNode } @Override + public String getText() { + return getId() == null ? t("observe.type.activitySeine.unsaved") : super.getText(); + } + + @Override public Class<ActivitySeineUI> getContentClass() { return ActivitySeineUI.class; } @Override public void populateChilds0(NavigationTreeModel treeModel) { - removeAllChildren(); - - DataReference<SetSeineDto> set = (DataReference<SetSeineDto>) getData().getPropertyValue(ActivitySeineDto.PROPERTY_SET_SEINE); - if (set != null) { - add(new SetSeineNavigationTreeNode(set)); - } - - FloatingObjectService service = getMainDataSourceServicesProvider().newFloatingObjectService(); - DataReferenceSet<FloatingObjectDto> referenceSet = service.getFloatingObjectByActivitySeine(getId()); - for (DataReference<FloatingObjectDto> reference : referenceSet.getReferences()) { - add(new FloatingObjectSeineNavigationTreeNode(reference)); - } - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/GearUseFeaturesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/GearUseFeaturesSeineNavigationTreeNode.java index 55561f6..0384895 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/GearUseFeaturesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/GearUseFeaturesSeineNavigationTreeNode.java @@ -2,6 +2,8 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; import fr.ird.observe.application.swing.ui.content.table.impl.seine.GearUseFeaturesSeineUI; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ClassNavigationTreeNode; +import fr.ird.observe.services.dto.longline.ActivityLonglineDto; +import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.dto.seine.GearUseFeaturesSeineDto; /** @@ -17,6 +19,11 @@ public class GearUseFeaturesSeineNavigationTreeNode extends ClassNavigationTreeN } @Override + public String getIconPath() { + return "navigation." + ActivitySeineDto.class.getName(); + } + + @Override public Class<GearUseFeaturesSeineUI> getContentClass() { return GearUseFeaturesSeineUI.class; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java index 04a90d5..1a68200 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java @@ -1,15 +1,14 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.content.list.impl.seine.TripSeinesUI; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; -import fr.ird.observe.services.dto.DataReferenceSet; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.seine.TripSeineDto; -import fr.ird.observe.services.service.data.seine.TripSeineService; + +import java.util.Collection; /** * Created on 14/11/16. @@ -19,8 +18,12 @@ import fr.ird.observe.services.service.data.seine.TripSeineService; */ public class ProgramSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<ProgramDto, ReferentialReference<ProgramDto>> { - public ProgramSeineNavigationTreeNode(ReferentialReference<ProgramDto> data) { + public ProgramSeineNavigationTreeNode(ReferentialReference<ProgramDto> data, Collection<DataReference<TripSeineDto>> trips) { super(data, true); + for (DataReference<TripSeineDto> trip : trips) { + add(new TripSeineNavigationTreeNode(trip)); + } + setLoaded(true); } @Override @@ -29,20 +32,17 @@ public class ProgramSeineNavigationTreeNode extends ReferenceNavigationTreeNodeS } @Override + public String getText() { + return super.getText() + " (" + getChildCount() + ")"; + } + + @Override public Class<TripSeinesUI> getContentClass() { return TripSeinesUI.class; } @Override protected void populateChilds0(NavigationTreeModel treeModel) { - removeAllChildren(); - TripSeineService tripSeineService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newTripSeineService(); - DataReferenceSet<TripSeineDto> referenceSet = tripSeineService.getTripSeineByProgram(getData().getId()); - for (DataReference<TripSeineDto> reference : referenceSet.getReferences()) { - TripSeineNavigationTreeNode childNode = new TripSeineNavigationTreeNode(reference); - add(childNode); - } - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RouteSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RouteSeineNavigationTreeNode.java index 5345d1d..44a6ec2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RouteSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RouteSeineNavigationTreeNode.java @@ -6,6 +6,8 @@ import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNaviga import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.seine.RouteDto; +import static org.nuiton.i18n.I18n.t; + /** * Created on 14/11/16. * @@ -16,6 +18,7 @@ public class RouteSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSup public RouteSeineNavigationTreeNode(DataReference<RouteDto> data) { super(data, true); + add(new ActivitiesSeineNavigationTreeNode()); } @Override @@ -24,13 +27,16 @@ public class RouteSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSup } @Override + public String getText() { + return getId() == null ? t("observe.type.route.unsaved") : super.getText(); + } + + @Override public Class<RouteUI> getContentClass() { return RouteUI.class; } @Override public void populateChilds0(NavigationTreeModel treeModel) { - removeAllChildren(); - add(new ActivitiesSeineNavigationTreeNode()); } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RoutesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RoutesSeineNavigationTreeNode.java index 8588633..8e06b24 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RoutesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RoutesSeineNavigationTreeNode.java @@ -4,19 +4,25 @@ import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.application.swing.ui.content.list.impl.seine.RoutesUI; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; -import fr.ird.observe.application.swing.ui.tree.navigation.nodes.StringNavigationTreeNodeSupport; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ClassNavigationTreeNode; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.DataReferenceSet; import fr.ird.observe.services.dto.seine.RouteDto; import fr.ird.observe.services.service.data.seine.RouteService; +import static org.nuiton.i18n.I18n.t; + /** * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com * @since 5.1 */ -public class RoutesSeineNavigationTreeNode extends StringNavigationTreeNodeSupport { +public class RoutesSeineNavigationTreeNode extends ClassNavigationTreeNode<RouteDto> { + + public RoutesSeineNavigationTreeNode() { + super(RouteDto.class, true); + } @Override public String getId() { @@ -28,8 +34,14 @@ public class RoutesSeineNavigationTreeNode extends StringNavigationTreeNodeSuppo return RoutesUI.class; } - public RoutesSeineNavigationTreeNode() { - super(ObserveI18nDecoratorHelper.getTypePluralI18nKey(RouteDto.class), true); + @Override + public String getIconPath() { + return "navigation." + getData().getName(); + } + + @Override + public String getText() { + return t(ObserveI18nDecoratorHelper.getTypePluralI18nKey(getData())); } @Override diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/TripSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/TripSeineNavigationTreeNode.java index 5433643..ea0659e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/TripSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/TripSeineNavigationTreeNode.java @@ -5,6 +5,9 @@ import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.dto.seine.TripSeineHelper; + +import static org.nuiton.i18n.I18n.t; /** * Created on 14/11/16. @@ -16,6 +19,8 @@ public class TripSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSupp public TripSeineNavigationTreeNode(DataReference<TripSeineDto> data) { super(data, true); + add(new GearUseFeaturesSeineNavigationTreeNode()); + add(new RoutesSeineNavigationTreeNode()); } @Override @@ -25,16 +30,17 @@ public class TripSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSupp } @Override + public String getText() { + return getId() == null ? t("observe.type.tripSeine.unsaved") : (super.getText() + " (" + TripSeineHelper.getRouteCount(getData()) + ")"); + } + + @Override public Class<TripSeineUI> getContentClass() { return TripSeineUI.class; } @Override public void populateChilds0(NavigationTreeModel treeModel) { - removeAllChildren(); - if (!treeModel.isUseSelectionModel()) { - add(new GearUseFeaturesSeineNavigationTreeNode()); - add(new RoutesSeineNavigationTreeNode()); - } + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java index 19eea6a..bcbbbd3 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java @@ -3,6 +3,7 @@ package fr.ird.observe.application.swing.ui.tree.selection; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.admin.export.TripEntry; import fr.ird.observe.application.swing.ui.tree.selection.nodes.ProgramSelectionTreeNode; @@ -12,21 +13,33 @@ import fr.ird.observe.application.swing.ui.tree.selection.nodes.RootSelectionTre import fr.ird.observe.application.swing.ui.tree.selection.nodes.SelectionTreeNodeSupport; import fr.ird.observe.application.swing.ui.tree.selection.nodes.TripSelectionTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.referential.ProgramHelper; import fr.ird.observe.services.dto.referential.ReferentialDto; +import fr.ird.observe.services.dto.referential.ReferentialHelper; import fr.ird.observe.services.dto.referential.ReferentialReference; +import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.service.data.NavigationRequest; +import fr.ird.observe.services.service.data.NavigationResult; +import fr.ird.observe.services.service.data.NavigationService; import org.jdesktop.swingx.treetable.DefaultTreeTableModel; import org.jdesktop.swingx.treetable.TreeTableNode; import javax.swing.tree.TreePath; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; import java.util.Enumeration; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; +import static org.nuiton.i18n.I18n.n; + /** * Created on 14/11/16. * @@ -188,8 +201,50 @@ public class SelectionTreeModel extends DefaultTreeTableModel { } public void populate(ObserveSwingDataSource dataSource) { - RootSelectionTreeNode rootTreeNode = RootSelectionTreeNode.of(this, dataSource); - setRoot(rootTreeNode); + + NavigationService navigationService = dataSource.newNavigationService(); + + NavigationRequest navigationRequest = toNavigationRequest(); + NavigationResult navigationResult = navigationService.getNavigation(navigationRequest); + + List<ReferentialReference<ProgramDto>> programs = new ArrayList<>(navigationResult.getPrograms()); + + ObserveSwingApplicationContext.get().getDecoratorService().sort(ProgramDto.class, programs); + + boolean showEmptyTrips = isShowEmptyTrips(); + + RootSelectionTreeNode root = new RootSelectionTreeNode(); + + Map<ReferentialReference<ProgramDto>, Collection<DataReference<TripLonglineDto>>> tripsLonglineByProgram = navigationResult.getTripsLonglineByProgram().asMap(); + Map<ReferentialReference<ProgramDto>, Collection<DataReference<TripSeineDto>>> tripsSeineByProgram = navigationResult.getTripsSeineByProgram().asMap(); + for (ReferentialReference<ProgramDto> program : programs) { + + if (ProgramHelper.isProgramLongline(program)) { + + Collection<DataReference<TripLonglineDto>> references = tripsLonglineByProgram.getOrDefault(program, Collections.emptyList()); + if (showEmptyTrips || !references.isEmpty()) { + ProgramSelectionTreeNode programNode = ProgramSelectionTreeNode.ofLongline(program, references); + root.add(programNode); + } + } else if (ProgramHelper.isProgramSeine(program)) { + + Collection<DataReference<TripSeineDto>> references = tripsSeineByProgram.getOrDefault(program, Collections.emptyList()); + if (showEmptyTrips || !references.isEmpty()) { + ProgramSelectionTreeNode programNode = ProgramSelectionTreeNode.ofSeine(program, references); + root.add(programNode); + } + } + + } + + if (isLoadReferential()) { + root.add(ReferentialsSelectionTreeNode.of(n("observe.type.reference.common"), ReferentialHelper.REFERENCE_COMMON_DTOS)); + root.add(ReferentialsSelectionTreeNode.of(n("observe.type.reference.longline"), ReferentialHelper.REFERENCE_LONGLINE_DTOS)); + root.add(ReferentialsSelectionTreeNode.of(n("observe.type.reference.seine"), ReferentialHelper.REFERENCE_SEINE_DTOS)); + } + + setRoot(root); + } public ImmutableSet<Class<? extends ReferentialDto>> getSelectedReferentiel() { @@ -336,4 +391,11 @@ public class SelectionTreeModel extends DefaultTreeTableModel { return programNode.getSelected(); } + private NavigationRequest toNavigationRequest() { + NavigationRequest navigationRequest = new NavigationRequest(); + navigationRequest.setLoadLongline(isLoadLongline()); + navigationRequest.setLoadSeine(isLoadSeine()); + return navigationRequest; + } + } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ProgramSelectionTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ProgramSelectionTreeNode.java index b469017..0e91577 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ProgramSelectionTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ProgramSelectionTreeNode.java @@ -10,6 +10,7 @@ import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.seine.TripSeineDto; import org.apache.commons.collections4.EnumerationUtils; +import java.util.Collection; import java.util.Iterator; /** @@ -20,7 +21,7 @@ import java.util.Iterator; */ public class ProgramSelectionTreeNode extends ReferenceSelectionTreeNodeSupport<ProgramDto, ReferentialReference<ProgramDto>> implements Iterable<TripSelectionTreeNodeSupport<?>> { - public static ProgramSelectionTreeNode ofSeine(ReferentialReference<ProgramDto> data, ImmutableSet<DataReference<TripSeineDto>> tripSeines) { + public static ProgramSelectionTreeNode ofSeine(ReferentialReference<ProgramDto> data, Collection<DataReference<TripSeineDto>> tripSeines) { ProgramSelectionTreeNode result = new ProgramSelectionTreeNode(data); for (DataReference<TripSeineDto> tripSeine : tripSeines) { result.add(new TripSeineSelectionTreeNode(tripSeine)); @@ -28,7 +29,7 @@ public class ProgramSelectionTreeNode extends ReferenceSelectionTreeNodeSupport< return result; } - public static ProgramSelectionTreeNode ofLongline(ReferentialReference<ProgramDto> data, ImmutableSet<DataReference<TripLonglineDto>> tripLonglines) { + public static ProgramSelectionTreeNode ofLongline(ReferentialReference<ProgramDto> data, Collection<DataReference<TripLonglineDto>> tripLonglines) { ProgramSelectionTreeNode result = new ProgramSelectionTreeNode(data); for (DataReference<TripLonglineDto> tripLongline : tripLonglines) { result.add(new TripLonglineSelectionTreeNode(tripLongline)); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/RootSelectionTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/RootSelectionTreeNode.java index 7d5d879..f2f2d0c 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/RootSelectionTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/RootSelectionTreeNode.java @@ -1,24 +1,8 @@ package fr.ird.observe.application.swing.ui.tree.selection.nodes; -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.application.swing.ui.tree.selection.SelectionTreeModel; -import fr.ird.observe.services.dto.DataReferenceSet; -import fr.ird.observe.services.dto.longline.TripLonglineDto; -import fr.ird.observe.services.dto.referential.ProgramDto; -import fr.ird.observe.services.dto.referential.ProgramHelper; -import fr.ird.observe.services.dto.referential.ReferentialHelper; -import fr.ird.observe.services.dto.referential.ReferentialReference; -import fr.ird.observe.services.dto.seine.TripSeineDto; -import fr.ird.observe.services.service.data.longline.TripLonglineService; -import fr.ird.observe.services.service.data.seine.TripSeineService; import org.apache.commons.collections4.EnumerationUtils; -import java.util.ArrayList; import java.util.Iterator; -import java.util.List; - -import static org.nuiton.i18n.I18n.n; /** * Created on 18/11/16. @@ -28,44 +12,6 @@ import static org.nuiton.i18n.I18n.n; */ public class RootSelectionTreeNode extends SelectionTreeNodeSupport<Void> implements Iterable<ProgramSelectionTreeNode> { - public static RootSelectionTreeNode of(SelectionTreeModel treeModel, ObserveSwingDataSource dataSource) { - - RootSelectionTreeNode result = new RootSelectionTreeNode(); - - List<ReferentialReference<ProgramDto>> programs = new ArrayList<>(dataSource.getReferentialReferences(ProgramDto.class)); - ObserveSwingApplicationContext.get().getDecoratorService().sort(ProgramDto.class, programs); - - if (treeModel.isLoadLongline()) { - TripLonglineService tripLonglineService = dataSource.newTripLonglineService(); - programs.stream().filter(ProgramHelper::isProgramLongline).forEach(program -> { - DataReferenceSet<TripLonglineDto> trips = tripLonglineService.getTripLonglineByProgram(program.getId()); - if (treeModel.isShowEmptyTrips() || trips.sizeReference() > 0) { - ProgramSelectionTreeNode programNode = ProgramSelectionTreeNode.ofLongline(program, trips.getReferences()); - result.add(programNode); - } - }); - } - - if (treeModel.isLoadSeine()) { - TripSeineService tripSeineService = dataSource.newTripSeineService(); - programs.stream().filter(ProgramHelper::isProgramSeine).forEach(program -> { - DataReferenceSet<TripSeineDto> trips = tripSeineService.getTripSeineByProgram(program.getId()); - if (treeModel.isShowEmptyTrips() || trips.sizeReference() > 0) { - ProgramSelectionTreeNode programNode = ProgramSelectionTreeNode.ofSeine(program, trips.getReferences()); - result.add(programNode); - } - }); - } - - if (treeModel.isLoadReferential()) { - result.add(ReferentialsSelectionTreeNode.of(n("observe.type.reference.common"), ReferentialHelper.REFERENCE_COMMON_DTOS)); - result.add(ReferentialsSelectionTreeNode.of(n("observe.type.reference.longline"), ReferentialHelper.REFERENCE_LONGLINE_DTOS)); - result.add(ReferentialsSelectionTreeNode.of(n("observe.type.reference.seine"), ReferentialHelper.REFERENCE_SEINE_DTOS)); - } - - return result; - } - public RootSelectionTreeNode() { super(null, true); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.