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 <[email protected]> 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"/>
