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/07 12:35:05 UTC
[isis] branch master updated: ISIS-2877: wire up html rendering for composites
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 80244dc ISIS-2877: wire up html rendering for composites
80244dc is described below
commit 80244dc94dc3ebfe6b9a87186793e79b7ca4cf4a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Mar 7 13:32:50 2022 +0100
ISIS-2877: wire up html rendering for composites
---
.../isis/core/metamodel/spec/ManagedObject.java | 2 +-
.../cal/persistence/IsisCalendarEventSeeding.java | 3 +-
.../cal/samples/IsisCalendarEventSamples.java | 7 +++--
.../applib/value/CalendarEventSemantics.java | 33 ++++++++++++++++++++--
.../scalars/ScalarPanelTextFieldWithComposite.java | 13 +++++++++
5 files changed, 52 insertions(+), 6 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
index 3365434..a4e34f2 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/ManagedObject.java
@@ -163,7 +163,7 @@ public interface ManagedObject {
return String.format("missing ValueFacet %s", spec.getCorrespondingClass());
}
- final Renderer renderer = (Renderer) valueFacet.selectRendererForFeature(feature).orElse(null);
+ val renderer = (Renderer<Object>) valueFacet.selectRendererForFeature(feature).orElse(null);
if(renderer==null) {
return String.format("missing Renderer %s", spec.getCorrespondingClass());
}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/cal/persistence/IsisCalendarEventSeeding.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/cal/persistence/IsisCalendarEventSeeding.java
index f1347b8..573760a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/cal/persistence/IsisCalendarEventSeeding.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/cal/persistence/IsisCalendarEventSeeding.java
@@ -32,7 +32,8 @@ public class IsisCalendarEventSeeding
extends SeedServiceAbstract {
@Inject
- public IsisCalendarEventSeeding(final ValueHolderRepository<CalendarEvent, ? extends IsisCalendarEventEntity> entities) {
+ public IsisCalendarEventSeeding(
+ final ValueHolderRepository<CalendarEvent, ? extends IsisCalendarEventEntity> entities) {
super(entities);
}
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/cal/samples/IsisCalendarEventSamples.java b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/cal/samples/IsisCalendarEventSamples.java
index 9cee7d9..12b2711 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/cal/samples/IsisCalendarEventSamples.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/types/isisext/cal/samples/IsisCalendarEventSamples.java
@@ -25,6 +25,7 @@ import javax.inject.Inject;
import org.springframework.stereotype.Service;
import org.apache.isis.extensions.fullcalendar.applib.value.CalendarEvent;
+import org.apache.isis.extensions.fullcalendar.applib.value.CalendarEventSemantics;
import demoapp.dom.types.Samples;
import demoapp.dom.types.javatime.javatimezoneddatetime.samples.JavaTimeZonedDateTimeSamples;
@@ -36,8 +37,10 @@ public class IsisCalendarEventSamples implements Samples<CalendarEvent> {
@Override
public Stream<CalendarEvent> stream() {
- return zonedDateTimeSamples.stream()
- .map(dateTime->CalendarEvent.of(dateTime, "A Calendar", "New Event"));
+ return new CalendarEventSemantics()
+ .getExamples()
+ .stream();
}
+
}
diff --git a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEventSemantics.java b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEventSemantics.java
index a30c833..b199351 100644
--- a/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEventSemantics.java
+++ b/extensions/vw/fullcalendar/applib/src/main/java/org/apache/isis/extensions/fullcalendar/applib/value/CalendarEventSemantics.java
@@ -24,6 +24,8 @@ import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
+import javax.inject.Inject;
+
import org.springframework.context.annotation.Import;
import org.springframework.stereotype.Component;
@@ -38,9 +40,11 @@ import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.applib.util.schema.CommonDtoUtils;
import org.apache.isis.applib.value.semantics.DefaultsProvider;
import org.apache.isis.applib.value.semantics.Renderer;
+import org.apache.isis.applib.value.semantics.TemporalValueSemantics;
import org.apache.isis.applib.value.semantics.ValueDecomposition;
import org.apache.isis.applib.value.semantics.ValueSemanticsAbstract;
import org.apache.isis.commons.collections.Can;
+import org.apache.isis.commons.internal.base._Strings;
import org.apache.isis.schema.common.v2.TypedTupleDto;
import org.apache.isis.schema.common.v2.ValueType;
@@ -59,6 +63,8 @@ implements
DefaultsProvider<CalendarEvent>,
Renderer<CalendarEvent> {
+ @Inject private TemporalValueSemantics<ZonedDateTime> zonedDateTimeValueSemantics;
+
@Override
public Class<CalendarEvent> getCorrespondingClass() {
return CalendarEvent.class;
@@ -113,6 +119,27 @@ implements
return render(value, v->v.toString());
}
+ @Override
+ public String htmlPresentation(final Context context, final CalendarEvent value) {
+ return render(value, v->{
+
+ return String.format("<section style=\""
+ + "border: 1px solid rgba(0,0,0,.125);"
+ + "padding: 2px 4px;"
+ + "\">"
+ + "<h6>%s (%s)</h6>"
+ + "<span>%s</span>"
+ + "<p>%s</p>"
+ + "</section>",
+ v.getTitle(),
+ v.getCalendarName(),
+ zonedDateTimeValueSemantics
+ .htmlPresentation(context,
+ v.asDateTime(context.getInteractionContext().getTimeZone())),
+ _Strings.nullToEmpty(v.getNotes()));
+ });
+ }
+
// -- EXAMPLES
@Override
@@ -121,12 +148,14 @@ implements
val a = CalendarEvent.of(
ZonedDateTime.of(2022, 05, 13, 17, 30, 15, 0, ZoneOffset.ofHours(3)),
"a-name",
- "a-title");
+ "a-title",
+ "Calendar Notes");
val b = CalendarEvent.of(
ZonedDateTime.of(2022, 06, 14, 18, 31, 16, 0, ZoneOffset.ofHours(4)),
"b-name",
- "b-title");
+ "b-title",
+ "Calendar Notes");
val c = CalendarEvent.of(
ZonedDateTime.of(2022, 07, 15, 19, 32, 17, 0, ZoneOffset.ofHours(5)),
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithComposite.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithComposite.java
index 576521e..f72d96c 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithComposite.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelTextFieldWithComposite.java
@@ -18,7 +18,10 @@
*/
package org.apache.isis.viewer.wicket.ui.components.scalars;
+import org.apache.wicket.Component;
+
import org.apache.isis.viewer.wicket.model.models.ScalarModel;
+import org.apache.isis.viewer.wicket.ui.components.scalars.markup.MarkupComponent;
public class ScalarPanelTextFieldWithComposite<T>
extends ScalarPanelTextFieldWithValueSemantics<T> {
@@ -33,4 +36,14 @@ extends ScalarPanelTextFieldWithValueSemantics<T> {
super(id, scalarModel, valueType, TextFieldVariant.MULTI_LINE);
}
+ @Override
+ protected InlinePromptConfig getInlinePromptConfig() {
+ return super.getInlinePromptConfig().withEditIcon();
+ }
+
+ @Override
+ protected Component createComponentForCompact(final String id) {
+ return new MarkupComponent(id, scalarModel());
+ }
+
}