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());
+    }
+
 }