Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: eab2fdac by Tony Chemit at 2024-09-05T12:48:01+02:00 Remove ObserveSwingSession (use directly SwingSession) - - - - - efb846a1 by Tony Chemit at 2024-09-05T12:48:28+02:00 Remove ObServeSwingSessionConfig - - - - - 0c970bb0 by Tony Chemit at 2024-09-05T12:48:59+02:00 do not use any longer ObserveSwingSessionHelper in ContentUIInitializer (everything is managed now by SwingSession) - - - - - c9a055b7 by Tony Chemit at 2024-09-05T12:49:04+02:00 Merge branch 'feature/issue-2834' into develop Suppression du système de préférences d'ui codé en dure - Closes #2834 - - - - - 15 changed files: - client/configuration/src/main/config/Client.ini - client/configuration/src/main/i18n/getters/config.getter - client/configuration/src/main/i18n/getters/java.getter - − client/configuration/src/main/java/fr/ird/observe/client/ObServeSwingSessionConfig.java - − client/configuration/src/main/java/fr/ird/observe/client/ObserveSwingSession.java - client/configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java - client/configuration/src/main/java/fr/ird/observe/client/configuration/ClientResources.java - client/core/src/main/java/fr/ird/observe/client/ClientUIContext.java - client/core/src/main/java/fr/ird/observe/client/main/body/ClientConfigUI.java - client/core/src/main/java/fr/ird/observe/client/util/session/ObserveSwingSessionHelper.java - − client/core/src/main/resources/observe-swing-preferences.properties - client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIInitializer.java - 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 Changes: ===================================== client/configuration/src/main/config/Client.ini ===================================== @@ -395,14 +395,6 @@ defaultValue = ${instance.resources.directory}/config/ObserveSwingSession.ui.xml final = true transient = true -[option swingPreferencesFile] -description = observe.config.swingPreferencesFile.description -key = instance.swingPreferencesFile -type = file -defaultValue = ${instance.resources.directory}/config/observe-swing-preferences.properties -final = true -transient = true - [option temporaryDirectory] description = observe.config.temporaryDirectory.description key = instance.temporary.directory ===================================== client/configuration/src/main/i18n/getters/config.getter ===================================== @@ -118,7 +118,6 @@ observe.config.speciesList.seine.observation.objectObservedSpecies observe.config.speciesList.seine.observation.objectSchoolEstimate observe.config.speciesList.seine.observation.schoolEstimate observe.config.speciesList.seine.sample -observe.config.swingPreferencesFile.description observe.config.swingSessionFile.description observe.config.temperature.format observe.config.temporaryDirectory.description ===================================== client/configuration/src/main/i18n/getters/java.getter ===================================== @@ -3,7 +3,6 @@ observe.init.no.local.db.detected observe.runner.copy.default.dcp.file observe.runner.copy.default.map.file observe.runner.copy.default.report.file -observe.runner.copy.default.swing.preferences.file observe.runner.copy.default.ui.file observe.runner.copy.embedded.keystore.file observe.runner.loading.ui.configuration ===================================== client/configuration/src/main/java/fr/ird/observe/client/ObServeSwingSessionConfig.java deleted ===================================== @@ -1,31 +0,0 @@ -package fr.ird.observe.client; - -/*- - * #%L - * ObServe Client :: Configuration - * %% - * 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 java.io.File; - -public interface ObServeSwingSessionConfig { - - File getSwingSessionFile(); - File getSwingPreferencesFile(); -} ===================================== client/configuration/src/main/java/fr/ird/observe/client/ObserveSwingSession.java deleted ===================================== @@ -1,100 +0,0 @@ -package fr.ird.observe.client; - -/*- - * #%L - * ObServe Client :: Configuration - * %% - * 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 io.ultreia.java4all.jaxx.widgets.combobox.FilterableComboBox; -import io.ultreia.java4all.jaxx.widgets.combobox.session.FilterableComboBoxState; -import io.ultreia.java4all.jaxx.widgets.length.nautical.NauticalLengthEditor; -import io.ultreia.java4all.jaxx.widgets.length.nautical.session.NauticalLengthEditorState; -import io.ultreia.java4all.jaxx.widgets.list.DoubleList; -import io.ultreia.java4all.jaxx.widgets.list.ListHeader; -import io.ultreia.java4all.jaxx.widgets.list.session.DoubleListState; -import io.ultreia.java4all.jaxx.widgets.list.session.ListHeaderState; -import io.ultreia.java4all.util.SortedProperties; -import org.nuiton.jaxx.runtime.swing.session.State; -import org.nuiton.jaxx.runtime.swing.session.SwingSession; -import org.nuiton.jaxx.widgets.gis.absolute.CoordinatesEditor; -import org.nuiton.jaxx.widgets.gis.absolute.session.CoordinatesEditorState; -import org.nuiton.jaxx.widgets.temperature.TemperatureEditor; -import org.nuiton.jaxx.widgets.temperature.session.TemperatureEditorState; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.Map; -import java.util.Properties; - -/** - * Extends SwingSession with - * Created on 07/07/2022. - * - * @author Tony Chemit - dev@tchemit.fr - * @since 9.0.7 - */ -public class ObserveSwingSession extends SwingSession { - - private final File preferencesFile; - - private final Properties preferences; - - public ObserveSwingSession(File file, boolean autoSave, File preferencesFile) { - super(file, autoSave, Map.of(FilterableComboBox.class, new FilterableComboBoxState(), - DoubleList.class, new DoubleListState(), - ListHeader.class, new ListHeaderState(), - TemperatureEditor.class, new TemperatureEditorState(), - NauticalLengthEditor.class, new NauticalLengthEditorState(), - CoordinatesEditor.class, new CoordinatesEditorState() - )); - this.preferencesFile = preferencesFile; - this.preferences = new SortedProperties(); - loadPreferences(preferencesFile); - } - - public ObserveSwingSession(File file, boolean autoSave, Map<Class, State> additionalStates, File preferencesFile) { - super(file, autoSave, additionalStates); - this.preferencesFile = preferencesFile; - this.preferences = new SortedProperties(); - loadPreferences(preferencesFile); - } - - public File getPreferencesFile() { - return preferencesFile; - } - - public Properties getPreferences() { - return preferences; - } - - private void loadPreferences(File preferencesFile) { - if (preferencesFile.exists()) { - try (BufferedReader reader = Files.newBufferedReader(preferencesFile.toPath(), StandardCharsets.UTF_8)) { - preferences.load(reader); - } catch (IOException e) { - throw new RuntimeException(String.format("Could not load preferences file at %s", preferencesFile), e); - } - } - } - -} ===================================== client/configuration/src/main/java/fr/ird/observe/client/configuration/ClientConfig.java ===================================== @@ -24,7 +24,6 @@ package fr.ird.observe.client.configuration; import com.google.common.io.MoreFiles; import com.google.common.io.RecursiveDeleteOption; import com.google.gson.Gson; -import fr.ird.observe.client.ObServeSwingSessionConfig; import fr.ird.observe.consolidation.data.ps.dcp.SimplifiedObjectTypeSpecializedRules; import fr.ird.observe.datasource.configuration.DataSourceConnectMode; import fr.ird.observe.datasource.configuration.DataSourceCreateMode; @@ -121,10 +120,10 @@ import static org.nuiton.jaxx.runtime.swing.SwingUtil.ICON_PREFIX; * @author Tony Chemit - dev@tchemit.fr * @since 1.0 */ -@GenerateApplicationComponent(name = "ObServe client config", hints = {TripMapConfig.class, TemplateGeneratorConfig.class, ObServeSwingSessionConfig.class, CleanTemporaryFilesTaskConfiguration.class}, instantiateStrategy = ApplicationComponentInstantiateStrategy.SUPPLIER, instantiateSupplier = ClientConfigFinder.class) +@GenerateApplicationComponent(name = "ObServe client config", hints = {TripMapConfig.class, TemplateGeneratorConfig.class, CleanTemporaryFilesTaskConfiguration.class}, instantiateStrategy = ApplicationComponentInstantiateStrategy.SUPPLIER, instantiateSupplier = ClientConfigFinder.class) @GenerateTemplate(template = "about.ftl") @GenerateJavaBeanDefinition -public class ClientConfig extends GeneratedClientConfig implements TripMapConfig, TemplateGeneratorConfig, JavaBean, ObServeSwingSessionConfig, CleanTemporaryFilesTaskConfiguration { +public class ClientConfig extends GeneratedClientConfig implements TripMapConfig, TemplateGeneratorConfig, JavaBean, CleanTemporaryFilesTaskConfiguration { public static final String DB_NAME = "obstuna"; public static final List<ClientConfigOption> MAP_LAYERS = List.of(ClientConfigOption.MAP_LAYER1, ClientConfigOption.MAP_LAYER2, ClientConfigOption.MAP_LAYER3, ClientConfigOption.MAP_LAYER4, ClientConfigOption.MAP_LAYER5, ClientConfigOption.MAP_LAYER6, ClientConfigOption.MAP_LAYER7, ClientConfigOption.MAP_LAYER8, ClientConfigOption.MAP_LAYER9, ClientConfigOption.MAP_LAYER10); @@ -392,7 +391,6 @@ public class ClientConfig extends GeneratedClientConfig implements TripMapConfig File resourcesDirectory = createDirectory(ClientConfigOption.RESOURCES_DIRECTORY); log.debug("user resource data directory : {}", resourcesDirectory); - createParentDirectory(ClientConfigOption.SWING_PREFERENCES_FILE); // 5 - resources report @@ -452,18 +450,10 @@ public class ClientConfig extends GeneratedClientConfig implements TripMapConfig ClientResources.dcp.copyResource(dcpFile); } - // 10 - swing preferences - File preferencesFile = getSwingPreferencesFile(); - if (versionSnapshot || !preferencesFile.exists()) { - String message = t("observe.runner.copy.default.swing.preferences.file", preferencesFile); - log.info(message); - ClientResources.ObserveSwingPreferences.copyResource(preferencesFile); - } - - // 11 - export directory + // 10 - export directory createDirectory(ClientConfigOption.EXPORT_DIRECTORY); - // 12 - Add custom keystore (See https://gitlab.com/ultreiaio/ird-observe/-/issues/2791) + // 11 - Add custom keystore (See https://gitlab.com/ultreiaio/ird-observe/-/issues/2791) Path keystore = resourcesDirectory.toPath().resolve("observe.jks"); if (Files.notExists(keystore)) { ===================================== client/configuration/src/main/java/fr/ird/observe/client/configuration/ClientResources.java ===================================== @@ -33,7 +33,6 @@ import io.ultreia.java4all.config.ConfigResource; */ public final class ClientResources { public static final ConfigResource CONFIG = new ConfigResource("/META-INF/configuration/observe-client.conf"); - public static final ConfigResource ObserveSwingPreferences = new ConfigResource("/observe-swing-preferences.properties"); public static final ConfigResource ui = new ConfigResource("/observe-ui.properties"); public static final ConfigResource ui_navigation_common = new ConfigResource("/observe-ui-navigation-common.properties"); public static final ConfigResource ui_navigation_ps = new ConfigResource("/observe-ui-navigation-ps.properties"); ===================================== client/core/src/main/java/fr/ird/observe/client/ClientUIContext.java ===================================== @@ -85,7 +85,7 @@ public class ClientUIContext implements Closeable, ClientUIContextApi { public ClientUIContext(ClientConfig clientConfig) { ClientConfig.initDecoratorService(clientConfig.getReferentialLocale()); this.clientConfig = clientConfig; - this.observeSwingSessionHelper = new ObserveSwingSessionHelper(clientConfig); + this.observeSwingSessionHelper = new ObserveSwingSessionHelper(clientConfig.getSwingSessionFile()); this.floatingObjectPresetsManager = clientConfig.newFloatingObjectPresetsManager(); this.serviceFactory = new ObserveServiceMainFactory(); this.editModel = new Project(); ===================================== client/core/src/main/java/fr/ird/observe/client/main/body/ClientConfigUI.java ===================================== @@ -431,7 +431,6 @@ public class ClientConfigUI extends JXTitledPanel implements WithClientUIContext helper.addOption(ClientConfigOption.RESOURCES_DIRECTORY); helper.addOption(ClientConfigOption.AVDTH_DIRECTORY); helper.addOption(ClientConfigOption.SWING_SESSION_FILE); - helper.addOption(ClientConfigOption.SWING_PREFERENCES_FILE); helper.addOption(ClientConfigOption.SIMPLIFIED_OBJECT_TYPE_SPECIALIZED_RULES_FILE); helper.addOption(ClientConfigOption.H2_LOGIN); ===================================== client/core/src/main/java/fr/ird/observe/client/util/session/ObserveSwingSessionHelper.java ===================================== @@ -22,21 +22,28 @@ package fr.ird.observe.client.util.session; * #L% */ -import fr.ird.observe.client.ObServeSwingSessionConfig; -import fr.ird.observe.client.ObserveSwingSession; import io.ultreia.java4all.jaxx.widgets.combobox.FilterableComboBox; +import io.ultreia.java4all.jaxx.widgets.combobox.session.FilterableComboBoxState; +import io.ultreia.java4all.jaxx.widgets.length.nautical.NauticalLengthEditor; +import io.ultreia.java4all.jaxx.widgets.length.nautical.session.NauticalLengthEditorState; import io.ultreia.java4all.jaxx.widgets.list.DoubleList; import io.ultreia.java4all.jaxx.widgets.list.ListHeader; +import io.ultreia.java4all.jaxx.widgets.list.session.DoubleListState; +import io.ultreia.java4all.jaxx.widgets.list.session.ListHeaderState; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.nuiton.jaxx.runtime.JAXXObject; +import org.nuiton.jaxx.runtime.swing.session.SwingSession; +import org.nuiton.jaxx.widgets.gis.absolute.CoordinatesEditor; +import org.nuiton.jaxx.widgets.gis.absolute.session.CoordinatesEditorState; +import org.nuiton.jaxx.widgets.temperature.TemperatureEditor; +import org.nuiton.jaxx.widgets.temperature.session.TemperatureEditorState; -import javax.swing.JComponent; import java.awt.Component; import java.io.Closeable; +import java.io.File; import java.io.IOException; import java.nio.file.Files; -import java.util.function.Consumer; +import java.util.Map; /** * Created on 07/11/16. @@ -48,16 +55,21 @@ public class ObserveSwingSessionHelper implements Closeable { private static final Logger log = LogManager.getLogger(ObserveSwingSessionHelper.class); - private final ObserveSwingSession session; + private final SwingSession session; - public ObserveSwingSessionHelper(ObServeSwingSessionConfig file) { + public ObserveSwingSessionHelper(File file) { //FIXME Add additional states (auto detect from JaxxUIResourcesProvider ?) - session = new ObserveSwingSession(file.getSwingSessionFile(), false, file.getSwingPreferencesFile());/*, Map.of( - FilterableComboBox.class, new FilterableComboBoxState() - ));*/ + session = new SwingSession(file, + false, + Map.of(FilterableComboBox.class, new FilterableComboBoxState(), + DoubleList.class, new DoubleListState(), + ListHeader.class, new ListHeaderState(), + TemperatureEditor.class, new TemperatureEditorState(), + NauticalLengthEditor.class, new NauticalLengthEditorState(), + CoordinatesEditor.class, new CoordinatesEditorState())); } - public ObserveSwingSession getSession() { + public SwingSession getSession() { return session; } @@ -65,10 +77,6 @@ public class ObserveSwingSessionHelper implements Closeable { session.add(c, replace); } - public void removeComponent(Component c) { - session.remove(c); - } - public void save() { try { if (Files.notExists(session.getFile().toPath())) { @@ -80,33 +88,8 @@ public class ObserveSwingSessionHelper implements Closeable { } } - public void initComboBox(JAXXObject ui, FilterableComboBox<?> editor) { - initDecorator(ui, editor, editor::setIndex, editor.getModel()::setReverseSort); - } - - public void initListHeader(JAXXObject ui, ListHeader<?> editor) { - initDecorator(ui, editor, editor::setIndex, editor::setReverseSort); - } - - public void initDoubleList(JAXXObject ui, DoubleList<?> editor) { - initDecorator(ui, editor, editor::setIndex, editor::setReverseSort); - } - @Override public void close() { save(); } - - - private void initDecorator(JAXXObject ui, JComponent editor, Consumer<Integer> indexSetter, Consumer<Boolean> orderSetter) { - String key = ui.getClass().getName() + "." + editor.getName() + ".sort."; - int index = Integer.parseInt(session.getPreferences().getProperty(key + "index", "0")); - boolean reverseOrder = Boolean.parseBoolean(session.getPreferences().getProperty(key + "order", "false")); - if (index != 0) { - indexSetter.accept(index); - } - if (reverseOrder) { - orderSetter.accept(true); - } - } } ===================================== client/core/src/main/resources/observe-swing-preferences.properties deleted ===================================== @@ -1,33 +0,0 @@ -### -# #%L -# ObServe Client :: Core -# %% -# 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% -### -fr.ird.observe.client.datasource.editor.ll.data.observation.SetCatchUI.section.sort.index=1 -fr.ird.observe.client.datasource.editor.ll.data.observation.SetCatchUI.basket.sort.index=1 -fr.ird.observe.client.datasource.editor.ll.data.observation.SetCatchUI.branchline.sort.index=1 -fr.ird.observe.client.datasource.editor.ps.data.logbook.FloatingObjectUI.vessel1.sort.index=1 -fr.ird.observe.client.datasource.editor.ps.data.logbook.FloatingObjectUI.vessel2.sort.index=1 -fr.ird.observe.client.datasource.editor.ps.data.logbook.FloatingObjectUI.country1.sort.index=1 -fr.ird.observe.client.datasource.editor.ps.data.logbook.FloatingObjectUI.country2.sort.index=1 -fr.ird.observe.client.datasource.editor.ps.data.observation.FloatingObjectUI.vessel1.sort.index=1 -fr.ird.observe.client.datasource.editor.ps.data.observation.FloatingObjectUI.vessel2.sort.index=1 -fr.ird.observe.client.datasource.editor.ps.data.observation.FloatingObjectUI.country1.sort.index=1 -fr.ird.observe.client.datasource.editor.ps.data.observation.FloatingObjectUI.country2.sort.index=1 - ===================================== client/datasource/editor/api/src/main/java/fr/ird/observe/client/datasource/editor/api/content/ContentUIInitializer.java ===================================== @@ -329,7 +329,6 @@ public class ContentUIInitializer<UI extends ContentUI> extends UIInitializerSup } else { prepareDataFilterableComboBox(referenceType, editor); } - getObserveSwingSessionHelper().initComboBox(ui, editor); } @SuppressWarnings({"unchecked", "rawtypes"}) @@ -343,7 +342,6 @@ public class ContentUIInitializer<UI extends ContentUI> extends UIInitializerSup } else { prepareDataEntityList(referenceType, (ListHeader) editor); } - getObserveSwingSessionHelper().initListHeader(ui, editor); } public void addDecoratorClassifier(ListHeader<?> editor) { @@ -363,7 +361,6 @@ public class ContentUIInitializer<UI extends ContentUI> extends UIInitializerSup } else { prepareDataDoubleList(referenceType, editor); } - getObserveSwingSessionHelper().initDoubleList(ui, editor); } protected void init(TimeEditor editor) { ===================================== client/runner/src/main/i18n/translations/client-runner_en_GB.properties ===================================== @@ -135,7 +135,6 @@ observe.config.speciesList.seine.observation.objectObservedSpecies=Species for o observe.config.speciesList.seine.observation.objectSchoolEstimate=Species for object school estimates observe.config.speciesList.seine.observation.schoolEstimate=Species for school estimates observe.config.speciesList.seine.sample=Species for sample -observe.config.swingPreferencesFile.description=Swing preferences file. observe.config.swingSessionFile.description=Swing session file. observe.config.temperature.format=Default temperature unit observe.config.temporaryDirectory.description=Default temporary directory used by application and clean at each launch. ===================================== client/runner/src/main/i18n/translations/client-runner_es_ES.properties ===================================== @@ -135,7 +135,6 @@ observe.config.speciesList.seine.observation.objectObservedSpecies=Especies que observe.config.speciesList.seine.observation.objectSchoolEstimate=Especies para las estimaciones de banco objeto observe.config.speciesList.seine.observation.schoolEstimate=Especies para las estimaciones observe.config.speciesList.seine.sample=Species for sample \#TODO -observe.config.swingPreferencesFile.description=Swing preferences file. observe.config.swingSessionFile.description=Copia de seguridad del estado del UI. observe.config.temperature.format=Unidad de temperatura observe.config.temporaryDirectory.description=Directorio temporal por defecto ===================================== client/runner/src/main/i18n/translations/client-runner_fr_FR.properties ===================================== @@ -135,7 +135,6 @@ observe.config.speciesList.seine.observation.objectObservedSpecies=Espèces pour observe.config.speciesList.seine.observation.objectSchoolEstimate=Espèces pour les estimations banc objet observe.config.speciesList.seine.observation.schoolEstimate=Espèces pour les estimations observe.config.speciesList.seine.sample=Espèces pour l'échantillonnage au port -observe.config.swingPreferencesFile.description=Fichier de sauvegarde des préférences des UI. observe.config.swingSessionFile.description=Fichier de sauvegarde des états des UI. observe.config.temperature.format=Unité de température observe.config.temporaryDirectory.description=Le répertoire temporaire par défaut View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/1995338fe84cd9ca0ee12fdcf... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/compare/1995338fe84cd9ca0ee12fdcf... You're receiving this email because of your account on gitlab.com.