Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 3e2f7791 by Tony Chemit at 2023-11-21T16:13:01+01:00 use plain line style - See #2756 - - - - - 284c10f6 by Tony Chemit at 2023-11-21T16:14:51+01:00 add new options in TripMapConfigDto (only used by TripMapContentBuilder) - - - - - 1c2772ec by Tony Chemit at 2023-11-21T16:16:00+01:00 add new options in TripMapUI and use them to update add new options in TripMapConfigDto and rebuild map model - - - - - 580b9080 by Tony Chemit at 2023-11-21T16:17:38+01:00 Merge branch 'feature/issue-2363' into develop Ajouter une option pour afficher/masquer la trace entre les activités de la carte - See #2363 - - - - - 15 changed files: - client/datasource/editor/api/src/main/i18n/getters/java.getter - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/ObserveKeyStrokesEditorApi.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/TripUIHelper.java - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/TripMapUI.jaxx - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/TripMapUI.jcss - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/TripMapUIHandler.java - + client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/actions/AddLogbookTripSegment.java - + client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/actions/AddObservationsTripSegment.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/common/TripMapContentBuilder.java - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/common/TripMapContentBuilder.java - client/datasource/editor/ps/src/main/resources/map/ps-style.xml - client/runner/src/main/i18n/translations/client-runner_en_GB.properties - client/runner/src/main/i18n/translations/client-runner_es_ES.properties - client/runner/src/main/i18n/translations/client-runner_fr_FR.properties - core/api/dto/src/main/java/fr/ird/observe/dto/data/TripMapConfigDto.java Changes: ===================================== client/datasource/editor/api/src/main/i18n/getters/java.getter ===================================== @@ -229,7 +229,9 @@ observe.ui.datasource.editor.content.map.legendTop.tip observe.ui.datasource.editor.content.map.miles observe.ui.datasource.editor.content.map.north observe.ui.datasource.editor.content.map.showLogbook +observe.ui.datasource.editor.content.map.showLogbookTripSegment observe.ui.datasource.editor.content.map.showObservation +observe.ui.datasource.editor.content.map.showObservationsTripSegment observe.ui.datasource.editor.content.map.south observe.ui.datasource.editor.content.map.west observe.ui.datasource.search.add.criteria.tip ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/ObserveKeyStrokesEditorApi.java ===================================== @@ -50,7 +50,9 @@ public class ObserveKeyStrokesEditorApi extends ObserveKeyStrokesSupport { public static final KeyStroke KEY_STROKE_DATA_SYNCHRO_INFO_RIGHT = KeyStroke.getKeyStroke("pressed F8"); public static final KeyStroke KEY_STROKE_SHOW_OBS = KeyStroke.getKeyStroke("ctrl pressed O"); + public static final KeyStroke KEY_STROKE_SHOW_OBSERVATIONS_TRIP_SEGMENT = KeyStroke.getKeyStroke("shift ctrl pressed O"); public static final KeyStroke KEY_STROKE_SHOW_LOGBOOK = KeyStroke.getKeyStroke("ctrl pressed L"); + public static final KeyStroke KEY_STROKE_SHOW_LOGBOOK_TRIP_SEGMENT = KeyStroke.getKeyStroke("shift ctrl pressed L"); public static final KeyStroke KEY_STROKE_LEGEND_TOGGLE = KeyStroke.getKeyStroke("pressed F11"); public static final KeyStroke KEY_STROKE_LEGEND_TOP = KeyStroke.getKeyStroke("ctrl pressed T"); public static final KeyStroke KEY_STROKE_LEGEND_BOTTOM = KeyStroke.getKeyStroke("ctrl pressed B"); ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/TripUIHelper.java ===================================== @@ -39,6 +39,7 @@ import org.apache.logging.log4j.Logger; import javax.swing.JTabbedPane; import javax.swing.SwingUtilities; import javax.swing.event.ChangeEvent; +import java.util.Set; public abstract class TripUIHelper<D extends RootOpenableDto, U extends ContentRootOpenableUI<D, U> & TripUI<D>> implements WithClientUIContextApi { @@ -59,13 +60,22 @@ public abstract class TripUIHelper<D extends RootOpenableDto, U extends ContentR return getService(ui.getHandler()).getTripMap(tripMapConfig); } + private static final Set<String> UPDATE_MAP_MODEL_PROPERTIES = Set.of( + TripMapConfigDto.PROPERTY_ADD_OBSERVATIONS, + TripMapConfigDto.PROPERTY_ADD_OBSERVATIONS_TRIP_SEGMENT, + TripMapConfigDto.PROPERTY_ADD_LOGBOOK, + TripMapConfigDto.PROPERTY_ADD_LOGBOOK_TRIP_SEGMENT + ); + public void installMap(TripAware trip) { TripMapUI tripMap = ui.getTripMap(); TripMapConfigDto tripMapConfig = tripMap.getTripMapConfig(); tripMapConfig.setAddObservations(true); + tripMapConfig.setAddObservationsTripSegment(true); tripMapConfig.setAddLogbook(true); + tripMapConfig.setAddLogbookTripSegment(true); SwingUtilities.invokeLater(tripMap::validate); ClientConfig config = getClientConfig(); @@ -73,8 +83,11 @@ public abstract class TripUIHelper<D extends RootOpenableDto, U extends ContentR trip.addPropertyChangeListener(TripAware.PROPERTY_LOGBOOK_AVAILABILITY, evt -> onLogbookAvailabilityChanged((Boolean) evt.getNewValue())); tripMap.getHandler().setConfig(config); - tripMapConfig.addPropertyChangeListener(TripMapConfigDto.PROPERTY_ADD_OBSERVATIONS, e -> updateMapModel()); - tripMapConfig.addPropertyChangeListener(TripMapConfigDto.PROPERTY_ADD_LOGBOOK, e -> updateMapModel()); + tripMapConfig.addPropertyChangeListener(e -> { + if (UPDATE_MAP_MODEL_PROPERTIES.contains(e.getPropertyName())) { + updateMapModel(); + } + }); ui.getMainTabbedPane().addChangeListener(this::onTabChanged); // Disable map tab because can't manage it :( ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/TripMapUI.jaxx ===================================== @@ -38,7 +38,9 @@ <JToolBar id='configToolBar' constraints="BorderLayout.EAST"> <JToggleButton id='toggleConfigure'/> <JCheckBoxMenuItem id='addObservations'/> + <JCheckBoxMenuItem id='addObservationsTripSegment'/> <JCheckBoxMenuItem id='addLogbook'/> + <JCheckBoxMenuItem id='addLogbookTripSegment'/> <JCheckBoxMenuItem id='toggleLegend'/> <JRadioButtonMenuItem id='legendPositionTop' styleClass='legendPosition'/> <JRadioButtonMenuItem id='legendPositionBottom' styleClass='legendPosition'/> ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/TripMapUI.jcss ===================================== @@ -39,6 +39,16 @@ selected:{tripMapConfig.isAddLogbook()}; } +#addObservationsTripSegment { + enabled:{tripMapConfig.isAddObservations()}; + selected:{tripMapConfig.isAddObservationsTripSegment()}; +} + +#addLogbookTripSegment { + enabled:{tripMapConfig.isAddLogbook()}; + selected:{tripMapConfig.isAddLogbookTripSegment()}; +} + .legendPosition { buttonGroup:"legendPosition"; enabled:{toggleLegend.isSelected()}; ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/TripMapUIHandler.java ===================================== @@ -36,7 +36,6 @@ import org.geotools.swing.event.MapPaneListener; import org.nuiton.jaxx.runtime.spi.UIHandler; import javax.swing.JSeparator; -import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import java.awt.Point; import java.awt.event.MouseEvent; @@ -183,7 +182,8 @@ public class TripMapUIHandler implements UIHandler<TripMapUI> { mapPane.addMouseMotionListener(mouseMapListener); mapPane.addMouseListener(mouseMapListener); mapPane.addMapPaneListener(new TripMapListener()); - ui.getConfigurePopup().add(new JSeparator(SwingConstants.HORIZONTAL), 2); + ui.getConfigurePopup().add(new JSeparator(JSeparator.HORIZONTAL), 4); + ui.getConfigurePopup().add(new JSeparator(JSeparator.HORIZONTAL), 2); rendererRunning = false; } ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/actions/AddLogbookTripSegment.java ===================================== @@ -0,0 +1,56 @@ +package fr.ird.observe.client.datasource.editor.api.content.data.map.actions; + +/*- + * #%L + * ObServe Client :: DataSource :: Editor :: API + * %% + * Copyright (C) 2008 - 2023 IRD, Ultreia.io + * %% + * 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.client.datasource.editor.api.ObserveKeyStrokesEditorApi; +import fr.ird.observe.client.datasource.editor.api.content.data.map.ObserveMapPane; +import fr.ird.observe.client.datasource.editor.api.content.data.map.TripMapUI; +import fr.ird.observe.dto.data.TripMapConfigDto; + +import java.awt.event.ActionEvent; + +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * Created at 21/11/2023. + * + * @author Tony Chemit - dev@tchemit.fr + * @since 9.3.0 + */ +public class AddLogbookTripSegment extends TripMapUIActionSupport implements ConfigureMapAction { + + public AddLogbookTripSegment() { + super(t("observe.ui.datasource.editor.content.map.showLogbookTripSegment"), + t("observe.ui.datasource.editor.content.map.showLogbookTripSegment"), + null, ObserveKeyStrokesEditorApi.KEY_STROKE_SHOW_LOGBOOK_TRIP_SEGMENT); + } + + @Override + protected void doActionPerformed(ActionEvent e, TripMapUI ui) { + ObserveMapPane observeMapPane = ui.getObserveMapPane(); + TripMapConfigDto mapConfig = ui.getTripMapConfig(); + boolean newValue = !mapConfig.isAddLogbookTripSegment(); + mapConfig.setAddLogbookTripSegment(newValue); + ui.getHandler().updateMap(observeMapPane.isShowLegend()); + } +} ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/data/map/actions/AddObservationsTripSegment.java ===================================== @@ -0,0 +1,56 @@ +package fr.ird.observe.client.datasource.editor.api.content.data.map.actions; + +/*- + * #%L + * ObServe Client :: DataSource :: Editor :: API + * %% + * Copyright (C) 2008 - 2023 IRD, Ultreia.io + * %% + * 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.client.datasource.editor.api.ObserveKeyStrokesEditorApi; +import fr.ird.observe.client.datasource.editor.api.content.data.map.ObserveMapPane; +import fr.ird.observe.client.datasource.editor.api.content.data.map.TripMapUI; +import fr.ird.observe.dto.data.TripMapConfigDto; + +import java.awt.event.ActionEvent; + +import static io.ultreia.java4all.i18n.I18n.t; + +/** + * Created at 21/11/2023. + * + * @author Tony Chemit - dev@tchemit.fr + * @since 9.3.0 + */ +public class AddObservationsTripSegment extends TripMapUIActionSupport implements ConfigureMapAction { + + public AddObservationsTripSegment() { + super(t("observe.ui.datasource.editor.content.map.showObservationsTripSegment"), + t("observe.ui.datasource.editor.content.map.showObservationsTripSegment"), + null, ObserveKeyStrokesEditorApi.KEY_STROKE_SHOW_OBSERVATIONS_TRIP_SEGMENT); + } + + @Override + protected void doActionPerformed(ActionEvent e, TripMapUI ui) { + ObserveMapPane observeMapPane = ui.getObserveMapPane(); + TripMapConfigDto mapConfig = ui.getTripMapConfig(); + boolean newValue = !mapConfig.isAddObservationsTripSegment(); + mapConfig.setAddObservationsTripSegment(newValue); + ui.getHandler().updateMap(observeMapPane.isShowLegend()); + } +} ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/common/TripMapContentBuilder.java ===================================== @@ -99,12 +99,12 @@ public class TripMapContentBuilder extends TripMapContentBuilderSupport { if (tripMapConfig.isAddObservations()) { List<TripMapPoint> obsPoints = getObsPoints(tripMapPoints); addFishingZone(OBSERVATIONS_ZONES_BUILDER, obsPoints); - addLines(OBSERVATIONS_LINES_BUILDER, obsPoints); + addLines(OBSERVATIONS_LINES_BUILDER, obsPoints, tripMapConfig.isAddObservationsTripSegment()); } if (tripMapConfig.isAddLogbook()) { List<TripMapPoint> logbookPoints = getLogbookPoints(tripMapPoints); addFishingZone(LOGBOOK_ZONES_BUILDER, logbookPoints); - addLines(LOGBOOK_LINES_BUILDER, logbookPoints); + addLines(LOGBOOK_LINES_BUILDER, logbookPoints, tripMapConfig.isAddLogbookTripSegment()); } } @@ -132,11 +132,13 @@ public class TripMapContentBuilder extends TripMapContentBuilderSupport { } } - private void addLines(LinesBuilder builder, List<TripMapPoint> tripMapPoints) { + private void addLines(LinesBuilder builder, List<TripMapPoint> tripMapPoints, boolean addTripSegment) { DefaultFeatureCollection linesFeatures = new DefaultFeatureCollection(); Set<String> lineTypes = new TreeSet<>(); builder.build(tripMapPoints); - addLines(TRIP_LINE_TYPE, linesFeatures, lineTypes, builder.getTripLines()); + if (addTripSegment) { + addLines(TRIP_LINE_TYPE, linesFeatures, lineTypes, builder.getTripLines()); + } addLines(SETTING_LINE_TYPE, linesFeatures, lineTypes, builder.getSettingLines()); addLines(HAULING_LINE_TYPE, linesFeatures, lineTypes, builder.getHaulingLines()); if (!linesFeatures.isEmpty()) { ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/common/TripMapContentBuilder.java ===================================== @@ -107,7 +107,7 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit @Override public void addLines(TripMapConfigDto tripMapConfig, List<TripMapPoint> tripMapPoints) { - if (tripMapConfig.isAddObservations()) { + if (tripMapConfig.isAddObservations() && tripMapConfig.isAddObservationsTripSegment()) { addLines0(tripMapPoints.stream().filter(f -> f.getType().isTrip() || f.getType().isObs()).collect(Collectors.toList()), "observationDay", "observationNight", @@ -115,7 +115,7 @@ public class TripMapContentBuilder extends fr.ird.observe.client.datasource.edit t("observe.ui.datasource.editor.content.map.legend.obs.tripDay"), t("observe.ui.datasource.editor.content.map.legend.obs.tripBetweenTwoDays")); } - if (tripMapConfig.isAddLogbook()) { + if (tripMapConfig.isAddLogbook() && tripMapConfig.isAddLogbookTripSegment()) { addLines0(tripMapPoints.stream().filter(f -> f.getType().isTrip() || f.getType().isLogbook()).collect(Collectors.toList()), "logbookSegment", "logbookSegment", ===================================== client/datasource/editor/ps/src/main/resources/map/ps-style.xml ===================================== @@ -91,7 +91,7 @@ <Stroke> <CssParameter name="stroke">${mapPsStyleLogbookLineColor}</CssParameter> <CssParameter name="stroke-width">2</CssParameter> - <CssParameter name="stroke-dasharray">6 4</CssParameter> +<!-- <CssParameter name="stroke-dasharray">6 4</CssParameter>--> </Stroke> </LineSymbolizer> <TextSymbolizer> ===================================== client/runner/src/main/i18n/translations/client-runner_en_GB.properties ===================================== @@ -729,7 +729,9 @@ observe.ui.datasource.editor.content.map.miles=miles observe.ui.datasource.editor.content.map.north=North observe.ui.datasource.editor.content.map.observation.points.not.valid=Observation - Number of none displayed points\: %d observe.ui.datasource.editor.content.map.showLogbook=Show Logbook data +observe.ui.datasource.editor.content.map.showLogbookTripSegment=Logbook - Show trip segments observe.ui.datasource.editor.content.map.showObservation=Show Observation data +observe.ui.datasource.editor.content.map.showObservationsTripSegment=Observation - Show trip segments observe.ui.datasource.editor.content.map.south=South observe.ui.datasource.editor.content.map.waitLoading=Please wait while loading the map observe.ui.datasource.editor.content.map.west=West ===================================== client/runner/src/main/i18n/translations/client-runner_es_ES.properties ===================================== @@ -729,7 +729,9 @@ observe.ui.datasource.editor.content.map.miles=milles observe.ui.datasource.editor.content.map.north=Norte observe.ui.datasource.editor.content.map.observation.points.not.valid=Observation - Number of none displayed points\: %d \#TODO observe.ui.datasource.editor.content.map.showLogbook=Show Logbook data \#TODO +observe.ui.datasource.editor.content.map.showLogbookTripSegment=Logbook - Show trip segments \#TODO observe.ui.datasource.editor.content.map.showObservation=Show Observation data \#TODO +observe.ui.datasource.editor.content.map.showObservationsTripSegment=Observation - Show trip segments \#TODO observe.ui.datasource.editor.content.map.south=Sur observe.ui.datasource.editor.content.map.waitLoading=Espere mientras que el mapa se está cargando observe.ui.datasource.editor.content.map.west=Oeste ===================================== client/runner/src/main/i18n/translations/client-runner_fr_FR.properties ===================================== @@ -729,7 +729,9 @@ observe.ui.datasource.editor.content.map.miles=milles observe.ui.datasource.editor.content.map.north=Nord observe.ui.datasource.editor.content.map.observation.points.not.valid=Observation - Nombre de points non affichés \: %d observe.ui.datasource.editor.content.map.showLogbook=Voir les données Livre de bord +observe.ui.datasource.editor.content.map.showLogbookTripSegment=Livre de bord - Voir le trajet observe.ui.datasource.editor.content.map.showObservation=Voir les données Observation +observe.ui.datasource.editor.content.map.showObservationsTripSegment=Observation - Voir le trajet observe.ui.datasource.editor.content.map.south=Sud observe.ui.datasource.editor.content.map.waitLoading=Veuillez patienter pendant le chargement de la carte observe.ui.datasource.editor.content.map.west=Ouest ===================================== core/api/dto/src/main/java/fr/ird/observe/dto/data/TripMapConfigDto.java ===================================== @@ -39,10 +39,14 @@ public class TripMapConfigDto extends AbstractJavaBean implements JsonAware { public static final String PROPERTY_TRIP_ID = "tripId"; public static final String PROPERTY_ADD_OBSERVATIONS = "addObservations"; + public static final String PROPERTY_ADD_OBSERVATIONS_TRIP_SEGMENT = "addObservationsTripSegment"; public static final String PROPERTY_ADD_LOGBOOK = "addLogbook"; + public static final String PROPERTY_ADD_LOGBOOK_TRIP_SEGMENT = "addLogbookTripSegment"; private String tripId; private boolean addObservations; private boolean addLogbook; + private boolean addLogbookTripSegment; + private boolean addObservationsTripSegment; public String getTripId() { return tripId; @@ -74,6 +78,26 @@ public class TripMapConfigDto extends AbstractJavaBean implements JsonAware { firePropertyChange(PROPERTY_ADD_LOGBOOK, oldValue, addLogbook); } + public boolean isAddLogbookTripSegment() { + return addLogbookTripSegment; + } + + public void setAddLogbookTripSegment(boolean addLogbookTripSegment) { + boolean oldValue = isAddLogbookTripSegment(); + this.addLogbookTripSegment = addLogbookTripSegment; + firePropertyChange(PROPERTY_ADD_LOGBOOK_TRIP_SEGMENT, oldValue, addLogbookTripSegment); + } + + public boolean isAddObservationsTripSegment() { + return addObservationsTripSegment; + } + + public void setAddObservationsTripSegment(boolean addObservationsTripSegment) { + boolean oldValue = isAddObservationsTripSegment(); + this.addObservationsTripSegment = addObservationsTripSegment; + firePropertyChange(PROPERTY_ADD_OBSERVATIONS_TRIP_SEGMENT, oldValue, addObservationsTripSegment); + } + @Override public String toString() { return new StringJoiner(", ", TripMapConfigDto.class.getSimpleName() + "[", "]") View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/f5d247789bfb78dda53318a5b... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/f5d247789bfb78dda53318a5b... You're receiving this email because of your account on gitlab.com.