You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2014/12/05 08:37:34 UTC
isis git commit: ISIS-964: updating todoapp and simpleapp;
debugging the new layout hints
Repository: isis
Updated Branches:
refs/heads/ISIS-964 4495b1a6c -> a39c81586
ISIS-964: updating todoapp and simpleapp; debugging the new layout hints
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/a39c8158
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/a39c8158
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/a39c8158
Branch: refs/heads/ISIS-964
Commit: a39c815863e41de354a3b80947e1ab17c9638c09
Parents: 4495b1a
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Fri Dec 5 07:37:08 2014 +0000
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Fri Dec 5 07:37:08 2014 +0000
----------------------------------------------------------------------
.../applib/annotation/CollectionLayout.java | 5 +
...tedByFacetForCollectionLayoutAnnotation.java | 4 +
...ByFacetOnCollectionFromLayoutProperties.java | 6 +-
.../json/LayoutMetadataReaderFromJson.java | 20 +--
.../src/main/java/dom/simple/SimpleObjects.java | 4 +-
.../simple/SimpleObjectsFixturesService.java | 6 +-
.../dom/src/main/java/app/ToDoAppDashboard.java | 16 +-
.../dom/src/main/java/app/ToDoItemAnalysis.java | 18 ++-
.../java/app/ToDoItemsByCategoryViewModel.java | 34 ++--
.../java/app/ToDoItemsByDateRangeViewModel.java | 6 +-
.../dom/src/main/java/dom/todo/ToDoItem.java | 10 +-
.../src/main/java/dom/todo/ToDoItem.layout.json | 158 ++++++++++---------
.../java/dom/todo/ToDoItemContributions.java | 6 +-
.../java/dom/todo/ToDoItemSubscriptions.java | 9 +-
.../dom/src/main/java/dom/todo/ToDoItems.java | 18 ++-
.../fixture/todo/ToDoItemsFixturesService.java | 17 +-
.../prototyping/ExternalLinksService.java | 14 +-
.../prototyping/WicketDeveloperUtilities.java | 6 +-
18 files changed, 205 insertions(+), 152 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/core/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java
index f189bd8..007bf4d 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java
@@ -47,6 +47,11 @@ public @interface CollectionLayout {
/**
* Indicates where in the UI the collection should <i>not</i>not be visible.
+ *
+ * <p>
+ * Only {@link Where#NOWHERE NOWHERE} or {@link Where#EVERYWHERE EVERYWHERE}/{@link Where#ANYWHERE ANYWHERE}
+ * apply for collections.
+ * </p>
*/
Where hidden() default Where.NOWHERE;
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetForCollectionLayoutAnnotation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetForCollectionLayoutAnnotation.java
index 470f7fa..e988062 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetForCollectionLayoutAnnotation.java
@@ -32,6 +32,10 @@ public class SortedByFacetForCollectionLayoutAnnotation extends SortedByFacetAbs
return null;
}
final Class sortedBy = collectionLayout.sortedBy();
+ if(sortedBy == Comparator.class) {
+ return null;
+ }
+
return sortedBy != null ? new SortedByFacetForCollectionLayoutAnnotation(sortedBy, holder) : null;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetOnCollectionFromLayoutProperties.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetOnCollectionFromLayoutProperties.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetOnCollectionFromLayoutProperties.java
index 61955af..8a74d02 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetOnCollectionFromLayoutProperties.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/SortedByFacetOnCollectionFromLayoutProperties.java
@@ -45,7 +45,11 @@ public class SortedByFacetOnCollectionFromLayoutProperties extends SortedByFacet
if (sortedBy == null) {
return null;
}
- return ClassUtil.forName(sortedBy);
+ final Class<?> sortedByClass = ClassUtil.forName(sortedBy);
+ if(sortedByClass == Comparator.class) {
+ return null;
+ }
+ return sortedByClass;
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
index 1e6c579..c135482 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/layoutmetadata/json/LayoutMetadataReaderFromJson.java
@@ -177,12 +177,12 @@ public class LayoutMetadataReaderFromJson implements LayoutMetadataReader {
final PropertyLayoutFacetRepr propertyLayout = memberRepr.propertyLayout;
if(propertyLayout!= null) {
- props.setProperty("member." + memberName + ".propertyLayout.cssClass", propertyLayout.cssClass);
- props.setProperty("member." + memberName + ".propertyLayout.describedAs", propertyLayout.describedAs);
+ props.setProperty("member." + memberName + ".propertyLayout.cssClass", ""+propertyLayout.cssClass);
+ props.setProperty("member." + memberName + ".propertyLayout.describedAs", ""+propertyLayout.describedAs);
props.setProperty("member." + memberName + ".propertyLayout.hidden", ""+propertyLayout.hidden);
props.setProperty("member." + memberName + ".propertyLayout.labelPosition", ""+propertyLayout.labelPosition);
props.setProperty("member." + memberName + ".propertyLayout.multiLine", ""+propertyLayout.multiLine);
- props.setProperty("member." + memberName + ".propertyLayout.named", propertyLayout.named);
+ props.setProperty("member." + memberName + ".propertyLayout.named", ""+propertyLayout.named);
props.setProperty("member." + memberName + ".propertyLayout.renderedAsDayBefore", ""+propertyLayout.renderedAsDayBefore);
props.setProperty("member." + memberName + ".propertyLayout.typicalLength", ""+propertyLayout.typicalLength);
}
@@ -190,10 +190,10 @@ public class LayoutMetadataReaderFromJson implements LayoutMetadataReader {
// collectionLayout
final CollectionLayoutFacetRepr collectionLayout = memberRepr.collectionLayout;
if(collectionLayout!= null) {
- props.setProperty("member." + memberName + ".collectionLayout.cssClass", collectionLayout.cssClass);
- props.setProperty("member." + memberName + ".collectionLayout.describedAs", collectionLayout.describedAs);
+ props.setProperty("member." + memberName + ".collectionLayout.cssClass", ""+collectionLayout.cssClass);
+ props.setProperty("member." + memberName + ".collectionLayout.describedAs", ""+collectionLayout.describedAs);
props.setProperty("member." + memberName + ".collectionLayout.hidden", ""+collectionLayout.hidden);
- props.setProperty("member." + memberName + ".collectionLayout.named", collectionLayout.named);
+ props.setProperty("member." + memberName + ".collectionLayout.named", ""+collectionLayout.named);
props.setProperty("member." + memberName + ".collectionLayout.paged", ""+collectionLayout.paged);
props.setProperty("member." + memberName + ".collectionLayout.render", ""+collectionLayout.render);
props.setProperty("member." + memberName + ".collectionLayout.sortedBy", ""+collectionLayout.sortedBy);
@@ -289,11 +289,11 @@ public class LayoutMetadataReaderFromJson implements LayoutMetadataReader {
final ActionLayoutFacetRepr actionLayout = actionRepr.actionLayout;
if(actionLayout != null) {
- props.setProperty(prefix +"." + actionName + ".actionLayout.cssClass", actionLayout.cssClass);
- props.setProperty(prefix +"." + actionName + ".actionLayout.cssClassFa", actionLayout.cssClassFa);
- props.setProperty(prefix +"." + actionName + ".actionLayout.describedAs", actionLayout.describedAs);
+ props.setProperty(prefix +"." + actionName + ".actionLayout.cssClass", ""+actionLayout.cssClass);
+ props.setProperty(prefix +"." + actionName + ".actionLayout.cssClassFa", ""+actionLayout.cssClassFa);
+ props.setProperty(prefix +"." + actionName + ".actionLayout.describedAs", ""+actionLayout.describedAs);
props.setProperty(prefix +"." + actionName + ".actionLayout.hidden", ""+actionLayout.hidden);
- props.setProperty(prefix +"." + actionName + ".actionLayout.named", actionLayout.named);
+ props.setProperty(prefix +"." + actionName + ".actionLayout.named", ""+actionLayout.named);
props.setProperty(prefix +"." + actionName + ".actionLayout.position", ""+actionLayout.position);
props.setProperty(prefix +"." + actionName + ".actionLayout.prototype", ""+actionLayout.prototype);
}
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java b/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java
index 264435c..5540293 100644
--- a/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java
+++ b/example/application/simpleapp/dom/src/main/java/dom/simple/SimpleObjects.java
@@ -25,7 +25,7 @@ import org.apache.isis.applib.annotation.ActionSemantics.Of;
import org.apache.isis.applib.annotation.Bookmarkable;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
+import org.apache.isis.applib.annotation.ParameterLayout;
@DomainService(menuOrder = "10", repositoryFor = SimpleObject.class)
public class SimpleObjects {
@@ -44,7 +44,7 @@ public class SimpleObjects {
//region > create (action)
@MemberOrder(sequence = "2")
public SimpleObject create(
- final @Named("Name") String name) {
+ final @ParameterLayout(named="Name") String name) {
final SimpleObject obj = container.newTransientInstance(SimpleObject.class);
obj.setName(name);
container.persistIfNotAlready(obj);
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/example/application/simpleapp/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java b/example/application/simpleapp/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
index 7868d3c..7f57ab6 100644
--- a/example/application/simpleapp/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
+++ b/example/application/simpleapp/fixture/src/main/java/fixture/simple/SimpleObjectsFixturesService.java
@@ -21,9 +21,9 @@ package fixture.simple;
import fixture.simple.scenario.SimpleObjectsFixture;
import java.util.List;
+import org.apache.isis.applib.annotation.ClassLayout;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
import org.apache.isis.applib.annotation.Prototype;
import org.apache.isis.applib.fixturescripts.FixtureResult;
import org.apache.isis.applib.fixturescripts.FixtureScript;
@@ -33,8 +33,8 @@ import org.apache.isis.applib.fixturescripts.SimpleFixtureScript;
/**
* Enables fixtures to be installed from the application.
*/
-@Named("Prototyping")
-@DomainService(menuOrder = "20")
+@ClassLayout(named="Prototyping")
+@DomainService(menuBar= DomainService.MenuBar.SECONDARY, menuOrder = "20")
public class SimpleObjectsFixturesService extends FixtureScripts {
public SimpleObjectsFixturesService() {
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/example/application/todoapp/dom/src/main/java/app/ToDoAppDashboard.java
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/src/main/java/app/ToDoAppDashboard.java b/example/application/todoapp/dom/src/main/java/app/ToDoAppDashboard.java
index 47210ff..b50a50d 100644
--- a/example/application/todoapp/dom/src/main/java/app/ToDoAppDashboard.java
+++ b/example/application/todoapp/dom/src/main/java/app/ToDoAppDashboard.java
@@ -20,10 +20,8 @@ package app;
import java.util.List;
import org.apache.isis.applib.AbstractViewModel;
+import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.applib.annotation.Disabled;
-import org.apache.isis.applib.annotation.Named;
-import org.apache.isis.applib.annotation.Render;
-import org.apache.isis.applib.annotation.Render.Type;
public class ToDoAppDashboard extends AbstractViewModel {
@@ -49,8 +47,10 @@ public class ToDoAppDashboard extends AbstractViewModel {
//endregion
//region > getAnalysisByCategory (collection)
- @Named("By Category")
- @Render(Type.EAGERLY)
+ @CollectionLayout(
+ named="By Category",
+ render = CollectionLayout.RenderType.EAGERLY
+ )
@Disabled
public List<ToDoItemsByCategoryViewModel> getAnalysisByCategory() {
return toDoItemAnalysis.toDoItemsByCategory();
@@ -58,8 +58,10 @@ public class ToDoAppDashboard extends AbstractViewModel {
//endregion
//region > getAnalysisByDateRange (collection)
- @Named("By Date Range")
- @Render(Type.EAGERLY)
+ @CollectionLayout(
+ named="By Date Range",
+ render = CollectionLayout.RenderType.EAGERLY
+ )
@Disabled
public List<ToDoItemsByDateRangeViewModel> getAnalysisByDateRange() {
return toDoItemAnalysis.toDoItemsByDateRange();
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/example/application/todoapp/dom/src/main/java/app/ToDoItemAnalysis.java
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/src/main/java/app/ToDoItemAnalysis.java b/example/application/todoapp/dom/src/main/java/app/ToDoItemAnalysis.java
index ebbcc5d..ba0617f 100644
--- a/example/application/todoapp/dom/src/main/java/app/ToDoItemAnalysis.java
+++ b/example/application/todoapp/dom/src/main/java/app/ToDoItemAnalysis.java
@@ -26,16 +26,16 @@ import com.google.common.base.Function;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import org.apache.isis.applib.DomainObjectContainer;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.ActionSemantics;
import org.apache.isis.applib.annotation.ActionSemantics.Of;
import org.apache.isis.applib.annotation.Bookmarkable;
-import org.apache.isis.applib.annotation.CssClassFa;
+import org.apache.isis.applib.annotation.ClassLayout;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
import org.apache.isis.applib.annotation.Programmatic;
-@Named("Analysis")
+@ClassLayout(named="Analysis")
@DomainService(menuOrder = "20")
public class ToDoItemAnalysis {
@@ -52,8 +52,10 @@ public class ToDoItemAnalysis {
//region > byCategory (action)
- @CssClassFa("fa fa-pie-chart")
- @Named("By Category")
+ @ActionLayout(
+ cssClassFa="fa fa-pie-chart",
+ named="By Category"
+ )
@Bookmarkable
@ActionSemantics(Of.SAFE)
@MemberOrder(sequence = "1")
@@ -83,8 +85,10 @@ public class ToDoItemAnalysis {
Unknown,
}
- @CssClassFa("fa fa-calendar")
- @Named("By Date Range")
+ @ActionLayout(
+ cssClassFa="fa fa-calendar",
+ named="By Date Range"
+ )
@Bookmarkable
@ActionSemantics(Of.SAFE)
@MemberOrder(sequence = "1")
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/example/application/todoapp/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java b/example/application/todoapp/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java
index 19abcac..465d707 100644
--- a/example/application/todoapp/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java
+++ b/example/application/todoapp/dom/src/main/java/app/ToDoItemsByCategoryViewModel.java
@@ -20,7 +20,6 @@ package app;
import dom.todo.ToDoItem;
import dom.todo.ToDoItem.Category;
-import dom.todo.ToDoItem.Subcategory;
import dom.todo.ToDoItems;
import java.util.Arrays;
@@ -30,16 +29,19 @@ import com.google.common.base.Joiner;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import org.apache.isis.applib.DomainObjectContainer;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.Bookmarkable;
-import org.apache.isis.applib.annotation.MultiLine;
-import org.apache.isis.applib.annotation.Named;
+import org.apache.isis.applib.annotation.ClassLayout;
+import org.apache.isis.applib.annotation.PropertyLayout;
import org.apache.isis.applib.annotation.Render;
import org.apache.isis.applib.annotation.Render.Type;
import org.apache.isis.applib.annotation.Title;
import org.apache.isis.applib.annotation.ViewModel;
import org.apache.isis.applib.util.ObjectContracts;
-@Named("By Category")
+@ClassLayout(
+ named="By Category"
+)
@Bookmarkable
@ViewModel
public class ToDoItemsByCategoryViewModel
@@ -68,14 +70,18 @@ public class ToDoItemsByCategoryViewModel
//endregion
//region > notYetComplete (property), complete (property)
- @MultiLine(numberOfLines=5)
+ @PropertyLayout(
+ multiLine=5
+ )
public String getNotYetComplete() {
final List<ToDoItem> notYetComplete = getItemsNotYetComplete();
return Joiner.on(", ").join(
Iterables.transform(subcategories(), summarizeBySubcategory(notYetComplete)));
}
- @MultiLine(numberOfLines=5)
+ @PropertyLayout(
+ multiLine=5
+ )
public String getComplete() {
final List<ToDoItem> completeInCategory = getItemsComplete();
return Joiner.on(", ").join(
@@ -84,20 +90,20 @@ public class ToDoItemsByCategoryViewModel
// //////////////////////////////////////
- private Iterable<Subcategory> subcategories() {
- return Iterables.filter(Arrays.asList(Subcategory.values()), Subcategory.thoseFor(getCategory()));
+ private Iterable<ToDoItem.Subcategory> subcategories() {
+ return Iterables.filter(Arrays.asList(ToDoItem.Subcategory.values()), ToDoItem.Subcategory.thoseFor(getCategory()));
}
- private Function<Subcategory, String> summarizeBySubcategory(final Iterable<ToDoItem> itemsInCategory) {
- return new Function<Subcategory, String>() {
+ private Function<ToDoItem.Subcategory, String> summarizeBySubcategory(final Iterable<ToDoItem> itemsInCategory) {
+ return new Function<ToDoItem.Subcategory, String>() {
@Override
- public String apply(final Subcategory subcategory) {
+ public String apply(final ToDoItem.Subcategory subcategory) {
return subcategory + ": " + countIn(itemsInCategory, subcategory);
}
};
}
- private static int countIn(final Iterable<ToDoItem> items, final Subcategory subcategory) {
+ private static int countIn(final Iterable<ToDoItem> items, final ToDoItem.Subcategory subcategory) {
return Iterables.size(Iterables.filter(items,
ToDoItem.Predicates.thoseSubcategorised(subcategory)));
}
@@ -125,7 +131,9 @@ public class ToDoItemsByCategoryViewModel
//endregion
//region > deleteCompleted (action)
- @Named("Delete")
+ @ActionLayout(
+ named="Delete"
+ )
public ToDoItemsByCategoryViewModel deleteCompleted() {
for (ToDoItem item : getItemsComplete()) {
container.removeIfNotAlready(item);
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/example/application/todoapp/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.java
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.java b/example/application/todoapp/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.java
index 12291af..ee72334 100644
--- a/example/application/todoapp/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.java
+++ b/example/application/todoapp/dom/src/main/java/app/ToDoItemsByDateRangeViewModel.java
@@ -29,7 +29,7 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import org.joda.time.DateTime;
import org.apache.isis.applib.annotation.Bookmarkable;
-import org.apache.isis.applib.annotation.Named;
+import org.apache.isis.applib.annotation.ClassLayout;
import org.apache.isis.applib.annotation.Render;
import org.apache.isis.applib.annotation.Render.Type;
import org.apache.isis.applib.annotation.Title;
@@ -37,7 +37,9 @@ import org.apache.isis.applib.annotation.ViewModel;
import org.apache.isis.applib.services.clock.ClockService;
import org.apache.isis.applib.util.ObjectContracts;
-@Named("By Date Range")
+@ClassLayout(
+ named="By Date Range"
+)
@Bookmarkable
@ViewModel
public class ToDoItemsByDateRangeViewModel
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java
index c3244fb..6a6aad8 100644
--- a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java
+++ b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.java
@@ -580,11 +580,11 @@ public class ToDoItem implements Categorized, Comparable<ToDoItem> {
// (a) has different semantics and (b) is in any case automatically ignored
// by the framework
public ToDoItem duplicate(
- final @RegEx(validation = "\\w[@&:\\-\\,\\.\\+ \\w]*") @Named("Description") String description,
- final @Named("Category") Category category,
- final @Named("Subcategory") Subcategory subcategory,
- final @Optional @Named("Due by") LocalDate dueBy,
- final @Optional @Named("Cost") BigDecimal cost) {
+ final @RegEx(validation = "\\w[@&:\\-\\,\\.\\+ \\w]*") @ParameterLayout(named="Description") String description,
+ final @ParameterLayout(named="Category") Category category,
+ final @ParameterLayout(named="Subcategory") Subcategory subcategory,
+ final @Optional @ParameterLayout(named="Due by") LocalDate dueBy,
+ final @Optional @ParameterLayout(named="Cost") BigDecimal cost) {
return toDoItems.newToDo(description, category, subcategory, dueBy, cost);
}
public String default0Duplicate() {
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json
index 0619d46..9d9f7a8 100644
--- a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json
+++ b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItem.layout.json
@@ -22,54 +22,64 @@
"General": {
"members": {
"description": {
- "typicalLength": { "value": 50 },
- "propertyLayout": { "labelPosition": "TOP" }
+ "propertyLayout": {
+ "labelPosition": "TOP",
+ "typicalLength": 50
+ }
},
"category": {
- "propertyLayout": { "labelPosition": "TOP" }
+ "propertyLayout": {
+ "labelPosition": "TOP"
+ }
},
"subcategory": {
- "propertyLayout": { "labelPosition": "NONE" },
+ "propertyLayout": {
+ "labelPosition": "NONE"
+ },
"actions": {
"updateCategory": {
- "named": {
- "value": "Update"
+ "actionLayout": {
+ "named": "Update"
}
},
"analyseCategory": {
- "cssClass": { "value": "btn-default" },
- "cssClassFa": { "value": "fa fa-pie-chart" }
+ "actionLayout": {
+ "cssClass": "btn-default",
+ "cssClassFa": "fa fa-pie-chart"
+ }
}
}
},
"ownedBy": {
- "hidden": {}
+ "propertyLayout": {
+ "hidden": "EVERYWHERE"
+ }
},
"complete": {
+ "propertyLayout": {
+ "describedAs": "Whether this todo item has been completed"
+ },
"actions": {
"completed": {
- "named": { "value": "Done" },
- "describedAs": {
- "value": "Update this todo item as complete"
- },
- "cssClass": { "value": "btn-success" },
- "cssClassFa": { "value": "fa fa-thumbs-up" }
+ "actionLayout": {
+ "named": "Done",
+ "describedAs": "Update this todo item as complete",
+ "cssClass": "btn-success",
+ "cssClassFa": "fa fa-thumbs-up"
+ }
},
"notYetCompleted": {
- "named": { "value": "Not done" },
- "describedAs": {
- "value": "Update this todo item as not yet complete"
- },
- "cssClass": { "value": "btn-info" },
- "cssClassFa": { "value": "fa fa-thumbs-down" }
+ "actionLayout": {
+ "named": "Not done",
+ "describedAs": "Update this todo item as not yet complete",
+ "cssClass": "btn-info",
+ "cssClassFa": "fa fa-thumbs-down"
+ }
},
"scheduleExplicitly": {
},
"scheduleImplicitly": {
}
- },
- "describedAs": {
- "value": "Whether this todo item has been completed"
}
}
}
@@ -77,13 +87,11 @@
"Misc": {
"members": {
"versionSequence": {
- "named": {
- "value": "Version"
+ "propertyLayout": {
+ "named": "Version",
+ "hidden": "ALL_TABLES"
},
- "disabled": {},
- "hidden": {
- "where": "ALL_TABLES"
- }
+ "disabled": {}
}
}
}
@@ -97,15 +105,21 @@
"relativePriority": {
"actions": {
"previous": {
- "cssClassFa": { "value": "fa fa-step-backward" }
+ "actionLayout": {
+ "cssClassFa": "fa fa-step-backward"
+ }
},
"next": {
- "cssClassFa": { "value": "fa fa-step-forward" }
+ "actionLayout": {
+ "cssClassFa": "fa fa-step-forward"
+ }
}
}
},
"dueBy": {
- "cssClass": { "value": "x-key" }
+ "propertyLayout": {
+ "cssClass": "x-key"
+ }
}
}
},
@@ -114,28 +128,28 @@
"cost": {
"actions": {
"updateCost":{
- "named": { "value": "Update" },
- "cssClassFa": { "value": "fa fa-dollar" }
+ "actionLayout": {
+ "named": "Update",
+ "cssClassFa": "fa fa-dollar"
+ }
}
}
},
"notes": {
- "multiLine": {
- "numberOfLines": 5
- },
- "hidden": {
- "where": "ALL_TABLES"
- },
- "propertyLayout": { "labelPosition": "TOP" }
+ "propertyLayout": {
+ "hidden": "ALL_TABLES",
+ "labelPosition": "TOP",
+ "multiLine": 5
+ }
},
"attachment": {
- "hidden": {
- "where": "STANDALONE_TABLES"
+ "propertyLayout": {
+ "hidden": "STANDALONE_TABLES"
}
},
"doc": {
- "hidden": {
- "where": "STANDALONE_TABLES"
+ "propertyLayout": {
+ "hidden": "STANDALONE_TABLES"
}
}
}
@@ -149,32 +163,32 @@
"span": 6,
"collections": {
"dependencies": {
+ "collectionLayout": {
+ "paged": 5,
+ "render": "EAGERLY"
+ },
"disabled": {},
"actions": {
"add":{
- "cssClass": { "value": "btn-default" },
- "cssClassFa": { "value": "fa fa-plus-square" }
+ "actionLayout": {
+ "cssClass": "btn-default",
+ "cssClassFa": "fa fa-plus-square"
+ }
},
"remove": {
- "cssClass": { "value": "x-caution btn-default" },
- "cssClassFa": { "value": "fa fa-minus-square" }
+ "actionLayout": {
+ "cssClass": "x-caution btn-default",
+ "cssClassFa": "fa fa-minus-square"
+ }
}
- },
- "paged": {
- "value": 5
- },
- "render": {
- "value": "EAGERLY"
}
},
"similarTo": {
- "disabled": {},
- "paged": {
- "value": 3
+ "collectionLayout": {
+ "paged": 3,
+ "render": "LAZILY"
},
- "render": {
- "value": "LAZILY"
- }
+ "disabled": {}
}
}
}
@@ -182,18 +196,18 @@
"actions": {
"totalCost": {},
"delete": {
- "cssClass": { "value": "btn btn-danger" },
- "cssClassFa": { "value": "fa fa-trash fa-lg" }
+ "actionLayout": {
+ "cssClass": "btn btn-danger",
+ "cssClassFa": "fa fa-trash fa-lg"
+ }
},
"duplicate": {
- "named": {
- "value": "Clone"
- },
- "describedAs": {
- "value": "Create a new todo item from this one"
- },
- "cssClass": { "value": "btn-default" },
- "cssClassFa": { "value": "fa fa-copy fa-lg" }
+ "actionLayout": {
+ "named": "Clone",
+ "describedAs": "Create a new todo item from this one",
+ "cssClass": "btn-default",
+ "cssClassFa": "fa fa-copy fa-lg"
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItemContributions.java
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItemContributions.java b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItemContributions.java
index 011ed2b..3ea61ff 100644
--- a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItemContributions.java
+++ b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItemContributions.java
@@ -36,11 +36,11 @@ import org.apache.isis.applib.annotation.DescribedAs;
import org.apache.isis.applib.annotation.Disabled;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.Hidden;
-import org.apache.isis.applib.annotation.Named;
import org.apache.isis.applib.annotation.NotContributed;
import org.apache.isis.applib.annotation.NotContributed.As;
import org.apache.isis.applib.annotation.NotInServiceMenu;
import org.apache.isis.applib.annotation.Optional;
+import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.Where;
import org.apache.isis.applib.query.QueryDefault;
import org.apache.isis.applib.services.queryresultscache.QueryResultsCache;
@@ -195,8 +195,8 @@ public class ToDoItemContributions extends AbstractFactoryAndRepository {
@ActionSemantics(Of.IDEMPOTENT)
public Categorized updateCategory(
final Categorized item,
- final @Named("Category") Category category,
- final @Optional @Named("Subcategory") Subcategory subcategory) {
+ final @ParameterLayout(named="Category") Category category,
+ final @Optional @ParameterLayout(named="Subcategory") Subcategory subcategory) {
item.setCategory(category);
item.setSubcategory(subcategory);
return item;
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
index f68616d..bd81ae7 100644
--- a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
+++ b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItemSubscriptions.java
@@ -29,6 +29,7 @@ import com.google.common.eventbus.Subscribe;
import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.applib.NonRecoverableException;
import org.apache.isis.applib.RecoverableException;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.ActionSemantics;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.MemberOrder;
@@ -55,7 +56,7 @@ import static com.google.common.collect.Lists.newArrayList;
* vetoing the change).
* </p>
*/
-@DomainService
+@DomainService(menuBar = DomainService.MenuBar.SECONDARY, menuOrder = "30")
public class ToDoItemSubscriptions {
//region > LOG
@@ -124,9 +125,11 @@ public class ToDoItemSubscriptions {
/**
* To demo/test what occurs if a subscriber that might veto an event.
*/
- @Prototype
@MemberOrder(name = "Prototyping", sequence = "80")
- @Named("Set subscriber behaviour")
+ @ActionLayout(
+ named="Set subscriber behaviour",
+ prototype = true
+ )
@NotContributed
@ActionSemantics(ActionSemantics.Of.IDEMPOTENT)
public void subscriberBehaviour(@Named("Behaviour") Behaviour behaviour) {
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItems.java
----------------------------------------------------------------------
diff --git a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItems.java b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItems.java
index bc0aeaa..ac14828 100644
--- a/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItems.java
+++ b/example/application/todoapp/dom/src/main/java/dom/todo/ToDoItems.java
@@ -29,18 +29,20 @@ import org.apache.isis.applib.DomainObjectContainer;
import org.apache.isis.applib.annotation.ActionSemantics;
import org.apache.isis.applib.annotation.ActionSemantics.Of;
import org.apache.isis.applib.annotation.Bookmarkable;
+import org.apache.isis.applib.annotation.ClassLayout;
import org.apache.isis.applib.annotation.CssClassFa;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.MemberOrder;
import org.apache.isis.applib.annotation.Named;
import org.apache.isis.applib.annotation.Optional;
+import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.Programmatic;
import org.apache.isis.applib.annotation.Prototype;
import org.apache.isis.applib.annotation.RegEx;
import org.apache.isis.applib.query.QueryDefault;
import org.apache.isis.applib.services.clock.ClockService;
-@Named("ToDos")
+@ClassLayout(named="ToDos")
@DomainService(menuOrder = "10", repositoryFor = ToDoItem.class)
public class ToDoItems {
@@ -94,9 +96,9 @@ public class ToDoItems {
@MemberOrder(sequence = "40")
@CssClassFa("fa fa-question")
public List<ToDoItem> categorized(
- @Named("Category") final Category category,
- @Named("Subcategory") final Subcategory subcategory,
- @Named("Completed?") final boolean completed) {
+ @ParameterLayout(named="Category") final Category category,
+ @ParameterLayout(named="Subcategory") final Subcategory subcategory,
+ @ParameterLayout(named="Completed?") final boolean completed) {
// an example "naive" implementation (filtered in Java code, not DBMS)
return container.allMatches(ToDoItem.class,
Predicates.and(
@@ -130,10 +132,10 @@ public class ToDoItems {
@MemberOrder(sequence = "5")
public ToDoItem newToDo(
final @RegEx(validation = "\\w[@&:\\-\\,\\.\\+ \\w]*") @Named("Description") String description,
- final @Named("Category") Category category,
- final @Optional @Named("Subcategory") Subcategory subcategory,
- final @Optional @Named("Due by") LocalDate dueBy,
- final @Optional @Named("Cost") BigDecimal cost) {
+ final @ParameterLayout(named="Category") Category category,
+ final @Optional @ParameterLayout(named="Subcategory") Subcategory subcategory,
+ final @Optional @ParameterLayout(named="Due by") LocalDate dueBy,
+ final @Optional @ParameterLayout(named="Cost") BigDecimal cost) {
return newToDo(description, category, subcategory, currentUserName(), dueBy, cost);
}
public Category default1NewToDo() {
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/example/application/todoapp/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
----------------------------------------------------------------------
diff --git a/example/application/todoapp/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java b/example/application/todoapp/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
index 4cb06fa..12305ee 100644
--- a/example/application/todoapp/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
+++ b/example/application/todoapp/fixture/src/main/java/fixture/todo/ToDoItemsFixturesService.java
@@ -21,13 +21,12 @@ package fixture.todo;
import fixture.todo.scenarios.ToDoItemsRecreateAndCompleteSeveral;
import java.util.List;
+import org.apache.isis.applib.annotation.ClassLayout;
import org.apache.isis.applib.annotation.CssClassFa;
-import org.apache.isis.applib.annotation.DescribedAs;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.MultiLine;
-import org.apache.isis.applib.annotation.Named;
import org.apache.isis.applib.annotation.Optional;
+import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.Prototype;
import org.apache.isis.applib.fixturescripts.FixtureResult;
import org.apache.isis.applib.fixturescripts.FixtureScript;
@@ -36,8 +35,10 @@ import org.apache.isis.applib.fixturescripts.FixtureScripts;
/**
* Enables fixtures to be installed from the application.
*/
-@Named("Prototyping")
-@DomainService(menuBar = DomainService.MenuBar.SECONDARY, menuOrder = "40.1")
+@ClassLayout(
+ named = "Prototyping"
+)
+@DomainService(menuBar = DomainService.MenuBar.SECONDARY, menuOrder = "10")
public class ToDoItemsFixturesService extends FixtureScripts {
public ToDoItemsFixturesService() {
@@ -48,8 +49,10 @@ public class ToDoItemsFixturesService extends FixtureScripts {
@Override
public List<FixtureResult> runFixtureScript(
final FixtureScript fixtureScript,
- final @Named("Parameters") @DescribedAs("Script-specific parameters (key=value) ")
- @MultiLine(numberOfLines = 10)
+ final @ParameterLayout(
+ named="Parameters",
+ describedAs = "Script-specific parameters (key=value) ",
+ multiLine = 10)
@Optional
String parameters) {
return super.runFixtureScript(fixtureScript, parameters);
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/example/application/todoapp/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java b/example/application/todoapp/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
index 6caa244..eb1cc5f 100644
--- a/example/application/todoapp/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
+++ b/example/application/todoapp/webapp/src/main/java/webapp/prototyping/ExternalLinksService.java
@@ -18,15 +18,15 @@ package webapp.prototyping;
import java.net.MalformedURLException;
import java.net.URL;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.ActionSemantics;
import org.apache.isis.applib.annotation.ActionSemantics.Of;
-import org.apache.isis.applib.annotation.CssClassFa;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
+import org.apache.isis.applib.annotation.ParameterLayout;
import org.apache.isis.applib.annotation.Prototype;
-@DomainService(menuOrder = "40.3")
+@DomainService(menuBar = DomainService.MenuBar.SECONDARY, menuOrder = "20")
public class ExternalLinksService {
public static enum ExternalLink {
@@ -50,11 +50,13 @@ public class ExternalLinksService {
}
}
- @CssClassFa("fa-external-link")
- @Prototype
+ @ActionLayout(
+ cssClassFa = "fa-external-link" ,
+ prototype = true
+ )
@ActionSemantics(Of.SAFE)
@MemberOrder(name="Prototyping", sequence="91.1")
- public URL goToDocs(@Named("Link") ExternalLink link) throws MalformedURLException {
+ public URL goToDocs(@ParameterLayout(named="Link") ExternalLink link) throws MalformedURLException {
return link.open();
}
http://git-wip-us.apache.org/repos/asf/isis/blob/a39c8158/example/application/todoapp/webapp/src/main/java/webapp/prototyping/WicketDeveloperUtilities.java
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/src/main/java/webapp/prototyping/WicketDeveloperUtilities.java b/example/application/todoapp/webapp/src/main/java/webapp/prototyping/WicketDeveloperUtilities.java
index b97d146..f6c2fbc 100644
--- a/example/application/todoapp/webapp/src/main/java/webapp/prototyping/WicketDeveloperUtilities.java
+++ b/example/application/todoapp/webapp/src/main/java/webapp/prototyping/WicketDeveloperUtilities.java
@@ -16,19 +16,19 @@
*/
package webapp.prototyping;
+import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.applib.annotation.DomainService;
import org.apache.isis.applib.annotation.MemberOrder;
-import org.apache.isis.applib.annotation.Named;
import org.apache.isis.viewer.wicket.viewer.applib.WicketDeveloperUtilitiesService;
/**
* These overrides are simply to 'move' the action underneath the
* 'Prototyping' menu.
*/
-@DomainService(menuOrder = "40.3")
+@DomainService(menuBar = DomainService.MenuBar.SECONDARY, menuOrder = "40")
public class WicketDeveloperUtilities extends WicketDeveloperUtilitiesService {
- @Named("Clear i18n Cache")
+ @ActionLayout(named="Clear i18n Cache")
@MemberOrder(name="Prototyping", sequence="90.3")
@Override
public void resetI18nCache() {