You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/09/17 14:45:37 UTC
[isis] branch master updated: ISIS-2871: UI fixes
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 837bd88 ISIS-2871: UI fixes
837bd88 is described below
commit 837bd888f21705d9d510dc4e06670a07ad9c55df
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Sep 17 16:45:25 2021 +0200
ISIS-2871: UI fixes
---
.../interactions/managed/ManagedProperty.java | 2 ++
.../interactions/managed/_BindingUtil.java | 10 +++++++--
.../common/model/feature/PropertyUiModel.java | 5 +++++
.../viewer/wicket/model/models/ScalarModel.java | 24 +++++++++++-----------
.../wicket/model/models/ScalarParameterModel.java | 6 +++---
.../wicket/model/models/ScalarPropertyModel.java | 24 ++++++++++++++--------
.../property/PropertyFormExecutorStrategy.java | 3 ++-
7 files changed, 48 insertions(+), 26 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedProperty.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedProperty.java
index 08e5940..a9b5dc7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedProperty.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/ManagedProperty.java
@@ -165,5 +165,7 @@ extends ManagedMember {
}
+
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/_BindingUtil.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/_BindingUtil.java
index 9299d38..7a51263 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/_BindingUtil.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/interactions/managed/_BindingUtil.java
@@ -89,9 +89,15 @@ class _BindingUtil {
return bindableValue.mapToBindable(
value->{
final var pojo = ManagedObjects.UnwrapUtil.single(value);
- return parser.parseableTextRepresentation(context, pojo);
+ final var text = parser.parseableTextRepresentation(context, pojo);
+ System.err.printf("toText: %s -> '%s'%n", ""+value, text);
+ return text;
},
- text->ManagedObject.of(spec, parser.parseTextRepresentation(context, text)));
+ text->{
+ final var value = ManagedObject.of(spec, parser.parseTextRepresentation(context, text));
+ System.err.printf("fromText: '%s' -> %s%n", text, ""+value);
+ return value;
+ });
}
}
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/PropertyUiModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/PropertyUiModel.java
index 9330ab7..c538d2d 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/PropertyUiModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/PropertyUiModel.java
@@ -20,6 +20,7 @@ package org.apache.isis.viewer.common.model.feature;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.interactions.managed.PropertyNegotiationModel;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -29,6 +30,10 @@ public interface PropertyUiModel extends ScalarUiModel {
@Override
OneToOneAssociation getMetaModel();
+ // -- PENDING PROPERTY VALUE MODEL
+
+ PropertyNegotiationModel getPendingPropertyModel();
+
// -- SHORTCUTS
@Override
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index 4ff8339..83614ae 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -179,24 +179,24 @@ implements HasRenderingHints, ScalarUiModel, LinksProvider, FormExecutorContext
.anyMatch(x -> x.isAssignableFrom(scalarType));
}
+ /** get the proposed value, subject to negotiation */
public String getObjectAsString() {
- final ManagedObject adapter = getObject();
- if (adapter == null) {
- return null;
- }
- final var spec = adapter.getSpecification();
- if(spec.isValue()) {
- managedValue().getValueAsParsableText().getValue();
- }
- return adapter.titleString();
+ final var proposedValue = proposedValue();
+ setObject(proposedValue.getValue().getValue()); // keep the wicket model in sync
+ return proposedValue.getValueAsParsableText().getValue();
}
+ /**
+ * set the proposed value, subject to negotiation, only updates the negotiation model
+ * actual application of the proposed value is only applied after passing verification (not done here)
+ */
public void setObjectAsString(final String enteredText) {
- managedValue().getValueAsParsableText().setValue(enteredText);
- setObject(managedValue().getValue().getValue());
+ final var proposedValue = proposedValue();
+ proposedValue.getValueAsParsableText().setValue(enteredText);
+ setObject(proposedValue.getValue().getValue()); // keep the wicket model in sync
}
- public abstract ManagedValue managedValue();
+ public abstract ManagedValue proposedValue();
public abstract boolean whetherHidden();
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
index 29df55e..b10acd9 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarParameterModel.java
@@ -46,8 +46,8 @@ implements ParameterUiModel {
private final ActionParameterMemento paramMemento;
- @Getter(onMethod = @__(@Override))
- @Setter(onMethod = @__(@Override))
+ @Getter(onMethod_ = {@Override})
+ @Setter(onMethod_ = {@Override})
private transient ParameterNegotiationModel pendingParameterModel;
/**
@@ -154,7 +154,7 @@ implements ParameterUiModel {
}
@Override
- public ManagedValue managedValue() {
+ public ManagedValue proposedValue() {
return getPendingParameterModel().getParamModels().getElseFail(paramMemento.getNumber());
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
index 15d419a..d4e4310 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarPropertyModel.java
@@ -42,6 +42,8 @@ implements PropertyUiModel {
private final PropertyMemento propertyMemento;
+ private transient PropertyNegotiationModel pendingPropertyModel;
+
/**
* Creates a model representing a property of a parent object, with the
* {@link #getObject() value of this model} to be current value of the
@@ -87,6 +89,14 @@ implements PropertyUiModel {
: managedProperty;
}
+ @Override
+ public PropertyNegotiationModel getPendingPropertyModel() {
+ if(pendingPropertyModel==null) {
+ pendingPropertyModel = getManagedProperty().startNegotiation();
+ }
+ return pendingPropertyModel;
+ }
+
private ManagedProperty createManagedProperty(final @NonNull ManagedObject owner) {
val where = this.getRenderingHint().asWhere();
return ManagedProperty.of(owner, getMetaModel(), where);
@@ -131,15 +141,15 @@ implements PropertyUiModel {
}
public void reset() {
+ pendingPropertyModel = null; // invalidate
val propertyValue = getManagedProperty().getPropertyValue();
- val presentationValue = ManagedObjects.isNullOrUnspecifiedOrEmpty(propertyValue)
+ val presentedValue = ManagedObjects.isNullOrUnspecifiedOrEmpty(propertyValue)
? null
: propertyValue;
- this.setObject(presentationValue);
+ this.setObject(presentedValue);
}
-
@Override
public ManagedObject load() {
return loadFromSuper();
@@ -156,8 +166,7 @@ implements PropertyUiModel {
}
public String getReasonInvalidIfAny() {
- val associate = getObject();
- return validate(associate);
+ return getPendingPropertyModel().getValidationMessage().getValue();
}
/**
@@ -165,7 +174,6 @@ implements PropertyUiModel {
*
* @return adapter, which may be different from the original
*/
- @Deprecated // use managedValue() instead
public ManagedObject applyValue() {
val proposedNewValue = getObject();
getManagedProperty().modifyProperty(proposedNewValue);
@@ -173,8 +181,8 @@ implements PropertyUiModel {
}
@Override
- public ManagedValue managedValue() {
- return getManagedProperty().startNegotiation();
+ public ManagedValue proposedValue() {
+ return getPendingPropertyModel();
}
@Override
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyFormExecutorStrategy.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyFormExecutorStrategy.java
index 964a40e..a16a793 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyFormExecutorStrategy.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyFormExecutorStrategy.java
@@ -26,7 +26,8 @@ import org.apache.isis.viewer.wicket.model.models.ScalarPropertyModel;
import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
import org.apache.isis.viewer.wicket.ui.panels.FormExecutorStrategy;
-public class PropertyFormExecutorStrategy implements FormExecutorStrategy<ScalarPropertyModel> {
+public class PropertyFormExecutorStrategy
+implements FormExecutorStrategy<ScalarPropertyModel> {
private final ScalarPropertyModel model;