This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit b9dcf8a06c8c376d19d1533862c126627b65fc03 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 27 11:11:31 2016 +0100 refs #7204 [PS/LL] Ajout d'un bouton pour masquer les programmes sans marée --- .../swing/ui/tree/navigation/NavigationTree.java | 5 ++ .../navigation/NavigationTreeCellRenderer.java | 8 ++- .../ui/tree/navigation/NavigationTreeHeader.jaxx | 11 +++- .../ui/tree/navigation/NavigationTreeHeader.jcss | 10 +++- .../navigation/NavigationTreeHeaderHandler.java | 66 +++++++++++++++------- .../ui/tree/navigation/NavigationTreeModel.java | 10 ++++ .../i18n/application-swing_en_GB.properties | 4 ++ .../i18n/application-swing_es_ES.properties | 4 ++ .../i18n/application-swing_fr_FR.properties | 4 ++ .../topia/service/data/NavigationServiceTopia.java | 33 ++++++++--- .../services/service/data/NavigationRequest.java | 9 +++ 11 files changed, 132 insertions(+), 32 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 832e5ce..e1642d1 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 @@ -139,6 +139,11 @@ public class NavigationTree extends JXTree { } + @Override + public String getStringAt(int row) { + return super.getStringAt(row); + } + public NavigationTreeModel getTreeModel() { return (NavigationTreeModel) getModel(); } 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 783b907..87a9d41 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 @@ -25,6 +25,7 @@ package fr.ird.observe.application.swing.ui.tree.navigation; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.renderer.StringValue; import javax.swing.Icon; import javax.swing.JLabel; @@ -39,7 +40,7 @@ import java.awt.Component; * @author Tony Chemit - chemit@codelutin.com * @since 5.1 */ -public class NavigationTreeCellRenderer extends DefaultTreeCellRenderer { +public class NavigationTreeCellRenderer extends DefaultTreeCellRenderer implements StringValue { /** Logger */ private static final Log log = LogFactory.getLog(NavigationTreeCellRenderer.class); @@ -88,4 +89,9 @@ public class NavigationTreeCellRenderer extends DefaultTreeCellRenderer { return comp; } + @Override + public String getString(Object value) { + NavigationTreeNodeSupport node = (NavigationTreeNodeSupport) value; + return node.getText(); + } } 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 index 7bf4717..9513ac2 100644 --- 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 @@ -19,10 +19,15 @@ --> <JPanel layout='{new BorderLayout()}'> - <JToolBar constraints='BorderLayout.WEST' layout="{new GridLayout(1,3)}"> + <import> + java.awt.FlowLayout + </import> + + <JToolBar constraints='BorderLayout.WEST' layout="{new FlowLayout(FlowLayout.CENTER, 2, 2)}"> <JToggleButton id='showSeine' onActionPerformed="handler.tryToUpdateNavigationTree()"/> <JToggleButton id='showLongline' onActionPerformed="handler.tryToUpdateNavigationTree()"/> <JToggleButton id='showReferential' onActionPerformed="handler.tryToUpdateNavigationTree()"/> + <JToggleButton id='showEmptyProgram' onActionPerformed="handler.tryToUpdateNavigationTree()"/> </JToolBar> <!-- label --> @@ -31,8 +36,10 @@ <!-- tree --> <NavigationTree id='tree' javaBean='new NavigationTree()'/> + <JTextField id="search" visible="false" constraints='BorderLayout.CENTER' + onKeyReleased="handler.search(search.getText())"/> - <JLabel id="label" constraints='BorderLayout.CENTER'/> + <!--<JLabel id="label" constraints='BorderLayout.CENTER'/>--> <JToolBar id='toolbar' constraints='BorderLayout.EAST'> 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 index 71920e5..3527f68 100644 --- 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 @@ -23,14 +23,22 @@ #showSeine { selected: {tree.getTreeModel().isLoadSeine()}; text:"observe.enum.fr.ird.observe.services.dto.ObserveModelType.PS"; + toolTipText:"observe.enum.fr.ird.observe.services.dto.ObserveModelType.PS.tip"; } #showLongline { selected: {tree.getTreeModel().isLoadLongline()}; text:"observe.enum.fr.ird.observe.services.dto.ObserveModelType.LL"; + toolTipText:"observe.enum.fr.ird.observe.services.dto.ObserveModelType.LL.tip"; } -#showReferential{ +#showReferential { selected: {tree.getTreeModel().isLoadReferential()}; text:"observe.enum.fr.ird.observe.services.dto.ObserveModelType.REF"; + toolTipText:"observe.enum.fr.ird.observe.services.dto.ObserveModelType.REF.tip"; +} + +#showEmptyProgram { + selected: {tree.getTreeModel().isLoadEmptyProgram()}; + toolTipText:"observe.enum.fr.ird.observe.services.dto.ObserveModelType.EMPTY.tip"; } #label { 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 index b1e7e9a..c22d252 100644 --- 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 @@ -23,14 +23,28 @@ package fr.ird.observe.application.swing.ui.tree.navigation; */ import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.dto.referential.ProgramDto; +import fr.ird.observe.services.dto.seine.TripSeineDto; import jaxx.runtime.spi.UIHandler; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.decorator.ColorHighlighter; +import org.jdesktop.swingx.search.Searchable; +import org.jdesktop.swingx.search.TreeSearchable; + +import java.awt.Color; /** * @author Samuel Maisonneuve- maisonneuve@codelutin.com */ public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHeader> { + /** Logger */ + private static final Log log = LogFactory.getLog(NavigationTreeHeaderHandler.class); + private NavigationTreeHeader ui; public NavigationTreeHeader getUi() { @@ -48,6 +62,24 @@ public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHead @Override public void afterInit(NavigationTreeHeader navigationTreeHeader) { + + navigationTreeHeader.getShowSeine().setIcon(UIHelper.getUIManagerIcon("navigation." + TripSeineDto.class.getName() + "-16")); + navigationTreeHeader.getShowLongline().setIcon(UIHelper.getUIManagerIcon("navigation." + TripLonglineDto.class.getName() + "-16")); + navigationTreeHeader.getShowReferential().setIcon(UIHelper.getUIManagerIcon("navigation.referentiel-16")); + navigationTreeHeader.getShowEmptyProgram().setIcon(UIHelper.getUIManagerIcon("navigation." + ProgramDto.class.getName() + "-16")); + + NavigationTree tree = navigationTreeHeader.getTree(); + TreeSearchable searchable = new TreeSearchable(tree); + tree.setSearchable(searchable); + searchable.setMatchHighlighter(new ColorHighlighter(Color.YELLOW, Color.BLACK)); + + } + + public void search(String term) { + + Searchable searchable = getTree().getSearchable(); + searchable.search(term); + } public void tryToUpdateNavigationTree() { @@ -58,51 +90,47 @@ public class NavigationTreeHeaderHandler implements UIHandler<NavigationTreeHead return; } - NavigationTreeNodeSupport<?> selectedNode = getTree().getSelectedNode(); + NavigationTree tree = getTree(); - getTree().clearSelection(); + NavigationTreeNodeSupport<?> selectedNode = tree.getSelectedNode(); + if (log.isInfoEnabled()) { + log.info("Selected node: "+selectedNode); + } + tree.clearSelection(); boolean showSeine = ui.getShowSeine().isSelected(); boolean showLongline = ui.getShowLongline().isSelected(); boolean showReferential = ui.getShowReferential().isSelected(); + boolean showEmptyProgram = ui.getShowEmptyProgram().isSelected(); - NavigationTreeModel treeModel = getTree().getTreeModel(); + NavigationTreeModel treeModel = tree.getTreeModel(); treeModel.setLoadSeine(showSeine); treeModel.setLoadLongline(showLongline); treeModel.setLoadReferential(showReferential); + treeModel.setLoadEmptyProgram(showEmptyProgram); treeModel.populate(); //FIXME repositionner le nœud sélectionné if (!treeModel.getRoot().isLeaf()) { - getTree().setSelectionRow(0); + tree.setSelectionRow(0); } } public void collapseAll() { -// // Let's unselect the nodes before collapsing them -// unselectAll(); NavigationTree tree = getTree(); + tree.clearSelection(); tree.collapseAll(); + tree.setSelectionRow(0); + } 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 29253a2..a0b510d 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 @@ -61,6 +61,7 @@ public class NavigationTreeModel extends DefaultTreeModel { private boolean loadSeine = true; private boolean loadLongline = true; private boolean loadReferential = true; + private boolean loadEmptyProgram = true; public NavigationTreeModel() { super(new RootNavigationTreeNode()); @@ -129,6 +130,7 @@ public class NavigationTreeModel extends DefaultTreeModel { NavigationRequest navigationRequest = new NavigationRequest(); navigationRequest.setLoadLongline(isLoadLongline()); navigationRequest.setLoadSeine(isLoadSeine()); + navigationRequest.setLoadEmptyProgram(isLoadEmptyProgram()); return navigationRequest; } @@ -161,6 +163,14 @@ public class NavigationTreeModel extends DefaultTreeModel { this.loadReferential = loadReferential; } + public boolean isLoadEmptyProgram() { + return loadEmptyProgram; + } + + public void setLoadEmptyProgram(boolean loadEmptyProgram) { + this.loadEmptyProgram = loadEmptyProgram; + } + public <N extends NavigationTreeNodeSupport> void reload(N node) { node.reload(); super.reload(node); diff --git a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties index 8021417..e7cf855 100644 --- a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties +++ b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties @@ -1418,9 +1418,13 @@ observe.enum.fr.ird.observe.application.swing.validation.ValidationModelMode.DAT observe.enum.fr.ird.observe.application.swing.validation.ValidationModelMode.DATA.description=Only data observe.enum.fr.ird.observe.application.swing.validation.ValidationModelMode.REFERENTIEL=Only referentials observe.enum.fr.ird.observe.application.swing.validation.ValidationModelMode.REFERENTIEL.description=Only referentials +observe.enum.fr.ird.observe.services.dto.ObserveModelType.EMPTY.tip=Display programs with no trip observe.enum.fr.ird.observe.services.dto.ObserveModelType.LL=Longline +observe.enum.fr.ird.observe.services.dto.ObserveModelType.LL.tip=Display Palangre's programs observe.enum.fr.ird.observe.services.dto.ObserveModelType.PS=Seine +observe.enum.fr.ird.observe.services.dto.ObserveModelType.PS.tip=Display Seine's programs observe.enum.fr.ird.observe.services.dto.ObserveModelType.REF=Referential +observe.enum.fr.ird.observe.services.dto.ObserveModelType.REF.tip=Display referential observe.enum.fr.ird.observe.services.dto.constants.GearType.longline=Longline gear type observe.enum.fr.ird.observe.services.dto.constants.GearType.seine=Senne gear type observe.enum.fr.ird.observe.services.dto.constants.ReferenceStatus.disabled=Disabled diff --git a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties index 37676e1..9ab8c56 100644 --- a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties +++ b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties @@ -1418,9 +1418,13 @@ observe.enum.fr.ird.observe.application.swing.validation.ValidationModelMode.DAT observe.enum.fr.ird.observe.application.swing.validation.ValidationModelMode.DATA.description=Datos del observador observe.enum.fr.ird.observe.application.swing.validation.ValidationModelMode.REFERENTIEL=Referencial observe.enum.fr.ird.observe.application.swing.validation.ValidationModelMode.REFERENTIEL.description=Todos los referenciales +observe.enum.fr.ird.observe.services.dto.ObserveModelType.EMPTY.tip=Voir les programmes sans marée \#TODO observe.enum.fr.ird.observe.services.dto.ObserveModelType.LL=Palangre +observe.enum.fr.ird.observe.services.dto.ObserveModelType.LL.tip=Voir les programmes Palangre \#TODO observe.enum.fr.ird.observe.services.dto.ObserveModelType.PS=Senne +observe.enum.fr.ird.observe.services.dto.ObserveModelType.PS.tip=Voir les programmes Senne \#TODO observe.enum.fr.ird.observe.services.dto.ObserveModelType.REF=Referencial +observe.enum.fr.ird.observe.services.dto.ObserveModelType.REF.tip=Voir le référentiel \#TODO observe.enum.fr.ird.observe.services.dto.constants.GearType.longline=Palangre observe.enum.fr.ird.observe.services.dto.constants.GearType.seine=Senne observe.enum.fr.ird.observe.services.dto.constants.ReferenceStatus.disabled=Desactivado diff --git a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties index 0569c2b..517ecb4 100644 --- a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties +++ b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties @@ -1418,9 +1418,13 @@ observe.enum.fr.ird.observe.application.swing.validation.ValidationModelMode.DAT observe.enum.fr.ird.observe.application.swing.validation.ValidationModelMode.DATA.description=Données observées observe.enum.fr.ird.observe.application.swing.validation.ValidationModelMode.REFERENTIEL=Référentiel observe.enum.fr.ird.observe.application.swing.validation.ValidationModelMode.REFERENTIEL.description=Tous les référentiels +observe.enum.fr.ird.observe.services.dto.ObserveModelType.EMPTY.tip=Voir les programmes sans marée observe.enum.fr.ird.observe.services.dto.ObserveModelType.LL=Palangre +observe.enum.fr.ird.observe.services.dto.ObserveModelType.LL.tip=Voir les programmes Palangre observe.enum.fr.ird.observe.services.dto.ObserveModelType.PS=Senne +observe.enum.fr.ird.observe.services.dto.ObserveModelType.PS.tip=Voir les programmes Seine observe.enum.fr.ird.observe.services.dto.ObserveModelType.REF=Référentiel +observe.enum.fr.ird.observe.services.dto.ObserveModelType.REF.tip=Voir le référentiel observe.enum.fr.ird.observe.services.dto.constants.GearType.longline=Longline observe.enum.fr.ird.observe.services.dto.constants.GearType.seine=Senne observe.enum.fr.ird.observe.services.dto.constants.ReferenceStatus.disabled=Désactivé diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/NavigationServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/NavigationServiceTopia.java index 4acc746..1d5ca60 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/NavigationServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/NavigationServiceTopia.java @@ -58,18 +58,10 @@ public class NavigationServiceTopia extends ObserveServiceTopia implements Navig ImmutableSet<ReferentialReference<ProgramDto>> allPrograms = serviceContext.newService(ReferentialService.class).getReferenceSet(ProgramDto.class, null).getReferences(); ImmutableMap<String, ReferentialReference<ProgramDto>> programsById = Maps.uniqueIndex(allPrograms, ReferentialReference::getId); - ImmutableSet.Builder<ReferentialReference<ProgramDto>> programsBuilder = ImmutableSet.builder(); boolean loadLongline = request.isLoadLongline(); boolean loadSeine = request.isLoadSeine(); - - for (ReferentialReference<ProgramDto> program : allPrograms) { - if (loadLongline && ProgramHelper.isProgramLongline(program)) { - programsBuilder.add(program); - } else if (loadSeine && ProgramHelper.isProgramSeine(program)) { - programsBuilder.add(program); - } - } + boolean loadEmptyProgram = request.isLoadEmptyProgram(); Multimap<ReferentialReference<ProgramDto>, DataReference<TripSeineDto>> tripsSeineByProgram = HashMultimap.create(); Multimap<ReferentialReference<ProgramDto>, DataReference<TripLonglineDto>> tripsLonglineByProgram = HashMultimap.create(); @@ -96,6 +88,29 @@ public class NavigationServiceTopia extends ObserveServiceTopia implements Navig } + ImmutableSet.Builder<ReferentialReference<ProgramDto>> programsBuilder = ImmutableSet.builder(); + if (loadEmptyProgram) { + + // on renvoie tous les programmes + for (ReferentialReference<ProgramDto> program : allPrograms) { + if (loadLongline && ProgramHelper.isProgramLongline(program)) { + programsBuilder.add(program); + } else if (loadSeine && ProgramHelper.isProgramSeine(program)) { + programsBuilder.add(program); + } + } + + } else { + + // on renvoie uniquement les programmes utilisés + if (loadLongline) { + programsBuilder.addAll(tripsLonglineByProgram.keySet()); + } + if (loadSeine) { + programsBuilder.addAll(tripsSeineByProgram.keySet()); + } + } + return new NavigationResult(programsBuilder.build(), tripsSeineByProgram, tripsLonglineByProgram); } } diff --git a/services/src/main/java/fr/ird/observe/services/service/data/NavigationRequest.java b/services/src/main/java/fr/ird/observe/services/service/data/NavigationRequest.java index 45f625d..a4a2640 100644 --- a/services/src/main/java/fr/ird/observe/services/service/data/NavigationRequest.java +++ b/services/src/main/java/fr/ird/observe/services/service/data/NavigationRequest.java @@ -33,6 +33,7 @@ public class NavigationRequest { private boolean loadSeine; private boolean loadLongline; + private boolean loadEmptyProgram; public boolean isLoadSeine() { return loadSeine; @@ -49,4 +50,12 @@ public class NavigationRequest { public void setLoadLongline(boolean loadLongline) { this.loadLongline = loadLongline; } + + public void setLoadEmptyProgram(boolean loadEmptyProgram) { + this.loadEmptyProgram = loadEmptyProgram; + } + + public boolean isLoadEmptyProgram() { + return loadEmptyProgram; + } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.