You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by jd...@apache.org on 2022/09/28 14:18:18 UTC

[isis-app-simpleapp] 01/01: Demonstrates issue ISIS-3226

This is an automated email from the ASF dual-hosted git repository.

jdoornenbal pushed a commit to branch ISIS-3226
in repository https://gitbox.apache.org/repos/asf/isis-app-simpleapp.git

commit 90a9ed5f2ce334427ebdc45a0833d8a12cda4b67
Author: Johan Doornenbal <jo...@yodo.nl>
AuthorDate: Wed Sep 28 16:18:05 2022 +0200

    Demonstrates issue ISIS-3226
---
 .../modules/simple/dom/so/SimpleObjects.java       | 22 +++++----
 .../domainapp/modules/simple/dom/so/SimpleVM.java  | 44 ++++++++++++++++++
 .../modules/simple/dom/so/SimpleVM.layout.xml      | 52 ++++++++++++++++++++++
 webapp/src/main/resources/menubars.layout.xml      |  1 +
 4 files changed, 111 insertions(+), 8 deletions(-)

diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java
index 0a2cf1f..63f8eb6 100644
--- a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleObjects.java
@@ -1,20 +1,15 @@
 package domainapp.modules.simple.dom.so;
 
+import java.time.LocalDate;
 import java.util.List;
 
+import javax.annotation.Nullable;
 import javax.annotation.Priority;
 import javax.inject.Inject;
 import javax.inject.Named;
 import javax.persistence.TypedQuery;
 
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.BookmarkPolicy;
-import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.PriorityPrecedence;
-import org.apache.isis.applib.annotation.PromptStyle;
-import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.annotation.*;
 import org.apache.isis.applib.query.Query;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.persistence.jpa.applib.services.JpaSupportService;
@@ -34,6 +29,17 @@ public class SimpleObjects {
     final JpaSupportService jpaSupportService;
     final SimpleObjectRepository simpleObjectRepository;
 
+    @Action()
+    public SimpleVM testWithViewModel(@Nullable final SimpleObject object, @Nullable LocalDate date, @Nullable String name){
+        return new SimpleVM(object, date, name);
+    }
+
+    @MemberSupport()
+    public List<SimpleObject> choices0TestWithViewModel(){
+        return simpleObjectRepository.findAll();
+    }
+
+
 
     @Action(semantics = SemanticsOf.NON_IDEMPOTENT)
     @ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR)
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleVM.java b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleVM.java
new file mode 100644
index 0000000..8bd2abe
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleVM.java
@@ -0,0 +1,44 @@
+package domainapp.modules.simple.dom.so;
+
+import domainapp.modules.simple.SimpleModule;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.annotation.ObjectSupport;
+import org.apache.isis.applib.annotation.Property;
+
+import javax.inject.Named;
+import java.time.LocalDate;
+
+@DomainObject(nature = Nature.VIEW_MODEL)
+@Named(SimpleModule.NAMESPACE + ".SimpleVM")
+@NoArgsConstructor
+public class SimpleVM {
+
+    public SimpleVM(SimpleObject object, LocalDate date, String name){
+        this.object = object;
+        this.someDate = date;
+        this.name = name;
+    }
+
+    @ObjectSupport
+    public String title(){
+        return "Simple viewmodel";
+    }
+
+    @Property
+    @Getter @Setter
+    private SimpleObject object;
+
+    @Property
+    @Getter @Setter
+    private LocalDate someDate;
+
+    @Property
+    @Getter @Setter
+    private String name;
+
+
+}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleVM.layout.xml b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleVM.layout.xml
new file mode 100644
index 0000000..7ce987a
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/so/SimpleVM.layout.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<bs3:grid xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd" xmlns:c="http://isis.apache.org/applib/layout/component" xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <bs3:row>
+        <bs3:col span="12" unreferencedActions="true">
+            <c:domainObject bookmarking="AS_ROOT"/>
+        </bs3:col>
+    </bs3:row>
+    <bs3:row>
+        <bs3:col span="6">
+            <bs3:row>
+                <bs3:col span="12">
+                    <bs3:tabGroup>
+                        <bs3:tab name="Identity">
+                            <bs3:row>
+                                <bs3:col span="12">
+                                    <c:fieldSet name="Identity" id="identity"/>
+                                </bs3:col>
+                            </bs3:row>
+                        </bs3:tab>
+                        <bs3:tab name="Other">
+                            <bs3:row>
+                                <bs3:col span="12">
+                                    <c:fieldSet name="Other" id="other" unreferencedProperties="true"/>
+                                </bs3:col>
+                            </bs3:row>
+                        </bs3:tab>
+                        <bs3:tab name="Metadata">
+                            <bs3:row>
+                                <bs3:col span="12">
+                                    <c:fieldSet name="Metadata" id="metadata"/>
+                                </bs3:col>
+                            </bs3:row>
+                        </bs3:tab>
+                    </bs3:tabGroup>
+                </bs3:col>
+                <bs3:col span="12">
+                    <c:fieldSet name="Details" id="details"/>
+                </bs3:col>
+            </bs3:row>
+        </bs3:col>
+        <bs3:col span="6">
+            <bs3:row>
+                <bs3:col span="12">
+                    <c:fieldSet name="Content" id="content"/>
+                </bs3:col>
+            </bs3:row>
+            <bs3:tabGroup  unreferencedCollections="true">
+            </bs3:tabGroup>
+        </bs3:col>
+    </bs3:row>
+</bs3:grid>
diff --git a/webapp/src/main/resources/menubars.layout.xml b/webapp/src/main/resources/menubars.layout.xml
index a7ac932..c382211 100644
--- a/webapp/src/main/resources/menubars.layout.xml
+++ b/webapp/src/main/resources/menubars.layout.xml
@@ -4,6 +4,7 @@
         <mb3:menu>
             <mb3:named>Simple Objects</mb3:named>
             <mb3:section>
+                <mb3:serviceAction objectType="simple.SimpleObjects" id="testWithViewModel"/>
                 <mb3:serviceAction objectType="simple.SimpleObjects" id="create"/>
                 <mb3:serviceAction objectType="simple.SimpleObjects" id="findByName"/>
                 <mb3:serviceAction objectType="simple.SimpleObjects" id="findByNameLike"/>