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 2020/05/07 12:47:08 UTC
[isis] branch master updated: ISIS-2340: introduces a common
PropertyUiModel
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 abd703a ISIS-2340: introduces a common PropertyUiModel
abd703a is described below
commit abd703a8126737df41ab9ab05c8f706774ae7f62
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu May 7 14:46:52 2020 +0200
ISIS-2340: introduces a common PropertyUiModel
---
.../pdfjs/ui/components/PdfJsViewerPanel.java | 21 ++--
.../common/model/feature/FeatureUiModel.java | 14 +++
.../ParameterUiModel.java} | 10 +-
.../PropertyUiModel.java} | 34 +-----
.../wicket/model/models/ActionArgumentCache.java | 14 +--
.../viewer/wicket/model/models/ActionModel.java | 19 ++-
.../wicket/model/models/InlinePromptContext.java | 26 +---
.../viewer/wicket/model/models/ScalarModel.java | 5 +-
.../wicket/model/models/ScalarParameterModel.java | 9 +-
.../wicket/model/models/ScalarPropertyModel.java | 131 +++++++++------------
.../components/actions/ActionParametersForm.java | 4 +-
.../ui/components/property/PropertyEditPanel.java | 32 ++---
.../PropertyEditPromptHeaderPanel.java | 7 +-
13 files changed, 141 insertions(+), 185 deletions(-)
diff --git a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
index 7fc2c9b..9860305 100644
--- a/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
+++ b/extensions/vw/pdfjs/ui/src/main/java/org/apache/isis/extensions/viewer/wicket/pdfjs/ui/components/PdfJsViewerPanel.java
@@ -113,8 +113,9 @@ class PdfJsViewerPanel extends ScalarPanelAbstract<ScalarPropertyModel> implemen
// so we have a callback URL
- updatePageNum = new AbstractDefaultAjaxBehavior()
- {
+ updatePageNum = new AbstractDefaultAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
@Override
protected void respond(AjaxRequestTarget _target)
{
@@ -136,8 +137,9 @@ class PdfJsViewerPanel extends ScalarPanelAbstract<ScalarPropertyModel> implemen
}
};
- updateScale = new AbstractDefaultAjaxBehavior()
- {
+ updateScale = new AbstractDefaultAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
@Override
protected void respond(AjaxRequestTarget _target)
{
@@ -160,8 +162,9 @@ class PdfJsViewerPanel extends ScalarPanelAbstract<ScalarPropertyModel> implemen
}
};
- updateHeight = new AbstractDefaultAjaxBehavior()
- {
+ updateHeight = new AbstractDefaultAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
@Override
protected void respond(AjaxRequestTarget _target)
{
@@ -204,7 +207,7 @@ class PdfJsViewerPanel extends ScalarPanelAbstract<ScalarPropertyModel> implemen
String userName = userService.getUser().getName();
val model = getModel();
- val propertyId = model.getPropertyMemento().getIdentifier();
+ val propertyId = model.getIdentifier();
val bookmark = model.getParentUiModel().getObjectAdapterMemento().asBookmarkIfSupported();
val objectType = bookmark.getObjectType();
val identifier = bookmark.getIdentifier();
@@ -288,6 +291,8 @@ class PdfJsViewerPanel extends ScalarPanelAbstract<ScalarPropertyModel> implemen
private MarkupContainer createComponent(final String id, final PdfJsConfig config) {
return new WebMarkupContainer(id) {
+ private static final long serialVersionUID = 1L;
+
@Override
protected void onComponentTag(final ComponentTag tag) {
super.onComponentTag(tag);
@@ -330,6 +335,8 @@ class PdfJsViewerPanel extends ScalarPanelAbstract<ScalarPropertyModel> implemen
if (pdfBlob != null) {
final byte[] bytes = pdfBlob.getBytes();
final ByteArrayResource resource = new ByteArrayResource("application/pdf", bytes) {
+ private static final long serialVersionUID = 1L;
+
@Override protected void configureResponse(
final ResourceResponse response, final Attributes attributes) {
super.configureResponse(response, attributes);
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/FeatureUiModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/FeatureUiModel.java
new file mode 100644
index 0000000..3fefd2c
--- /dev/null
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/FeatureUiModel.java
@@ -0,0 +1,14 @@
+package org.apache.isis.viewer.common.model.feature;
+
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
+
+public interface FeatureUiModel {
+
+ ObjectFeature getMetaModel();
+
+ /** property name */
+ default String getName() {
+ return getMetaModel().getName();
+ }
+
+}
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/ActionParameterUiModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/ParameterUiModel.java
similarity index 86%
copy from viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/ActionParameterUiModel.java
copy to viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/ParameterUiModel.java
index 7ce0f9a..3e85c6d 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/ActionParameterUiModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/ParameterUiModel.java
@@ -16,15 +16,16 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.viewer.common.model.action.form;
+package org.apache.isis.viewer.common.model.feature;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModel;
-public interface ActionParameterUiModel {
+public interface ParameterUiModel extends FeatureUiModel {
/** param meta model */
+ @Override
ObjectActionParameter getMetaModel();
/** param value */
@@ -41,6 +42,11 @@ public interface ActionParameterUiModel {
default int getNumber() {
return getMetaModel().getNumber();
}
+
+ /** param name */
+ default String getName() {
+ return getMetaModel().getName();
+ }
// -- DEPRECATIONS
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/ActionParameterUiModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/PropertyUiModel.java
similarity index 51%
rename from viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/ActionParameterUiModel.java
rename to viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/PropertyUiModel.java
index 7ce0f9a..e3311a6 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/action/form/ActionParameterUiModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/PropertyUiModel.java
@@ -16,36 +16,14 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.viewer.common.model.action.form;
+package org.apache.isis.viewer.common.model.feature;
-import org.apache.isis.core.metamodel.spec.ManagedObject;
-import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModel;
+import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
-public interface ActionParameterUiModel {
-
- /** param meta model */
- ObjectActionParameter getMetaModel();
-
- /** param value */
- ManagedObject getValue();
-
- /** param value */
- void setValue(ManagedObject paramValue);
-
- String getCssClass();
-
- // -- SHORTCUTS
-
- /** param index */
- default int getNumber() {
- return getMetaModel().getNumber();
- }
-
- // -- DEPRECATIONS
-
- // transient storage
- void setActionArgsHint(PendingParameterModel pendingArgs);
+public interface PropertyUiModel extends FeatureUiModel {
+ /** prop meta model */
+ @Override
+ OneToOneAssociation getMetaModel();
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java
index e4f7040..fc09325 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentCache.java
@@ -29,8 +29,8 @@ import org.apache.isis.core.commons.internal.collections._Maps;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
-import org.apache.isis.viewer.common.model.action.form.ActionParameterUiModel;
import org.apache.isis.viewer.common.model.action.form.PendingParameterManager;
+import org.apache.isis.viewer.common.model.feature.ParameterUiModel;
import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
@@ -45,7 +45,7 @@ class ActionArgumentCache implements PendingParameterManager {
@NonNull private final ActionMemento actionMemento;
@NonNull private final ObjectAction action;
- private final Map<Integer, ActionParameterUiModel> arguments = _Maps.newHashMap();
+ private final Map<Integer, ParameterUiModel> arguments = _Maps.newHashMap();
public ActionArgumentCache copy() {
val copy = new ActionArgumentCache(
@@ -67,7 +67,7 @@ class ActionArgumentCache implements PendingParameterManager {
.mapToObj(paramIndex->{
val actionArgumentModel = Optional.ofNullable(arguments.get(paramIndex));
val adapter = actionArgumentModel
- .map(ActionParameterUiModel::getValue)
+ .map(ParameterUiModel::getValue)
.orElse(ManagedObject.empty(paramTypes.getElseFail(paramIndex)));
return adapter;
@@ -87,7 +87,7 @@ class ActionArgumentCache implements PendingParameterManager {
});
}
- public Stream<ActionParameterUiModel> streamActionArgumentModels() {
+ public Stream<ParameterUiModel> streamActionArgumentModels() {
return streamParamNumbers()
.mapToObj(paramIndex->
arguments.computeIfAbsent(paramIndex, this::createArgumentModel));
@@ -112,7 +112,7 @@ class ActionArgumentCache implements PendingParameterManager {
return IntStream.range(0, paramCount);
}
- private ActionParameterUiModel createArgumentModel(int paramIndex) {
+ private ParameterUiModel createArgumentModel(int paramIndex) {
val param = action.getParameters().getElseFail(paramIndex);
val paramMemento = new ActionParameterMemento(param);
val actionArgumentModel = new ScalarParameterModel(entityModel, paramMemento);
@@ -125,9 +125,9 @@ class ActionArgumentCache implements PendingParameterManager {
(int)streamActionArgumentModels().count());
}
- private ActionParameterUiModel computeIfAbsent(final ActionParameterMemento apm) {
+ private ParameterUiModel computeIfAbsent(final ActionParameterMemento apm) {
final int i = apm.getNumber();
- ActionParameterUiModel actionArgumentModel = arguments.get(i);
+ ParameterUiModel actionArgumentModel = arguments.get(i);
if (actionArgumentModel == null) {
actionArgumentModel = new ScalarParameterModel(entityModel, apm);
final int number = actionArgumentModel.getNumber();
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
index 482aac2..7a61149 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
@@ -58,7 +58,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModel;
import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModelHead;
import org.apache.isis.core.webapp.context.IsisWebAppCommonContext;
-import org.apache.isis.viewer.common.model.action.form.ActionParameterUiModel;
+import org.apache.isis.viewer.common.model.feature.ParameterUiModel;
import org.apache.isis.viewer.wicket.model.mementos.ActionMemento;
import lombok.Value;
@@ -92,9 +92,7 @@ implements FormExecutorContext {
}
- //////////////////////////////////////////////////
- // BookmarkableModel
- //////////////////////////////////////////////////
+ // -- BOOKMARKABLE
@Override
public PageParameters getPageParametersWithoutUiHints() {
@@ -108,6 +106,7 @@ implements FormExecutorContext {
return getPageParametersWithoutUiHints();
}
+ // --
@Override
public String getTitle() {
@@ -129,6 +128,11 @@ implements FormExecutorContext {
public boolean hasAsRootPolicy() {
return true;
}
+
+ @Override
+ public EntityModel getParentUiModel() {
+ return entityModel;
+ }
// -- HELPERS
@@ -163,11 +167,6 @@ implements FormExecutorContext {
this.actionMemento = actionMemento;
}
- @Override
- public EntityModel getParentUiModel() {
- return entityModel;
- }
-
/**
* Copy constructor, as called by {@link #copy()}.
*/
@@ -461,7 +460,7 @@ implements FormExecutorContext {
@Value(staticConstructor = "of")
public static class ActionArgumentModelAndConsents {
final PendingParameterModel pendingArgs;
- final ActionParameterUiModel paramModel;
+ final ParameterUiModel paramModel;
final Consent visibilityConsent;
final Consent usabilityConsent;
}
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/InlinePromptContext.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/InlinePromptContext.java
index 872ab3b..cf19a27 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/InlinePromptContext.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/InlinePromptContext.java
@@ -24,6 +24,11 @@ import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.markup.html.WebMarkupContainer;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+@Getter
+@RequiredArgsConstructor
public class InlinePromptContext implements Serializable {
private static final long serialVersionUID = 1L;
@@ -32,29 +37,10 @@ public class InlinePromptContext implements Serializable {
private final WebMarkupContainer scalarIfRegularInlinePromptForm;
private final MarkupContainer scalarTypeContainer;
- public InlinePromptContext(
- final Component scalarIfRegular,
- final WebMarkupContainer scalarIfRegularInlinePromptForm,
- final MarkupContainer scalarTypeContainer) {
- this.scalarIfRegular = scalarIfRegular;
- this.scalarIfRegularInlinePromptForm = scalarIfRegularInlinePromptForm;
- this.scalarTypeContainer = scalarTypeContainer;
- }
-
- public Component getScalarIfRegular() {
- return scalarIfRegular;
- }
-
- public WebMarkupContainer getScalarIfRegularInlinePromptForm() {
- return scalarIfRegularInlinePromptForm;
- }
-
public void onCancel() {
scalarIfRegular.setVisible(true);
scalarIfRegularInlinePromptForm.setVisible(false);
}
- public MarkupContainer getScalarTypeContainer() {
- return scalarTypeContainer;
- }
+
}
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 0a0f8b1..d6fd8b9 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
@@ -43,6 +43,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModel;
import org.apache.isis.core.webapp.context.memento.ObjectMemento;
+import org.apache.isis.viewer.common.model.feature.FeatureUiModel;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
import org.apache.isis.viewer.wicket.model.links.LinksProvider;
import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
@@ -71,7 +72,7 @@ import lombok.val;
* </p>
*/
public abstract class ScalarModel extends EntityModel
-implements LinksProvider, FormExecutorContext {
+implements FeatureUiModel, LinksProvider, FormExecutorContext {
private static final long serialVersionUID = 1L;
@@ -166,8 +167,6 @@ implements LinksProvider, FormExecutorContext {
return kind;
}
- public abstract String getName();
-
/**
* Overrides superclass' implementation, because a {@link ScalarModel} can
* know the {@link ObjectSpecification of} the {@link ManagedObject adapter}
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 63aaaa1..5155117 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
@@ -37,7 +37,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModel;
import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModelHead;
import org.apache.isis.core.webapp.context.memento.ObjectMemento;
-import org.apache.isis.viewer.common.model.action.form.ActionParameterUiModel;
+import org.apache.isis.viewer.common.model.feature.ParameterUiModel;
import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
import lombok.Getter;
@@ -46,7 +46,7 @@ import lombok.Setter;
import lombok.val;
public class ScalarParameterModel extends ScalarModel
-implements ActionParameterUiModel {
+implements ParameterUiModel {
private static final long serialVersionUID = 1L;
@@ -80,11 +80,6 @@ implements ActionParameterUiModel {
}
@Override
- public String getName() {
- return getMetaModel().getName();
- }
-
- @Override
public ObjectSpecification getScalarTypeSpec() {
return parameterMemento.getSpecification(getSpecificationLoader());
}
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 43b68a4..976257c 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
@@ -25,7 +25,6 @@ import org.apache.isis.core.commons.collections.Can;
import org.apache.isis.core.metamodel.consent.Consent;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.Facet;
-import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.object.parseable.ParseableFacet;
import org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.fileaccept.FileAcceptFacet;
@@ -40,16 +39,18 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.core.metamodel.specloader.specimpl.PendingParameterModel;
import org.apache.isis.core.webapp.context.memento.ObjectMemento;
+import org.apache.isis.viewer.common.model.feature.PropertyUiModel;
import org.apache.isis.viewer.wicket.model.mementos.PropertyMemento;
-import lombok.Getter;
import lombok.val;
-public class ScalarPropertyModel extends ScalarModel {
+public class ScalarPropertyModel
+extends ScalarModel
+implements PropertyUiModel {
private static final long serialVersionUID = 1L;
- @Getter private final PropertyMemento propertyMemento;
+ private final PropertyMemento propertyMemento;
/**
* Creates a model representing a property of a parent object, with the
@@ -68,6 +69,16 @@ public class ScalarPropertyModel extends ScalarModel {
getAndStore(parentEntityModel);
}
+ public ScalarPropertyModel copyHaving(
+ EntityModel.Mode mode,
+ EntityModel.RenderingHint renderingHint) {
+ return new ScalarPropertyModel(
+ getParentUiModel(),
+ propertyMemento,
+ mode,
+ renderingHint);
+ }
+
private void getAndStore(final EntityModel parentEntityModel) {
final ObjectMemento parentAdapterMemento = parentEntityModel.getObjectAdapterMemento();
final OneToOneAssociation property = propertyMemento.getProperty(getSpecificationLoader());
@@ -75,21 +86,30 @@ public class ScalarPropertyModel extends ScalarModel {
setObjectFromPropertyIfVisible(ScalarPropertyModel.this, property, parentAdapter);
}
+ private transient OneToOneAssociation property;
+
+ @Override
+ public OneToOneAssociation getMetaModel() {
+ if(property==null) {
+ property = propertyMemento.getProperty(getSpecificationLoader());
+ }
+ return property;
+ }
@Override
public String getName() {
- return getPropertyMemento().getProperty(getSpecificationLoader()).getName();
+ return getMetaModel().getName();
}
@Override
public ObjectSpecification getScalarTypeSpec() {
- ObjectSpecId type = getPropertyMemento().getType();
+ ObjectSpecId type = propertyMemento.getType();
return getSpecificationLoader().lookupBySpecIdElseLoad(type);
}
@Override
public String getIdentifier() {
- return getPropertyMemento().getIdentifier();
+ return propertyMemento.getIdentifier();
}
@Override
@@ -103,9 +123,8 @@ public class ScalarPropertyModel extends ScalarModel {
@Override
public boolean whetherHidden(final Where where) {
final ManagedObject parentAdapter = getParentUiModel().load();
- final OneToOneAssociation property = getPropertyMemento().getProperty(getSpecificationLoader());
try {
- final Consent visibility = property.isVisible(parentAdapter, InteractionInitiatedBy.USER, where);
+ final Consent visibility = getMetaModel().isVisible(parentAdapter, InteractionInitiatedBy.USER, where);
return visibility.isVetoed();
} catch (final Exception ex) {
return true; // will be hidden
@@ -115,9 +134,8 @@ public class ScalarPropertyModel extends ScalarModel {
@Override
public String whetherDisabled(final Where where) {
final ManagedObject parentAdapter = getParentUiModel().load();
- final OneToOneAssociation property = getPropertyMemento().getProperty(getSpecificationLoader());
try {
- final Consent usable = property.isUsable(parentAdapter, InteractionInitiatedBy.USER, where);
+ final Consent usable = getMetaModel().isUsable(parentAdapter, InteractionInitiatedBy.USER, where);
return usable.isAllowed() ? null : usable.getReason();
} catch (final Exception ex) {
return ex.getLocalizedMessage();
@@ -126,7 +144,7 @@ public class ScalarPropertyModel extends ScalarModel {
@Override
public String parseAndValidate(final String proposedPojoAsStr) {
- final OneToOneAssociation property = getPropertyMemento().getProperty(getSpecificationLoader());
+ final OneToOneAssociation property = getMetaModel();
ParseableFacet parseableFacet = property.getFacet(ParseableFacet.class);
if (parseableFacet == null) {
parseableFacet = property.getSpecification().getFacet(ParseableFacet.class);
@@ -151,9 +169,8 @@ public class ScalarPropertyModel extends ScalarModel {
@Override
public String validate(final ManagedObject proposedAdapter) {
final ManagedObject parentAdapter = getParentUiModel().load();
- final OneToOneAssociation property = getPropertyMemento().getProperty(getSpecificationLoader());
try {
- final Consent valid = property.isAssociationValid(parentAdapter, proposedAdapter,
+ final Consent valid = getMetaModel().isAssociationValid(parentAdapter, proposedAdapter,
InteractionInitiatedBy.USER);
return valid.isAllowed() ? null : valid.getReason();
} catch (final Exception ex) {
@@ -163,54 +180,39 @@ public class ScalarPropertyModel extends ScalarModel {
@Override
public boolean isRequired() {
- final FacetHolder facetHolder = getPropertyMemento().getProperty(getSpecificationLoader());
- return isRequired(facetHolder);
+ return isRequired(getMetaModel());
}
@Override
public <T extends Facet> T getFacet(final Class<T> facetType) {
- final FacetHolder facetHolder = getPropertyMemento().getProperty(getSpecificationLoader());
- return facetHolder.getFacet(facetType);
+ return getMetaModel().getFacet(facetType);
}
@Override
public ManagedObject getDefault(
final PendingParameterModel pendingArgs /*not used*/) {
-
- final PropertyMemento propertyMemento = getPropertyMemento();
- final OneToOneAssociation property = propertyMemento
- .getProperty(getSpecificationLoader());
- ManagedObject parentAdapter = getParentUiModel().load();
- return property.getDefault(parentAdapter);
+ val parentAdapter = getParentUiModel().load();
+ return getMetaModel().getDefault(parentAdapter);
}
@Override
public boolean hasChoices() {
- final PropertyMemento propertyMemento = getPropertyMemento();
- final OneToOneAssociation property = propertyMemento.getProperty(getSpecificationLoader());
- return property.hasChoices();
+ return getMetaModel().hasChoices();
}
@Override
public Can<ManagedObject> getChoices(
final PendingParameterModel pendingArgs /*not used on properties*/) {
- final PropertyMemento propertyMemento = getPropertyMemento();
- final OneToOneAssociation property = propertyMemento
- .getProperty(getSpecificationLoader());
- ManagedObject parentAdapter = getParentUiModel().load();
- final Can<ManagedObject> choices = property.getChoices(
+ val parentAdapter = getParentUiModel().load();
+ return getMetaModel().getChoices(
parentAdapter,
InteractionInitiatedBy.USER);
-
- return choices;
}
@Override
public boolean hasAutoComplete() {
- final PropertyMemento propertyMemento = getPropertyMemento();
- final OneToOneAssociation property = propertyMemento.getProperty(getSpecificationLoader());
- return property.hasAutoComplete();
+ return getMetaModel().hasAutoComplete();
}
@Override
@@ -218,25 +220,18 @@ public class ScalarPropertyModel extends ScalarModel {
final PendingParameterModel pendingArgs, /*not used on properties*/
final String searchArg) {
- final PropertyMemento propertyMemento = getPropertyMemento();
- final OneToOneAssociation property = propertyMemento.getProperty(getSpecificationLoader());
- final ManagedObject parentAdapter =
- getParentUiModel().load();
- final Can<ManagedObject> choices =
- property.getAutoComplete(
+ val parentAdapter = getParentUiModel().load();
+ return getMetaModel().getAutoComplete(
parentAdapter,
searchArg,
InteractionInitiatedBy.USER);
- return choices;
}
@Override
public int getAutoCompleteOrChoicesMinLength() {
if (hasAutoComplete()) {
- final PropertyMemento propertyMemento = getPropertyMemento();
- final OneToOneAssociation property = propertyMemento.getProperty(getSpecificationLoader());
- return property.getAutoCompleteMinLength();
+ return getMetaModel().getAutoCompleteMinLength();
} else {
return 0;
}
@@ -244,49 +239,36 @@ public class ScalarPropertyModel extends ScalarModel {
@Override
public String getDescribedAs() {
- final PropertyMemento propertyMemento = getPropertyMemento();
- final OneToOneAssociation property = propertyMemento.getProperty(getSpecificationLoader());
- return property.getDescription();
+ return getMetaModel().getDescription();
}
@Override
public Integer getLength() {
- final PropertyMemento propertyMemento = getPropertyMemento();
- final OneToOneAssociation property = propertyMemento.getProperty(getSpecificationLoader());
- final BigDecimalValueFacet facet = property.getFacet(BigDecimalValueFacet.class);
+ final BigDecimalValueFacet facet = getMetaModel().getFacet(BigDecimalValueFacet.class);
return facet != null? facet.getPrecision(): null;
}
@Override
public Integer getScale() {
- final PropertyMemento propertyMemento = getPropertyMemento();
- final OneToOneAssociation property = propertyMemento.getProperty(getSpecificationLoader());
- final BigDecimalValueFacet facet = property.getFacet(BigDecimalValueFacet.class);
+ final BigDecimalValueFacet facet = getMetaModel().getFacet(BigDecimalValueFacet.class);
return facet != null? facet.getScale(): null;
}
@Override
public int getTypicalLength() {
- final PropertyMemento propertyMemento = getPropertyMemento();
- final OneToOneAssociation property = propertyMemento.getProperty(getSpecificationLoader());
- final TypicalLengthFacet facet = property.getFacet(TypicalLengthFacet.class);
+ final TypicalLengthFacet facet = getMetaModel().getFacet(TypicalLengthFacet.class);
return facet != null? facet.value() : StringValueSemanticsProvider.TYPICAL_LENGTH;
}
@Override
public String getFileAccept() {
- final PropertyMemento propertyMemento = getPropertyMemento();
- final OneToOneAssociation property = propertyMemento.getProperty(getSpecificationLoader());
- final FileAcceptFacet facet = property.getFacet(FileAcceptFacet.class);
+ final FileAcceptFacet facet = getMetaModel().getFacet(FileAcceptFacet.class);
return facet != null? facet.value(): null;
}
public void reset() {
- final OneToOneAssociation property = getPropertyMemento().getProperty(getSpecificationLoader());
-
val parentAdapter = getParentUiModel().load();
-
- setObjectFromPropertyIfVisible(this, property, parentAdapter);
+ setObjectFromPropertyIfVisible(this, getMetaModel(), parentAdapter);
}
@Override
@@ -301,14 +283,13 @@ public class ScalarPropertyModel extends ScalarModel {
@Override
public String toStringOf() {
- return getName() + ": " + getPropertyMemento().toString();
+ return getName() + ": " + propertyMemento.toString();
}
public String getReasonInvalidIfAny() {
- val property = getPropertyMemento().getProperty(getSpecificationLoader());
val adapter = getParentUiModel().load();
val associate = getObject();
- Consent validity = property.isAssociationValid(adapter, associate, InteractionInitiatedBy.USER);
+ Consent validity = getMetaModel().isAssociationValid(adapter, associate, InteractionInitiatedBy.USER);
return validity.isAllowed() ? null : validity.getReason();
}
@@ -318,7 +299,7 @@ public class ScalarPropertyModel extends ScalarModel {
* @return adapter, which may be different from the original (if a {@link ViewModelFacet#isCloneable(Object) cloneable} view model, for example.
*/
public ManagedObject applyValue(ManagedObject adapter) {
- val property = getPropertyMemento().getProperty(getSpecificationLoader());
+ val property = getMetaModel();
//
// previously there was a guard here to only apply changes provided:
@@ -356,14 +337,8 @@ public class ScalarPropertyModel extends ScalarModel {
@Override
protected List<ObjectAction> calcAssociatedActions() {
-
- final EntityModel parentEntityModel1 = this.getParentUiModel();
- final ManagedObject parentAdapter = parentEntityModel1.load();
-
- final OneToOneAssociation oneToOneAssociation =
- this.getPropertyMemento().getProperty(this.getSpecificationLoader());
-
- return ObjectAction.Util.findForAssociation(parentAdapter, oneToOneAssociation);
+ val parentAdapter = getParentUiModel().load();
+ return ObjectAction.Util.findForAssociation(parentAdapter, getMetaModel());
}
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
index 13104d7..bf71ee2 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actions/ActionParametersForm.java
@@ -30,9 +30,9 @@ import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.isis.core.commons.internal.base._Strings;
import org.apache.isis.core.commons.internal.exceptions._Exceptions;
-import org.apache.isis.viewer.common.model.action.form.ActionParameterUiModel;
import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmUiModel;
import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmUiModel.Placement;
+import org.apache.isis.viewer.common.model.feature.ParameterUiModel;
import org.apache.isis.viewer.wicket.model.hints.IsisActionCompletedEvent;
import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
import org.apache.isis.viewer.wicket.model.models.ActionModel;
@@ -152,7 +152,7 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
public void onUpdate(final AjaxRequestTarget target, final ScalarPanelAbstract2 scalarPanelUpdated) {
val actionModel = getActionModel();
- val paramModel = (ActionParameterUiModel)scalarPanelUpdated.getModel();
+ val paramModel = (ParameterUiModel)scalarPanelUpdated.getModel();
final int paramNumberUpdated = paramModel.getNumber();
// only updates subsequent parameter panels starting from (paramNumberUpdated + 1)
final int skipCount = paramNumberUpdated + 1;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java
index e93f2ac..3920af5 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyEditPanel.java
@@ -24,7 +24,6 @@ import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.Model;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.model.models.ScalarPropertyModel;
@@ -32,6 +31,8 @@ import org.apache.isis.viewer.wicket.ui.ComponentType;
import org.apache.isis.viewer.wicket.ui.components.actions.ActionParametersPanel;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
+import lombok.val;
+
/**
* Corresponding component to prompt for action (parameters) is {@link ActionParametersPanel}.
*/
@@ -51,8 +52,10 @@ public class PropertyEditPanel extends PanelAbstract<ScalarPropertyModel> {
public PropertyEditPanel(
final String id,
final ScalarPropertyModel scalarModel) {
- super(id, new ScalarPropertyModel(scalarModel.getParentUiModel(), scalarModel.getPropertyMemento(),
- EntityModel.Mode.EDIT, EntityModel.RenderingHint.REGULAR));
+
+ super(id, scalarModel.copyHaving(
+ EntityModel.Mode.EDIT,
+ EntityModel.RenderingHint.REGULAR));
buildGui(scalarModel);
}
@@ -81,22 +84,19 @@ public class PropertyEditPanel extends PanelAbstract<ScalarPropertyModel> {
WebMarkupContainer header = addHeader();
- {
- getComponentFactoryRegistry().addOrReplaceComponent(this, ComponentType.PROPERTY_EDIT_FORM, getScalarModel());
- getComponentFactoryRegistry().addOrReplaceComponent(header, ComponentType.ENTITY_ICON_AND_TITLE, scalarModel.getParentUiModel());
-
- final OneToOneAssociation property = getScalarModel().getPropertyMemento().getProperty(scalarModel.getSpecificationLoader());
- final String propertyName = property.getName();
- final Label label = new Label(ID_PROPERTY_NAME, Model.of(propertyName));
+ getComponentFactoryRegistry().addOrReplaceComponent(this, ComponentType.PROPERTY_EDIT_FORM, getScalarModel());
+ getComponentFactoryRegistry().addOrReplaceComponent(header, ComponentType.ENTITY_ICON_AND_TITLE, scalarModel.getParentUiModel());
- NamedFacet namedFacet = property.getFacet(NamedFacet.class);
- if (namedFacet != null) {
- label.setEscapeModelStrings(namedFacet.escaped());
- }
-
- header.add(label);
+ val property = getScalarModel().getMetaModel();
+ val propertyName = property.getName();
+ val label = new Label(ID_PROPERTY_NAME, Model.of(propertyName));
+ val namedFacet = property.getFacet(NamedFacet.class);
+ if (namedFacet != null) {
+ label.setEscapeModelStrings(namedFacet.escaped());
}
+
+ header.add(label);
}
private WebMarkupContainer addHeader() {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/propertyheader/PropertyEditPromptHeaderPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/propertyheader/PropertyEditPromptHeaderPanel.java
index e7e6768..3042a93 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/propertyheader/PropertyEditPromptHeaderPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/propertyheader/PropertyEditPromptHeaderPanel.java
@@ -22,7 +22,6 @@ import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.model.IModel;
import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;
-import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
import org.apache.isis.viewer.wicket.model.models.ScalarPropertyModel;
import org.apache.isis.viewer.wicket.ui.ComponentType;
@@ -50,12 +49,10 @@ public class PropertyEditPromptHeaderPanel extends PanelAbstract<ScalarPropertyM
@Override
public String getObject() {
- final OneToOneAssociation property = model.getPropertyMemento().getProperty(getSpecificationLoader());
- return property.getName();
+ return model.getName();
}
});
- final OneToOneAssociation property = model.getPropertyMemento().getProperty(getSpecificationLoader());
- final NamedFacet namedFacet = property.getFacet(NamedFacet.class);
+ val namedFacet = model.getMetaModel().getFacet(NamedFacet.class);
if(namedFacet != null) {
label.setEscapeModelStrings(namedFacet.escaped());
}