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 2022/03/03 15:18:17 UTC
[isis] branch master updated: ISIS-2877: typesafe ScalarPanelWithFormFieldAbstract
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 be03f3f ISIS-2877: typesafe ScalarPanelWithFormFieldAbstract
be03f3f is described below
commit be03f3f37d258f285cc45512182a0521f4a058ad
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Mar 3 16:18:08 2022 +0100
ISIS-2877: typesafe ScalarPanelWithFormFieldAbstract
---
.../scalars/ScalarPanelTextFieldAbstract.java | 20 ++++++------
.../scalars/ScalarPanelTextFieldNumeric.java | 6 ++--
.../ScalarPanelTextFieldWithTemporalPicker.java | 2 +-
.../scalars/ScalarPanelWithFormFieldAbstract.java | 16 +++++++---
.../blobclob/IsisBlobOrClobPanelAbstract.java | 36 ++++------------------
.../components/scalars/blobclob/IsisBlobPanel.java | 2 +-
.../components/scalars/blobclob/IsisClobPanel.java | 5 +--
.../scalars/passwd/IsisPasswordPanel.java | 2 +-
.../components/scalars/primitive/BooleanPanel.java | 4 +--
9 files changed, 37 insertions(+), 56 deletions(-)
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 87e1648..4d8cd2d 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
@@ -62,13 +62,11 @@ import lombok.val;
* This implementation is for panels that use a textfield/text area.
*/
public abstract class ScalarPanelTextFieldAbstract<T extends Serializable>
-extends ScalarPanelWithFormFieldAbstract
+extends ScalarPanelWithFormFieldAbstract<T>
implements TextFieldValueModel.ScalarModelProvider {
private static final long serialVersionUID = 1L;
- protected final Class<T> cls;
-
private AbstractTextComponent<T> formField;
@Getter(value = AccessLevel.PROTECTED)
@@ -77,17 +75,16 @@ implements TextFieldValueModel.ScalarModelProvider {
protected ScalarPanelTextFieldAbstract(
final String id,
final ScalarModel scalarModel,
- final Class<T> cls) {
- this(id, scalarModel, cls, TextFieldVariant.SINGLE_LINE);
+ final Class<T> type) {
+ this(id, scalarModel, type, TextFieldVariant.SINGLE_LINE);
}
protected ScalarPanelTextFieldAbstract(
final String id,
final ScalarModel scalarModel,
- final Class<T> cls,
+ final Class<T> type,
final TextFieldVariant textFieldVariant) {
- super(id, scalarModel);
- this.cls = cls;
+ super(id, scalarModel, type);
this.textFieldVariant = textFieldVariant;
}
@@ -113,11 +110,12 @@ implements TextFieldValueModel.ScalarModelProvider {
* TextField, with converter.
*/
protected AbstractTextComponent<T> createTextField(final String id) {
+ val converter = getConverter(scalarModel());
return getTextFieldVariant().isSingleLine()
? Wkt.textFieldWithConverter(
- id, newTextFieldValueModel(), cls, getConverter(getModel()))
+ id, newTextFieldValueModel(), type, converter)
: setRowsAndMaxLengthAttributesOn(Wkt.textAreaWithConverter(
- id, newTextFieldValueModel(), cls, getConverter(getModel())));
+ id, newTextFieldValueModel(), type, converter));
}
protected final TextFieldValueModel<T> newTextFieldValueModel() {
@@ -208,7 +206,7 @@ implements TextFieldValueModel.ScalarModelProvider {
if(maxLength != null) {
formComponent.add(new AttributeModifier("maxlength", Model.of("" + maxLength)));
- if(cls.equals(String.class)) {
+ if(type.equals(String.class)) {
formComponent.add(StringValidator.maximumLength(maxLength));
}
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java
index 1158102..53147c3 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldNumeric.java
@@ -38,15 +38,15 @@ extends ScalarPanelTextFieldWithValueSemantics<T> {
public ScalarPanelTextFieldNumeric(
final String id,
final ScalarModel scalarModel,
- final Class<T> cls) {
- super(id, scalarModel, cls);
+ final Class<T> type) {
+ super(id, scalarModel, type);
}
@Override
protected final Component createComponentForCompact() {
val label = Wkt.labelAddWithConverter(
getCompactFragment(CompactType.SPAN),
- ID_SCALAR_IF_COMPACT, newTextFieldValueModel(), cls, getConverter(scalarModel()));
+ ID_SCALAR_IF_COMPACT, newTextFieldValueModel(), type, getConverter(scalarModel()));
label.setEnabled(false);
return label;
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithTemporalPicker.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithTemporalPicker.java
index 83d29ab..166c5e1 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithTemporalPicker.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithTemporalPicker.java
@@ -48,7 +48,7 @@ extends ScalarPanelTextFieldWithValueSemantics<T> {
@Override
protected final TextField<T> createTextField(final String id) {
return new TextFieldWithDateTimePicker<T>(
- super.getCommonContext(), id, newTextFieldValueModel(), cls, getConverter(scalarModel()));
+ super.getCommonContext(), id, newTextFieldValueModel(), type, getConverter(scalarModel()));
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelWithFormFieldAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelWithFormFieldAbstract.java
index 2cf2cc7..36e3ca8 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelWithFormFieldAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelWithFormFieldAbstract.java
@@ -41,13 +41,19 @@ import org.apache.isis.viewer.wicket.ui.util.Wkt;
import lombok.val;
-public abstract class ScalarPanelWithFormFieldAbstract
+public abstract class ScalarPanelWithFormFieldAbstract<T>
extends ScalarPanelAbstract {
private static final long serialVersionUID = 1L;
- protected ScalarPanelWithFormFieldAbstract(final String id, final ScalarModel scalarModel) {
+ protected final Class<T> type;
+
+ protected ScalarPanelWithFormFieldAbstract(
+ final String id,
+ final ScalarModel scalarModel,
+ final Class<T> type) {
super(id, scalarModel);
+ this.type = type;
}
@Override
@@ -57,14 +63,14 @@ extends ScalarPanelAbstract {
// -- FORM COMPONENT
- private FormComponent<?> formComponent;
+ private FormComponent<T> formComponent;
@Nullable
- protected final FormComponent<?> getFormComponent() { return formComponent; }
+ protected final FormComponent<T> getFormComponent() { return formComponent; }
/**
* Builds the component to render the form field.
*/
- protected abstract FormComponent<?> createFormComponent(ScalarModel scalarModel);
+ protected abstract FormComponent<T> createFormComponent(ScalarModel scalarModel);
// -- REGULAR
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/blobclob/IsisBlobOrClobPanelAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/blobclob/IsisBlobOrClobPanelAbstract.java
index f12adad..18eae98 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/blobclob/IsisBlobOrClobPanelAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/blobclob/IsisBlobOrClobPanelAbstract.java
@@ -51,7 +51,7 @@ import lombok.val;
import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.fileinput.BootstrapFileInputField;
public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType>
-extends ScalarPanelWithFormFieldAbstract {
+extends ScalarPanelWithFormFieldAbstract<T> {
private static final long serialVersionUID = 1L;
@@ -73,34 +73,10 @@ extends ScalarPanelWithFormFieldAbstract {
EDITABLE, NOT_EDITABLE
}
-// @Override
-// protected FormGroup createComponentForRegular() {
-//
-// val friendlyNameModel = LambdaModel.of(()->getModel().getFriendlyName());
-//
-// fileUploadField = createFileUploadField(ID_SCALAR_VALUE);
-// fileUploadField.setLabel(friendlyNameModel);
-//
-// final FormGroup scalarIfRegularFormGroup = new FormGroup(ID_SCALAR_IF_REGULAR, fileUploadField);
-// scalarIfRegularFormGroup.add(fileUploadField);
-//
-// Wkt.labelAdd(scalarIfRegularFormGroup, ID_SCALAR_NAME, friendlyNameModel);
-//
-// wicketImage = asWicketImage(ID_IMAGE);
-// if(wicketImage != null) {
-// scalarIfRegularFormGroup.addOrReplace(wicketImage);
-// } else {
-// Components.permanentlyHide(scalarIfRegularFormGroup, ID_IMAGE);
-// }
-//
-// updateFileNameLabel(ID_FILE_NAME, scalarIfRegularFormGroup);
-// updateDownloadLink(ID_SCALAR_IF_REGULAR_DOWNLOAD, scalarIfRegularFormGroup);
-//
-// return scalarIfRegularFormGroup;
-// }
-
+ // generic type mismatch; no issue as long as we don't use conversion
+ @SuppressWarnings({ "unchecked", "rawtypes" })
@Override
- protected FormComponent<?> createFormComponent(final ScalarModel scalarModel) {
+ protected FormComponent createFormComponent(final ScalarModel scalarModel) {
fileUploadField = createFileUploadField(ID_SCALAR_VALUE);
return fileUploadField;
}
@@ -235,8 +211,8 @@ extends ScalarPanelWithFormFieldAbstract {
return Optional.ofNullable((T)pojo);
}
- public IsisBlobOrClobPanelAbstract(final String id, final ScalarModel scalarModel) {
- super(id, scalarModel);
+ protected IsisBlobOrClobPanelAbstract(final String id, final ScalarModel scalarModel, final Class<T> type) {
+ super(id, scalarModel, type);
}
private void updateRegularFormComponents(
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/blobclob/IsisBlobPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/blobclob/IsisBlobPanel.java
index 43a5062..9f27f73 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/blobclob/IsisBlobPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/blobclob/IsisBlobPanel.java
@@ -36,7 +36,7 @@ public class IsisBlobPanel extends IsisBlobOrClobPanelAbstract<Blob> {
private static final long serialVersionUID = 1L;
public IsisBlobPanel(final String id, final ScalarModel model) {
- super(id, model);
+ super(id, model, Blob.class);
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/blobclob/IsisClobPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/blobclob/IsisClobPanel.java
index 833fabe..f6c5aca 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/blobclob/IsisClobPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/blobclob/IsisClobPanel.java
@@ -34,7 +34,8 @@ import org.apache.isis.viewer.wicket.model.models.ScalarModel;
* Panel for rendering scalars of type {@link Clob Isis' applib.Clob}.
*
* <p>
- * TODO: for now, this only handles CLOBs encoded as UTF-8. One option might be to 'guess' the character encoding, eg akin to cpdetector?
+ * TODO: for now, this only handles CLOBs encoded as UTF-8.
+ * One option might be to 'guess' the character encoding, eg akin to cpdetector?
* </p>
*/
public class IsisClobPanel extends IsisBlobOrClobPanelAbstract<Clob> {
@@ -44,7 +45,7 @@ public class IsisClobPanel extends IsisBlobOrClobPanelAbstract<Clob> {
private static final Charset CHARSET = StandardCharsets.UTF_8;
public IsisClobPanel(final String id, final ScalarModel model) {
- super(id, model);
+ super(id, model, Clob.class);
}
@Override
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/passwd/IsisPasswordPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/passwd/IsisPasswordPanel.java
index 07aae58..33ba480 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/passwd/IsisPasswordPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/passwd/IsisPasswordPanel.java
@@ -40,7 +40,7 @@ extends ScalarPanelTextFieldWithValueSemantics<Password> {
@Override
protected AbstractTextComponent<Password> createTextField(final String id) {
return Wkt.passwordFieldWithConverter(
- id, newTextFieldValueModel(), cls, getConverter(getModel()));
+ id, newTextFieldValueModel(), type, getConverter(getModel()));
}
}
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 8911319..df8cf3e 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
@@ -43,14 +43,14 @@ import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.checkboxx.Che
* Panel for rendering scalars of type {@link Boolean} or <tt>boolean</tt>.
*/
public class BooleanPanel
-extends ScalarPanelWithFormFieldAbstract {
+extends ScalarPanelWithFormFieldAbstract<Boolean> {
private static final long serialVersionUID = 1L;
private CheckBoxX checkBox;
public BooleanPanel(final String id, final ScalarModel scalarModel) {
- super(id, scalarModel);
+ super(id, scalarModel, Boolean.class);
}
@Override