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/04 13:45:12 UTC
[isis] 02/03: ISIS-2319: minor refactoring
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
commit 5f9d1f87169143e38fc57a632464446bd57f3f6f
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon May 4 15:19:05 2020 +0200
ISIS-2319: minor refactoring
---
.../wicket/model/models/ActionArgumentModel.java | 5 +--
.../viewer/wicket/model/models/ActionModel.java | 16 ++++++----
.../components/actions/ActionParametersForm.java | 28 ++++++----------
.../components/scalars/ScalarPanelAbstract2.java | 37 +++++++---------------
.../scalars/ScalarPanelSelect2Abstract.java | 2 +-
.../scalars/ScalarPanelTextFieldAbstract.java | 14 ++++----
.../isisapplib/IsisBlobOrClobPanelAbstract.java | 8 ++---
.../components/scalars/primitive/BooleanPanel.java | 14 ++++----
.../scalars/reference/ReferencePanel.java | 16 +++++-----
.../valuechoices/ValueChoicesSelect2Panel.java | 12 +++----
10 files changed, 65 insertions(+), 87 deletions(-)
diff --git a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java
index 2b5dd55..6f46c38 100644
--- a/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionArgumentModel.java
@@ -20,7 +20,6 @@ package org.apache.isis.viewer.wicket.model.models;
import org.apache.wicket.model.IModel;
-import org.apache.isis.core.commons.collections.Can;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
@@ -29,9 +28,8 @@ import org.apache.isis.viewer.wicket.model.mementos.ActionParameterMemento;
public interface ActionArgumentModel extends IModel<ManagedObject> {
ActionParameterMemento getParameterMemento();
+ String getCssClass();
- void setActionArgsHint(Can<ManagedObject> arguments);
-
// -- SHORTCUTS
default ObjectActionParameter getActionParameter(SpecificationLoader specificationLoader) {
@@ -42,5 +40,4 @@ public interface ActionArgumentModel extends IModel<ManagedObject> {
return getParameterMemento().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 7cea4c1..e9e5003 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
@@ -660,12 +660,13 @@ public class ActionModel extends BookmarkableModel<ManagedObject> implements For
}
@Value(staticConstructor = "of")
- public static class ActionArgumentModelAndVisibilityConsent {
+ public static class ActionArgumentModelAndConsents {
final ActionArgumentModel actionArgumentModel;
final Consent visibilityConsent;
+ final Consent usabilityConsent;
}
- public Stream<ActionArgumentModelAndVisibilityConsent> streamActionArgumentModels() {
+ public Stream<ActionArgumentModelAndConsents> streamActionArgumentModels() {
val specificationLoader = getSpecificationLoader();
val targetAdapter = this.getTargetAdapter();
@@ -676,13 +677,16 @@ public class ActionModel extends BookmarkableModel<ManagedObject> implements For
return argCache().streamActionArgumentModels()
.map(actionArgumentModel->{
- actionArgumentModel.setActionArgsHint(actionArgsHint);
-
// visibility
val visibilityConsent = actionArgumentModel.getActionParameter(specificationLoader)
- .isVisible(realTargetAdapter, Can.empty(), InteractionInitiatedBy.USER);
+ .isVisible(realTargetAdapter, actionArgsHint, InteractionInitiatedBy.USER);
+
+ // usability
+ val usabilityConsent = actionArgumentModel.getActionParameter(specificationLoader)
+ .isUsable(realTargetAdapter, actionArgsHint, InteractionInitiatedBy.USER);
- return ActionArgumentModelAndVisibilityConsent.of(actionArgumentModel, visibilityConsent);
+ return ActionArgumentModelAndConsents.of(
+ actionArgumentModel, visibilityConsent, usabilityConsent);
});
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 4aa2738..693d9e4 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
@@ -29,8 +29,6 @@ import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.isis.core.commons.internal.exceptions._Exceptions;
-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.decorator.confirm.ConfirmUiModel;
import org.apache.isis.viewer.common.model.decorator.confirm.ConfirmUiModel.Placement;
import org.apache.isis.viewer.wicket.model.hints.IsisActionCompletedEvent;
@@ -75,10 +73,11 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
paramPanels.clear();
actionModel.streamActionArgumentModels()
- .forEach(tuple->{
+ .forEach(argsAndConsents->{
- val actionArgumentModel = tuple.getActionArgumentModel();
- val visibilityConsent = tuple.getVisibilityConsent();
+ val actionArgumentModel = argsAndConsents.getActionArgumentModel();
+ val visibilityConsent = argsAndConsents.getVisibilityConsent();
+ val usabilityConsent = argsAndConsents.getVisibilityConsent();
val container = new WebMarkupContainer(repeatingView.newChildId());
repeatingView.add(container);
@@ -87,6 +86,7 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
.ifPresent(paramPanel->{
paramPanels.add(paramPanel);
paramPanel.setVisible(visibilityConsent.isAllowed());
+ //paramPanel.onInitializeReadonly(usabilityConsent.getReason());
});
});
@@ -104,23 +104,15 @@ class ActionParametersForm extends PromptFormAbstract<ActionModel> {
.addOrReplaceComponent(container, ComponentType.SCALAR_NAME_AND_VALUE, model);
if(component instanceof MarkupContainer) {
- final MarkupContainer markupContainer = (MarkupContainer) component;
-
- // TODO: copy-n-paste of ScalarModel.Kind#getCssClass(ScalarModel), so could perhaps unify
- final ObjectActionParameter actionParameter = model.getActionParameter(getSpecificationLoader());
-
- final ObjectAction action = actionParameter.getAction();
- final String objectSpecId = action.getOnType().getSpecId().asString().replace(".", "-");
- final String parmId = actionParameter.getId();
-
- final String css = "isis-" + objectSpecId + "-" + action.getId() + "-" + parmId;
-
+ val markupContainer = (MarkupContainer) component;
+ val css = model.getCssClass();
CssClassAppender.appendCssClassTo(markupContainer, CssClassAppender.asCssStyle(css));
}
- final ScalarPanelAbstract2 paramPanel =
+
+ val paramPanel =
component instanceof ScalarPanelAbstract2
? (ScalarPanelAbstract2) component
- : null;
+ : null;
if (paramPanel != null) {
paramPanel.setOutputMarkupId(true);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
index 3027f79..e1e9eba 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
@@ -164,7 +164,7 @@ implements ScalarModelSubscriber2 {
if(usabilityAfter) {
onEnabled(target);
} else {
- onDisabled(usabilityConsent.getReason(), target);
+ onNotEditable(usabilityConsent.getReason(), target);
}
// even if now invisible or unusable, we recalculate args and ensure compatible
@@ -312,15 +312,15 @@ implements ScalarModelSubscriber2 {
final boolean mustBeEditable = scalarModel.mustBeEditable();
if (disableReasonIfAny != null) {
if(mustBeEditable) {
- onInitializeWhenViewMode();
+ onInitializeNotEditable();
} else {
- onInitializeWhenDisabled(disableReasonIfAny);
+ onInitializeReadonly(disableReasonIfAny);
}
} else {
if (scalarModel.isViewMode()) {
- onInitializeWhenViewMode();
+ onInitializeNotEditable();
} else {
- onInitializeWhenEnabled();
+ onInitializeEditable();
}
}
@@ -453,43 +453,28 @@ implements ScalarModelSubscriber2 {
/**
* The widget starts off in read-only, but should be possible to activate into edit mode.
- *
- * <p>
- * TODO: perhaps rename to 'notEditable'
- * </p>
*/
- protected void onInitializeWhenViewMode() {
+ protected void onInitializeNotEditable() {
}
/**
* The widget starts off read-only, and CANNOT be activated into edit mode.
- *
- * <p>
- * TODO: perhaps rename to 'readOnly'
- * </p>
*/
- protected void onInitializeWhenDisabled(final String disableReason) {
+ protected void onInitializeReadonly(final String disableReason) {
}
/**
* The widget starts off immediately editable.
- *
- * <p>
- * TODO: perhaps rename to 'editable'.
- * </p>
*/
- protected void onInitializeWhenEnabled() {
+ protected void onInitializeEditable() {
}
/**
* The widget is no longer editable.
- *
- * <p>
- * TODO: perhaps rename to 'onNotEditable', because the semantics here aren't the same as 'onInitializeWhenDisabled'
- * (the latter is never editable).
- * </p>
+ * @apiNote
+ * the semantics here aren't the same as 'onInitializeWhenDisabled' (the latter is never editable).
*/
- protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+ protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
}
/**
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelSelect2Abstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelSelect2Abstract.java
index ca63480..ca03d4b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelSelect2Abstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelSelect2Abstract.java
@@ -159,7 +159,7 @@ public abstract class ScalarPanelSelect2Abstract extends ScalarPanelAbstract2 {
}
@Override
- protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+ protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
setEnabled(false);
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
index 26081cd..1dc37a3 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldAbstract.java
@@ -321,8 +321,8 @@ implements TextFieldValueModel.ScalarModelProvider {
@Override
- protected void onInitializeWhenViewMode() {
- super.onInitializeWhenViewMode();
+ protected void onInitializeNotEditable() {
+ super.onInitializeNotEditable();
textField.setEnabled(false);
addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(textField);
@@ -331,8 +331,8 @@ implements TextFieldValueModel.ScalarModelProvider {
}
@Override
- protected void onInitializeWhenDisabled(final String disableReason) {
- super.onInitializeWhenDisabled(disableReason);
+ protected void onInitializeReadonly(final String disableReason) {
+ super.onInitializeReadonly(disableReason);
textField.setEnabled(false);
addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(textField);
@@ -343,15 +343,15 @@ implements TextFieldValueModel.ScalarModelProvider {
}
@Override
- protected void onInitializeWhenEnabled() {
- super.onInitializeWhenEnabled();
+ protected void onInitializeEditable() {
+ super.onInitializeEditable();
textField.setEnabled(true);
inlinePromptLink.setEnabled(true);
clearTooltip();
}
@Override
- protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+ protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
textField.setEnabled(false);
inlinePromptLink.setEnabled(false);
setTooltip(disableReason);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
index bd9b2c6..18aafdf 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
@@ -190,17 +190,17 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
// //////////////////////////////////////
@Override
- protected void onInitializeWhenViewMode() {
+ protected void onInitializeNotEditable() {
updateRegularFormComponents(InputFieldVisibility.VISIBLE, InputFieldEditability.NOT_EDITABLE, null, null);
}
@Override
- protected void onInitializeWhenDisabled(final String disableReason) {
+ protected void onInitializeReadonly(final String disableReason) {
updateRegularFormComponents(InputFieldVisibility.VISIBLE, InputFieldEditability.NOT_EDITABLE, null, null);
}
@Override
- protected void onInitializeWhenEnabled() {
+ protected void onInitializeEditable() {
updateRegularFormComponents(InputFieldVisibility.VISIBLE, InputFieldEditability.EDITABLE, null, null);
}
@@ -236,7 +236,7 @@ public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> e
}
@Override
- protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+ protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
updateRegularFormComponents(InputFieldVisibility.VISIBLE, InputFieldEditability.NOT_EDITABLE, disableReason, target);
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
index cb0b520..57cff91 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BooleanPanel.java
@@ -207,20 +207,20 @@ public class BooleanPanel extends ScalarPanelAbstract2 {
}
@Override
- protected void onInitializeWhenEnabled() {
- super.onInitializeWhenEnabled();
+ protected void onInitializeEditable() {
+ super.onInitializeEditable();
checkBox.setEnabled(true);
}
@Override
- protected void onInitializeWhenViewMode() {
- super.onInitializeWhenViewMode();
+ protected void onInitializeNotEditable() {
+ super.onInitializeNotEditable();
checkBox.setEnabled(false);
}
@Override
- protected void onInitializeWhenDisabled(final String disableReason) {
- super.onInitializeWhenDisabled(disableReason);
+ protected void onInitializeReadonly(final String disableReason) {
+ super.onInitializeReadonly(disableReason);
checkBox.setEnabled(false);
final AttributeModifier title = new AttributeModifier("title",
Model.of(disableReason != null ? disableReason : ""));
@@ -228,7 +228,7 @@ public class BooleanPanel extends ScalarPanelAbstract2 {
}
@Override
- protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
+ protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
checkBox.setEnabled(false);
final AttributeModifier title = new AttributeModifier("title",
Model.of(disableReason != null ? disableReason : ""));
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
index d0dda79..63f4de7 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
@@ -194,22 +194,22 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract {
// //////////////////////////////////////
@Override
- protected void onInitializeWhenEnabled() {
- super.onInitializeWhenEnabled();
+ protected void onInitializeEditable() {
+ super.onInitializeEditable();
entityLink.setEnabled(true);
syncWithInput();
}
@Override
- protected void onInitializeWhenViewMode() {
- super.onInitializeWhenViewMode();
+ protected void onInitializeNotEditable() {
+ super.onInitializeNotEditable();
entityLink.setEnabled(false);
syncWithInput();
}
@Override
- protected void onInitializeWhenDisabled(final String disableReason) {
- super.onInitializeWhenDisabled(disableReason);
+ protected void onInitializeReadonly(final String disableReason) {
+ super.onInitializeReadonly(disableReason);
syncWithInput();
val entityLinkModel = (EntityModel) entityLink.getModel();
entityLinkModel.toViewMode();
@@ -218,8 +218,8 @@ public class ReferencePanel extends ScalarPanelSelect2Abstract {
}
@Override
- protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
- super.onDisabled(disableReason, target);
+ protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
+ super.onNotEditable(disableReason, target);
entityLink.setEnabled(false);
entityLink.add(new AttributeModifier("title", Model.of(disableReason)));
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
index ebcc158..0bf0e3e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/valuechoices/ValueChoicesSelect2Panel.java
@@ -102,13 +102,13 @@ public class ValueChoicesSelect2Panel extends ScalarPanelSelect2Abstract {
@Override
- protected void onInitializeWhenViewMode() {
+ protected void onInitializeNotEditable() {
// View: Read only
select2.setEnabled(false);
}
@Override
- protected void onInitializeWhenEnabled() {
+ protected void onInitializeEditable() {
// Edit: read/write
select2.setEnabled(true);
@@ -116,8 +116,8 @@ public class ValueChoicesSelect2Panel extends ScalarPanelSelect2Abstract {
}
@Override
- protected void onInitializeWhenDisabled(final String disableReason) {
- super.onInitializeWhenDisabled(disableReason);
+ protected void onInitializeReadonly(final String disableReason) {
+ super.onInitializeReadonly(disableReason);
setTitleAttribute(disableReason);
select2.setEnabled(false);
}
@@ -137,8 +137,8 @@ public class ValueChoicesSelect2Panel extends ScalarPanelSelect2Abstract {
}
@Override
- protected void onDisabled(final String disableReason, final AjaxRequestTarget target) {
- super.onDisabled(disableReason, target);
+ protected void onNotEditable(final String disableReason, final AjaxRequestTarget target) {
+ super.onNotEditable(disableReason, target);
setTitleAttribute(disableReason);
select2.setEnabled(false);