Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 5139d387 by Tony Chemit at 2020-06-24T18:12:45+02:00 FOB enregistré non disponible immédiatement dans la popup de sélection d'objet prédéfini - Closes #1504 - - - - - 5 changed files: - client-configuration/src/main/java/fr/ird/observe/client/datasource/dcp/FloatingObjectPresetsManager.java - client-core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java - client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/FloatingObjectUIHandler.java - client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/actions/ActivityUIAddFloatingObject.java - client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/actions/FloatingObjectUIAddFloatingObjectPreset.java Changes: ===================================== client-configuration/src/main/java/fr/ird/observe/client/datasource/dcp/FloatingObjectPresetsManager.java ===================================== @@ -84,11 +84,11 @@ public class FloatingObjectPresetsManager { switch (model) { case ps_observation: directory = config.getDcpPsObservationPresetsDirectory().toPath(); - map = this.psObservation; + map = getPsObservationPresets(); break; case ps_logbook: directory = config.getDcpPsLogbookPresetsDirectory().toPath(); - map = this.psLogbook; + map = getPsLogbookPresets(); break; default: throw new IllegalStateException("Can't deal with model: " + model); @@ -119,6 +119,14 @@ public class FloatingObjectPresetsManager { } public Set<FloatingObjectPreset> getPsObservation() { + return ImmutableSet.copyOf(getPsObservationPresets().values()); + } + + public Set<FloatingObjectPreset> getPsLogbook() { + return ImmutableSet.copyOf(getPsLogbookPresets().values()); + } + + public Map<Path, FloatingObjectPreset> getPsObservationPresets() { if (psObservation == null) { log.info("Loading ps observation dcp presets..."); try { @@ -129,10 +137,10 @@ public class FloatingObjectPresetsManager { psObservation = new TreeMap<>(); } } - return ImmutableSet.copyOf(psObservation.values()); + return psObservation; } - public Set<FloatingObjectPreset> getPsLogbook() { + public Map<Path, FloatingObjectPreset> getPsLogbookPresets() { if (psLogbook == null) { log.info("Loading ps logbook dcp presets..."); try { @@ -143,22 +151,16 @@ public class FloatingObjectPresetsManager { psLogbook = new TreeMap<>(); } } - return ImmutableSet.copyOf(psLogbook.values()); - } - - public Map<Path, FloatingObjectPreset> getPsObservationL() { - return psObservation; - } - - public Map<Path, FloatingObjectPreset> getPsLogbookL() { return psLogbook; } - public void setPsObservation(Map<Path, FloatingObjectPreset> psObservation) { - this.psObservation = psObservation; + public void setPsObservationPresets(Map<Path, FloatingObjectPreset> psObservationPresets) { + this.psObservation = psObservationPresets; + log.info(String.format("Set %d ps observation dcp presets.", psObservationPresets.size())); } - public void setPsLogbook(Map<Path, FloatingObjectPreset> psLogbook) { - this.psLogbook = psLogbook; + public void setPsLogbookPresets(Map<Path, FloatingObjectPreset> psLogbookPresets) { + this.psLogbook = psLogbookPresets; + log.info(String.format("Set %d ps logbook dcp presets.", psLogbookPresets.size())); } } ===================================== client-core/src/main/java/fr/ird/observe/client/datasource/api/ObserveSwingDataSource.java ===================================== @@ -643,8 +643,14 @@ public class ObserveSwingDataSource extends ObserveServicesProviderSupport imple public void sanitize(BoundedRangeModel progressModel, FloatingObjectPresetsManager dataSource) { int size = dataSource.size(); log.info(String.format("Will sanitize %d preset(s).", size)); - sanitize(dataSource.getPsObservationL(), progressModel); - sanitize(dataSource.getPsLogbookL(), progressModel); + { + Map<Path, FloatingObjectPreset> sanitize = sanitize(dataSource.getPsObservationPresets(), progressModel); + dataSource.setPsObservationPresets(sanitize); + } + { + Map<Path, FloatingObjectPreset> sanitize = sanitize(dataSource.getPsLogbookPresets(), progressModel); + dataSource.setPsLogbookPresets(sanitize); + } log.info(String.format("Found %d safe preset(s).", dataSource.size())); } ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/FloatingObjectUIHandler.java ===================================== @@ -21,7 +21,7 @@ */ package fr.ird.observe.client.datasource.editor.content.data.ps.observation; -import fr.ird.observe.client.datasource.dcp.FloatingObjectPresetsManagerApplicationComponent; +import fr.ird.observe.client.datasource.dcp.WithFloatingObjectPresetsManager; import fr.ird.observe.client.datasource.editor.content.data.edit.ContentEditUIHandler; import fr.ird.observe.client.datasource.editor.content.data.edit.ContentEditUILayoutFocusTraversalPolicy; import fr.ird.observe.client.datasource.editor.content.data.ps.observation.dcp.FloatingObjectPartsTreeTableModel; @@ -65,7 +65,7 @@ import static io.ultreia.java4all.i18n.I18n.t; * @author Tony Chemit - dev@tchemit.fr * @since 1.0 */ -public class FloatingObjectUIHandler extends ContentEditUIHandler<FloatingObjectDto, FloatingObjectReference, FloatingObjectUI> implements UIHandler<FloatingObjectUI> { +public class FloatingObjectUIHandler extends ContentEditUIHandler<FloatingObjectDto, FloatingObjectReference, FloatingObjectUI> implements UIHandler<FloatingObjectUI>, WithFloatingObjectPresetsManager { private static final Logger log = LogManager.getLogger(FloatingObjectUIHandler.class); private static final Icon ICON_NOT_A_REFERENCE = SwingUtil.createImageIcon("star-empty.png"); @@ -97,18 +97,13 @@ public class FloatingObjectUIHandler extends ContentEditUIHandler<FloatingObject FloatingObjectPreset newValue = (FloatingObjectPreset) e.getNewValue(); ui.getFloatingObjectReferenceActions().removeAll(); ui.getAddFloatingObjectPreset().setEnabled(newValue == null); -// ui.getEditFloatingObjectReference().setEnabled(newValue != null); -// ui.getRemoveFloatingObjectReference().setEnabled(newValue != null); if (newValue == null) { ui.getFloatingObjectReferenceLabel().setIcon(ICON_NOT_A_REFERENCE); ui.getFloatingObjectReferenceLabel().setText(t("observe.data.ps.observation.FloatingObject.not.a.reference")); ui.getFloatingObjectReferenceActions().add(ui.getAddFloatingObjectPreset()); -// ui.getEditFloatingObjectReference().setEnabled(false); } else { ui.getFloatingObjectReferenceLabel().setIcon(ICON_IS_A_REFERENCE); ui.getFloatingObjectReferenceLabel().setText(t("observe.data.ps.observation.FloatingObject.is.a.reference", newValue.getLabel(getDecoratorService().getReferentialLocale()))); -// ui.getFloatingObjectReferenceActions().add(ui.getEditFloatingObjectReference()); -// ui.getFloatingObjectReferenceActions().add(ui.getRemoveFloatingObjectReference()); } }); @@ -161,7 +156,7 @@ public class FloatingObjectUIHandler extends ContentEditUIHandler<FloatingObject Optional<FloatingObjectPreset> floatingObjectReference; if (dcpId == null) { - floatingObjectReference = Optional.ofNullable(FloatingObjectPresetsManagerApplicationComponent.value().getReferenceToUse()); + floatingObjectReference = Optional.ofNullable(getFloatingObjectPresetsManager().getReferenceToUse()); form = getPsObservationFloatingObjectService().preCreate(activityId, floatingObjectReference.orElse(null)); } else { form = getPsObservationFloatingObjectService().loadForm(dcpId); ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/actions/ActivityUIAddFloatingObject.java ===================================== @@ -24,14 +24,15 @@ package fr.ird.observe.client.datasource.editor.content.data.ps.observation.acti import fr.ird.observe.client.ClientUIContext; import fr.ird.observe.client.datasource.dcp.FloatingObjectPresetsManager; -import fr.ird.observe.client.datasource.dcp.FloatingObjectPresetsManagerApplicationComponent; +import fr.ird.observe.client.datasource.dcp.WithFloatingObjectPresetsManager; import fr.ird.observe.client.datasource.editor.DataSourceEditor; import fr.ird.observe.client.datasource.editor.content.ObservePsKeyStrokes; import fr.ird.observe.client.datasource.editor.content.actions.ContentUIActionSupport; import fr.ird.observe.client.datasource.editor.content.data.ps.observation.ActivityUI; import fr.ird.observe.client.datasource.editor.tree.navigation.NavigationTree; import fr.ird.observe.dto.data.ps.dcp.FloatingObjectPreset; -import fr.ird.observe.dto.decoration.DecoratorServiceApplicationComponent; +import fr.ird.observe.dto.data.ps.dcp.FloatingObjectPresetModel; +import fr.ird.observe.dto.decoration.WithDecoratorService; import fr.ird.observe.navigation.tree.MultipleReferenceContainerNode; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -57,7 +58,7 @@ import static io.ultreia.java4all.i18n.I18n.t; * @author Tony Chemit - dev@tchemit.fr * @since 6.0 */ -public class ActivityUIAddFloatingObject extends ContentUIActionSupport<ActivityUI> { +public class ActivityUIAddFloatingObject extends ContentUIActionSupport<ActivityUI> implements WithFloatingObjectPresetsManager { private static final Logger log = LogManager.getLogger(ActivityUIAddFloatingObject.class); @@ -65,9 +66,22 @@ public class ActivityUIAddFloatingObject extends ContentUIActionSupport<Activity super(t("observe.data.ps.observation.Activity.action.addFloatingObject"), t("observe.data.ps.observation.Activity.action.addFloatingObject.tip"), "add", ObservePsKeyStrokes.KEY_STROKE_ADD_DCP); } - public static boolean choosePreset() { - FloatingObjectPresetsManager floatingObjectPresetsManager = FloatingObjectPresetsManagerApplicationComponent.value(); - Set<FloatingObjectPreset> psObservation = floatingObjectPresetsManager.getPsObservation(); + @Override + protected void doActionPerformed(ActionEvent e, ActivityUI ui) { + + boolean doContinue = choosePreset(); + if (!doContinue) { + return; + } + + NavigationTree tree = getDataSourceEditor().getNavigationUI().getTree(); + MultipleReferenceContainerNode<?, ?> parentNode = (MultipleReferenceContainerNode<?, ?>) tree.getSelectedNode(); + doCreate(getDataSourceEditor(), parentNode); + } + + boolean choosePreset() { + FloatingObjectPresetsManager floatingObjectPresetsManager = getFloatingObjectPresetsManager(); + Set<FloatingObjectPreset> psObservation = floatingObjectPresetsManager.getPresets(FloatingObjectPresetModel.ps_observation); if (!psObservation.isEmpty()) { JPanel userConfigs = new JPanel(new GridLayout(0, 2)); @@ -97,29 +111,16 @@ public class ActivityUIAddFloatingObject extends ContentUIActionSupport<Activity return true; } - @Override - protected void doActionPerformed(ActionEvent e, ActivityUI ui) { - - boolean doContinue = choosePreset(); - if (!doContinue) { - return; - } - - NavigationTree tree = getDataSourceEditor().getNavigationUI().getTree(); - MultipleReferenceContainerNode<?, ?> parentNode = (MultipleReferenceContainerNode<?, ?>) tree.getSelectedNode(); - doCreate(getDataSourceEditor(), parentNode); - } - - public static void doCreate(DataSourceEditor editor, MultipleReferenceContainerNode<?, ?> parentNode) { + void doCreate(DataSourceEditor editor, MultipleReferenceContainerNode<?, ?> parentNode) { try { NavigationTree tree = editor.getNavigationUI().getTree(); tree.addUnsavedNode(parentNode); } finally { - FloatingObjectPresetsManagerApplicationComponent.value().setReferenceToUse(null); + getFloatingObjectPresetsManager().setReferenceToUse(null); } } - private static class UsePresetAction extends AbstractAction { + private static class UsePresetAction extends AbstractAction implements WithDecoratorService { private final FloatingObjectPreset preset; private final KeyStroke keyStroke; @@ -129,7 +130,7 @@ public class ActivityUIAddFloatingObject extends ContentUIActionSupport<Activity this.preset = Objects.requireNonNull(preset); this.keyStroke = Objects.requireNonNull(KeyStroke.getKeyStroke("F" + index)); putValue(ActivityUIAddFloatingObject.class.getName(), getClass().getName() + "_" + index); - putValue(NAME, DecoratorServiceApplicationComponent.value().getDecoratorByType(preset.getClass()).toString(preset)); + putValue(NAME, getDecoratorService().getDecoratorByType(preset.getClass()).toString(preset)); } public void install(JButton parent, JOptionPane pane) { @@ -144,7 +145,6 @@ public class ActivityUIAddFloatingObject extends ContentUIActionSupport<Activity public void actionPerformed(ActionEvent e) { log.info(String.format("Choose dcp preset: %s", preset.getLabel1())); pane.setValue(preset); -// Objects.requireNonNull(SwingUtilities.getAncestorOfClass(Dialog.class, pane)).setVisible(false); } } } ===================================== client-datasource-editor-ps/src/main/java/fr/ird/observe/client/datasource/editor/content/data/ps/observation/actions/FloatingObjectUIAddFloatingObjectPreset.java ===================================== @@ -24,11 +24,11 @@ package fr.ird.observe.client.datasource.editor.content.data.ps.observation.acti import fr.ird.observe.client.ClientUIContext; import fr.ird.observe.client.datasource.dcp.FloatingObjectPresetsManager; -import fr.ird.observe.client.datasource.dcp.FloatingObjectPresetsManagerApplicationComponent; +import fr.ird.observe.client.datasource.dcp.WithFloatingObjectPresetsManager; import fr.ird.observe.client.datasource.dcp.presets.observation.FloatingObjectPresetUI; import fr.ird.observe.client.datasource.dcp.presets.observation.FloatingObjectPresetUIModel; -import fr.ird.observe.client.datasource.editor.content.actions.ContentUIActionSupport; import fr.ird.observe.client.datasource.editor.content.ObservePsKeyStrokes; +import fr.ird.observe.client.datasource.editor.content.actions.ContentUIActionSupport; import fr.ird.observe.client.datasource.editor.content.data.ps.observation.FloatingObjectUI; import fr.ird.observe.dto.data.ps.dcp.FloatingObjectPreset; import io.ultreia.java4all.application.context.ApplicationContext; @@ -52,7 +52,7 @@ import static io.ultreia.java4all.i18n.I18n.t; * * @author Tony Chemit - dev@tchemit.fr */ -public class FloatingObjectUIAddFloatingObjectPreset extends ContentUIActionSupport<FloatingObjectUI> { +public class FloatingObjectUIAddFloatingObjectPreset extends ContentUIActionSupport<FloatingObjectUI> implements WithFloatingObjectPresetsManager { private static final Logger log = LogManager.getLogger(FloatingObjectUIAddFloatingObjectPreset.class); @@ -101,7 +101,7 @@ public class FloatingObjectUIAddFloatingObjectPreset extends ContentUIActionSupp if (model.getBuoy2() != null) { model.setBuoy2(configPanel.getBuoy2().getModel().toBean()); } - FloatingObjectPresetsManager floatingObjectPresetsManager = FloatingObjectPresetsManagerApplicationComponent.value(); + FloatingObjectPresetsManager floatingObjectPresetsManager = getFloatingObjectPresetsManager(); floatingObjectPresetsManager.add(model); ui.getModel().setReference(model); } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/5139d387cad1a0510c6cd947af... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/5139d387cad1a0510c6cd947af... You're receiving this email because of your account on gitlab.com.