Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 01f6ceba by Tony Chemit at 2020-12-17T18:19:56+01:00 Let's generate add edit node :) for special case FOB now we are doing the preset selection in his form and stop pushing in some dark contexts some reference grab later by another handler) : do all the stuff at the right place, and then remove dark references :) - - - - - 13 changed files: - client/configuration/src/main/java/fr/ird/observe/client/datasource/dcp/FloatingObjectPresetsManager.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivityUI.jaxx - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivityUIHandler.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivityUIModel.java - client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/ActivityUIHandler.java - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/ActivityUIHandler.java - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/ActivityUIModel.java - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/FloatingObjectUI.jcss - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/FloatingObjectUIHandler.java - client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/FloatingObjectUIModel.java - client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/CapabilityDescriptor.java - client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/ContentNodeType.java - client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/helper/ContentUIHandlerHelper.java Changes: ===================================== client/configuration/src/main/java/fr/ird/observe/client/datasource/dcp/FloatingObjectPresetsManager.java ===================================== @@ -50,7 +50,6 @@ public class FloatingObjectPresetsManager { private final ClientConfig config; private Map<Path, FloatingObjectPreset> psObservation; private Map<Path, FloatingObjectPreset> psLogbook; - private FloatingObjectPreset referenceToUse; public FloatingObjectPresetsManager(ClientConfig config) { this.config = Objects.requireNonNull(config); @@ -87,7 +86,6 @@ public class FloatingObjectPresetsManager { default: throw new IllegalStateException("Can't deal with model: " + model); } - try { Path nextFilename = FloatingObjectPresetStorage.getNextFilename(directory); Path file = directory.resolve(nextFilename); @@ -100,14 +98,6 @@ public class FloatingObjectPresetsManager { } } - public FloatingObjectPreset getReferenceToUse() { - return referenceToUse; - } - - public void setReferenceToUse(FloatingObjectPreset referenceToUse) { - this.referenceToUse = referenceToUse; - } - public int size() { return getPsLogbook().size() + getPsObservation().size(); } ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivityUI.jaxx ===================================== @@ -24,6 +24,7 @@ <import> fr.ird.observe.dto.data.ll.logbook.ActivityDto fr.ird.observe.dto.data.ll.logbook.SetDto + fr.ird.observe.dto.data.ll.observation.ActivityReference fr.ird.observe.dto.data.ll.pairing.ActivityPairingResultItem fr.ird.observe.dto.referential.common.FpaZoneReference fr.ird.observe.dto.referential.common.WindReference @@ -170,7 +171,7 @@ <JLabel id='relatedObservedActivityLabel'/> </cell> <cell anchor='east' fill="both"> - <JaxxComboBox id='relatedObservedActivity' genericType='fr.ird.observe.dto.data.ll.observation.ActivityReference' constructorParams='this'/> + <JaxxComboBox id='relatedObservedActivity' genericType='ActivityReference' constructorParams='this'/> </cell> </row> @@ -183,10 +184,7 @@ </Table> </JScrollPane> </JPanel> - - <!-- surcharge des actions (pour appliquer la css specifique) --> <JButton id='actionDown'/> - <JMenuItem id='addSet'/> <JMenuItem id='addSample'/> </fr.ird.observe.client.datasource.editor.api.content.data.open.ContentOpenableUI> ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivityUIHandler.java ===================================== @@ -22,18 +22,8 @@ package fr.ird.observe.client.datasource.editor.ll.data.logbook; * #L% */ -import fr.ird.observe.client.datasource.editor.api.content.ContentUIInitializer; -import fr.ird.observe.client.datasource.editor.api.content.actions.open.ContentOpen; -import fr.ird.observe.client.datasource.editor.api.content.data.open.ContentOpenableUIOpenExecutor; import fr.ird.observe.client.datasource.editor.api.content.data.open.actions.SaveOpenable; -import fr.ird.observe.client.util.init.DefaultUIInitializerResult; import fr.ird.observe.dto.data.ll.logbook.ActivityDto; -import fr.ird.observe.dto.data.ll.logbook.SampleDto; -import fr.ird.observe.dto.data.ll.logbook.SetDto; -import fr.ird.observe.dto.form.Form; -import fr.ird.observe.services.service.data.ll.pairing.ActivityPairingEngine; - -import java.util.List; /** * Created on 8/29/14. @@ -43,43 +33,6 @@ import java.util.List; */ class ActivityUIHandler extends GeneratedActivityUIHandler { - private ActivityPairingEngine pairingEngine; - - @Override - protected ContentOpen<ActivityUI> createContentOpen(ActivityUI ui) { - ContentOpenableUIOpenExecutor<ActivityDto, ActivityUI> executor = new ContentOpenableUIOpenExecutor<>() { - @Override - public void openModel(ActivityUI ui) { - ActivityUIModel model = getModel(); - List<fr.ird.observe.dto.data.ll.observation.ActivityReference> allActivityLonglineObs = getLlObservationActivityService().getChildren(model.getStates().getSelectedParentId()).toList(); - Form<ActivityDto> form = model.openForm(allActivityLonglineObs, pairingEngine); - onOpenForm(form); - onOpenAfterOpenModel(); - } - }; - return new ContentOpen<>(ui, executor, executor) { - @Override - public DefaultUIInitializerResult init(ContentUIInitializer<ActivityUI> initializer) { - //FIXME Bug in Jaxx - this.getUi().getRelatedObservedActivity().setBeanType(fr.ird.observe.dto.data.ll.observation.ActivityReference.class); - return super.init(initializer); - } - }; - } - - @Override - public void onInit(ActivityUI ui) { - super.onInit(ui); - pairingEngine = new ActivityPairingEngine(getClientConfig().getReferentialLocale(), getLlCommonTripService(), getLlLogbookActivityService()); - } - - @Override - protected void installCreateNewAction() { - super.installCreateNewAction(); - installCreateNewEditableAction(SetDto.class, getModel().getSource()::addEmptySetUINavigationNode); - installCreateNewEditableAction(SampleDto.class, getModel().getSource()::addEmptyActivitySampleUINavigationNode); - } - @Override protected void installSaveAction() { SaveOpenable.installAction(ui, ActivityDto::isSetOperation, ActivityUI::getAddSet); ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/logbook/ActivityUIModel.java ===================================== @@ -59,7 +59,6 @@ public class ActivityUIModel extends GeneratedActivityUIModel { private static final Logger log = LogManager.getLogger(ActivityUIModel.class); - private boolean opening = false; private List<ActivityReference> activityObs; private TripPairingContext pairingContext; @@ -68,22 +67,19 @@ public class ActivityUIModel extends GeneratedActivityUIModel { getStates().getBean().attachSetOperationListener(); getStates().getBean().addPropertyChangeListener(evt -> { String propertyName = evt.getPropertyName(); - if (opening || !PROPERTIES_FOR_UPDATE_ACTIVITIES_OBS_LIST.contains(propertyName)) { + if (!getStates().isOpened() || !PROPERTIES_FOR_UPDATE_ACTIVITIES_OBS_LIST.contains(propertyName)) { return; } updateActivityObsCandidates(); }); } - public Form<ActivityDto> openForm(List<ActivityReference> allActivityObs, ActivityPairingEngine pairingEngine) { + @Override + public Form<ActivityDto> openForm(String selectedId) { + List<fr.ird.observe.dto.data.ll.observation.ActivityReference> allActivityObs = getReferenceCache().getDataSource().getLlObservationActivityService().getChildren(getStates().getSelectedParentId()).toList(); + ActivityPairingEngine pairingEngine = new ActivityPairingEngine(getClientUIContext().getClientConfig().getReferentialLocale(), getReferenceCache().getDataSource().getLlCommonTripService(), getReferenceCache().getDataSource().getLlLogbookActivityService()); this.pairingContext = pairingEngine.newTripContext(getStates().getSelectedParentId(), ImmutableList.copyOf(allActivityObs)); - opening = true; - Form<ActivityDto> form; - try { - form = super.openForm(getStates().getSelectedId()); - } finally { - opening = false; - } + Form<ActivityDto> form = super.openForm(selectedId); updateActivityObsCandidates(); return form; } @@ -97,14 +93,14 @@ public class ActivityUIModel extends GeneratedActivityUIModel { this.activityObs = Objects.requireNonNull(activityObs); boolean removeRelatedObservedActivity = relatedObservedActivity != null && !activityObs.contains(relatedObservedActivity); firePropertyChange(PROPERTY_ACTIVITY_OBS, null, activityObs); - if (removeRelatedObservedActivity) { + if (getStates().isOpened() && removeRelatedObservedActivity) { log.info(String.format("%s Removed not matching related observed activity: %s", getPrefix(), relatedObservedActivity)); getStates().getBean().setRelatedObservedActivity(null); } } private void updateActivityObsCandidates() { - if (opening) { + if (!getStates().isOpened()) { return; } log.info(String.format("%s Will update release observed activities...", getPrefix())); ===================================== client/datasource/editor/ll/src/main/java/fr/ird/observe/client/datasource/editor/ll/data/observation/ActivityUIHandler.java ===================================== @@ -24,7 +24,6 @@ package fr.ird.observe.client.datasource.editor.ll.data.observation; import fr.ird.observe.client.datasource.editor.api.content.data.open.actions.SaveOpenable; import fr.ird.observe.dto.data.ll.observation.ActivityDto; -import fr.ird.observe.dto.data.ll.observation.SetDto; /** * Created on 8/29/14. @@ -40,12 +39,6 @@ class ActivityUIHandler extends GeneratedActivityUIHandler { super.onInit(ui); } - @Override - protected void installCreateNewAction() { - super.installCreateNewAction(); - installCreateNewEditableAction(SetDto.class, getModel().getSource()::addEmptySetUINavigationNode); - } - @Override protected void installSaveAction() { SaveOpenable.installAction(ui, ActivityDto::isSetOperation, ActivityUI::getAddSet); ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/ActivityUIHandler.java ===================================== @@ -21,34 +21,12 @@ */ package fr.ird.observe.client.datasource.editor.ps.data.observation; -import fr.ird.observe.client.ClientUIContext; -import fr.ird.observe.client.datasource.dcp.FloatingObjectPresetsManager; import fr.ird.observe.client.datasource.editor.api.content.data.open.actions.SaveOpenable; -import fr.ird.observe.client.datasource.editor.ps.ObservePsKeyStrokes; -import fr.ird.observe.dto.data.ps.dcp.FloatingObjectPreset; -import fr.ird.observe.dto.data.ps.dcp.FloatingObjectPresetModel; import fr.ird.observe.dto.data.ps.observation.ActivityDto; -import fr.ird.observe.dto.data.ps.observation.FloatingObjectDto; -import fr.ird.observe.dto.data.ps.observation.SetDto; -import fr.ird.observe.dto.decoration.WithDecoratorService; import fr.ird.observe.dto.referential.ps.common.VesselActivityReference; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import javax.swing.AbstractAction; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.KeyStroke; -import java.awt.Font; -import java.awt.GridLayout; -import java.awt.event.ActionEvent; import java.util.List; -import java.util.Objects; -import java.util.Set; -import static fr.ird.observe.client.datasource.editor.api.content.referential.usage.UsageUIHandlerSupport.findButton; import static io.ultreia.java4all.i18n.I18n.t; /** @@ -57,36 +35,6 @@ import static io.ultreia.java4all.i18n.I18n.t; */ class ActivityUIHandler extends GeneratedActivityUIHandler { - private static final Logger log = LogManager.getLogger(ActivityUIHandler.class); - - private static class UsePresetAction extends AbstractAction implements WithDecoratorService { - - private final FloatingObjectPreset preset; - private final KeyStroke keyStroke; - private JOptionPane pane; - - public UsePresetAction(FloatingObjectPreset preset, int index) { - this.preset = Objects.requireNonNull(preset); - this.keyStroke = Objects.requireNonNull(KeyStroke.getKeyStroke("F" + index)); - putValue(UsePresetAction.class.getName(), getClass().getName() + "_" + index); - putValue(NAME, getDecoratorService().getDecoratorByType(preset.getClass()).toString(preset)); - } - - public void install(JButton parent, JOptionPane pane) { - this.pane = pane; - String actionMapKey = (String) getValue(UsePresetAction.class.getName()); - pane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke, actionMapKey); - pane.getActionMap().put(actionMapKey, this); - ObservePsKeyStrokes.addKeyStroke(parent, keyStroke); - } - - @Override - public void actionPerformed(ActionEvent e) { - log.info(String.format("Choose dcp preset: %s", preset.getLabel1())); - pane.setValue(preset); - } - } - @Override public void onInit(ActivityUI ui) { super.onInit(ui); @@ -96,64 +44,22 @@ class ActivityUIHandler extends GeneratedActivityUIHandler { ui.vesselActivityInformation.setToolTipText(text); } - @Override - protected void installCreateNewAction() { - super.installCreateNewAction(); - installCreateNewEditableAction(SetDto.class, ui.getModel().getSource()::addEmptySetUINavigationNode); - installCreateNewEditableAction(FloatingObjectDto.class, this::chooseFloatingObjectPreset, ui.getModel().getSource()::addEmptyFloatingObjectUINavigationNode); - } - @Override protected void installSaveAction() { SaveOpenable.installAction(ui, ActivityDto::isStrongSetOperation, ActivityUI::getAddSet); } private String getActivity6Label() { - List<VesselActivityReference> activities = getReferentialReferences(VesselActivityReference.class); - for (VesselActivityReference vesselActivity : activities) { if (ActivityDto.isFishingOperation(vesselActivity)) { - return getDecoratorService().getReferentialReferenceDecorator(VesselActivityReference.class).toString(vesselActivity); + return vesselActivity.toString(); +// return getDecoratorService().getReferentialReferenceDecorator(VesselActivityReference.class).toString(vesselActivity); } } throw new IllegalStateException(t("observe.data.ps.observation.Activity.error.no.activity.6")); } - private boolean chooseFloatingObjectPreset(ActivityDto bean) { - - FloatingObjectPresetsManager floatingObjectPresetsManager = getClientUIContext().getFloatingObjectPresetsManager(); - Set<FloatingObjectPreset> psObservation = floatingObjectPresetsManager.getPresets(FloatingObjectPresetModel.ps_observation); - if (!psObservation.isEmpty()) { - - JPanel userConfigs = new JPanel(new GridLayout(0, 2)); - - String replaceText = t("observe.ui.choice.dcp.default") + " (Enter)"; - Object[] options = {replaceText}; - JOptionPane pane = new JOptionPane(userConfigs, JOptionPane.QUESTION_MESSAGE, JOptionPane.DEFAULT_OPTION, null, options, options[0]); - JButton jButton = Objects.requireNonNull(findButton(pane, replaceText)); - Font font = jButton.getFont().deriveFont(18f); - jButton.setFont(font.deriveFont(Font.ITALIC)); - int index = 0; - for (FloatingObjectPreset preset : psObservation) { - UsePresetAction a = new UsePresetAction(preset, ++index); - JButton b = new JButton(a); - b.setFont(font); - userConfigs.add(b); - a.install(b, pane); - } - int response = ClientUIContext.askUser(pane, t("observe.data.ps.observation.FloatingObjectReference.choose.title"), options); - Object value = pane.getValue(); - if (value instanceof FloatingObjectPreset) { - floatingObjectPresetsManager.setReferenceToUse((FloatingObjectPreset) value); - } else { - return response != JOptionPane.CLOSED_OPTION; - } - } - return true; - } - - // @Override // protected ContentOpenableUILayoutFocusTraversalPolicy<ActivityUI> createFocusTraversalPolicy() { // return new ContentOpenableUILayoutFocusTraversalPolicy<ActivityUI>() { ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/ActivityUIModel.java ===================================== @@ -44,15 +44,6 @@ public class ActivityUIModel extends GeneratedActivityUIModel { boolean newValue = ActivityDto.isChangedZoneOperation(newActivitySeine); firePropertyChange(PROPERTY_CHANGED_ZONE_OPERATION, oldValue, newValue); }); - - } - - public boolean isSetOperation() { - return getStates().getBean().isSetOperation(); - } - - public boolean isDcpOperation() { - return getStates().getBean().isDcpOperation(); } public boolean isChangedZoneOperation() { ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/FloatingObjectUI.jcss ===================================== @@ -35,6 +35,10 @@ enabled:{model.isLeaving() && model.isArriving()}; } +#addFloatingObjectPreset { + enabled:{states.isUpdatingMode() && getModel().getReference() == null}; +} + #objectOperation { enabled:{states.isCreatingMode()}; } @@ -68,11 +72,6 @@ text:{model.getComputedWhenLeavingSimplifiedObjectTypeValue()}; } -/*#addFloatingObjectReference { - visible:{states.isUpdatingMode()}; - focusable:false; -}*/ - #typeOperation { selectedItem:{bean.getTypeTransmittingBuoyOperation()}; _skipBindingToBean:true; ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/FloatingObjectUIHandler.java ===================================== @@ -280,29 +280,21 @@ public class FloatingObjectUIHandler extends GeneratedFloatingObjectUIHandler { TransmittingBuoyDto transmittingBuoy) { if (transmittingBuoy == null) { - TransmittingBuoyDto.newDto(new Date()).copy(editBean); editBean.setCreateDate(new Date()); editBean.setTransmittingBuoyOperation(operation); - log.debug(String.format("Reuse an empty balise lue for objectOperation %s", operation.getLabel())); - if (isBalisePose(operation)) { - // objectOperation de pose // toujours appartient au navire TransmittingBuoyOwnershipReference r = getModel().getReferenceCache().<TransmittingBuoyOwnershipReference>tryGetReferentialReferenceById(TransmittingBuoyDto.PROPERTY_TRANSMITTING_BUOY_OWNERSHIP, ProtectedIdsPs.PS_COMMON_TRANSMITTING_BUOY_OWNERSHIP_THIS_SHIP_ID).orElse(null); log.info("Using ownership this vessel: " + r); editBean.setTransmittingBuoyOwnership(r); } - } else { - editBean.copy(transmittingBuoy); // TransmittingBuoyHelper.copyTransmittingBuoyDto(editBean, transmittingBuoy); - } - getModel().getStates().getBean().getTransmittingBuoy().add(editBean); } ===================================== client/datasource/editor/ps/src/main/java/fr/ird/observe/client/datasource/editor/ps/data/observation/FloatingObjectUIModel.java ===================================== @@ -23,16 +23,22 @@ package fr.ird.observe.client.datasource.editor.ps.data.observation; */ import com.google.common.collect.ImmutableSet; +import fr.ird.observe.client.ClientUIContext; import fr.ird.observe.client.WithClientUIContext; +import fr.ird.observe.client.datasource.dcp.FloatingObjectPresetsManager; +import fr.ird.observe.client.datasource.editor.ps.ObservePsKeyStrokes; import fr.ird.observe.dto.I18nEnumHelper; import fr.ird.observe.dto.data.ps.DcpComputedValue; import fr.ird.observe.dto.data.ps.consolidate.dcp.ConsolidateFloatingObjectResult; import fr.ird.observe.dto.data.ps.consolidate.dcp.SimplifiedObjectTypeSpecializedRules; import fr.ird.observe.dto.data.ps.dcp.FloatingObjectPreset; +import fr.ird.observe.dto.data.ps.dcp.FloatingObjectPresetModel; +import fr.ird.observe.dto.data.ps.observation.ActivityDto; import fr.ird.observe.dto.data.ps.observation.FloatingObjectDto; import fr.ird.observe.dto.data.ps.observation.FloatingObjectPartDto; import fr.ird.observe.dto.data.ps.observation.TransmittingBuoyDto; import fr.ird.observe.dto.data.ps.observation.consolidate.ConsolidateFloatingObjectRequest; +import fr.ird.observe.dto.decoration.WithDecoratorService; import fr.ird.observe.dto.form.Form; import fr.ird.observe.dto.form.FormDefinition; import fr.ird.observe.dto.referential.ReferentialLocale; @@ -42,6 +48,15 @@ import fr.ird.observe.spi.module.ObserveBusinessProject; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import javax.swing.AbstractAction; +import javax.swing.JButton; +import javax.swing.JComponent; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.KeyStroke; +import java.awt.Font; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; import java.io.File; import java.io.IOException; import java.util.Date; @@ -53,6 +68,7 @@ import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; +import static fr.ird.observe.client.datasource.editor.api.content.referential.usage.UsageUIHandlerSupport.findButton; import static io.ultreia.java4all.i18n.I18n.t; /** @@ -85,6 +101,34 @@ public class FloatingObjectUIModel extends GeneratedFloatingObjectUIModel implem this.whenLeaving = new LinkedHashMap<>(); } + private static class UsePresetAction extends AbstractAction implements WithDecoratorService { + + private final FloatingObjectPreset preset; + private final KeyStroke keyStroke; + private JOptionPane pane; + + public UsePresetAction(FloatingObjectPreset preset, int index) { + this.preset = Objects.requireNonNull(preset); + this.keyStroke = Objects.requireNonNull(KeyStroke.getKeyStroke("F" + index)); + putValue(UsePresetAction.class.getName(), getClass().getName() + "_" + index); + putValue(NAME, getDecoratorService().getDecoratorByType(preset.getClass()).toString(preset)); + } + + public void install(JButton parent, JOptionPane pane) { + this.pane = pane; + String actionMapKey = (String) getValue(UsePresetAction.class.getName()); + pane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke, actionMapKey); + pane.getActionMap().put(actionMapKey, this); + ObservePsKeyStrokes.addKeyStroke(parent, keyStroke); + } + + @Override + public void actionPerformed(ActionEvent e) { + log.info(String.format("Choose dcp preset: %s", preset.getLabel1())); + pane.setValue(preset); + } + } + public ImmutableSet<FloatingObjectPartDto> toParts() { ImmutableSet.Builder<FloatingObjectPartDto> result = ImmutableSet.builder(); Date now = new Date(); @@ -131,13 +175,14 @@ public class FloatingObjectUIModel extends GeneratedFloatingObjectUIModel implem @Override public void open() { - Optional<FloatingObjectPreset> floatingObjectReference = Optional.ofNullable(getClientUIContext().getFloatingObjectPresetsManager().getReferenceToUse()); - setReference(floatingObjectReference.orElse(null)); if (reference != null) { log.info(String.format("%s Will use dcp preset: %s", getPrefix(), reference)); } - getClientUIContext().getFloatingObjectPresetsManager().setReferenceToUse(null); super.open(); + if (getStates().isCreatingMode()) { + FloatingObjectPreset reference = chooseFloatingObjectPreset(); + setReference(reference); + } } @Override @@ -152,6 +197,37 @@ public class FloatingObjectUIModel extends GeneratedFloatingObjectUIModel implem fireComputedValuesChanged(); } + private FloatingObjectPreset chooseFloatingObjectPreset() { + + FloatingObjectPresetsManager floatingObjectPresetsManager = getClientUIContext().getFloatingObjectPresetsManager(); + Set<FloatingObjectPreset> psObservation = floatingObjectPresetsManager.getPresets(FloatingObjectPresetModel.ps_observation); + if (!psObservation.isEmpty()) { + + JPanel userConfigs = new JPanel(new GridLayout(0, 2)); + + String replaceText = t("observe.ui.choice.dcp.default") + " (Enter)"; + Object[] options = {replaceText}; + JOptionPane pane = new JOptionPane(userConfigs, JOptionPane.QUESTION_MESSAGE, JOptionPane.DEFAULT_OPTION, null, options, options[0]); + JButton jButton = Objects.requireNonNull(findButton(pane, replaceText)); + Font font = jButton.getFont().deriveFont(18f); + jButton.setFont(font.deriveFont(Font.ITALIC)); + int index = 0; + for (FloatingObjectPreset preset : psObservation) { + UsePresetAction a = new UsePresetAction(preset, ++index); + JButton b = new JButton(a); + b.setFont(font); + userConfigs.add(b); + a.install(b, pane); + } + ClientUIContext.askUser(pane, t("observe.data.ps.observation.FloatingObjectReference.choose.title"), options); + Object value = pane.getValue(); + if (value instanceof FloatingObjectPreset) { + return (FloatingObjectPreset) value; + } + } + return null; + } + public void fireComputedValuesChanged() { firePropertyChange("computedWhenArrivingBiodegradableValue", getComputedWhenArrivingBiodegradableValue()); firePropertyChange("computedWhenArrivingNonEntanglingValue", getComputedWhenArrivingNonEntanglingValue()); @@ -244,7 +320,6 @@ public class FloatingObjectUIModel extends GeneratedFloatingObjectUIModel implem return arriving; } - public void setArriving(boolean arriving) { this.arriving = arriving; log.debug("setArriving: " + arriving); @@ -301,4 +376,5 @@ public class FloatingObjectUIModel extends GeneratedFloatingObjectUIModel implem map.put(dto, value); } } + } ===================================== client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/CapabilityDescriptor.java ===================================== @@ -111,6 +111,8 @@ public class CapabilityDescriptor { " }\n"; public static final String INSTALL_CREATE_NEW_TABLE_ACTION = "" + " installCreateNewTableEntryAction(%1$s.class);\n"; + public static final String INSTALL_CREATE_NEW_EDIT_ACTION = "" + + " installCreateNewEditableAction(%1$sDto.class, getModel().getSource()::addEmpty%2$s);\n"; public static final String INSTALL_CREATE_NEW_ACTION = "" + " installCreateNewOpenableAction(t-> true);\n"; public static final String INSTALL_CREATE_NEW_ACTION_WITH_PREDICATE = "" + @@ -386,8 +388,12 @@ public class CapabilityDescriptor { case TABLE: imports.add(CreateNewContentTableUIEntry.class.getName()); return String.format(INSTALL_CREATE_NEW_TABLE_ACTION, getNodeTypeName()); + case EDIT: - break; + if (dtoType!=null) { + imports.add(dtoType.getName()); + return String.format(INSTALL_CREATE_NEW_EDIT_ACTION, dtoType.getSimpleName().replace("Dto", ""), getNodeTypeSimpleName()); + } case SIMPLE: case ROOT: case REFERENTIAL_HOME: ===================================== client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/ContentNodeType.java ===================================== @@ -156,7 +156,7 @@ public enum ContentNodeType { public Class<? extends IdDto> getDto(BusinessProject businessProject, String nodeTypeName) { - return null; + return getDto0(businessProject, nodeTypeName); } Class<? extends IdDto> getDto0(BusinessProject businessProject, String nodeTypeName) { ===================================== client/datasource/editor/spi/src/main/java/fr/ird/observe/client/datasource/editor/spi/content/helper/ContentUIHandlerHelper.java ===================================== @@ -91,8 +91,15 @@ public class ContentUIHandlerHelper extends ContentUIHelperSupport { } if (generator.capabilitiesDescriptor != null) { for (CapabilityDescriptor capabilityDescriptor : generator.capabilitiesDescriptor) { - if (editNode != null && editNode.getType().equals(capabilityDescriptor.getOptionalDtoType())) { - continue; + + ContentNodeType contentNodeType = capabilityDescriptor.getContentNodeType(); + + Class<? extends IdDto> optionalDtoType = capabilityDescriptor.getOptionalDtoType(); + + if (editNode != null) { + if (editNode.getType().equals(optionalDtoType)) { + continue; + } } String method = capabilityDescriptor.generateAddNewAction(imports, generator); createChildrenMethodBuilder.append(method); @@ -160,6 +167,11 @@ public class ContentUIHandlerHelper extends ContentUIHelperSupport { } extraMethods += generateListCreateNewAction(imports, generator); extraMethods += String.format(INSTALL_MOVE_ACTION, methodName); + generator.capabilitiesDescriptor.forEach(c-> { + if (c.getContentNodeType()==ContentNodeType.EDIT) { + // add + } + }); return generate(ContentUIHandlerHelper.UI_HANDLER_GENERATED2, imports, generator.cleanClassName, uiHandler, dtoType, extraType, extraMethods); } View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/01f6ceba96c8fadf630a7f9cd5... -- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/-/commit/01f6ceba96c8fadf630a7f9cd5... You're receiving this email because of your account on gitlab.com.