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/11/18 08:50:29 UTC
[isis] branch master updated: ISIS-2882: wire up value-semantics for Character- and UUID scalar-panels
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 6a6d799 ISIS-2882: wire up value-semantics for Character- and UUID scalar-panels
6a6d799 is described below
commit 6a6d79991e09bc2f4a8b0415e34e5b2cca0c67a3
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Nov 18 09:50:17 2021 +0100
ISIS-2882: wire up value-semantics for Character- and UUID scalar-panels
---
.../metamodel/commons/ScalarRepresentation.java | 2 +-
.../valuesemantics/UUIDValueSemantics.java | 5 +-
.../model/converter/CharacterConverterWkt.java} | 22 ++---
.../wicket/model/converter/UuidConverterWkt.java} | 26 +++---
.../scalars/ScalarPanelTextFieldAbstract.java | 95 +++++++-------------
.../ScalarPanelTextFieldDatePickerAbstract.java | 17 +++-
.../scalars/ScalarPanelTextFieldNumeric.java | 24 +----
.../ScalarPanelTextFieldParseableAbstract.java | 38 ++++----
.../components/scalars/bookmark/BookmarkPanel.java | 1 -
.../scalars/jdk8time/Jdk8LocalDatePanel.java | 3 +-
.../scalars/jdk8time/Jdk8LocalDateTimePanel.java | 13 +--
.../scalars/jdk8time/Jdk8OffsetDateTimePanel.java | 10 ---
.../scalars/jdkdates/JavaSqlDatePanel.java | 3 +-
.../scalars/jdkdates/JavaSqlTimestampPanel.java | 3 +-
.../scalars/jdkmath/JavaMathBigDecimalPanel.java | 8 --
.../scalars/jdkmath/JavaMathBigIntegerPanel.java | 8 --
.../scalars/jodatime/JodaDateTimePanel.java | 12 +--
.../scalars/jodatime/JodaLocalDatePanel.java | 3 +-
.../scalars/jodatime/JodaLocalDateTimePanel.java | 13 +--
.../scalars/jodatime/JodaLocalTimePanel.java | 17 +++-
.../scalars/passwd/IsisPasswordPanel.java | 11 ++-
.../ui/components/scalars/primitive/BytePanel.java | 8 --
.../scalars/primitive/CharacterPanel.java | 17 ++--
.../components/scalars/primitive/DoublePanel.java | 11 +--
.../components/scalars/primitive/FloatPanel.java | 8 --
.../components/scalars/primitive/IntegerPanel.java | 8 --
.../ui/components/scalars/primitive/LongPanel.java | 11 +--
.../components/scalars/primitive/ShortPanel.java | 11 +--
.../scalars/string/MultiLineStringPanel.java | 2 +-
.../ui/components/scalars/uuid/UuidConverter.java | 63 -------------
.../ui/components/scalars/uuid/UuidPanel.java | 25 +++---
.../ui/components/scalars/uuid/UuidTextField.java | 56 ------------
.../scalars/value/compound/ValueCompoundPanel.java | 2 +-
.../org/apache/isis/viewer/wicket/ui/util/Wkt.java | 60 +++++++++----
.../scalars/uuid/UuidConverterTest_roundtrip.java | 100 +++++++++++++++------
35 files changed, 281 insertions(+), 435 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/ScalarRepresentation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/ScalarRepresentation.java
index d24fa3b..b4a5d4b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/ScalarRepresentation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/commons/ScalarRepresentation.java
@@ -30,7 +30,7 @@ public enum ScalarRepresentation {
* Editing (text-parsing) mode, corresponds to 'regular' UI components.
* <p>
* In case of value-types, indicates that for value-type to {@link String} conversion,
- * a {@link Parser} is required.
+ * and vice versa, a {@link Parser} is required.
*/
EDITING,
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
index ee2dbeb..2f24f0a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/UUIDValueSemantics.java
@@ -24,10 +24,10 @@ import javax.inject.Named;
import org.springframework.stereotype.Component;
-import org.apache.isis.applib.adapters.ValueSemanticsAbstract;
import org.apache.isis.applib.adapters.EncoderDecoder;
import org.apache.isis.applib.adapters.Parser;
import org.apache.isis.applib.adapters.Renderer;
+import org.apache.isis.applib.adapters.ValueSemanticsAbstract;
import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.ValueType;
@@ -97,4 +97,7 @@ implements
return 36;
}
+ // private static final Pattern pattern = Pattern.compile(
+ // "[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}");
+
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/bookmark/BookmarkPanel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/CharacterConverterWkt.java
similarity index 62%
copy from viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/bookmark/BookmarkPanel.java
copy to viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/CharacterConverterWkt.java
index 37dbef6..12332da 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/bookmark/BookmarkPanel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/CharacterConverterWkt.java
@@ -16,22 +16,22 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.viewer.wicket.ui.components.scalars.bookmark;
+package org.apache.isis.viewer.wicket.model.converter;
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldParseableAbstract;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
-/**
- * Panel for rendering scalars of type {@link Bookmark}.
- */
-public class BookmarkPanel extends ScalarPanelTextFieldParseableAbstract {
+import lombok.NonNull;
- private static final long serialVersionUID = 1L;
+public class CharacterConverterWkt
+extends ConverterBasedOnValueSemantics<Character> {
+ private static final long serialVersionUID = 1L;
- public BookmarkPanel(final String id, final ScalarModel scalarModel) {
- super(id, scalarModel);
+ public CharacterConverterWkt(
+ final @NonNull ObjectFeature objFeature,
+ final @NonNull ScalarRepresentation scalarRepresentation) {
+ super(objFeature, scalarRepresentation);
}
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/bookmark/BookmarkPanel.java b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/UuidConverterWkt.java
similarity index 62%
copy from viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/bookmark/BookmarkPanel.java
copy to viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/UuidConverterWkt.java
index 37dbef6..2186fc7 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/bookmark/BookmarkPanel.java
+++ b/viewers/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/converter/UuidConverterWkt.java
@@ -16,22 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.viewer.wicket.ui.components.scalars.bookmark;
+package org.apache.isis.viewer.wicket.model.converter;
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldParseableAbstract;
+import java.util.UUID;
-/**
- * Panel for rendering scalars of type {@link Bookmark}.
- */
-public class BookmarkPanel extends ScalarPanelTextFieldParseableAbstract {
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
- private static final long serialVersionUID = 1L;
+import lombok.NonNull;
+public class UuidConverterWkt
+extends ConverterBasedOnValueSemantics<UUID> {
+
+ private static final long serialVersionUID = 1L;
- public BookmarkPanel(final String id, final ScalarModel scalarModel) {
- super(id, scalarModel);
+ public UuidConverterWkt(
+ final @NonNull ObjectFeature objFeature,
+ final @NonNull ScalarRepresentation scalarRepresentation) {
+ super(objFeature, scalarRepresentation);
}
-}
+}
\ No newline at end of file
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 3cfc9d0..80f85fb 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
@@ -25,11 +25,8 @@ import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.MarkupContainer;
import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.behavior.Behavior;
-import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.AbstractTextComponent;
-import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
@@ -39,11 +36,13 @@ import org.apache.wicket.validation.IValidator;
import org.apache.wicket.validation.ValidationError;
import org.apache.isis.commons.internal.base._Casts;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
import org.apache.isis.core.metamodel.objectmanager.ObjectManager;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.core.metamodel.spec.ManagedObjects;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.core.runtime.context.IsisAppCommonContext;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.model.util.CommonContextUtils;
@@ -52,6 +51,8 @@ import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
import org.apache.isis.viewer.wicket.ui.util.Tooltips;
import org.apache.isis.viewer.wicket.ui.util.Wkt;
+import lombok.AccessLevel;
+import lombok.Getter;
import lombok.NonNull;
import lombok.val;
@@ -79,66 +80,45 @@ implements TextFieldValueModel.ScalarModelProvider {
protected final Class<T> cls;
- protected static class ReplaceDisabledTagWithReadonlyTagBehaviour extends Behavior {
- private static final long serialVersionUID = 1L;
-
- @Override public void onComponentTag(final Component component, final ComponentTag tag) {
- super.onComponentTag(component, tag);
- if(component.isEnabled()) {
- return;
- }
- tag.remove("disabled");
- tag.put("readonly","readonly");
- }
- }
-
+ @Getter(value = AccessLevel.PROTECTED)
private AbstractTextComponent<T> textField;
-
- public ScalarPanelTextFieldAbstract(final String id, final ScalarModel scalarModel, final Class<T> cls) {
+ protected ScalarPanelTextFieldAbstract(final String id, final ScalarModel scalarModel, final Class<T> cls) {
super(id, scalarModel);
this.cls = cls;
}
// -- CONVERSION
-// protected final IConverter<T> getConverter(final ScalarModel scalarModel) {
-// return getConverter(scalarModel.getMetaModel(), scalarModel.isEditMode()
-// ? ScalarRepresentation.EDITING
-// : ScalarRepresentation.VIEWING);
-// }
-//
-// /**
-// * Converter that is used for the either regular (editing) or compact (HTML) view of the panel,
-// * based on argument {@code scalarRepresentation}.
-// */
-// protected abstract IConverter<T> getConverter(
-// @NonNull ObjectFeature propOrParam,
-// @NonNull ScalarRepresentation scalarRepresentation);
-
- // --
-
- protected AbstractTextComponent<T> getTextField() {
- return textField;
+ protected final IConverter<T> getConverter(final ScalarModel scalarModel) {
+ return getConverter(scalarModel.getMetaModel(), scalarModel.isEditMode()
+ ? ScalarRepresentation.EDITING
+ : ScalarRepresentation.VIEWING);
}
/**
- * Optional hook for subclasses to override
+ * Converter that is used for the either regular (editing) or compact (HTML) view of the panel,
+ * based on argument {@code scalarRepresentation}.
*/
- protected AbstractTextComponent<T> createTextFieldForRegular(final String id) {
- return createTextField(id);
- }
+ protected abstract IConverter<T> getConverter(
+ @NonNull ObjectFeature propOrParam,
+ @NonNull ScalarRepresentation scalarRepresentation);
+
+ // --
- protected TextField<T> createTextField(final String id) {
- return new TextField<>(id, newTextFieldValueModel(), cls);
+ /**
+ * TextField, with converter.
+ */
+ protected AbstractTextComponent<T> createTextField(final String id) {
+ return Wkt.textFieldWithConverter(
+ id, newTextFieldValueModel(), cls, getConverter(getModel()));
}
- protected TextFieldValueModel<T> newTextFieldValueModel() {
+ protected final TextFieldValueModel<T> newTextFieldValueModel() {
return new TextFieldValueModel<>(this);
}
- // ///////////////////////////////////////////////////////////////////
-
+ // --
@Override
protected MarkupContainer createComponentForRegular() {
@@ -147,7 +127,7 @@ implements TextFieldValueModel.ScalarModelProvider {
// am instantiating both to avoid NPEs
// elsewhere can use Component#isVisibilityAllowed or ScalarModel.getEditStyle() to check whichis visible.
- textField = createTextFieldForRegular(ID_SCALAR_VALUE);
+ textField = createTextField(ID_SCALAR_VALUE);
textField.setOutputMarkupId(true);
addStandardSemantics();
@@ -165,19 +145,6 @@ implements TextFieldValueModel.ScalarModelProvider {
return textField;
}
- private void addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(final Component component) {
- if(!getWicketViewerSettings().isReplaceDisabledTagWithReadonlyTag()) {
- return;
- }
- if (component == null) {
- return;
- }
- if (!component.getBehaviors(ReplaceDisabledTagWithReadonlyTagBehaviour.class).isEmpty()) {
- return;
- }
- component.add(new ReplaceDisabledTagWithReadonlyTagBehaviour());
- }
-
protected MarkupContainer createScalarIfRegularFormGroup() {
Fragment textFieldFragment = createTextFieldFragment("scalarValueContainer");
final String name = getModel().getFriendlyName();
@@ -360,7 +327,10 @@ implements TextFieldValueModel.ScalarModelProvider {
super.onInitializeNotEditable();
textField.setEnabled(false);
- addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(textField);
+
+ if(getWicketViewerSettings().isReplaceDisabledTagWithReadonlyTag()) {
+ Wkt.behaviorAddReplaceDisabledTagWithReadonlyTag(textField);
+ }
clearTooltip();
}
@@ -370,7 +340,10 @@ implements TextFieldValueModel.ScalarModelProvider {
super.onInitializeReadonly(disableReason);
textField.setEnabled(false);
- addReplaceDisabledTagWithReadonlyTagBehaviourIfRequired(textField);
+
+ if(getWicketViewerSettings().isReplaceDisabledTagWithReadonlyTag()) {
+ Wkt.behaviorAddReplaceDisabledTagWithReadonlyTag(textField);
+ }
inlinePromptLink.setEnabled(false);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldDatePickerAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldDatePickerAbstract.java
index 41ee8db..ae52c1c 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldDatePickerAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldDatePickerAbstract.java
@@ -30,10 +30,14 @@ import org.apache.wicket.model.Model;
import org.apache.wicket.util.convert.IConverter;
import org.apache.isis.commons.internal.base._Casts;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
import org.apache.isis.core.metamodel.facets.objectvalue.renderedadjusted.RenderedAdjustedFacet;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.datepicker.TextFieldWithDateTimePicker;
+import lombok.NonNull;
+
/**
* Panel for rendering scalars representing dates, along with a date picker.
*/
@@ -64,8 +68,9 @@ extends ScalarPanelTextFieldAbstract<T> {
}
@Override
- protected TextField<T> createTextField(final String id) {
- return new TextFieldWithDateTimePicker<>(super.getCommonContext(), id, newTextFieldValueModel(), cls, converter);
+ protected final TextField<T> createTextField(final String id) {
+ return new TextFieldWithDateTimePicker<>(
+ super.getCommonContext(), id, newTextFieldValueModel(), cls, converter);
}
@@ -113,4 +118,12 @@ extends ScalarPanelTextFieldAbstract<T> {
return null;
}
+ //FIXME[ISIS-2882] wire up correctly
+ @Override
+ protected IConverter<T> getConverter(@NonNull final ObjectFeature propOrParam,
+ @NonNull final ScalarRepresentation scalarRepresentation) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}
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 2a63204..f58d592 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
@@ -22,14 +22,10 @@ import java.io.Serializable;
import org.apache.wicket.Component;
import org.apache.wicket.model.IModel;
-import org.apache.wicket.util.convert.IConverter;
-import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
-import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.util.Wkt;
-import lombok.NonNull;
import lombok.val;
/**
@@ -48,7 +44,7 @@ extends ScalarPanelTextFieldAbstract<T> {
}
@Override
- protected Component createComponentForCompact() {
+ protected final Component createComponentForCompact() {
val label = Wkt.labelAddWithConverter(
getCompactFragment(CompactType.SPAN),
ID_SCALAR_IF_COMPACT, newTextFieldValueModel(), cls, getConverter(getModel()));
@@ -57,24 +53,8 @@ extends ScalarPanelTextFieldAbstract<T> {
}
@Override
- protected IModel<String> obtainInlinePromptModel() {
+ protected final IModel<String> obtainInlinePromptModel() {
return super.toStringConvertingModelOf(getConverter(scalarModel));
}
- //FIXME move up in hierarchy
- protected final IConverter<T> getConverter(final ScalarModel scalarModel) {
- return getConverter(scalarModel.getMetaModel(), scalarModel.isEditMode()
- ? ScalarRepresentation.EDITING
- : ScalarRepresentation.VIEWING);
- }
-
- /**
- * Converter that is used for the either regular (editing) or compact (HTML) view of the panel,
- * based on argument {@code scalarRepresentation}.
- */
- //FIXME move up in hierarchy
- protected abstract IConverter<T> getConverter(
- @NonNull ObjectFeature propOrParam,
- @NonNull ScalarRepresentation scalarRepresentation);
-
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldParseableAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldParseableAbstract.java
index 1e019fc..fadb648 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldParseableAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldParseableAbstract.java
@@ -18,51 +18,51 @@
*/
package org.apache.isis.viewer.wicket.ui.components.scalars;
-import org.apache.wicket.markup.html.form.AbstractTextComponent;
-import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.util.convert.IConverter;
import org.apache.wicket.validation.validator.StringValidator;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
+import lombok.NonNull;
+
/**
* Adapter for {@link ScalarPanelTextFieldAbstract textField-based scalar panel}
* s where moreover the scalar parameter or property is a value type that is
* parseable.
*/
+@Deprecated //FIXME[ISIS-2882] probably remove class, have each value-type implement their own
public abstract class ScalarPanelTextFieldParseableAbstract
extends ScalarPanelTextFieldAbstract<String> {
private static final long serialVersionUID = 1L;
- public ScalarPanelTextFieldParseableAbstract(final String id, final ScalarModel scalarModel) {
+ protected ScalarPanelTextFieldParseableAbstract(final String id, final ScalarModel scalarModel) {
super(id, scalarModel, String.class);
}
@Override
- protected AbstractTextComponent<String> createTextFieldForRegular(final String id) {
- final TextFieldStringModel model = new TextFieldStringModel(this);
- return new TextField<>(id, model);
- }
-
- @Override
protected void addStandardSemantics() {
super.addStandardSemantics();
-
addMaxLengthValidator();
}
- private void addMaxLengthValidator() {
- final ScalarModel scalarModel = getModel();
- final AbstractTextComponent<String> textField = getTextField();
+ @Override
+ protected IConverter<String> getConverter(
+ final @NonNull ObjectFeature propOrParam,
+ final @NonNull ScalarRepresentation scalarRepresentation) {
+ return null; // does not use conversion
+ }
- final ObjectSpecification facetHolder = scalarModel.getScalarTypeSpec();
+ // -- HELPER
- final MaxLengthFacet maxLengthFacet = facetHolder.getFacet(MaxLengthFacet.class);
- if (maxLengthFacet != null) {
- textField.add(StringValidator.maximumLength(maxLengthFacet.value()));
- }
+ //FIXME[ISIS-2882] move up in hierarchy - also make sure logic is not already duplicated
+ private void addMaxLengthValidator() {
+ getModel().getScalarTypeSpec().lookupFacet(MaxLengthFacet.class)
+ .ifPresent(maxLengthFacet->
+ getTextField().add(StringValidator.maximumLength(maxLengthFacet.value())));
}
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/bookmark/BookmarkPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/bookmark/BookmarkPanel.java
index 37dbef6..7d2a955 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/bookmark/BookmarkPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/bookmark/BookmarkPanel.java
@@ -29,7 +29,6 @@ public class BookmarkPanel extends ScalarPanelTextFieldParseableAbstract {
private static final long serialVersionUID = 1L;
-
public BookmarkPanel(final String id, final ScalarModel scalarModel) {
super(id, scalarModel);
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdk8time/Jdk8LocalDatePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdk8time/Jdk8LocalDatePanel.java
index 6d0e192..5997987 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdk8time/Jdk8LocalDatePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdk8time/Jdk8LocalDatePanel.java
@@ -25,7 +25,8 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldD
/**
* Panel for rendering scalars of type {@link LocalDate}.
*/
-public class Jdk8LocalDatePanel extends ScalarPanelTextFieldDatePickerAbstract<LocalDate> {
+public class Jdk8LocalDatePanel
+extends ScalarPanelTextFieldDatePickerAbstract<LocalDate> {
private static final long serialVersionUID = 1L;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdk8time/Jdk8LocalDateTimePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdk8time/Jdk8LocalDateTimePanel.java
index e0ce9f1..2b1a6ae 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdk8time/Jdk8LocalDateTimePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdk8time/Jdk8LocalDateTimePanel.java
@@ -20,17 +20,14 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.jdk8time;
import java.time.LocalDateTime;
-import org.apache.wicket.markup.html.form.AbstractTextComponent;
-
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldDatePickerAbstract;
-import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.datepicker.TextFieldWithDateTimePicker;
/**
* Panel for rendering scalars of type {@link LocalDateTime}.
*/
-public class Jdk8LocalDateTimePanel extends ScalarPanelTextFieldDatePickerAbstract<LocalDateTime> {
+public class Jdk8LocalDateTimePanel
+extends ScalarPanelTextFieldDatePickerAbstract<LocalDateTime> {
private static final long serialVersionUID = 1L;
@@ -39,10 +36,4 @@ public class Jdk8LocalDateTimePanel extends ScalarPanelTextFieldDatePickerAbstra
init(new DateConverterForJdk8LocalDateTime(getWicketViewerSettings(), getAdjustBy()));
}
- @Override
- protected AbstractTextComponent<LocalDateTime> createTextFieldForRegular(final String id) {
- final TextFieldValueModel<LocalDateTime> textFieldValueModel = new TextFieldValueModel<>(this);
- return new TextFieldWithDateTimePicker<>(super.getCommonContext(), id, textFieldValueModel, cls, converter);
- }
-
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdk8time/Jdk8OffsetDateTimePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdk8time/Jdk8OffsetDateTimePanel.java
index bfed31f..971d80d 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdk8time/Jdk8OffsetDateTimePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdk8time/Jdk8OffsetDateTimePanel.java
@@ -20,12 +20,8 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.jdk8time;
import java.time.OffsetDateTime;
-import org.apache.wicket.markup.html.form.AbstractTextComponent;
-
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldDatePickerAbstract;
-import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.datepicker.TextFieldWithDateTimePicker;
/**
* Panel for rendering scalars of type {@link OffsetDateTime}.
@@ -40,10 +36,4 @@ extends ScalarPanelTextFieldDatePickerAbstract<OffsetDateTime> {
init(new DateConverterForJdk8OffsetDateTime(getWicketViewerSettings(), getAdjustBy()));
}
- @Override
- protected AbstractTextComponent<OffsetDateTime> createTextFieldForRegular(final String id) {
- final TextFieldValueModel<OffsetDateTime> textFieldValueModel = new TextFieldValueModel<>(this);
- return new TextFieldWithDateTimePicker<>(super.getCommonContext(), id, textFieldValueModel, cls, converter);
- }
-
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/JavaSqlDatePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/JavaSqlDatePanel.java
index f4e6415..decacd2 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/JavaSqlDatePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/JavaSqlDatePanel.java
@@ -26,7 +26,8 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldD
/**
* Panel for rendering scalars of type {@link Date java.sql.Date}.
*/
-public class JavaSqlDatePanel extends ScalarPanelTextFieldDatePickerAbstract<java.sql.Date> {
+public class JavaSqlDatePanel
+extends ScalarPanelTextFieldDatePickerAbstract<java.sql.Date> {
private static final long serialVersionUID = 1L;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/JavaSqlTimestampPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/JavaSqlTimestampPanel.java
index 7b0b138..6d5ebce 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/JavaSqlTimestampPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkdates/JavaSqlTimestampPanel.java
@@ -27,7 +27,8 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldD
/**
* Panel for rendering scalars of type {@link java.sql.Timestamp}.
*/
-public class JavaSqlTimestampPanel extends ScalarPanelTextFieldDatePickerAbstract<Timestamp> {
+public class JavaSqlTimestampPanel
+extends ScalarPanelTextFieldDatePickerAbstract<Timestamp> {
private static final long serialVersionUID = 1L;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanel.java
index f465364..a7de058 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigDecimalPanel.java
@@ -20,7 +20,6 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath;
import java.math.BigDecimal;
-import org.apache.wicket.markup.html.form.AbstractTextComponent;
import org.apache.wicket.util.convert.IConverter;
import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
@@ -28,7 +27,6 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.viewer.wicket.model.converter.BigDecimalConverterWkt;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
-import org.apache.isis.viewer.wicket.ui.util.Wkt;
import lombok.NonNull;
@@ -47,12 +45,6 @@ extends ScalarPanelTextFieldNumeric<BigDecimal> {
}
@Override
- protected AbstractTextComponent<BigDecimal> createTextFieldForRegular(final String id) {
- return Wkt.textFieldWithConverter(
- id, newTextFieldValueModel(), BigDecimal.class, getConverter(getModel()));
- }
-
- @Override
protected IConverter<BigDecimal> getConverter(
final @NonNull ObjectFeature propOrParam,
final @NonNull ScalarRepresentation scalarRepresentation) {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanel.java
index d96811f..04c4fe9 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/JavaMathBigIntegerPanel.java
@@ -20,7 +20,6 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.jdkmath;
import java.math.BigInteger;
-import org.apache.wicket.markup.html.form.AbstractTextComponent;
import org.apache.wicket.util.convert.IConverter;
import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
@@ -28,7 +27,6 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.viewer.wicket.model.converter.BigIntegerConverterWkt;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
-import org.apache.isis.viewer.wicket.ui.util.Wkt;
import lombok.NonNull;
@@ -45,12 +43,6 @@ extends ScalarPanelTextFieldNumeric<BigInteger> {
}
@Override
- protected AbstractTextComponent<BigInteger> createTextFieldForRegular(final String id) {
- return Wkt.textFieldWithConverter(
- id, newTextFieldValueModel(), BigInteger.class, getConverter(getModel()));
- }
-
- @Override
protected IConverter<BigInteger> getConverter(
final @NonNull ObjectFeature propOrParam,
final @NonNull ScalarRepresentation scalarRepresentation) {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaDateTimePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaDateTimePanel.java
index f4b4819..e9715b1 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaDateTimePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaDateTimePanel.java
@@ -18,19 +18,17 @@
*/
package org.apache.isis.viewer.wicket.ui.components.scalars.jodatime;
-import org.apache.wicket.markup.html.form.AbstractTextComponent;
import org.joda.time.DateTime;
import org.joda.time.LocalDateTime;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldDatePickerAbstract;
-import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.datepicker.TextFieldWithDateTimePicker;
/**
* Panel for rendering scalars of type {@link LocalDateTime}.
*/
-public class JodaDateTimePanel extends ScalarPanelTextFieldDatePickerAbstract<DateTime> {
+public class JodaDateTimePanel
+extends ScalarPanelTextFieldDatePickerAbstract<DateTime> {
private static final long serialVersionUID = 1L;
@@ -39,10 +37,4 @@ public class JodaDateTimePanel extends ScalarPanelTextFieldDatePickerAbstract<Da
init(new DateConverterForJodaDateTime(getWicketViewerSettings(), getAdjustBy()));
}
- @Override
- protected AbstractTextComponent<DateTime> createTextFieldForRegular(final String id) {
- final TextFieldValueModel<DateTime> textFieldValueModel = new TextFieldValueModel<>(this);
- return new TextFieldWithDateTimePicker<>(super.getCommonContext(), id, textFieldValueModel, cls, converter);
- }
-
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaLocalDatePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaLocalDatePanel.java
index a2bf487..72a56d2 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaLocalDatePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaLocalDatePanel.java
@@ -26,7 +26,8 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldD
/**
* Panel for rendering scalars of type {@link LocalDate}.
*/
-public class JodaLocalDatePanel extends ScalarPanelTextFieldDatePickerAbstract<LocalDate> {
+public class JodaLocalDatePanel
+extends ScalarPanelTextFieldDatePickerAbstract<LocalDate> {
private static final long serialVersionUID = 1L;
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaLocalDateTimePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaLocalDateTimePanel.java
index 5267d01..ba56685 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaLocalDateTimePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaLocalDateTimePanel.java
@@ -18,18 +18,16 @@
*/
package org.apache.isis.viewer.wicket.ui.components.scalars.jodatime;
-import org.apache.wicket.markup.html.form.AbstractTextComponent;
import org.joda.time.LocalDateTime;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldDatePickerAbstract;
-import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.datepicker.TextFieldWithDateTimePicker;
/**
* Panel for rendering scalars of type {@link LocalDateTime}.
*/
-public class JodaLocalDateTimePanel extends ScalarPanelTextFieldDatePickerAbstract<LocalDateTime> {
+public class JodaLocalDateTimePanel
+extends ScalarPanelTextFieldDatePickerAbstract<LocalDateTime> {
private static final long serialVersionUID = 1L;
@@ -38,11 +36,4 @@ public class JodaLocalDateTimePanel extends ScalarPanelTextFieldDatePickerAbstra
init(new DateConverterForJodaLocalDateTime(getWicketViewerSettings(), getAdjustBy()));
}
- // TODO mgrigorov: Check whether this is really needed after fixing ISIS-1015
- @Override
- protected AbstractTextComponent<LocalDateTime> createTextFieldForRegular(final String id) {
- final TextFieldValueModel<LocalDateTime> textFieldValueModel = new TextFieldValueModel<>(this);
- return new TextFieldWithDateTimePicker<>(super.getCommonContext(), id, textFieldValueModel, cls, converter);
- }
-
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaLocalTimePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaLocalTimePanel.java
index dd5f9cd..ab2356b 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaLocalTimePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/jodatime/JodaLocalTimePanel.java
@@ -23,14 +23,19 @@ import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.util.convert.IConverter;
import org.joda.time.LocalTime;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldAbstract;
import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
+import lombok.NonNull;
+
/**
* Panel for rendering scalars of type {@link LocalTime}.
*/
-public class JodaLocalTimePanel extends ScalarPanelTextFieldAbstract<LocalTime> {
+public class JodaLocalTimePanel
+extends ScalarPanelTextFieldAbstract<LocalTime> {
private static final long serialVersionUID = 1L;
@@ -39,7 +44,7 @@ public class JodaLocalTimePanel extends ScalarPanelTextFieldAbstract<LocalTime>
}
@Override
- protected AbstractTextComponent<LocalTime> createTextFieldForRegular(final String id) {
+ protected AbstractTextComponent<LocalTime> createTextField(final String id) {
final TextFieldValueModel<LocalTime> textFieldValueModel = new TextFieldValueModel<>(this);
return new TextField<LocalTime>(id, textFieldValueModel, LocalTime.class) {
private static final long serialVersionUID = 1L;
@@ -52,4 +57,12 @@ public class JodaLocalTimePanel extends ScalarPanelTextFieldAbstract<LocalTime>
};
}
+ //FIXME[ISIS-2882] wire up correctly
+ @Override
+ protected IConverter<LocalTime> getConverter(@NonNull final ObjectFeature propOrParam,
+ final @NonNull ScalarRepresentation scalarRepresentation) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}
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 cc7e799..1c1de64 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
@@ -25,14 +25,14 @@ import org.apache.wicket.markup.html.form.PasswordTextField;
import org.apache.isis.applib.value.Password;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldParseableAbstract;
-import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldStringModel;
import de.agilecoders.wicket.core.util.Attributes;
/**
* Panel for rendering scalars of type {@link Password Isis' applib.Password}.
*/
-public class IsisPasswordPanel extends ScalarPanelTextFieldParseableAbstract {
+public class IsisPasswordPanel
+extends ScalarPanelTextFieldParseableAbstract {
private static final long serialVersionUID = 1L;
@@ -40,11 +40,10 @@ public class IsisPasswordPanel extends ScalarPanelTextFieldParseableAbstract {
super(id, scalarModel);
}
-
@Override
- protected AbstractTextComponent<String> createTextFieldForRegular(final String id) {
- final TextFieldStringModel textModel = new TextFieldStringModel(this);
- final PasswordTextField passwordField = new PasswordTextField(id, textModel) {
+ protected AbstractTextComponent<String> createTextField(final String id) {
+
+ final PasswordTextField passwordField = new PasswordTextField(id, newTextFieldValueModel()) {
private static final long serialVersionUID = 1L;
@Override
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BytePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BytePanel.java
index 6b8a476..25fe38e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BytePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/BytePanel.java
@@ -18,7 +18,6 @@
*/
package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
-import org.apache.wicket.markup.html.form.AbstractTextComponent;
import org.apache.wicket.util.convert.IConverter;
import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
@@ -26,7 +25,6 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.viewer.wicket.model.converter.ByteConverterWkt;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
-import org.apache.isis.viewer.wicket.ui.util.Wkt;
import lombok.NonNull;
@@ -43,12 +41,6 @@ extends ScalarPanelTextFieldNumeric<Byte> {
}
@Override
- protected AbstractTextComponent<Byte> createTextFieldForRegular(final String id) {
- return Wkt.textFieldWithConverter(
- id, newTextFieldValueModel(), Byte.class, getConverter(getModel()));
- }
-
- @Override
protected IConverter<Byte> getConverter(
final @NonNull ObjectFeature propOrParam,
final @NonNull ScalarRepresentation scalarRepresentation) {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/CharacterPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/CharacterPanel.java
index c5490f5..7ef728e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/CharacterPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/CharacterPanel.java
@@ -19,13 +19,14 @@
package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
import org.apache.wicket.util.convert.IConverter;
-import org.apache.wicket.util.convert.converter.CharacterConverter;
-import org.springframework.util.ClassUtils;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
+import org.apache.isis.viewer.wicket.model.converter.CharacterConverterWkt;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldAbstract;
-import lombok.val;
+import lombok.NonNull;
/**
* Panel for rendering scalars of type {@link Character} or <tt>char</tt>.
@@ -40,12 +41,10 @@ extends ScalarPanelTextFieldAbstract<Character> {
}
@Override
- public <C> IConverter<C> getConverter(final Class<C> _type) {
- val type = ClassUtils.resolvePrimitiveIfNecessary(_type);
- if(Character.class.equals(type)) {
- return (IConverter<C>) CharacterConverter.INSTANCE; //FIXME[ISIS-2882] use value semantics instead
- }
- return super.getConverter(_type);
+ protected IConverter<Character> getConverter(
+ final @NonNull ObjectFeature propOrParam,
+ final @NonNull ScalarRepresentation scalarRepresentation) {
+ return new CharacterConverterWkt(propOrParam, scalarRepresentation);
}
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/DoublePanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/DoublePanel.java
index a164ebc..502d4de 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/DoublePanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/DoublePanel.java
@@ -18,7 +18,6 @@
*/
package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
-import org.apache.wicket.markup.html.form.AbstractTextComponent;
import org.apache.wicket.util.convert.IConverter;
import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
@@ -26,14 +25,14 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.viewer.wicket.model.converter.DoubleConverterWkt;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
-import org.apache.isis.viewer.wicket.ui.util.Wkt;
import lombok.NonNull;
/**
* Panel for rendering scalars of type {@link Double} or <tt>double</tt>.
*/
-public class DoublePanel extends ScalarPanelTextFieldNumeric<Double> {
+public class DoublePanel
+extends ScalarPanelTextFieldNumeric<Double> {
private static final long serialVersionUID = 1L;
@@ -42,12 +41,6 @@ public class DoublePanel extends ScalarPanelTextFieldNumeric<Double> {
}
@Override
- protected AbstractTextComponent<Double> createTextFieldForRegular(final String id) {
- return Wkt.textFieldWithConverter(
- id, newTextFieldValueModel(), Double.class, getConverter(getModel()));
- }
-
- @Override
protected IConverter<Double> getConverter(
final @NonNull ObjectFeature propOrParam,
final @NonNull ScalarRepresentation scalarRepresentation) {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/FloatPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/FloatPanel.java
index d79aa76..f98e8fc 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/FloatPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/FloatPanel.java
@@ -18,7 +18,6 @@
*/
package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
-import org.apache.wicket.markup.html.form.AbstractTextComponent;
import org.apache.wicket.util.convert.IConverter;
import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
@@ -26,7 +25,6 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.viewer.wicket.model.converter.FloatConverterWkt;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
-import org.apache.isis.viewer.wicket.ui.util.Wkt;
import lombok.NonNull;
@@ -42,12 +40,6 @@ public class FloatPanel extends ScalarPanelTextFieldNumeric<Float> {
}
@Override
- protected AbstractTextComponent<Float> createTextFieldForRegular(final String id) {
- return Wkt.textFieldWithConverter(
- id, newTextFieldValueModel(), Float.class, getConverter(getModel()));
- }
-
- @Override
protected IConverter<Float> getConverter(
final @NonNull ObjectFeature propOrParam,
final @NonNull ScalarRepresentation scalarRepresentation) {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/IntegerPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/IntegerPanel.java
index 800dbde..c509281 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/IntegerPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/IntegerPanel.java
@@ -18,7 +18,6 @@
*/
package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
-import org.apache.wicket.markup.html.form.AbstractTextComponent;
import org.apache.wicket.util.convert.IConverter;
import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
@@ -26,7 +25,6 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.viewer.wicket.model.converter.IntegerConverterWkt;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
-import org.apache.isis.viewer.wicket.ui.util.Wkt;
import lombok.NonNull;
@@ -42,12 +40,6 @@ public class IntegerPanel extends ScalarPanelTextFieldNumeric<Integer> {
}
@Override
- protected AbstractTextComponent<Integer> createTextFieldForRegular(final String id) {
- return Wkt.textFieldWithConverter(
- id, newTextFieldValueModel(), Integer.class, getConverter(getModel()));
- }
-
- @Override
protected IConverter<Integer> getConverter(
final @NonNull ObjectFeature propOrParam,
final @NonNull ScalarRepresentation scalarRepresentation) {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/LongPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/LongPanel.java
index 80a2393..2ba36ef 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/LongPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/LongPanel.java
@@ -18,7 +18,6 @@
*/
package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
-import org.apache.wicket.markup.html.form.AbstractTextComponent;
import org.apache.wicket.util.convert.IConverter;
import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
@@ -26,14 +25,14 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.viewer.wicket.model.converter.LongConverterWkt;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
-import org.apache.isis.viewer.wicket.ui.util.Wkt;
import lombok.NonNull;
/**
* Panel for rendering scalars of type {@link Long} or <tt>long</tt>.
*/
-public class LongPanel extends ScalarPanelTextFieldNumeric<Long> {
+public class LongPanel
+extends ScalarPanelTextFieldNumeric<Long> {
private static final long serialVersionUID = 1L;
@@ -42,12 +41,6 @@ public class LongPanel extends ScalarPanelTextFieldNumeric<Long> {
}
@Override
- protected AbstractTextComponent<Long> createTextFieldForRegular(final String id) {
- return Wkt.textFieldWithConverter(
- id, newTextFieldValueModel(), Long.class, getConverter(getModel()));
- }
-
- @Override
protected IConverter<Long> getConverter(
final @NonNull ObjectFeature propOrParam,
final @NonNull ScalarRepresentation scalarRepresentation) {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/ShortPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/ShortPanel.java
index 795d3ce..f1ed507 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/ShortPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/primitive/ShortPanel.java
@@ -18,7 +18,6 @@
*/
package org.apache.isis.viewer.wicket.ui.components.scalars.primitive;
-import org.apache.wicket.markup.html.form.AbstractTextComponent;
import org.apache.wicket.util.convert.IConverter;
import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
@@ -26,14 +25,14 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
import org.apache.isis.viewer.wicket.model.converter.ShortConverterWkt;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldNumeric;
-import org.apache.isis.viewer.wicket.ui.util.Wkt;
import lombok.NonNull;
/**
* Panel for rendering scalars of type {@link Short} or <tt>short</tt>.
*/
-public class ShortPanel extends ScalarPanelTextFieldNumeric<Short> {
+public class ShortPanel
+extends ScalarPanelTextFieldNumeric<Short> {
private static final long serialVersionUID = 1L;
@@ -42,12 +41,6 @@ public class ShortPanel extends ScalarPanelTextFieldNumeric<Short> {
}
@Override
- protected AbstractTextComponent<Short> createTextFieldForRegular(final String id) {
- return Wkt.textFieldWithConverter(
- id, newTextFieldValueModel(), Short.class, getConverter(getModel()));
- }
-
- @Override
protected IConverter<Short> getConverter(
final @NonNull ObjectFeature propOrParam,
final @NonNull ScalarRepresentation scalarRepresentation) {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/MultiLineStringPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/MultiLineStringPanel.java
index 678e1e4..593ef50 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/MultiLineStringPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/MultiLineStringPanel.java
@@ -48,7 +48,7 @@ extends ScalarPanelTextFieldParseableAbstract {
}
@Override
- protected AbstractTextComponent<String> createTextFieldForRegular(final String id) {
+ protected AbstractTextComponent<String> createTextField(final String id) {
val model = new TextFieldStringModel(this);
val textArea = new TextArea<String>(id, model);
setRowsAndMaxLengthAttributesOn(textArea);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidConverter.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidConverter.java
deleted file mode 100644
index 4908a3a..0000000
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidConverter.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.viewer.wicket.ui.components.scalars.uuid;
-
-import java.util.Locale;
-import java.util.UUID;
-
-import org.apache.wicket.util.convert.ConversionException;
-import org.apache.wicket.util.convert.IConverter;
-
-import org.apache.isis.commons.internal.base._Strings;
-
-/**
- * The {@link IConverter} implementation that our {@link UuidTextField} delegates to for converting strings into values.
- */
-public class UuidConverter implements IConverter<UUID>
-{
- private static final long serialVersionUID = 1L;
-
- // private static final Pattern pattern = Pattern.compile(
- // "[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}");
-
- @Override
- public UUID convertToObject(String value, Locale locale)
- throws ConversionException {
-
- if(_Strings.isNullOrEmpty(value)) {
- return null;
- }
-
- try {
- return UUID.fromString(value);
- } catch (IllegalArgumentException e) {
- throw newConversionException(value);
- }
- }
-
- @Override
- public String convertToString(UUID value, Locale locale) {
- return value != null ? value.toString() : null;
- }
-
- private ConversionException newConversionException(String value) {
- return new ConversionException(
- String.format("Failed to convert '%s' to a UUID", value));
- }
-}
\ No newline at end of file
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidPanel.java
index 43c2dac..5b3e4a5 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidPanel.java
@@ -20,32 +20,33 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.uuid;
import java.util.UUID;
-import org.apache.wicket.markup.html.form.AbstractTextComponent;
+import org.apache.wicket.util.convert.IConverter;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.spec.feature.ObjectFeature;
+import org.apache.isis.viewer.wicket.model.converter.UuidConverterWkt;
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelTextFieldAbstract;
-import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel;
+
+import lombok.NonNull;
/**
* Panel for rendering scalars of type {@link UUID}.
*/
-public class UuidPanel extends ScalarPanelTextFieldAbstract<UUID> {
+public class UuidPanel
+extends ScalarPanelTextFieldAbstract<UUID> {
private static final long serialVersionUID = 1L;
- private static final UuidConverter converter = new UuidConverter();
-
- public UuidPanel(
- final String id,
- final ScalarModel scalarModel) {
+ public UuidPanel(final String id, final ScalarModel scalarModel) {
super(id, scalarModel, UUID.class);
}
@Override
- protected AbstractTextComponent<UUID> createTextFieldForRegular(final String id) {
- final ScalarModel model = getModel();
- final TextFieldValueModel<UUID> textFieldValueModel = new TextFieldValueModel<>(this);
- return new UuidTextField(id, textFieldValueModel, cls, model, converter);
+ protected IConverter<UUID> getConverter(
+ final @NonNull ObjectFeature propOrParam,
+ final @NonNull ScalarRepresentation scalarRepresentation) {
+ return new UuidConverterWkt(propOrParam, scalarRepresentation);
}
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidTextField.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidTextField.java
deleted file mode 100644
index 261204d..0000000
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidTextField.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.isis.viewer.wicket.ui.components.scalars.uuid;
-
-import java.util.UUID;
-
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.util.convert.IConverter;
-
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldAbstract;
-
-final class UuidTextField extends TextFieldAbstract<UUID> {
-
- private static final long serialVersionUID = 1L;
-
- private final UuidConverter converter;
-
- UuidTextField(
- final String id, final IModel<UUID> model, final Class<UUID> type,
- final ScalarModel scalarModel,
- final UuidConverter converter) {
- super(id, model, type, scalarModel);
- this.converter = converter;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <C> IConverter<C> getConverter(Class<C> type) {
- if (type != UUID.class) {
- return super.getConverter(type);
- }
- return (IConverter<C>) getConverterFor(scalarModel);
- }
-
- @Override
- protected IConverter<UUID> getConverterFor(ScalarModel scalarModel) {
- return converter;
- }
-}
\ No newline at end of file
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/compound/ValueCompoundPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/compound/ValueCompoundPanel.java
index b191920..ba76246 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/compound/ValueCompoundPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/compound/ValueCompoundPanel.java
@@ -46,7 +46,7 @@ extends ScalarPanelTextFieldParseableAbstract {
}
@Override
- protected AbstractTextComponent<String> createTextFieldForRegular(final String id) {
+ protected AbstractTextComponent<String> createTextField(final String id) {
return new TextField<>(id, LambdaModel.of(()->
renderer().simpleTextPresentation(null, scalarModel.getObject().getPojo())));
}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
index 30875ae..fcfbe89 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Wkt.java
@@ -123,6 +123,22 @@ public class Wkt {
};
}
+ private static class ReplaceDisabledTagWithReadonlyTagBehavior extends Behavior {
+ private static final long serialVersionUID = 1L;
+ @Override public void onComponentTag(final Component component, final ComponentTag tag) {
+ super.onComponentTag(component, tag);
+ if(component.isEnabled()) {
+ return;
+ }
+ tag.remove("disabled");
+ tag.put("readonly","readonly");
+ }
+ }
+
+ public Behavior behaviorReplaceDisabledTagWithReadonlyTag() {
+ return new ReplaceDisabledTagWithReadonlyTagBehavior();
+ }
+
public Behavior behaviorAddOnClick(
final MarkupContainer markupContainer,
final SerializableConsumer<AjaxRequestTarget> onClick) {
@@ -135,6 +151,12 @@ public class Wkt {
return add(markupContainer, behaviorFireOnEscapeKey(onRespond));
}
+ public void behaviorAddReplaceDisabledTagWithReadonlyTag(final Component component) {
+ if (component.getBehaviors(ReplaceDisabledTagWithReadonlyTagBehavior.class).isEmpty()) {
+ component.add(new ReplaceDisabledTagWithReadonlyTagBehavior());
+ }
+ }
+
// -- BUTTON
public AjaxButton button(
@@ -464,24 +486,30 @@ public class Wkt {
// -- TEXT FIELD
+ /**
+ * @param converter - if {@code null} returns {@link TextField} using Wicket's default converters.
+ */
public <T> TextField<T> textFieldWithConverter(
- final String id, final IModel<T> model, final Class<T> type, final IConverter<T> converter) {
- return new TextField<T>(id, model, type) {
- private static final long serialVersionUID = 1L;
- @SuppressWarnings("unchecked")
- @Override public <C> IConverter<C> getConverter(final Class<C> cType) {
- return cType == type
- ? (IConverter<C>) converter
- : super.getConverter(cType);}
- @Override public void error(final IValidationError error) {
- if(error instanceof ValidationError) {
- // use plain error message from ConversionException, circumventing resource bundles.
- this.error(((ValidationError)error).getMessage());
- } else {
- super.error(error);
+ final String id, final IModel<T> model, final Class<T> type,
+ final @Nullable IConverter<T> converter) {
+ return converter!=null
+ ? new TextField<T>(id, model, type) {
+ private static final long serialVersionUID = 1L;
+ @SuppressWarnings("unchecked")
+ @Override public <C> IConverter<C> getConverter(final Class<C> cType) {
+ return cType == type
+ ? (IConverter<C>) converter
+ : super.getConverter(cType);}
+ @Override public void error(final IValidationError error) {
+ if(error instanceof ValidationError) {
+ // use plain error message from ConversionException, circumventing resource bundles.
+ this.error(((ValidationError)error).getMessage());
+ } else {
+ super.error(error);
+ }
+ }
}
- }
- };
+ : new TextField<>(id, model, type);
}
// -- FOCUS UTILITY
diff --git a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidConverterTest_roundtrip.java b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidConverterTest_roundtrip.java
index 08b6d12..d912036 100644
--- a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidConverterTest_roundtrip.java
+++ b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/uuid/UuidConverterTest_roundtrip.java
@@ -22,52 +22,100 @@ import java.util.Locale;
import java.util.UUID;
import org.apache.wicket.util.convert.ConversionException;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
-public class UuidConverterTest_roundtrip {
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.services.iactnlayer.InteractionService;
+import org.apache.isis.core.config.valuetypes.ValueSemanticsRegistry;
+import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
+import org.apache.isis.core.metamodel.commons.ScalarRepresentation;
+import org.apache.isis.core.metamodel.context.MetaModelContext;
+import org.apache.isis.core.metamodel.valuesemantics.UUIDValueSemantics;
+import org.apache.isis.core.security._testing.InteractionService_forTesting;
+import org.apache.isis.viewer.wicket.model.converter.UuidConverterWkt;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.val;
+
+// see also BigDecimalConverter_roundtrip, for more rigorous testing
+@SuppressWarnings("unused")
+class UuidConverterTest_roundtrip {
final UUID valid = UUID.randomUUID();
- private UuidConverter converter;
+ private UuidConverterWkt converter;
+
+ private InteractionService interactionService;
+ private MetaModelContext mmc;
+
+ @BeforeEach
+ void setUp() throws Exception {
+
+ UUIDValueSemantics valueSemantics;
+ mmc = MetaModelContext_forTesting.builder()
+ .valueSemantic(valueSemantics = new UUIDValueSemantics())
+ .interactionProvider(interactionService = new InteractionService_forTesting())
+ .build();
+ //valueSemantics.setSpecificationLoader(mmc.getSpecificationLoader());
- @Rule
- public ExpectedException exception = ExpectedException.none();
+ // pre-requisites for testing
+ val reg = mmc.getServiceRegistry().lookupServiceElseFail(ValueSemanticsRegistry.class);
+ assertNotNull(reg.selectValueSemantics(UUID.class));
+ assertTrue(reg.selectValueSemantics(UUID.class).isNotEmpty());
+ assertNotNull(mmc.getServiceRegistry().lookupServiceElseFail(InteractionService.class));
+ assertNotNull(mmc.getInteractionProvider());
- @Before
- public void setUp() throws Exception {
- converter = newConverter();
+
+ converter = newConverter(CustomerWithUuid.class);
}
@Test
- public void happy_case() {
+ void happy_case() {
- Assert.assertEquals(
+ assertEquals(
valid, converter.convertToObject(valid.toString(), Locale.ENGLISH));
- Assert.assertEquals(
+ assertEquals(
valid.toString(), converter.convertToString(valid, Locale.ENGLISH));
}
@Test
- public void when_null() {
- Assert.assertNull(converter.convertToObject(null, Locale.ENGLISH));
- Assert.assertNull(converter.convertToObject("", Locale.ENGLISH));
- Assert.assertNull(converter.convertToString(null, Locale.ENGLISH));
+ void when_null() {
+ assertNull(converter.convertToObject(null, Locale.ENGLISH));
+ assertNull(converter.convertToObject("", Locale.ENGLISH));
+ assertNull(converter.convertToString(null, Locale.ENGLISH));
}
@Test
- public void invalid() {
- exception.expect(ConversionException.class);
- exception.expectMessage("Failed to convert 'junk' to a UUID");
- Assert.assertNull(converter.convertToObject("junk", Locale.ENGLISH));
+ void invalid() {
+ assertThrows(ConversionException.class,
+ ()->converter.convertToObject("junk", Locale.ENGLISH),
+ "Failed to convert 'junk' to a UUID");
+ }
+
+ // -- HELPER
+
+ private UuidConverterWkt newConverter(final Class<?> type) {
+ val customerSpec = mmc.getSpecificationLoader().specForTypeElseFail(type);
+ val prop = customerSpec.getPropertyElseFail("value");
+ return new UuidConverterWkt(prop, ScalarRepresentation.EDITING);
}
- private UuidConverter newConverter() {
- return new
- UuidConverter();
+ // -- SCENARIOS
+
+ @DomainObject
+ static class CustomerWithUuid {
+ @Property @Getter @Setter
+ private UUID value;
}
+
}