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 2022/09/01 09:36:50 UTC
[isis] 01/01: ISIS-3197: adds support for datatables.net
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch ISIS-3197
in repository https://gitbox.apache.org/repos/asf/isis.git
commit e44e411a5a33c4e3186eed0855768a517003a39f
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Sep 1 10:33:22 2022 +0100
ISIS-3197: adds support for datatables.net
---
.../isis/applib/annotation/ActionLayout.java | 1 +
.../isis/applib/annotation/CollectionLayout.java | 9 ++
.../isis/applib/annotation/DomainObjectLayout.java | 8 ++
.../isis/applib/annotation/TableDecoration.java | 60 ++++++++
bom/pom.xml | 2 +
.../apache/isis/core/config/IsisConfiguration.java | 157 ++++++++++++++-------
...shingPolicies.java => ActionConfigOptions.java} | 57 ++------
...ies.java => CollectionLayoutConfigOptions.java} | 41 ++++--
...uration.java => DomainObjectConfigOptions.java} | 22 +--
...s.java => DomainObjectLayoutConfigOptions.java} | 30 ++--
...erPolicies.java => ParameterConfigOptions.java} | 4 +-
...nfiguration.java => PropertyConfigOptions.java} | 21 +--
.../actions/layout/ActionLayoutFacetFactory.java | 1 +
.../layout/CollectionLayoutFacetFactory.java | 8 ++
.../PagedFacetForCollectionLayoutAnnotation.java | 11 +-
...agedFacetOverriddenByDataTablesDecoration.java} | 17 +--
.../CollectionLayoutTableDecorationFacet.java | 75 ++++++++++
...lectionLayoutTableDecorationFacetAbstract.java} | 16 +--
...orationFacetForCollectionLayoutAnnotation.java} | 12 +-
...ForCollectionLayoutAnnotationAsConfigured.java} | 12 +-
...youtTableDecorationFacetFromConfiguration.java} | 12 +-
.../CommandPublishingFacetForActionAnnotation.java | 4 +-
...ommandPublishingFacetForPropertyAnnotation.java | 4 +-
...onPublishingActionFacetForActionAnnotation.java | 4 +-
...blishingPropertyFacetForPropertyAnnotation.java | 4 +-
.../ImmutableFacetForDomainObjectAnnotation.java | 4 +-
...gePublishingFacetForDomainObjectAnnotation.java | 4 +-
.../DomainObjectLayoutFacetFactory.java | 5 +
.../PagedFacetForDomainObjectLayoutAnnotation.java | 12 +-
...agedFacetOverriddenByDataTablesDecoration.java} | 13 +-
.../DomainObjectLayoutTableDecorationFacet.java | 74 ++++++++++
...nObjectLayoutTableDecorationFacetAbstract.java} | 16 +--
...ationFacetForDomainObjectLayoutAnnotation.java} | 12 +-
...rDomainObjectLayoutAnnotationAsConfigured.java} | 12 +-
...youtTableDecorationFacetFromConfiguration.java} | 12 +-
.../metamodel/facets/object/paged/PagedFacet.java | 14 --
...ActionFacetForActionAnnotationAsConfigured.java | 4 +-
.../depdef/ParameterDependentDefaultsFacet.java | 13 +-
.../ParameterDependentDefaultsFacetAbstract.java | 6 +-
...pendentDefaultsFacetForParameterAnnotation.java | 4 +-
...terDependentDefaultsFacetFromConfiguration.java | 4 +-
.../apache/isis/core/metamodel/util/Facets.java | 6 +-
.../action/ActionAnnotationFacetFactoryTest.java | 4 +-
...tationFacetFactoryTest_executionPublishing.java | 26 ++--
.../DomainObjectAnnotationFacetFactoryTest.java | 29 ++--
core/pom.xml | 6 +
viewers/wicket/ui/pom.xml | 37 ++---
.../entity/collection/EntityCollectionPanel.java | 7 +
.../StandaloneCollectionPanel.java | 6 +
.../isis/viewer/wicket/ui/pages/PageAbstract.java | 11 ++
.../bootstrap/css/bootstrap-overrides-all-v2.css | 18 ++-
.../DatatablesCssBootstrap5ReferenceWkt.java | 48 +++++++
.../datatables/DatatablesCssReferenceWkt.java | 48 +++++++
...DatatablesJavaScriptBootstrap5ReferenceWkt.java | 49 +++++++
.../DatatablesJavaScriptReferenceWkt.java | 49 +++++++
.../DatatablesJavaScriptResourceReferenceInit.java | 75 ++++++++++
.../ui/pages/common/datatables/dataTables.init.js | 14 +-
.../common/viewer/js/jquery.isis.wicket.viewer.js | 7 +-
.../config/WicketViewerCssBundleInit.java | 2 +
59 files changed, 922 insertions(+), 321 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
index fece9cda9a..6eeadfa62f 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/ActionLayout.java
@@ -261,4 +261,5 @@ public @interface ActionLayout {
String sequence()
default "";
+
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java
index f02ced6c30..ee703ec938 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/CollectionLayout.java
@@ -59,6 +59,7 @@ public @interface CollectionLayout {
String cssClass()
default "";
+
/**
* Indicates which view is used by default to render the collection.
*
@@ -167,4 +168,12 @@ public @interface CollectionLayout {
Class<? extends Comparator> sortedBy()
default Comparator.class;
+ /**
+ * Whether a parented collection when represented in a table form should additionally be
+ * "decorated" with client-side (javascript) enhancements, for example to enable paging and filtering.
+ */
+ TableDecoration tableDecoration()
+ default TableDecoration.NOT_SPECIFIED;
+
+
}
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObjectLayout.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObjectLayout.java
index 5eeeb6dd27..56b2df4d75 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObjectLayout.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/DomainObjectLayout.java
@@ -140,6 +140,14 @@ public @interface DomainObjectLayout {
String plural()
default "";
+ /**
+ * Whether a standalone collection when represented in a table form should additionally be
+ * "decorated" with client-side (javascript) enhancements, for example to enable paging and filtering.
+ */
+ TableDecoration tableDecoration()
+ default TableDecoration.NOT_SPECIFIED;
+
+
/**
* Which subclass of {@link CssClassUiEvent} should be used to obtain a CSS class.
*
diff --git a/api/applib/src/main/java/org/apache/isis/applib/annotation/TableDecoration.java b/api/applib/src/main/java/org/apache/isis/applib/annotation/TableDecoration.java
new file mode 100644
index 0000000000..b350c45c67
--- /dev/null
+++ b/api/applib/src/main/java/org/apache/isis/applib/annotation/TableDecoration.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+/**
+ * The options for defining how a parented or standalone collection when represented in a table form should additionally
+ * be "decorated" with client-side (javascript) enhancements.
+ *
+ * <p>
+ * This is supported by the Wicket viewer, the principle use case being to enable <a href="https://datatables.net>datatables.net</a>
+ * to be used for client-side paging and filtering.
+ * </p>
+ *
+ * @since 1.x {@index}
+ */
+public enum TableDecoration {
+
+ /**
+ * The collection's table representation should be decorated, if at all, as configured in <tt>application.properties</tt>.
+ *
+ * <p>
+ * If there is no configuration, then default to use {@link TableDecoration#NONE no} decoration.
+ * </p>
+ */
+ AS_CONFIGURED,
+
+ /**
+ * If this option declares that the collection's table representation should not be decorated.
+ */
+ NONE,
+
+ /**
+ * If this option declares that the collection's table representation be decorated using
+ * <a href="https://datatables.net>datatables.net</a> for client-side paging and filtering.
+ */
+ DATATABLES_NET,
+
+ /**
+ * Ignore the value provided by this annotation (meaning that the framework will keep searching, in meta
+ * annotations or superclasses/interfaces).
+ */
+ NOT_SPECIFIED
+
+}
diff --git a/bom/pom.xml b/bom/pom.xml
index fe4b1d6693..a67a0a4c54 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -348,6 +348,8 @@ It is therefore a copy of org.apache:apache, with customisations clearly identif
<datanucleus-maven-plugin.version>6.0.0-release</datanucleus-maven-plugin.version>
<datanucleus-rdbms.version>6.0.1</datanucleus-rdbms.version>
+ <datatables.version>1.12.1</datatables.version>
+
<docx4j.version>11.3.2</docx4j.version>
<easymock.version>4.3</easymock.version>
diff --git a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
index fc578dbed0..6679ae37f9 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
@@ -49,7 +49,8 @@ import org.springframework.validation.annotation.Validated;
import org.apache.isis.applib.IsisModuleApplib;
import org.apache.isis.applib.annotation.ActionLayout;
-import org.apache.isis.applib.annotation.DependentDefaultsPolicy;
+import org.apache.isis.applib.annotation.CollectionLayout;
+import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.applib.annotation.Introspection.IntrospectionPolicy;
import org.apache.isis.applib.annotation.LabelPosition;
import org.apache.isis.applib.annotation.PromptStyle;
@@ -63,12 +64,12 @@ import org.apache.isis.applib.services.userui.UserMenu;
import org.apache.isis.applib.value.semantics.TemporalValueSemantics.TemporalEditingPattern;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.context._Context;
-import org.apache.isis.core.config.metamodel.facets.DefaultViewConfiguration;
-import org.apache.isis.core.config.metamodel.facets.EditingObjectsConfiguration;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
-import org.apache.isis.core.config.metamodel.facets.PublishingPolicies.ActionPublishingPolicy;
-import org.apache.isis.core.config.metamodel.facets.PublishingPolicies.EntityChangePublishingPolicy;
-import org.apache.isis.core.config.metamodel.facets.PublishingPolicies.PropertyPublishingPolicy;
+import org.apache.isis.core.config.metamodel.facets.ActionConfigOptions;
+import org.apache.isis.core.config.metamodel.facets.DomainObjectLayoutConfigOptions;
+import org.apache.isis.core.config.metamodel.facets.CollectionLayoutConfigOptions;
+import org.apache.isis.core.config.metamodel.facets.DomainObjectConfigOptions;
+import org.apache.isis.core.config.metamodel.facets.ParameterConfigOptions;
+import org.apache.isis.core.config.metamodel.facets.PropertyConfigOptions;
import org.apache.isis.core.config.metamodel.services.ApplicationFeaturesInitConfiguration;
import org.apache.isis.core.config.metamodel.specloader.IntrospectionMode;
import org.apache.isis.core.config.viewer.web.DialogMode;
@@ -133,7 +134,7 @@ public class IsisConfiguration {
* Setting this option to {@literal true} allows {@code CsrfFilter}(s) to be
* configured. Yet EXPERIMENTAL.
*
- * @see org.springframework.security.web.csrf.CsrfFilter
+ * @see <code>org.springframework.security.web.csrf.CsrfFilter</code>
* @see "https://www.baeldung.com/spring-security-registered-filters"
*/
private boolean allowCsrfFilters = false;
@@ -272,7 +273,7 @@ public class IsisConfiguration {
* Note: this applies only to domain entities, not view models.
* </p>
*/
- private EntityChangePublishingPolicy entityChangePublishing = EntityChangePublishingPolicy.NONE;
+ private DomainObjectConfigOptions.EntityChangePublishingPolicy entityChangePublishing = DomainObjectConfigOptions.EntityChangePublishingPolicy.NONE;
/**
* The default for whether the properties of domain objects can be edited, or whether instead they
@@ -282,7 +283,7 @@ public class IsisConfiguration {
* This setting can be overridden on a case-by-case basis using {@link DomainObject#getEditing() DomainObject#getEditing()}
* </p>
*/
- private EditingObjectsConfiguration editing = EditingObjectsConfiguration.FALSE;
+ private DomainObjectConfigOptions.EditingObjectsConfiguration editing = DomainObjectConfigOptions.EditingObjectsConfiguration.FALSE;
private final CreatedLifecycleEvent createdLifecycleEvent = new CreatedLifecycleEvent();
@Data
@@ -561,6 +562,12 @@ public class IsisConfiguration {
*/
private int paged = 25;
+ /**
+ * Defines whether the table representation of a standalone collection of this domain class should be
+ * decorated using a client-side Javascript library, eg for client-side paging and filtering.
+ */
+ private DomainObjectLayoutConfigOptions.TableDecoration tableDecoration = DomainObjectLayoutConfigOptions.TableDecoration.NONE;
+
private final CssClassUiEvent cssClassUiEvent = new CssClassUiEvent();
@Data
public static class CssClassUiEvent {
@@ -749,7 +756,7 @@ public class IsisConfiguration {
* {@link org.apache.isis.applib.annotation.Action#commandPublishing()}.
* </p>
*/
- private ActionPublishingPolicy commandPublishing = ActionPublishingPolicy.NONE;
+ private ActionConfigOptions.PublishingPolicy commandPublishing = ActionConfigOptions.PublishingPolicy.NONE;
/**
* The default for whether action invocations should be sent through to the
@@ -767,7 +774,7 @@ public class IsisConfiguration {
* This setting can be overridden on a case-by-case basis using {@link org.apache.isis.applib.annotation.Action#executionPublishing() Action#executionPublishing()}.
* </p>
*/
- private ActionPublishingPolicy executionPublishing = ActionPublishingPolicy.NONE;
+ private ActionConfigOptions.PublishingPolicy executionPublishing = ActionConfigOptions.PublishingPolicy.NONE;
private final DomainEvent domainEvent = new DomainEvent();
@Data
@@ -841,6 +848,7 @@ public class IsisConfiguration {
@Getter(lazy = true)
private final Map<Pattern, String> patternsAsMap = asMap(getPatterns());
+
}
private final CssClassFa cssClassFa = new CssClassFa();
@@ -919,7 +927,6 @@ public class IsisConfiguration {
public static class Property {
/**
- * TODO[2464] semantic renaming audit/dispatch -> publishing
* The default for whether property edits should be reified
* as a {@link org.apache.isis.applib.services.command.Command},
* to be sent to any registered
@@ -929,18 +936,17 @@ public class IsisConfiguration {
*
* <p>
* This setting can be overridden on a case-by-case basis using
- * {@link org.apache.isis.applib.annotation.Property#commandDispatch()}.
+ * {@link org.apache.isis.applib.annotation.Property#commandPublishing()}.
* </p>
*/
- private PropertyPublishingPolicy commandPublishing = PropertyPublishingPolicy.NONE;
+ private PropertyConfigOptions.PublishingPolicy commandPublishing = PropertyConfigOptions.PublishingPolicy.NONE;
/**
- * TODO[2464] semantic renaming audit/dispatch -> publishing
* The default for whether property edits should be sent through to the
* {@link org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber} for publishing.
*
* <p>
- * The service's {@link org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber#publish(Execution) publish}
+ * The service's {@link org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber#onExecution(Execution)} publish}
* method is called only once per transaction, with
* {@link Execution} collecting details of
* the identity of the target object, the property edited, and the new value of the property.
@@ -948,10 +954,10 @@ public class IsisConfiguration {
*
* <p>
* This setting can be overridden on a case-by-case basis using
- * {@link org.apache.isis.applib.annotation.Property#publishing()}.
+ * {@link org.apache.isis.applib.annotation.Property#executionPublishing()}.
* </p>
*/
- private PropertyPublishingPolicy executionPublishing = PropertyPublishingPolicy.NONE;
+ private PropertyConfigOptions.PublishingPolicy executionPublishing = PropertyConfigOptions.PublishingPolicy.NONE;
private final DomainEvent domainEvent = new DomainEvent();
@Data
@@ -1076,7 +1082,7 @@ public class IsisConfiguration {
* view.
* </p>
*/
- private DefaultViewConfiguration defaultView = DefaultViewConfiguration.TABLE;
+ private CollectionLayoutConfigOptions.DefaultView defaultView = CollectionLayoutConfigOptions.DefaultView.TABLE;
/**
* Defines the default number of objects that are shown in a "parented" collection of a
@@ -1089,6 +1095,13 @@ public class IsisConfiguration {
* </p>
*/
private int paged = 12;
+
+ /**
+ * Defines whether the table representation of a collection should be decorated using a client-side
+ * Javascript library, eg for client-side paging and filtering.
+ */
+ private CollectionLayoutConfigOptions.TableDecoration tableDecoration = CollectionLayoutConfigOptions.TableDecoration.NONE;
+
}
private final ViewModel viewModel = new ViewModel();
@@ -1102,10 +1115,8 @@ public class IsisConfiguration {
public static class SemanticChecking {
/**
* Whether to check for inconsistencies between the usage of
- * {@link org.apache.isis.applib.annotation.DomainObject},
- * {@link org.apache.isis.applib.annotation.ViewModel},
- * {@link org.apache.isis.applib.annotation.DomainObjectLayout} and
- * {@link org.apache.isis.applib.annotation.ViewModelLayout}.
+ * {@link org.apache.isis.applib.annotation.DomainObject} and
+ * {@link org.apache.isis.applib.annotation.DomainObjectLayout}.
*/
private boolean enable = false;
}
@@ -1123,15 +1134,16 @@ public class IsisConfiguration {
* Influences whether an {@link org.apache.isis.applib.events.ui.CssClassUiEvent} should
* be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
* whenever a view model (annotated with
- * {@link org.apache.isis.applib.annotation.ViewModel @ViewModel}) is about to be rendered in the
+ * {@link org.apache.isis.applib.annotation.DomainObject#nature() @DomainObject#nature} of
+ * {@link org.apache.isis.applib.annotation.Nature#VIEW_MODEL}) is about to be rendered in the
* UI - thereby allowing subscribers to optionally
* {@link org.apache.isis.applib.events.ui.CssClassUiEvent#setCssClass(String)} change) the CSS
* classes that are used.
*
* <p>
* The algorithm for determining whether (and what type of) an event is sent depends on the value of the
- * {@link org.apache.isis.applib.annotation.ViewModelLayout#cssClassUiEvent()} @ViewModelLayout(cssClassEvent=...)} for the
- * domain object in question:
+ * {@link org.apache.isis.applib.annotation.DomainObjectLayout#cssClassUiEvent() @DomainObjectLayout(cssClassEvent=...)}
+ * for the domain object in question:
* </p>
*
* <ul>
@@ -1160,15 +1172,16 @@ public class IsisConfiguration {
* Influences whether an {@link org.apache.isis.applib.events.ui.IconUiEvent} should
* be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
* whenever a view model (annotated with
- * {@link org.apache.isis.applib.annotation.ViewModel @ViewModel}) is about to be rendered in the
+ * {@link org.apache.isis.applib.annotation.DomainObject#nature() @DomainObject#nature} of
+ * {@link org.apache.isis.applib.annotation.Nature#VIEW_MODEL}) is about to be rendered in the
* UI - thereby allowing subscribers to optionally
* {@link org.apache.isis.applib.events.ui.IconUiEvent#setIconName(String)} change) the icon that
* is used.
*
* <p>
* The algorithm for determining whether (and what type of) an event is sent depends on the value of the
- * {@link org.apache.isis.applib.annotation.ViewModelLayout#iconUiEvent()} @ViewModelLayout(iconEvent=...)} for the
- * domain object in question:
+ * {@link org.apache.isis.applib.annotation.DomainObjectLayout#iconUiEvent() @ViewModelLayout(iconEvent=...)}
+ * for the domain object in question:
* </p>
*
* <ul>
@@ -1197,7 +1210,8 @@ public class IsisConfiguration {
* Influences whether an {@link org.apache.isis.applib.events.ui.LayoutUiEvent} should
* be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
* whenever a view model (annotated with
- * {@link org.apache.isis.applib.annotation.ViewModel @ViewModel}) is about to be rendered in the
+ * {@link org.apache.isis.applib.annotation.DomainObject#nature() @DomainObject#nature} of
+ * {@link org.apache.isis.applib.annotation.Nature#VIEW_MODEL}) is about to be rendered in the
* UI - thereby allowing subscribers to optionally
* {@link org.apache.isis.applib.events.ui.LayoutUiEvent#setLayout(String)} change) the layout that is used.
*
@@ -1208,8 +1222,8 @@ public class IsisConfiguration {
*
* <p>
* The algorithm for determining whether (and what type of) an event is sent depends on the value of the
- * {@link org.apache.isis.applib.annotation.ViewModelLayout#layoutUiEvent()} @ViewModelLayout(layoutEvent=...)} for the
- * domain object in question:
+ * {@link org.apache.isis.applib.annotation.DomainObjectLayout#layoutUiEvent() @DomainObjectLayout(layoutEvent=...)}
+ * for the domain object in question:
* </p>
*
* <ul>
@@ -1238,14 +1252,15 @@ public class IsisConfiguration {
* Influences whether an {@link org.apache.isis.applib.events.ui.TitleUiEvent} should
* be published (on the internal {@link org.apache.isis.applib.services.eventbus.EventBusService})
* whenever a view model (annotated with
- * {@link org.apache.isis.applib.annotation.ViewModel @ViewModel}) is about to be rendered in the
+ * {@link org.apache.isis.applib.annotation.DomainObject#nature() @DomainObject#nature} of
+ * {@link org.apache.isis.applib.annotation.Nature#VIEW_MODEL}) is about to be rendered in the
* UI - thereby allowing subscribers to
* optionally {@link org.apache.isis.applib.events.ui.TitleUiEvent#setTitle(String)} change)
* the title that is used.
*
* <p>
* The algorithm for determining whether (and what type of) an event is sent depends on the value of the
- * {@link org.apache.isis.applib.annotation.ViewModelLayout#titleUiEvent()} @ViewModelLayout(titleEvent=...)} for the
+ * {@link org.apache.isis.applib.annotation.DomainObjectLayout#titleUiEvent() @DomainObjectLayout(titleEvent=...)} for the
* domain object in question:
* </p>
*
@@ -1283,7 +1298,7 @@ public class IsisConfiguration {
* {@link org.apache.isis.applib.annotation.Parameter#dependentDefaultsPolicy() Parameter#dependentDefaultsPolicy()}.
* </p>
*/
- private ParameterPolicies.DependentDefaultsPolicy dependentDefaultsPolicy = ParameterPolicies.DependentDefaultsPolicy.UPDATE_DEPENDENT;
+ private ParameterConfigOptions.DependentDefaultsPolicy dependentDefaultsPolicy = ParameterConfigOptions.DependentDefaultsPolicy.UPDATE_DEPENDENT;
}
@@ -1791,7 +1806,7 @@ public class IsisConfiguration {
/**
* Vendor specific SQL syntax to create a DB schema.
* <p>
- * This template is passed through {@link String#format(String, schemaName)} to
+ * This template is passed through {@link String#format(String, Object...)} to
* make the actual SQL statement thats to be used against the configured data-source.
* <p>
* Default template is {@literal CREATE SCHEMA IF NOT EXISTS %S} with the schema name
@@ -2622,6 +2637,49 @@ public class IsisConfiguration {
}
}
+ private final Table table = new Table();
+ @Data
+ public static class Table {
+
+ private final Decoration decoration = new Decoration();
+ @Data
+ public static class Decoration {
+
+ private final DataTablesNet dataTablesNet = new DataTablesNet();
+ @Data
+ public static class DataTablesNet {
+
+ /**
+ * If specified, then the string is passed verbatim as the initialization options for the
+ * <a href="https://datatables.net">https://datatables.net</a> table decoration
+ * (as defined by {@link DomainObjectLayout#tableDecoration()} or by
+ * {@link CollectionLayout#tableDecoration()}).
+ *
+ * <p>
+ * For example, a value of "info: false, pagingType: 'numbers'" will result in
+ * datatables.net being initialized using:
+ *
+ * <pre>
+ * $(document).ready(function () {
+ * $('table.table-decoration').DataTable({
+ * info: false, pagingType: 'numbers'
+ * });
+ * });
+ * </pre>
+ * thus switching off the info panel and using the simple 'numbers' paging type.
+ * </p>
+ *
+ * @see <a href="https://datatables.net/examples/basic_init/index.html">https://datatables.net/examples/basic_init/index.html</a>
+ */
+ private Optional<String> options = Optional.empty();
+
+ }
+
+ }
+
+
+ }
+
}
}
@@ -2684,9 +2742,8 @@ public class IsisConfiguration {
/**
- * How to handle objects that are to be
- * {@link FixtureScripts#newFixtureResult(FixtureScript, String, Object, boolean) added}
- * into a {@link FixtureResult} but which are not yet persisted.
+ * How to handle objects that are to be added into a <code>FixtureResult</code> but which are not yet
+ * persisted.
*/
public enum NonPersistedObjectsStrategy {
PERSIST,
@@ -2697,11 +2754,10 @@ public class IsisConfiguration {
* How to handle fixture scripts that are submitted to be executed more than once.
*
* <p>
- * Note that this is a {@link FixtureScripts#getMultipleExecutionStrategy() global setting} of the
- * {@link FixtureScripts} service; there isn't (currently) any way to mix-and-match fixture scripts that are
- * written with differing semantics in mind. Ideally it should be the responsibility of the fixture script
- * itself to determine whether it should be run. As a partial solution to this, the
- *
+ * Note that this is a global setting of the <code>FixtureScripts</code> service; there isn't
+ * (currently) any way to mix-and-match fixture scripts that are written with differing semantics
+ * in mind. Ideally it should be the responsibility of the fixture script itself to determine
+ * whether it should be run.
* </p>
*/
public enum MultipleExecutionStrategy {
@@ -2776,7 +2832,7 @@ public class IsisConfiguration {
*
* <p>
* Note that this policy can be overridden on a fixture-by-fixture basis if the fixture implements
- * {@link FixtureScriptWithExecutionStrategy}.
+ * <code>FixtureScriptWithExecutionStrategy</code>.
* </p>
*/
private MultipleExecutionStrategy multipleExecutionStrategy = MultipleExecutionStrategy.EXECUTE_ONCE_BY_CLASS;
@@ -3162,7 +3218,8 @@ public class IsisConfiguration {
* whether to prefer to allow the permission or to veto it.
*
* <p>
- * This is only used if a {@link org.apache.isis.extensions.secman.applib.permission.spi.PermissionsEvaluationService} has not been declared explicitly.
+ * This is only used an implementation of secman's <code>PermissionsEvaluationService</code> SPI has
+ * not been provided explicitly.
* </p>
*/
private PermissionsEvaluationPolicy permissionsEvaluationPolicy = PermissionsEvaluationPolicy.ALLOW_BEATS_VETO;
@@ -3190,12 +3247,12 @@ public class IsisConfiguration {
}
/**
- * Whether the presence of SecMan should result in the automatic suppression of the {@link org.apache.isis.applib.services.userui.UserMenu}'s
- * {@link UserMenu#me() me} action.
+ * Whether the presence of SecMan should result in the automatic suppression of the
+ * {@link org.apache.isis.applib.services.userui.UserMenu}'s {@link UserMenu.me#act() me()} action.
*
* <p>
* This is normally what is required as SecMan's <code>ApplicationUser</code> is a more comprehensive
- * representation of the current user. If the default {@link UserMenu#me() me} action is not
+ * representation of the current user. If the default {@link UserMenu.me#act() me()} action is not
* suppressed, then the end-user will see two actions with the name "me" in the tertiary menu.
* </p>
*/
diff --git a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/PublishingPolicies.java b/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ActionConfigOptions.java
similarity index 54%
rename from core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/PublishingPolicies.java
rename to core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ActionConfigOptions.java
index a116b89d6e..199cb37d17 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/PublishingPolicies.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ActionConfigOptions.java
@@ -22,60 +22,25 @@ import org.apache.isis.core.config.IsisConfiguration;
import lombok.NonNull;
-public final class PublishingPolicies {
+public final class ActionConfigOptions {
- // -- ACTIONS
-
- public static enum ActionPublishingPolicy {
- ALL,
- IGNORE_SAFE,
- /**
- * Alias for {@link #IGNORE_SAFE}
- */
- IGNORE_QUERY_ONLY,
- NONE;
- }
-
- // -- PROPERTIES
-
- public enum PropertyPublishingPolicy {
- ALL,
- NONE;
- }
-
- // -- ENTITIES
-
- public enum EntityChangePublishingPolicy {
- ALL,
- NONE;
- }
-
- // -- FACTORIES
-
- public static ActionPublishingPolicy actionCommandPublishingPolicy(
+ public static PublishingPolicy actionCommandPublishingPolicy(
final @NonNull IsisConfiguration configuration) {
return configuration.getApplib().getAnnotation().getAction().getCommandPublishing();
}
- public static ActionPublishingPolicy actionExecutionPublishingPolicy(
+ public static PublishingPolicy actionExecutionPublishingPolicy(
final @NonNull IsisConfiguration configuration) {
return configuration.getApplib().getAnnotation().getAction().getExecutionPublishing();
}
- public static PropertyPublishingPolicy propertyCommandPublishingPolicy(
- final @NonNull IsisConfiguration configuration) {
- return configuration.getApplib().getAnnotation().getProperty().getCommandPublishing();
- }
-
- public static PropertyPublishingPolicy propertyExecutionPublishingPolicy(
- final @NonNull IsisConfiguration configuration) {
- return configuration.getApplib().getAnnotation().getProperty().getExecutionPublishing();
- }
-
- public static EntityChangePublishingPolicy entityChangePublishingPolicy(
- final @NonNull IsisConfiguration configuration) {
- return configuration.getApplib().getAnnotation().getDomainObject().getEntityChangePublishing();
+ public static enum PublishingPolicy {
+ ALL,
+ IGNORE_SAFE,
+ /**
+ * Alias for {@link #IGNORE_SAFE}
+ */
+ IGNORE_QUERY_ONLY,
+ NONE;
}
-
-
}
diff --git a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterPolicies.java b/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/CollectionLayoutConfigOptions.java
similarity index 51%
copy from core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterPolicies.java
copy to core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/CollectionLayoutConfigOptions.java
index 2e2d6c6f1e..07d9872d32 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterPolicies.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/CollectionLayoutConfigOptions.java
@@ -22,34 +22,47 @@ import org.apache.isis.core.config.IsisConfiguration;
import lombok.NonNull;
-public final class ParameterPolicies {
+public final class CollectionLayoutConfigOptions {
- // -- ACTIONS
+ public enum TableDecoration {
- public static enum DependentDefaultsPolicy {
/**
- * Allows user provided parameters in the UI to be overwritten via defaults semantics.
+ * If this option declares that the collection's table representation should not be decorated.
*/
- UPDATE_DEPENDENT,
+ NONE,
+
/**
- * Forbids user provided parameters in the UI to be overwritten via defaults semantics.
+ * If this option declares that the collection's table representation be decorated using
+ * <a href="https://datatables.net>datatables.net</a> for client-side paging and filtering.
*/
- PRESERVE_CHANGES;
- public boolean isUpdateDependent() { return this == UPDATE_DEPENDENT; }
- public boolean isPreserveChanges() { return this == PRESERVE_CHANGES; }
+ DATATABLES_NET;
+
+ public boolean isNone() { return this == NONE; }
+ public boolean isDataTablesNet() { return this == DATATABLES_NET; }
- public static DependentDefaultsPolicy defaultsIfNotSpecifiedOtherwise() {
- return UPDATE_DEPENDENT; // backwards compatibility
- }
}
// -- FACTORIES
- public static DependentDefaultsPolicy dependentDefaultsPolicy(
+ public static TableDecoration tableDecoration(
final @NonNull IsisConfiguration configuration) {
- return configuration.getApplib().getAnnotation().getParameter().getDependentDefaultsPolicy();
+ return configuration.getApplib().getAnnotation().getCollectionLayout().getTableDecoration();
}
+ public enum DefaultView {
+ HIDDEN(),
+ TABLE();
+
+ public String toNameLower() {
+ return name().toLowerCase();
+ }
+
+ public static DefaultView from(IsisConfiguration configuration) {
+ return configuration.getApplib().getAnnotation().getCollectionLayout().getDefaultView();
+ }
+
+
+ }
}
diff --git a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/DefaultViewConfiguration.java b/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/DomainObjectConfigOptions.java
similarity index 66%
copy from core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/DefaultViewConfiguration.java
copy to core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/DomainObjectConfigOptions.java
index 3656876e88..33ba72326f 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/DefaultViewConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/DomainObjectConfigOptions.java
@@ -20,17 +20,23 @@ package org.apache.isis.core.config.metamodel.facets;
import org.apache.isis.core.config.IsisConfiguration;
-public enum DefaultViewConfiguration {
- HIDDEN(),
- TABLE();
+import lombok.NonNull;
- public String toNameLower() {
- return name().toLowerCase();
- }
+public final class DomainObjectConfigOptions {
- public static DefaultViewConfiguration from(IsisConfiguration configuration) {
- return configuration.getApplib().getAnnotation().getCollectionLayout().getDefaultView();
+ public enum EntityChangePublishingPolicy {
+ ALL,
+ NONE;
}
+ public enum EditingObjectsConfiguration {
+ TRUE,
+ FALSE;
+ }
+
+ public static EntityChangePublishingPolicy entityChangePublishingPolicy(
+ final @NonNull IsisConfiguration configuration) {
+ return configuration.getApplib().getAnnotation().getDomainObject().getEntityChangePublishing();
+ }
}
diff --git a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterPolicies.java b/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/DomainObjectLayoutConfigOptions.java
similarity index 56%
copy from core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterPolicies.java
copy to core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/DomainObjectLayoutConfigOptions.java
index 2e2d6c6f1e..d55678e651 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterPolicies.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/DomainObjectLayoutConfigOptions.java
@@ -15,6 +15,7 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
+ *
*/
package org.apache.isis.core.config.metamodel.facets;
@@ -22,33 +23,30 @@ import org.apache.isis.core.config.IsisConfiguration;
import lombok.NonNull;
-public final class ParameterPolicies {
+public final class DomainObjectLayoutConfigOptions {
- // -- ACTIONS
+ public enum TableDecoration {
- public static enum DependentDefaultsPolicy {
/**
- * Allows user provided parameters in the UI to be overwritten via defaults semantics.
+ * If this option declares that the collection's table representation should not be decorated.
*/
- UPDATE_DEPENDENT,
+ NONE,
+
/**
- * Forbids user provided parameters in the UI to be overwritten via defaults semantics.
+ * If this option declares that the collection's table representation be decorated using
+ * <a href="https://datatables.net>datatables.net</a> for client-side paging and filtering.
*/
- PRESERVE_CHANGES;
- public boolean isUpdateDependent() { return this == UPDATE_DEPENDENT; }
- public boolean isPreserveChanges() { return this == PRESERVE_CHANGES; }
+ DATATABLES_NET;
- public static DependentDefaultsPolicy defaultsIfNotSpecifiedOtherwise() {
- return UPDATE_DEPENDENT; // backwards compatibility
- }
- }
+ public boolean isNone() { return this == NONE; }
+ public boolean isDataTablesNet() { return this == DATATABLES_NET; }
+ }
- // -- FACTORIES
- public static DependentDefaultsPolicy dependentDefaultsPolicy(
+ public static DomainObjectLayoutConfigOptions.TableDecoration tableDecoration(
final @NonNull IsisConfiguration configuration) {
- return configuration.getApplib().getAnnotation().getParameter().getDependentDefaultsPolicy();
+ return configuration.getApplib().getAnnotation().getDomainObjectLayout().getTableDecoration();
}
diff --git a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterPolicies.java b/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterConfigOptions.java
similarity index 97%
rename from core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterPolicies.java
rename to core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterConfigOptions.java
index 2e2d6c6f1e..a12abdaf1a 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterPolicies.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/ParameterConfigOptions.java
@@ -22,9 +22,7 @@ import org.apache.isis.core.config.IsisConfiguration;
import lombok.NonNull;
-public final class ParameterPolicies {
-
- // -- ACTIONS
+public final class ParameterConfigOptions {
public static enum DependentDefaultsPolicy {
/**
diff --git a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/DefaultViewConfiguration.java b/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/PropertyConfigOptions.java
similarity index 61%
rename from core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/DefaultViewConfiguration.java
rename to core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/PropertyConfigOptions.java
index 3656876e88..dc6f36ffb3 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/DefaultViewConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/PropertyConfigOptions.java
@@ -20,17 +20,22 @@ package org.apache.isis.core.config.metamodel.facets;
import org.apache.isis.core.config.IsisConfiguration;
-public enum DefaultViewConfiguration {
- HIDDEN(),
- TABLE();
+import lombok.NonNull;
- public String toNameLower() {
- return name().toLowerCase();
- }
+public final class PropertyConfigOptions {
- public static DefaultViewConfiguration from(IsisConfiguration configuration) {
- return configuration.getApplib().getAnnotation().getCollectionLayout().getDefaultView();
+ public static PublishingPolicy propertyCommandPublishingPolicy(
+ final @NonNull IsisConfiguration configuration) {
+ return configuration.getApplib().getAnnotation().getProperty().getCommandPublishing();
}
+ public static PublishingPolicy propertyExecutionPublishingPolicy(
+ final @NonNull IsisConfiguration configuration) {
+ return configuration.getApplib().getAnnotation().getProperty().getExecutionPublishing();
+ }
+ public enum PublishingPolicy {
+ ALL,
+ NONE;
+ }
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java
index cc33a71c92..284b44c702 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/actions/layout/ActionLayoutFacetFactory.java
@@ -24,6 +24,7 @@ import org.apache.isis.applib.annotation.ActionLayout;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecorationFacet;
import org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetFallback;
import org.apache.isis.core.metamodel.facets.actions.redirect.RedirectFacetFallback;
import org.apache.isis.core.metamodel.facets.members.layout.group.LayoutGroupFacetFromActionLayoutAnnotation;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java
index 0e04a491cd..866598b809 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/CollectionLayoutFacetFactory.java
@@ -24,6 +24,7 @@ import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecorationFacet;
import org.apache.isis.core.metamodel.facets.members.layout.order.LayoutOrderFacetFromCollectionLayoutAnnotation;
import org.apache.isis.core.metamodel.specloader.validator.MetaModelValidatorForAmbiguousMixinAnnotations;
@@ -72,6 +73,10 @@ extends FacetFactoryAbstract {
MemberNamedFacetForCollectionLayoutAnnotation
.create(collectionLayoutIfAny, facetHolder));
+ addFacetIfPresent(
+ CollectionLayoutTableDecorationFacet
+ .create(collectionLayoutIfAny, getConfiguration(), facetHolder));
+
addFacetIfPresent(
PagedFacetForCollectionLayoutAnnotation
.create(collectionLayoutIfAny, facetHolder));
@@ -79,6 +84,9 @@ extends FacetFactoryAbstract {
addFacetIfPresent(
SortedByFacetForCollectionLayoutAnnotation
.create(collectionLayoutIfAny, facetHolder));
+
+
+
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java
index a4a4e795e1..4d2a1fdf1a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java
@@ -22,14 +22,23 @@ import java.util.Optional;
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecorationFacet;
+import org.apache.isis.core.metamodel.facets.object.paged.PagedFacet;
import org.apache.isis.core.metamodel.facets.object.paged.PagedFacetAbstract;
+import lombok.val;
+
public class PagedFacetForCollectionLayoutAnnotation extends PagedFacetAbstract {
- public static Optional<PagedFacetForCollectionLayoutAnnotation> create(
+ public static Optional<PagedFacet> create(
final Optional<CollectionLayout> collectionLayoutIfAny,
final FacetHolder holder) {
+ val tableDecorationFacet = holder.getFacet(CollectionLayoutTableDecorationFacet.class);
+ if (tableDecorationFacet.value().isDataTablesNet()) {
+ return Optional.of(new PagedFacetOverriddenByDataTablesDecoration(holder));
+ }
+
return collectionLayoutIfAny
.map(CollectionLayout::paged)
.filter(paged -> paged != -1)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetOverriddenByDataTablesDecoration.java
similarity index 64%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetOverriddenByDataTablesDecoration.java
index a4a4e795e1..e13c953a9d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetForCollectionLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/PagedFacetOverriddenByDataTablesDecoration.java
@@ -22,22 +22,13 @@ import java.util.Optional;
import org.apache.isis.applib.annotation.CollectionLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecorationFacet;
import org.apache.isis.core.metamodel.facets.object.paged.PagedFacetAbstract;
-public class PagedFacetForCollectionLayoutAnnotation extends PagedFacetAbstract {
+public class PagedFacetOverriddenByDataTablesDecoration extends PagedFacetAbstract {
- public static Optional<PagedFacetForCollectionLayoutAnnotation> create(
- final Optional<CollectionLayout> collectionLayoutIfAny,
- final FacetHolder holder) {
-
- return collectionLayoutIfAny
- .map(CollectionLayout::paged)
- .filter(paged -> paged != -1)
- .map(paged -> new PagedFacetForCollectionLayoutAnnotation(paged, holder));
- }
-
- private PagedFacetForCollectionLayoutAnnotation(final int paged, final FacetHolder holder) {
- super(paged, holder);
+ PagedFacetOverriddenByDataTablesDecoration(final FacetHolder holder) {
+ super(Integer.MAX_VALUE, holder);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacet.java
new file mode 100644
index 0000000000..4af53730f6
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacet.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.isis.core.metamodel.facets.collections.layout.tabledec;
+
+import java.util.Optional;
+
+import org.apache.isis.applib.annotation.CollectionLayout;
+import org.apache.isis.applib.annotation.Parameter;
+import org.apache.isis.commons.internal.base._Optionals;
+import org.apache.isis.core.config.IsisConfiguration;
+import org.apache.isis.core.config.metamodel.facets.CollectionLayoutConfigOptions;
+import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.SingleValueFacet;
+
+/**
+ * Determines how dependent parameter values should be updated,
+ * if one of the earlier parameter values is changed.
+ * <p>
+ * Corresponds to annotating the action method {@link Parameter#dependentDefaultsPolicy()}.
+ *
+ * @since 2.0
+ */
+public interface CollectionLayoutTableDecorationFacet
+extends SingleValueFacet<CollectionLayoutConfigOptions.TableDecoration> {
+
+ static Optional<CollectionLayoutTableDecorationFacet> create(
+ final Optional<CollectionLayout> collectionLayoutIfAny,
+ final IsisConfiguration configuration,
+ final FacetHolder holder) {
+
+ final CollectionLayoutConfigOptions.TableDecoration defaultPolicyFromConfig =
+ CollectionLayoutConfigOptions.tableDecoration(configuration);
+
+ return _Optionals.orNullable(
+
+ collectionLayoutIfAny
+ .map(CollectionLayout::tableDecoration)
+ .<CollectionLayoutTableDecorationFacet>map(tableDecoration -> {
+ switch (tableDecoration) {
+ case NONE:
+ return new CollectionLayoutTableDecorationFacetForCollectionLayoutAnnotation(
+ CollectionLayoutConfigOptions.TableDecoration.NONE, holder);
+ case DATATABLES_NET:
+ return new CollectionLayoutTableDecorationFacetForCollectionLayoutAnnotation(
+ CollectionLayoutConfigOptions.TableDecoration.DATATABLES_NET, holder);
+ case NOT_SPECIFIED:
+ case AS_CONFIGURED:
+ return new CollectionLayoutTableDecorationFacetForCollectionLayoutAnnotation(defaultPolicyFromConfig, holder);
+ default:
+ }
+ throw new IllegalStateException("tableDecoration '" + tableDecoration + "' not recognised");
+ })
+ ,
+ () -> new CollectionLayoutTableDecorationFacetFromConfiguration(defaultPolicyFromConfig, holder));
+
+ }
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacetAbstract.java
similarity index 66%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetAbstract.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacetAbstract.java
index aa184e2f2f..9d120cd398 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacetAbstract.java
@@ -17,23 +17,23 @@
* under the License.
*
*/
-package org.apache.isis.core.metamodel.facets.param.parameter.depdef;
+package org.apache.isis.core.metamodel.facets.collections.layout.tabledec;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
+import org.apache.isis.core.config.metamodel.facets.CollectionLayoutConfigOptions;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.SingleValueFacetAbstract;
-abstract class ParameterDependentDefaultsFacetAbstract
-extends SingleValueFacetAbstract<ParameterPolicies.DependentDefaultsPolicy>
-implements ParameterDependentDefaultsFacet {
+abstract class CollectionLayoutTableDecorationFacetAbstract
+extends SingleValueFacetAbstract<CollectionLayoutConfigOptions.TableDecoration>
+implements CollectionLayoutTableDecorationFacet {
private static final Class<? extends Facet> type() {
- return ParameterDependentDefaultsFacet.class;
+ return CollectionLayoutTableDecorationFacet.class;
}
- protected ParameterDependentDefaultsFacetAbstract(
- final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) {
+ protected CollectionLayoutTableDecorationFacetAbstract(
+ final CollectionLayoutConfigOptions.TableDecoration value, final FacetHolder holder) {
super(type(), value, holder);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacetForCollectionLayoutAnnotation.java
similarity index 66%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacetForCollectionLayoutAnnotation.java
index c0bb59a50c..0423facc44 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacetForCollectionLayoutAnnotation.java
@@ -17,16 +17,16 @@
* under the License.
*
*/
-package org.apache.isis.core.metamodel.facets.param.parameter.depdef;
+package org.apache.isis.core.metamodel.facets.collections.layout.tabledec;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
+import org.apache.isis.core.config.metamodel.facets.CollectionLayoutConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-public class ParameterDependentDefaultsFacetFromConfiguration
-extends ParameterDependentDefaultsFacetAbstract {
+public class CollectionLayoutTableDecorationFacetForCollectionLayoutAnnotation
+extends CollectionLayoutTableDecorationFacetAbstract {
- ParameterDependentDefaultsFacetFromConfiguration(
- final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) {
+ CollectionLayoutTableDecorationFacetForCollectionLayoutAnnotation(
+ final CollectionLayoutConfigOptions.TableDecoration value, final FacetHolder holder) {
super(value, holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacetForCollectionLayoutAnnotationAsConfigured.java
similarity index 64%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacetForCollectionLayoutAnnotationAsConfigured.java
index c0bb59a50c..186356653d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacetForCollectionLayoutAnnotationAsConfigured.java
@@ -17,16 +17,16 @@
* under the License.
*
*/
-package org.apache.isis.core.metamodel.facets.param.parameter.depdef;
+package org.apache.isis.core.metamodel.facets.collections.layout.tabledec;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
+import org.apache.isis.core.config.metamodel.facets.CollectionLayoutConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-public class ParameterDependentDefaultsFacetFromConfiguration
-extends ParameterDependentDefaultsFacetAbstract {
+public class CollectionLayoutTableDecorationFacetForCollectionLayoutAnnotationAsConfigured
+extends CollectionLayoutTableDecorationFacetForCollectionLayoutAnnotation {
- ParameterDependentDefaultsFacetFromConfiguration(
- final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) {
+ CollectionLayoutTableDecorationFacetForCollectionLayoutAnnotationAsConfigured(
+ final CollectionLayoutConfigOptions.TableDecoration value, final FacetHolder holder) {
super(value, holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacetFromConfiguration.java
similarity index 68%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetForParameterAnnotation.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacetFromConfiguration.java
index e36364da56..6a1e82c379 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetForParameterAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/layout/tabledec/CollectionLayoutTableDecorationFacetFromConfiguration.java
@@ -17,16 +17,16 @@
* under the License.
*
*/
-package org.apache.isis.core.metamodel.facets.param.parameter.depdef;
+package org.apache.isis.core.metamodel.facets.collections.layout.tabledec;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
+import org.apache.isis.core.config.metamodel.facets.CollectionLayoutConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-public class ParameterDependentDefaultsFacetForParameterAnnotation
-extends ParameterDependentDefaultsFacetAbstract {
+public class CollectionLayoutTableDecorationFacetFromConfiguration
+extends CollectionLayoutTableDecorationFacetAbstract {
- ParameterDependentDefaultsFacetForParameterAnnotation(
- final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) {
+ CollectionLayoutTableDecorationFacetFromConfiguration(
+ final CollectionLayoutConfigOptions.TableDecoration value, final FacetHolder holder) {
super(value, holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotation.java
index 5a05bf35fb..3f2cd2aaaf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/command/CommandPublishingFacetForActionAnnotation.java
@@ -26,7 +26,7 @@ import org.apache.isis.applib.services.commanddto.processor.CommandDtoProcessor;
import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.commons.internal.base._Optionals;
import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.core.config.metamodel.facets.PublishingPolicies;
+import org.apache.isis.core.config.metamodel.facets.ActionConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
@@ -40,7 +40,7 @@ public class CommandPublishingFacetForActionAnnotation extends CommandPublishing
final ServiceInjector servicesInjector,
final FacetHolder holder) {
- val publishingPolicy = PublishingPolicies.actionCommandPublishingPolicy(configuration);
+ val publishingPolicy = ActionConfigOptions.actionCommandPublishingPolicy(configuration);
return _Optionals.orNullable(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotation.java
index 2ffcf478a2..63c5dcdf38 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/command/CommandPublishingFacetForPropertyAnnotation.java
@@ -26,7 +26,7 @@ import org.apache.isis.applib.services.commanddto.processor.CommandDtoProcessor;
import org.apache.isis.applib.services.inject.ServiceInjector;
import org.apache.isis.commons.internal.base._Optionals;
import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.core.config.metamodel.facets.PublishingPolicies;
+import org.apache.isis.core.config.metamodel.facets.PropertyConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import lombok.val;
@@ -39,7 +39,7 @@ public class CommandPublishingFacetForPropertyAnnotation extends CommandPublishi
final FacetHolder holder,
final ServiceInjector servicesInjector) {
- val publishingPolicy = PublishingPolicies.propertyCommandPublishingPolicy(configuration);
+ val publishingPolicy = PropertyConfigOptions.propertyCommandPublishingPolicy(configuration);
return _Optionals.orNullable(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/execution/ExecutionPublishingActionFacetForActionAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/execution/ExecutionPublishingActionFacetForActionAnnotation.java
index fafcf7fb6e..76dd442291 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/execution/ExecutionPublishingActionFacetForActionAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/execution/ExecutionPublishingActionFacetForActionAnnotation.java
@@ -24,7 +24,7 @@ import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.Publishing;
import org.apache.isis.commons.internal.base._Optionals;
import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.core.config.metamodel.facets.PublishingPolicies;
+import org.apache.isis.core.config.metamodel.facets.ActionConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet;
@@ -38,7 +38,7 @@ extends ExecutionPublishingFacetAbstract {
final IsisConfiguration configuration,
final FacetHolder holder) {
- val publishingPolicy = PublishingPolicies.actionExecutionPublishingPolicy(configuration);
+ val publishingPolicy = ActionConfigOptions.actionExecutionPublishingPolicy(configuration);
return _Optionals.orNullable(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/execution/ExecutionPublishingPropertyFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/execution/ExecutionPublishingPropertyFacetForPropertyAnnotation.java
index a5aa850da5..1080565d50 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/execution/ExecutionPublishingPropertyFacetForPropertyAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/publish/execution/ExecutionPublishingPropertyFacetForPropertyAnnotation.java
@@ -24,7 +24,7 @@ import org.apache.isis.applib.annotation.Property;
import org.apache.isis.applib.annotation.Publishing;
import org.apache.isis.commons.internal.base._Optionals;
import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.core.config.metamodel.facets.PublishingPolicies;
+import org.apache.isis.core.config.metamodel.facets.PropertyConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import lombok.val;
@@ -37,7 +37,7 @@ extends ExecutionPublishingFacetAbstract {
final IsisConfiguration configuration,
final FacetHolder holder) {
- val publishingPolicy = PublishingPolicies.propertyExecutionPublishingPolicy(configuration);
+ val publishingPolicy = PropertyConfigOptions.propertyExecutionPublishingPolicy(configuration);
return _Optionals.orNullable(
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
index 439fe2f1a8..bfba27e892 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/editing/ImmutableFacetForDomainObjectAnnotation.java
@@ -23,7 +23,7 @@ import java.util.Optional;
import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.core.config.metamodel.facets.EditingObjectsConfiguration;
+import org.apache.isis.core.config.metamodel.facets.DomainObjectConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet;
import org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacetAbstract;
@@ -42,7 +42,7 @@ extends ImmutableFacetAbstract {
final boolean editingDisabledByDefault =
configuration.getApplib().getAnnotation().getDomainObject().getEditing()
- == EditingObjectsConfiguration.FALSE;
+ == DomainObjectConfigOptions.EditingObjectsConfiguration.FALSE;
if(domainObjectIfAny.isPresent()) {
val domainObject = domainObjectIfAny.get();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/entitychangepublishing/EntityChangePublishingFacetForDomainObjectAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/entitychangepublishing/EntityChangePublishingFacetForDomainObjectAnnotation.java
index 92101d7127..38766c2ba5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/entitychangepublishing/EntityChangePublishingFacetForDomainObjectAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobject/entitychangepublishing/EntityChangePublishingFacetForDomainObjectAnnotation.java
@@ -24,7 +24,7 @@ import java.util.Optional;
import org.apache.isis.applib.annotation.Publishing;
import org.apache.isis.commons.internal.exceptions._Exceptions;
import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.core.config.metamodel.facets.PublishingPolicies;
+import org.apache.isis.core.config.metamodel.facets.DomainObjectConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.object.publish.entitychange.EntityChangePublishingFacet;
import org.apache.isis.core.metamodel.facets.object.publish.entitychange.EntityChangePublishingFacetAbstract;
@@ -45,7 +45,7 @@ extends EntityChangePublishingFacetAbstract {
case NOT_SPECIFIED:
case AS_CONFIGURED:
- val publishingPolicy = PublishingPolicies.entityChangePublishingPolicy(configuration);
+ val publishingPolicy = DomainObjectConfigOptions.entityChangePublishingPolicy(configuration);
switch (publishingPolicy) {
case NONE:
return Optional.of(entityChangePublishingIfAny.isPresent()
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java
index 8a4cdb5a29..955f24d025 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/DomainObjectLayoutFacetFactory.java
@@ -23,6 +23,7 @@ import org.apache.isis.commons.internal.base._Lazy;
import org.apache.isis.core.metamodel.context.MetaModelContext;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
+import org.apache.isis.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecorationFacet;
import org.apache.isis.core.metamodel.services.events.MetamodelEventService;
import lombok.val;
@@ -74,6 +75,10 @@ extends FacetFactoryAbstract {
ObjectNamedFacetForDomainObjectLayoutAnnotation
.create(domainObjectLayoutIfAny, facetHolder));
+ addFacetIfPresent(
+ DomainObjectLayoutTableDecorationFacet
+ .create(domainObjectLayoutIfAny, getConfiguration(), facetHolder));
+
addFacetIfPresent(
PagedFacetForDomainObjectLayoutAnnotation
.create(domainObjectLayoutIfAny, facetHolder));
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PagedFacetForDomainObjectLayoutAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PagedFacetForDomainObjectLayoutAnnotation.java
index fa6f6ac49f..428ed44f0c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PagedFacetForDomainObjectLayoutAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PagedFacetForDomainObjectLayoutAnnotation.java
@@ -23,15 +23,25 @@ import java.util.Optional;
import org.apache.isis.applib.annotation.DomainObjectLayout;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecorationFacet;
+import org.apache.isis.core.metamodel.facets.object.paged.PagedFacet;
import org.apache.isis.core.metamodel.facets.object.paged.PagedFacetAbstract;
+import lombok.val;
+
public class PagedFacetForDomainObjectLayoutAnnotation extends PagedFacetAbstract {
- public static Optional<PagedFacetForDomainObjectLayoutAnnotation> create(
+ public static Optional<PagedFacet> create(
final Optional<DomainObjectLayout> domainObjectLayoutIfAny,
final FacetHolder holder) {
+
+ val tableDecorationFacet = holder.getFacet(DomainObjectLayoutTableDecorationFacet.class);
+ if (tableDecorationFacet.value().isDataTablesNet()) {
+ return Optional.of(new PagedFacetOverriddenByDataTablesDecoration(holder));
+ }
+
return domainObjectLayoutIfAny
.map(DomainObjectLayout::paged)
.filter(paged -> paged > 1)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PagedFacetOverriddenByDataTablesDecoration.java
similarity index 67%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PagedFacetOverriddenByDataTablesDecoration.java
index c0bb59a50c..69776cef28 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/PagedFacetOverriddenByDataTablesDecoration.java
@@ -15,19 +15,16 @@
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
- *
*/
-package org.apache.isis.core.metamodel.facets.param.parameter.depdef;
+package org.apache.isis.core.metamodel.facets.object.domainobjectlayout;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.object.paged.PagedFacetAbstract;
-public class ParameterDependentDefaultsFacetFromConfiguration
-extends ParameterDependentDefaultsFacetAbstract {
+public class PagedFacetOverriddenByDataTablesDecoration extends PagedFacetAbstract {
- ParameterDependentDefaultsFacetFromConfiguration(
- final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) {
- super(value, holder);
+ PagedFacetOverriddenByDataTablesDecoration(final FacetHolder holder) {
+ super(Integer.MAX_VALUE, holder);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacet.java
new file mode 100644
index 0000000000..73cc2b0351
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacet.java
@@ -0,0 +1,74 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.isis.core.metamodel.facets.object.domainobjectlayout.tabledec;
+
+import java.util.Optional;
+
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.DomainObjectLayout;
+import org.apache.isis.applib.annotation.Parameter;
+import org.apache.isis.commons.internal.base._Optionals;
+import org.apache.isis.core.config.IsisConfiguration;
+import org.apache.isis.core.config.metamodel.facets.DomainObjectLayoutConfigOptions;
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.SingleValueFacet;
+
+/**
+ * Determines how dependent parameter values should be updated,
+ * if one of the earlier parameter values is changed.
+ * <p>
+ * Corresponds to annotating the action method {@link Parameter#dependentDefaultsPolicy()}.
+ *
+ * @since 2.0
+ */
+public interface DomainObjectLayoutTableDecorationFacet
+extends SingleValueFacet<DomainObjectLayoutConfigOptions.TableDecoration> {
+
+ static Optional<DomainObjectLayoutTableDecorationFacet> create(
+ final Optional<DomainObjectLayout> domainObjectLayoutIfAny,
+ final IsisConfiguration configuration,
+ final FacetHolder holder) {
+
+ final DomainObjectLayoutConfigOptions.TableDecoration defaultPolicyFromConfig =
+ DomainObjectLayoutConfigOptions.tableDecoration(configuration);
+
+ return _Optionals.orNullable(
+
+ domainObjectLayoutIfAny
+ .map(DomainObjectLayout::tableDecoration)
+ .<DomainObjectLayoutTableDecorationFacet>map(tableDecoration -> {
+ switch (tableDecoration) {
+ case NONE:
+ return new DomainObjectLayoutTableDecorationFacetForDomainObjectLayoutAnnotation(
+ DomainObjectLayoutConfigOptions.TableDecoration.NONE, holder);
+ case DATATABLES_NET:
+ return new DomainObjectLayoutTableDecorationFacetForDomainObjectLayoutAnnotation(
+ DomainObjectLayoutConfigOptions.TableDecoration.DATATABLES_NET, holder);
+ case NOT_SPECIFIED:
+ case AS_CONFIGURED:
+ return new DomainObjectLayoutTableDecorationFacetForDomainObjectLayoutAnnotation(defaultPolicyFromConfig, holder);
+ default:
+ }
+ throw new IllegalStateException("tableDecoration '" + tableDecoration + "' not recognised");
+ })
+ ,
+ () -> new DomainObjectLayoutTableDecorationFacetFromConfiguration(defaultPolicyFromConfig, holder));
+ }
+}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacetAbstract.java
similarity index 65%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetAbstract.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacetAbstract.java
index aa184e2f2f..56c6eceb22 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacetAbstract.java
@@ -17,23 +17,23 @@
* under the License.
*
*/
-package org.apache.isis.core.metamodel.facets.param.parameter.depdef;
+package org.apache.isis.core.metamodel.facets.object.domainobjectlayout.tabledec;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
+import org.apache.isis.core.config.metamodel.facets.DomainObjectLayoutConfigOptions;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.SingleValueFacetAbstract;
-abstract class ParameterDependentDefaultsFacetAbstract
-extends SingleValueFacetAbstract<ParameterPolicies.DependentDefaultsPolicy>
-implements ParameterDependentDefaultsFacet {
+abstract class DomainObjectLayoutTableDecorationFacetAbstract
+extends SingleValueFacetAbstract<DomainObjectLayoutConfigOptions.TableDecoration>
+implements DomainObjectLayoutTableDecorationFacet {
private static final Class<? extends Facet> type() {
- return ParameterDependentDefaultsFacet.class;
+ return DomainObjectLayoutTableDecorationFacet.class;
}
- protected ParameterDependentDefaultsFacetAbstract(
- final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) {
+ protected DomainObjectLayoutTableDecorationFacetAbstract(
+ final DomainObjectLayoutConfigOptions.TableDecoration value, final FacetHolder holder) {
super(type(), value, holder);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacetForDomainObjectLayoutAnnotation.java
similarity index 65%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacetForDomainObjectLayoutAnnotation.java
index c0bb59a50c..1c6b8aac28 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacetForDomainObjectLayoutAnnotation.java
@@ -17,16 +17,16 @@
* under the License.
*
*/
-package org.apache.isis.core.metamodel.facets.param.parameter.depdef;
+package org.apache.isis.core.metamodel.facets.object.domainobjectlayout.tabledec;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
+import org.apache.isis.core.config.metamodel.facets.DomainObjectLayoutConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-public class ParameterDependentDefaultsFacetFromConfiguration
-extends ParameterDependentDefaultsFacetAbstract {
+public class DomainObjectLayoutTableDecorationFacetForDomainObjectLayoutAnnotation
+extends DomainObjectLayoutTableDecorationFacetAbstract {
- ParameterDependentDefaultsFacetFromConfiguration(
- final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) {
+ DomainObjectLayoutTableDecorationFacetForDomainObjectLayoutAnnotation(
+ final DomainObjectLayoutConfigOptions.TableDecoration value, final FacetHolder holder) {
super(value, holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacetForDomainObjectLayoutAnnotationAsConfigured.java
similarity index 63%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacetForDomainObjectLayoutAnnotationAsConfigured.java
index c0bb59a50c..f54fdf68bc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacetForDomainObjectLayoutAnnotationAsConfigured.java
@@ -17,16 +17,16 @@
* under the License.
*
*/
-package org.apache.isis.core.metamodel.facets.param.parameter.depdef;
+package org.apache.isis.core.metamodel.facets.object.domainobjectlayout.tabledec;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
+import org.apache.isis.core.config.metamodel.facets.DomainObjectLayoutConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-public class ParameterDependentDefaultsFacetFromConfiguration
-extends ParameterDependentDefaultsFacetAbstract {
+public class DomainObjectLayoutTableDecorationFacetForDomainObjectLayoutAnnotationAsConfigured
+extends DomainObjectLayoutTableDecorationFacetForDomainObjectLayoutAnnotation {
- ParameterDependentDefaultsFacetFromConfiguration(
- final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) {
+ DomainObjectLayoutTableDecorationFacetForDomainObjectLayoutAnnotationAsConfigured(
+ final DomainObjectLayoutConfigOptions.TableDecoration value, final FacetHolder holder) {
super(value, holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacetFromConfiguration.java
similarity index 67%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacetFromConfiguration.java
index c0bb59a50c..842621e09d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/domainobjectlayout/tabledec/DomainObjectLayoutTableDecorationFacetFromConfiguration.java
@@ -17,16 +17,16 @@
* under the License.
*
*/
-package org.apache.isis.core.metamodel.facets.param.parameter.depdef;
+package org.apache.isis.core.metamodel.facets.object.domainobjectlayout.tabledec;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
+import org.apache.isis.core.config.metamodel.facets.DomainObjectLayoutConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-public class ParameterDependentDefaultsFacetFromConfiguration
-extends ParameterDependentDefaultsFacetAbstract {
+public class DomainObjectLayoutTableDecorationFacetFromConfiguration
+extends DomainObjectLayoutTableDecorationFacetAbstract {
- ParameterDependentDefaultsFacetFromConfiguration(
- final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) {
+ DomainObjectLayoutTableDecorationFacetFromConfiguration(
+ final DomainObjectLayoutConfigOptions.TableDecoration value, final FacetHolder holder) {
super(value, holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/PagedFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/PagedFacet.java
index 14ea5195cc..14b122699b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/PagedFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/paged/PagedFacet.java
@@ -29,18 +29,4 @@ public interface PagedFacet extends Facet {
int value();
- /**
- * Returns the page-size as held by given {@code pagedFacet} if present, otherwise
- * falls back to {@code defaultPageSize}.
- * @param pagedFacet - null-able
- * @param defaultPageSize
- */
- static int pageSizeOrDefault(
- final @Nullable PagedFacet pagedFacet,
- final int defaultPageSize) {
- return pagedFacet != null
- ? pagedFacet.value()
- : defaultPageSize;
- }
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsActionFacetForActionAnnotationAsConfigured.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsActionFacetForActionAnnotationAsConfigured.java
index facf4fe3c5..e44bd5c9ff 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsActionFacetForActionAnnotationAsConfigured.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsActionFacetForActionAnnotationAsConfigured.java
@@ -19,14 +19,14 @@
*/
package org.apache.isis.core.metamodel.facets.param.parameter.depdef;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
+import org.apache.isis.core.config.metamodel.facets.ParameterConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
public class ParameterDependentDefaultsActionFacetForActionAnnotationAsConfigured
extends ParameterDependentDefaultsFacetForParameterAnnotation {
ParameterDependentDefaultsActionFacetForActionAnnotationAsConfigured(
- final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) {
+ final ParameterConfigOptions.DependentDefaultsPolicy value, final FacetHolder holder) {
super(value, holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacet.java
index 399f449fec..3e22dc548a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacet.java
@@ -21,11 +21,10 @@ package org.apache.isis.core.metamodel.facets.param.parameter.depdef;
import java.util.Optional;
-import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.Parameter;
import org.apache.isis.commons.internal.base._Optionals;
import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
+import org.apache.isis.core.config.metamodel.facets.ParameterConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.SingleValueFacet;
@@ -38,15 +37,15 @@ import org.apache.isis.core.metamodel.facets.SingleValueFacet;
* @since 2.0
*/
public interface ParameterDependentDefaultsFacet
-extends SingleValueFacet<ParameterPolicies.DependentDefaultsPolicy> {
+extends SingleValueFacet<ParameterConfigOptions.DependentDefaultsPolicy> {
static Optional<ParameterDependentDefaultsFacet> create(
final Optional<Parameter> parameterIfAny,
final IsisConfiguration configuration,
final FacetHolder holder) {
- final ParameterPolicies.DependentDefaultsPolicy defaultPolicyFromConfig =
- ParameterPolicies.dependentDefaultsPolicy(configuration);
+ final ParameterConfigOptions.DependentDefaultsPolicy defaultPolicyFromConfig =
+ ParameterConfigOptions.dependentDefaultsPolicy(configuration);
return _Optionals.orNullable(
@@ -56,10 +55,10 @@ extends SingleValueFacet<ParameterPolicies.DependentDefaultsPolicy> {
switch (policy) {
case PRESERVE_CHANGES:
return new ParameterDependentDefaultsFacetForParameterAnnotation(
- ParameterPolicies.DependentDefaultsPolicy.PRESERVE_CHANGES, holder);
+ ParameterConfigOptions.DependentDefaultsPolicy.PRESERVE_CHANGES, holder);
case UPDATE_DEPENDENT:
return new ParameterDependentDefaultsFacetForParameterAnnotation(
- ParameterPolicies.DependentDefaultsPolicy.UPDATE_DEPENDENT, holder);
+ ParameterConfigOptions.DependentDefaultsPolicy.UPDATE_DEPENDENT, holder);
case NOT_SPECIFIED:
case AS_CONFIGURED:
return new ParameterDependentDefaultsFacetForParameterAnnotation(defaultPolicyFromConfig, holder);
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetAbstract.java
index aa184e2f2f..7cbf17f60d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetAbstract.java
@@ -19,13 +19,13 @@
*/
package org.apache.isis.core.metamodel.facets.param.parameter.depdef;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
+import org.apache.isis.core.config.metamodel.facets.ParameterConfigOptions;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.SingleValueFacetAbstract;
abstract class ParameterDependentDefaultsFacetAbstract
-extends SingleValueFacetAbstract<ParameterPolicies.DependentDefaultsPolicy>
+extends SingleValueFacetAbstract<ParameterConfigOptions.DependentDefaultsPolicy>
implements ParameterDependentDefaultsFacet {
private static final Class<? extends Facet> type() {
@@ -33,7 +33,7 @@ implements ParameterDependentDefaultsFacet {
}
protected ParameterDependentDefaultsFacetAbstract(
- final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) {
+ final ParameterConfigOptions.DependentDefaultsPolicy value, final FacetHolder holder) {
super(type(), value, holder);
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetForParameterAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetForParameterAnnotation.java
index e36364da56..b4d4a5e65b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetForParameterAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetForParameterAnnotation.java
@@ -19,14 +19,14 @@
*/
package org.apache.isis.core.metamodel.facets.param.parameter.depdef;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
+import org.apache.isis.core.config.metamodel.facets.ParameterConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
public class ParameterDependentDefaultsFacetForParameterAnnotation
extends ParameterDependentDefaultsFacetAbstract {
ParameterDependentDefaultsFacetForParameterAnnotation(
- final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) {
+ final ParameterConfigOptions.DependentDefaultsPolicy value, final FacetHolder holder) {
super(value, holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
index c0bb59a50c..de8be9cc33 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/parameter/depdef/ParameterDependentDefaultsFacetFromConfiguration.java
@@ -19,14 +19,14 @@
*/
package org.apache.isis.core.metamodel.facets.param.parameter.depdef;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
+import org.apache.isis.core.config.metamodel.facets.ParameterConfigOptions;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
public class ParameterDependentDefaultsFacetFromConfiguration
extends ParameterDependentDefaultsFacetAbstract {
ParameterDependentDefaultsFacetFromConfiguration(
- final ParameterPolicies.DependentDefaultsPolicy value, final FacetHolder holder) {
+ final ParameterConfigOptions.DependentDefaultsPolicy value, final FacetHolder holder) {
super(value, holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java
index a11dae3ce3..57ed70cb2f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/util/Facets.java
@@ -38,7 +38,7 @@ import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._NullSafe;
import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.config.metamodel.facets.ParameterPolicies;
+import org.apache.isis.core.config.metamodel.facets.ParameterConfigOptions;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -172,11 +172,11 @@ public final class Facets {
.map(DefaultViewFacet::value);
}
- public static ParameterPolicies.DependentDefaultsPolicy dependentDefaultsPolicy(
+ public static ParameterConfigOptions.DependentDefaultsPolicy dependentDefaultsPolicy(
final ObjectActionParameter parameter) {
return parameter.lookupFacet(ParameterDependentDefaultsFacet.class)
.map(ParameterDependentDefaultsFacet::value)
- .orElseGet(ParameterPolicies.DependentDefaultsPolicy::defaultsIfNotSpecifiedOtherwise);
+ .orElseGet(ParameterConfigOptions.DependentDefaultsPolicy::defaultsIfNotSpecifiedOtherwise);
}
public boolean domainServiceIsPresent(final ObjectSpecification objectSpec) {
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
index 9b05d572a9..398ba2e57f 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest.java
@@ -27,7 +27,7 @@ import org.junit.After;
import org.junit.Before;
import org.apache.isis.applib.mixins.system.HasInteractionId;
-import org.apache.isis.core.config.metamodel.facets.PublishingPolicies;
+import org.apache.isis.core.config.metamodel.facets.ActionConfigOptions;
import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
import org.apache.isis.core.metamodel.facets.object.domainobject.domainevents.ActionDomainEventDefaultFacetForDomainObjectAnnotation;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
@@ -90,7 +90,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
}
- void allowingPublishingConfigurationToReturn(final PublishingPolicies.ActionPublishingPolicy value) {
+ void allowingPublishingConfigurationToReturn(final ActionConfigOptions.PublishingPolicy value) {
val config = metaModelContext.getConfiguration();
config.getApplib().getAnnotation().getAction().setExecutionPublishing(value);
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_executionPublishing.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_executionPublishing.java
index b3609cea44..5e266fe656 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_executionPublishing.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/actions/action/ActionAnnotationFacetFactoryTest_executionPublishing.java
@@ -29,7 +29,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
import org.apache.isis.applib.annotation.Action;
import org.apache.isis.applib.annotation.SemanticsOf;
import org.apache.isis.commons.internal.base._Blackhole;
-import org.apache.isis.core.config.metamodel.facets.PublishingPolicies;
+import org.apache.isis.core.config.metamodel.facets.ActionConfigOptions;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
import org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacetAbstract;
@@ -64,7 +64,7 @@ public class ActionAnnotationFacetFactoryTest_executionPublishing extends Action
public void given_noAnnotation_and_configurationSetToIgnoreQueryOnly_andSafeSemantics_thenNone() {
// given
- allowingPublishingConfigurationToReturn(PublishingPolicies.ActionPublishingPolicy.IGNORE_QUERY_ONLY);
+ allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.IGNORE_QUERY_ONLY);
final Method actionMethod = findMethod(ActionAnnotationFacetFactoryTest.Customer.class, "someAction");
facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.SAFE, facetedMethod) {});
@@ -82,7 +82,7 @@ public class ActionAnnotationFacetFactoryTest_executionPublishing extends Action
public void given_noAnnotation_and_configurationSetToIgnoreQueryOnly_andNonSafeSemantics_thenAdded() {
// given
- allowingPublishingConfigurationToReturn(PublishingPolicies.ActionPublishingPolicy.IGNORE_QUERY_ONLY);
+ allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.IGNORE_QUERY_ONLY);
final Method actionMethod = findMethod(ActionAnnotationFacetFactoryTest.Customer.class, "someAction");
facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.IDEMPOTENT, facetedMethod) {});
@@ -103,7 +103,7 @@ public class ActionAnnotationFacetFactoryTest_executionPublishing extends Action
public void given_noAnnotation_and_configurationSetToIgnoreQueryOnly_andNoSemantics_thenException() {
// given
- allowingPublishingConfigurationToReturn(PublishingPolicies.ActionPublishingPolicy.IGNORE_QUERY_ONLY);
+ allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.IGNORE_QUERY_ONLY);
final Method actionMethod = findMethod(ActionAnnotationFacetFactoryTest.Customer.class, "someAction");
// when
@@ -117,7 +117,7 @@ public class ActionAnnotationFacetFactoryTest_executionPublishing extends Action
public void given_noAnnotation_and_configurationSetToNone_thenNone() {
// given
- allowingPublishingConfigurationToReturn(PublishingPolicies.ActionPublishingPolicy.NONE);
+ allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.NONE);
final Method actionMethod = findMethod(ActionAnnotationFacetFactoryTest.Customer.class, "someAction");
// when
@@ -138,7 +138,7 @@ public class ActionAnnotationFacetFactoryTest_executionPublishing extends Action
// given
final Method actionMethod = findMethod(ActionAnnotationFacetFactoryTest.Customer.class, "someAction");
- allowingPublishingConfigurationToReturn(PublishingPolicies.ActionPublishingPolicy.ALL);
+ allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.ALL);
// when
processExecutionPublishing(facetFactory, ProcessMethodContext
@@ -160,7 +160,7 @@ public class ActionAnnotationFacetFactoryTest_executionPublishing extends Action
}
}
- allowingPublishingConfigurationToReturn(PublishingPolicies.ActionPublishingPolicy.IGNORE_QUERY_ONLY);
+ allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.IGNORE_QUERY_ONLY);
final Method actionMethod = findMethod(Customer.class, "someAction");
facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.SAFE, facetedMethod) {});
@@ -185,7 +185,7 @@ public class ActionAnnotationFacetFactoryTest_executionPublishing extends Action
}
}
- allowingPublishingConfigurationToReturn(PublishingPolicies.ActionPublishingPolicy.IGNORE_QUERY_ONLY);
+ allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.IGNORE_QUERY_ONLY);
final Method actionMethod = findMethod(Customer.class, "someAction");
facetedMethod.addFacet(new ActionSemanticsFacetAbstract(SemanticsOf.IDEMPOTENT, facetedMethod) {});
@@ -212,7 +212,7 @@ public class ActionAnnotationFacetFactoryTest_executionPublishing extends Action
}
}
- allowingPublishingConfigurationToReturn(PublishingPolicies.ActionPublishingPolicy.IGNORE_QUERY_ONLY);
+ allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.IGNORE_QUERY_ONLY);
final Method actionMethod = findMethod(Customer.class, "someAction");
processExecutionPublishing(facetFactory, ProcessMethodContext
@@ -228,7 +228,7 @@ public class ActionAnnotationFacetFactoryTest_executionPublishing extends Action
}
}
- allowingPublishingConfigurationToReturn(PublishingPolicies.ActionPublishingPolicy.NONE);
+ allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.NONE);
final Method actionMethod = findMethod(Customer.class, "someAction");
processExecutionPublishing(facetFactory, ProcessMethodContext
@@ -253,7 +253,7 @@ public class ActionAnnotationFacetFactoryTest_executionPublishing extends Action
}
final Method actionMethod = findMethod(Customer.class, "someAction");
- allowingPublishingConfigurationToReturn(PublishingPolicies.ActionPublishingPolicy.ALL);
+ allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.ALL);
// when
processExecutionPublishing(facetFactory, ProcessMethodContext
@@ -281,7 +281,7 @@ public class ActionAnnotationFacetFactoryTest_executionPublishing extends Action
final Method actionMethod = findMethod(Customer.class, "someAction");
// even though configuration is disabled
- allowingPublishingConfigurationToReturn(PublishingPolicies.ActionPublishingPolicy.NONE);
+ allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.NONE);
// when
processExecutionPublishing(facetFactory, ProcessMethodContext
@@ -307,7 +307,7 @@ public class ActionAnnotationFacetFactoryTest_executionPublishing extends Action
final Method actionMethod = findMethod(Customer.class, "someAction");
// even though configuration is disabled
- allowingPublishingConfigurationToReturn(PublishingPolicies.ActionPublishingPolicy.NONE);
+ allowingPublishingConfigurationToReturn(ActionConfigOptions.PublishingPolicy.NONE);
// when
processExecutionPublishing(facetFactory, ProcessMethodContext
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
index 0459b2bed5..6a25f547f6 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactoryTest.java
@@ -39,8 +39,7 @@ import org.apache.isis.applib.annotation.DomainObject;
import org.apache.isis.applib.id.LogicalType;
import org.apache.isis.applib.mixins.system.HasInteractionId;
import org.apache.isis.core.config.IsisConfiguration;
-import org.apache.isis.core.config.metamodel.facets.EditingObjectsConfiguration;
-import org.apache.isis.core.config.metamodel.facets.PublishingPolicies;
+import org.apache.isis.core.config.metamodel.facets.DomainObjectConfigOptions;
import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryJUnit4TestCase;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessClassContext;
@@ -92,14 +91,14 @@ extends AbstractFacetFactoryJUnit4TestCase {
}
- void allowingEntityChangePublishingToReturn(final PublishingPolicies.EntityChangePublishingPolicy value) {
+ void allowingEntityChangePublishingToReturn(final DomainObjectConfigOptions.EntityChangePublishingPolicy value) {
if(value!=null) {
val config = super.metaModelContext.getConfiguration();
config.getApplib().getAnnotation().getDomainObject().setEntityChangePublishing(value);
}
}
- void allowingObjectsEditingToReturn(final EditingObjectsConfiguration value) {
+ void allowingObjectsEditingToReturn(final DomainObjectConfigOptions.EditingObjectsConfiguration value) {
if(value!=null) {
final IsisConfiguration config = super.metaModelContext.getConfiguration();
config.getApplib().getAnnotation().getDomainObject().setEditing(value);
@@ -129,7 +128,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void configured_value_set_to_all() {
- allowingEntityChangePublishingToReturn(PublishingPolicies.EntityChangePublishingPolicy.ALL);
+ allowingEntityChangePublishingToReturn(DomainObjectConfigOptions.EntityChangePublishingPolicy.ALL);
val context = ProcessClassContext
.forTesting(DomainObjectAnnotationFacetFactoryTest.Customer.class, mockMethodRemover, facetHolder);
@@ -145,7 +144,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void configured_value_set_to_none() {
- allowingEntityChangePublishingToReturn(PublishingPolicies.EntityChangePublishingPolicy.NONE);
+ allowingEntityChangePublishingToReturn(DomainObjectConfigOptions.EntityChangePublishingPolicy.NONE);
facetFactory.process(ProcessClassContext
.forTesting(DomainObjectAnnotationFacetFactoryTest.Customer.class, mockMethodRemover, facetHolder));
@@ -163,7 +162,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void configured_value_set_to_all() {
- allowingEntityChangePublishingToReturn(PublishingPolicies.EntityChangePublishingPolicy.ALL);
+ allowingEntityChangePublishingToReturn(DomainObjectConfigOptions.EntityChangePublishingPolicy.ALL);
facetFactory.process(ProcessClassContext
.forTesting(CustomerWithDomainObjectAndAuditingSetToAsConfigured.class, mockMethodRemover, facetHolder));
@@ -178,7 +177,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void configured_value_set_to_none() {
- allowingEntityChangePublishingToReturn(PublishingPolicies.EntityChangePublishingPolicy.NONE);
+ allowingEntityChangePublishingToReturn(DomainObjectConfigOptions.EntityChangePublishingPolicy.NONE);
facetFactory.process(ProcessClassContext
.forTesting(CustomerWithDomainObjectAndAuditingSetToAsConfigured.class, mockMethodRemover, facetHolder));
@@ -214,7 +213,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void irrespective_of_configured_value() {
- allowingEntityChangePublishingToReturn(PublishingPolicies.EntityChangePublishingPolicy.ALL);
+ allowingEntityChangePublishingToReturn(DomainObjectConfigOptions.EntityChangePublishingPolicy.ALL);
facetFactory.process(ProcessClassContext
.forTesting(CustomerWithDomainObjectAndAuditingSetToDisabled.class, mockMethodRemover, facetHolder));
@@ -421,7 +420,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void configured_value_set_to_true() {
- allowingObjectsEditingToReturn(EditingObjectsConfiguration.TRUE);
+ allowingObjectsEditingToReturn(DomainObjectConfigOptions.EditingObjectsConfiguration.TRUE);
facetFactory.process(ProcessClassContext
.forTesting(DomainObjectAnnotationFacetFactoryTest.Customer.class, mockMethodRemover, facetHolder));
@@ -434,7 +433,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void configured_value_set_to_false() {
- allowingObjectsEditingToReturn(EditingObjectsConfiguration.FALSE);
+ allowingObjectsEditingToReturn(DomainObjectConfigOptions.EditingObjectsConfiguration.FALSE);
facetFactory.process(ProcessClassContext
.forTesting(DomainObjectAnnotationFacetFactoryTest.Customer.class, mockMethodRemover, facetHolder));
@@ -467,7 +466,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void configured_value_set_to_true() {
- allowingObjectsEditingToReturn(EditingObjectsConfiguration.TRUE);
+ allowingObjectsEditingToReturn(DomainObjectConfigOptions.EditingObjectsConfiguration.TRUE);
facetFactory.process(ProcessClassContext
.forTesting(CustomerWithDomainObjectAndEditingSetToAsConfigured.class, mockMethodRemover, facetHolder));
@@ -480,7 +479,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void configured_value_set_to_false() {
- allowingObjectsEditingToReturn(EditingObjectsConfiguration.FALSE);
+ allowingObjectsEditingToReturn(DomainObjectConfigOptions.EditingObjectsConfiguration.FALSE);
facetFactory.process(ProcessClassContext
.forTesting(CustomerWithDomainObjectAndEditingSetToAsConfigured.class, mockMethodRemover, facetHolder));
@@ -511,7 +510,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void irrespective_of_configured_value() {
- allowingObjectsEditingToReturn(EditingObjectsConfiguration.FALSE);
+ allowingObjectsEditingToReturn(DomainObjectConfigOptions.EditingObjectsConfiguration.FALSE);
facetFactory.process(ProcessClassContext
.forTesting(
@@ -529,7 +528,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void irrespective_of_configured_value() {
- allowingObjectsEditingToReturn(EditingObjectsConfiguration.TRUE);
+ allowingObjectsEditingToReturn(DomainObjectConfigOptions.EditingObjectsConfiguration.TRUE);
facetFactory.process(ProcessClassContext
.forTesting(
diff --git a/core/pom.xml b/core/pom.xml
index a31c1125d1..1093a56a50 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -1281,6 +1281,12 @@
<version>${togglz.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.webjars</groupId>
+ <artifactId>datatables</artifactId>
+ <version>${datatables.version}</version>
+ </dependency>
+
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
diff --git a/viewers/wicket/ui/pom.xml b/viewers/wicket/ui/pom.xml
index e894690598..b05a838a68 100644
--- a/viewers/wicket/ui/pom.xml
+++ b/viewers/wicket/ui/pom.xml
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
- license agreements. See the NOTICE file distributed with this work for additional
- information regarding copyright ownership. The ASF licenses this file to
- you under the Apache License, Version 2.0 (the "License"); you may not use
- this file except in compliance with the License. You may obtain a copy of
- the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
- by applicable law or agreed to in writing, software distributed under the
- License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
- OF ANY KIND, either express or implied. See the License for the specific
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
+ license agreements. See the NOTICE file distributed with this work for additional
+ information regarding copyright ownership. The ASF licenses this file to
+ you under the Apache License, Version 2.0 (the "License"); you may not use
+ this file except in compliance with the License. You may obtain a copy of
+ the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
+ by applicable law or agreed to in writing, software distributed under the
+ License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied. See the License for the specific
language governing permissions and limitations under the License. -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -52,9 +52,9 @@
<artifactId>yuicompressor-maven-plugin</artifactId>
</plugin>
<plugin>
- <!-- overrides defaults as configured in our core pom,
+ <!-- overrides defaults as configured in our core pom,
to make javadoc failures non fatal and let the build continue;
- this we can set on a per module basis, to apply only to those,
+ this we can set on a per module basis, to apply only to those,
we don't know how to fix otherwise -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
@@ -71,17 +71,17 @@
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-wicket-model</artifactId>
</dependency>
-
+
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-commons-services</artifactId>
</dependency>
-
+
<dependency>
<groupId>org.apache.isis.viewer</groupId>
<artifactId>isis-viewer-commons-prism</artifactId>
</dependency>
-
+
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket-devutils</artifactId>
@@ -137,7 +137,7 @@
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
- <!-- for Java7 compatibility (we don't use the proxying capability of
+ <!-- for Java7 compatibility (we don't use the proxying capability of
this component) -->
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
@@ -169,6 +169,11 @@
<artifactId>select2</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.webjars</groupId>
+ <artifactId>datatables</artifactId>
+ </dependency>
+
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
@@ -344,7 +349,7 @@
<artifactId>isis-core-internaltestsupport</artifactId>
<scope>test</scope>
</dependency>
-
+
<dependency>
<groupId>org.apache.isis.core</groupId>
<artifactId>isis-core-runtimeservices</artifactId>
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanel.java
index d329a61965..c0e45dd2d3 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/collection/EntityCollectionPanel.java
@@ -26,6 +26,8 @@ import org.apache.isis.applib.annotation.Where;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.consent.Consent;
import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
+import org.apache.isis.core.metamodel.facets.collections.layout.tabledec.CollectionLayoutTableDecorationFacet;
+import org.apache.isis.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecorationFacet;
import org.apache.isis.core.metamodel.object.ManagedObject;
import org.apache.isis.core.metamodel.util.Facets;
import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
@@ -126,6 +128,11 @@ implements HasDynamicallyVisibleContent {
Facets.cssClass(collectionMetaModel, objectAdapter)
.ifPresent(cssClass->Wkt.cssAppend(div, cssClass));
+ val decorationFacet = collectionMetaModel.getFacet(CollectionLayoutTableDecorationFacet.class);
+ if (decorationFacet != null && decorationFacet.value().isDataTablesNet()) {
+ Wkt.cssAppend(div, "table-decoration");
+ }
+
val collectionPanel = new CollectionPanel(ID_COLLECTION, collectionModel);
div.addOrReplace(collectionPanel);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
index 354759c855..754220166e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/standalonecollection/StandaloneCollectionPanel.java
@@ -24,6 +24,7 @@ import org.apache.wicket.MarkupContainer;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.model.Model;
+import org.apache.isis.core.metamodel.facets.object.domainobjectlayout.tabledec.DomainObjectLayoutTableDecorationFacet;
import org.apache.isis.core.metamodel.interactions.managed.nonscalar.DataTableModel;
import org.apache.isis.viewer.commons.model.components.ComponentType;
import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
@@ -73,6 +74,11 @@ implements CollectionCountProvider, CollectionPresentationSelectorProvider {
Wkt.cssAppend(outerDiv, featureId);
Wkt.cssAppend(outerDiv, collectionModel.getElementType().getFeatureIdentifier());
+ val decorationFacet = collectionModel.getMetaModel().getElementType().getFacet(DomainObjectLayoutTableDecorationFacet.class);
+ if (decorationFacet != null && decorationFacet.value().isDataTablesNet()) {
+ Wkt.cssAppend(outerDiv, "table-decoration");
+ }
+
// selector
final CollectionPresentationSelectorHelper selectorHelper = new CollectionPresentationSelectorHelper(collectionModel, getComponentFactoryRegistry());
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index 137290a0cc..dc78985381 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -71,6 +71,11 @@ import org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs.Breadcrum
import org.apache.isis.viewer.wicket.ui.errors.ExceptionModel;
import org.apache.isis.viewer.wicket.ui.errors.JGrowlBehaviour;
import org.apache.isis.viewer.wicket.ui.pages.common.bootstrap.css.BootstrapOverridesCssResourceReference;
+import org.apache.isis.viewer.wicket.ui.pages.common.datatables.DatatablesCssBootstrap5ReferenceWkt;
+import org.apache.isis.viewer.wicket.ui.pages.common.datatables.DatatablesCssReferenceWkt;
+import org.apache.isis.viewer.wicket.ui.pages.common.datatables.DatatablesJavaScriptBootstrap5ReferenceWkt;
+import org.apache.isis.viewer.wicket.ui.pages.common.datatables.DatatablesJavaScriptReferenceWkt;
+import org.apache.isis.viewer.wicket.ui.pages.common.datatables.DatatablesJavaScriptResourceReferenceInit;
import org.apache.isis.viewer.wicket.ui.pages.common.fontawesome.FontAwesomeCssReferenceWkt;
import org.apache.isis.viewer.wicket.ui.pages.common.livequery.js.LiveQueryJsResourceReference;
import org.apache.isis.viewer.wicket.ui.pages.common.sidebar.css.SidebarCssResourceReference;
@@ -239,6 +244,12 @@ implements ActionPromptProvider {
response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(BootstrapJavaScriptReference.instance())));
response.render(FontAwesomeCssReferenceWkt.asHeaderItem());
+ response.render(DatatablesJavaScriptReferenceWkt.asHeaderItem());
+ response.render(DatatablesJavaScriptBootstrap5ReferenceWkt.asHeaderItem());
+ response.render(DatatablesCssReferenceWkt.asHeaderItem());
+ response.render(DatatablesCssBootstrap5ReferenceWkt.asHeaderItem());
+ response.render(DatatablesJavaScriptResourceReferenceInit.instance(getConfiguration()));
+
response.render(BootstrapOverridesCssResourceReference.asHeaderItem());
BootstrapOverridesCssResourceReference
.contributeThemeSpecificOverrides(getApplication(), response);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/bootstrap/css/bootstrap-overrides-all-v2.css b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/bootstrap/css/bootstrap-overrides-all-v2.css
index 4154997c97..bdc03a9da9 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/bootstrap/css/bootstrap-overrides-all-v2.css
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/bootstrap/css/bootstrap-overrides-all-v2.css
@@ -58,8 +58,8 @@ td .badge,
.form-control-sm .badge {
font-size:.85rem
}
-td .badge span,
-.scalarPlaceholder .badge span,
+td .badge span,
+.scalarPlaceholder .badge span,
.form-control-sm .badge span {
padding: 0;
}
@@ -1262,6 +1262,20 @@ ul.navbar-wrap {
margin-bottom: 5px;
}
+/* DATATABLES.NET */
+
+div.entityCollection div.dataTables_wrapper {
+ margin-top: 15px;
+}
+
+div.dataTables_wrapper select.form-select {
+ min-width: 60px;
+}
+
+div.dataTables_wrapper ul.pagination {
+ font-size: small;
+}
+
/* TOOLTIPS */
.tooltip {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesCssBootstrap5ReferenceWkt.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesCssBootstrap5ReferenceWkt.java
new file mode 100644
index 0000000000..81af0f3fd3
--- /dev/null
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesCssBootstrap5ReferenceWkt.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.isis.viewer.wicket.ui.pages.common.datatables;
+
+import org.apache.wicket.markup.head.CssHeaderItem;
+
+import lombok.Getter;
+import lombok.experimental.Accessors;
+
+import de.agilecoders.wicket.webjars.request.resource.WebjarsCssResourceReference;
+
+public class DatatablesCssBootstrap5ReferenceWkt extends WebjarsCssResourceReference {
+ private static final long serialVersionUID = 1L;
+
+ @Getter(lazy = true) @Accessors(fluent = true)
+ private static final DatatablesCssBootstrap5ReferenceWkt instance =
+ new DatatablesCssBootstrap5ReferenceWkt();
+
+ public static CssHeaderItem asHeaderItem() {
+ return CssHeaderItem.forReference(DatatablesCssBootstrap5ReferenceWkt.instance());
+ }
+
+ /**
+ * Private constructor.
+ */
+ private DatatablesCssBootstrap5ReferenceWkt() {
+ super(RESOURCE);
+ }
+
+ private static final String RESOURCE = "datatables/1.12.1/css/dataTables.bootstrap5.min.css";
+}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesCssReferenceWkt.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesCssReferenceWkt.java
new file mode 100644
index 0000000000..f7ba0bf2fe
--- /dev/null
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesCssReferenceWkt.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.isis.viewer.wicket.ui.pages.common.datatables;
+
+import org.apache.wicket.markup.head.CssHeaderItem;
+
+import lombok.Getter;
+import lombok.experimental.Accessors;
+
+import de.agilecoders.wicket.webjars.request.resource.WebjarsCssResourceReference;
+
+public class DatatablesCssReferenceWkt extends WebjarsCssResourceReference {
+ private static final long serialVersionUID = 1L;
+
+ @Getter(lazy = true) @Accessors(fluent = true)
+ private static final DatatablesCssReferenceWkt instance =
+ new DatatablesCssReferenceWkt();
+
+ public static CssHeaderItem asHeaderItem() {
+ return CssHeaderItem.forReference(DatatablesCssReferenceWkt.instance());
+ }
+
+ /**
+ * Private constructor.
+ */
+ private DatatablesCssReferenceWkt() {
+ super(RESOURCE);
+ }
+
+ private static final String RESOURCE = "datatables/1.12.1/css/jquery.dataTables.min.css";
+}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesJavaScriptBootstrap5ReferenceWkt.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesJavaScriptBootstrap5ReferenceWkt.java
new file mode 100644
index 0000000000..cfba077a2b
--- /dev/null
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesJavaScriptBootstrap5ReferenceWkt.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.isis.viewer.wicket.ui.pages.common.datatables;
+
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
+
+import lombok.Getter;
+import lombok.experimental.Accessors;
+
+import de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference;
+
+public class DatatablesJavaScriptBootstrap5ReferenceWkt extends WebjarsJavaScriptResourceReference {
+ private static final long serialVersionUID = 1L;
+
+ @Getter(lazy = true) @Accessors(fluent = true)
+ private static final DatatablesJavaScriptBootstrap5ReferenceWkt instance =
+ new DatatablesJavaScriptBootstrap5ReferenceWkt();
+
+ public static JavaScriptReferenceHeaderItem asHeaderItem() {
+ return JavaScriptHeaderItem.forReference(DatatablesJavaScriptBootstrap5ReferenceWkt.instance());
+ }
+
+ /**
+ * Private constructor.
+ */
+ private DatatablesJavaScriptBootstrap5ReferenceWkt() {
+ super(RESOURCE);
+ }
+
+ private static final String RESOURCE = "datatables/1.12.1/js/dataTables.bootstrap5.min.js";
+}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesJavaScriptReferenceWkt.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesJavaScriptReferenceWkt.java
new file mode 100644
index 0000000000..adc751a45f
--- /dev/null
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesJavaScriptReferenceWkt.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.isis.viewer.wicket.ui.pages.common.datatables;
+
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
+
+import lombok.Getter;
+import lombok.experimental.Accessors;
+
+import de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference;
+
+public class DatatablesJavaScriptReferenceWkt extends WebjarsJavaScriptResourceReference {
+ private static final long serialVersionUID = 1L;
+
+ @Getter(lazy = true) @Accessors(fluent = true)
+ private static final DatatablesJavaScriptReferenceWkt instance =
+ new DatatablesJavaScriptReferenceWkt();
+
+ public static JavaScriptReferenceHeaderItem asHeaderItem() {
+ return JavaScriptHeaderItem.forReference(DatatablesJavaScriptReferenceWkt.instance());
+ }
+
+ /**
+ * Private constructor.
+ */
+ private DatatablesJavaScriptReferenceWkt() {
+ super(RESOURCE);
+ }
+
+ private static final String RESOURCE = "datatables/1.12.1/js/jquery.dataTables.min.js";
+}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesJavaScriptResourceReferenceInit.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesJavaScriptResourceReferenceInit.java
new file mode 100644
index 0000000000..c44b05a808
--- /dev/null
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/DatatablesJavaScriptResourceReferenceInit.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.isis.viewer.wicket.ui.pages.common.datatables;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+
+import org.apache.wicket.markup.head.JavaScriptContentHeaderItem;
+import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+import org.springframework.util.FileCopyUtils;
+
+import org.apache.isis.core.config.IsisConfiguration;
+
+/**
+ * Javascript (client-side) extensions and fixes.
+ */
+public class DatatablesJavaScriptResourceReferenceInit extends JavaScriptContentHeaderItem {
+
+ private static final long serialVersionUID = 1L;
+
+ private static final String ID = "dataTablesInit";
+
+ private static DatatablesJavaScriptResourceReferenceInit instance = null;
+
+ public static final DatatablesJavaScriptResourceReferenceInit instance(IsisConfiguration configuration) {
+ if (instance == null) {
+ String javascript = readResource(configuration);
+ instance = new DatatablesJavaScriptResourceReferenceInit(javascript, ID);
+ }
+ return instance;
+ }
+
+ private DatatablesJavaScriptResourceReferenceInit(CharSequence javaScript, String id) {
+ super(javaScript, id);
+ }
+
+ private static String readResource(IsisConfiguration configuration) {
+ String options = configuration.getViewer().getWicket().getTable().getDecoration().getDataTablesNet().getOptions().orElse("");
+ return readScript().replace("$PLACEHOLDER$", options);
+ }
+
+ private static String readScript() {
+ return asString(new ClassPathResource("dataTables.init.js", DatatablesJavaScriptResourceReferenceInit.class));
+ }
+
+ private static String asString(Resource resource) {
+ try (Reader reader = new InputStreamReader(resource.getInputStream(), UTF_8)) {
+ return FileCopyUtils.copyToString(reader);
+ } catch (IOException e) {
+ return "";
+ }
+ }
+
+}
diff --git a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/EditingObjectsConfiguration.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/dataTables.init.js
similarity index 83%
rename from core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/EditingObjectsConfiguration.java
rename to viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/dataTables.init.js
index 3e7f6cd43e..e3cf350549 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/metamodel/facets/EditingObjectsConfiguration.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/datatables/dataTables.init.js
@@ -16,9 +16,13 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.config.metamodel.facets;
+(function($) {
+
+ $(document).ready( function () {
+ $('div.table-decoration table.contents').DataTable({
+ $PLACEHOLDER$
+ });
+ } );
+
+})(jQuery);
-public enum EditingObjectsConfiguration {
- TRUE,
- FALSE;
-}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/viewer/js/jquery.isis.wicket.viewer.js b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/viewer/js/jquery.isis.wicket.viewer.js
index 7c9a58cce0..ae3bdefe2d 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/viewer/js/jquery.isis.wicket.viewer.js
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/common/viewer/js/jquery.isis.wicket.viewer.js
@@ -108,9 +108,9 @@ $(function() {
let el = $('#'+elementId).find('.inputFormTable.parameters')
.find('input,textarea,div.cbx,select').filter(':visible:first');
if(el) {
-
+
//console.log('Isis.Topic.FOCUS_FIRST_PARAMETER: elementId=' + elementId);
-
+
let elNodeName = $(el).prop('nodeName')
if (elNodeName) {
let x = elNodeName.toLowerCase()
@@ -213,7 +213,7 @@ $(function() {
});
}
$(document, '.wkt-component-with-tooltip').on('click', hidePopover);
-
+
/* stop event bubbling on html links that have a container with onClick event already */
$('.no-click-bubbling').click(function(event){
event.stopImmediatePropagation();
@@ -276,6 +276,7 @@ $(function() {
});
+
/**
* enables 'maxlength' to work as an attribute on 'textarea'
*
diff --git a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/WicketViewerCssBundleInit.java b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/WicketViewerCssBundleInit.java
index 35495524d6..c88a40020d 100644
--- a/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/WicketViewerCssBundleInit.java
+++ b/viewers/wicket/viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/wicketapp/config/WicketViewerCssBundleInit.java
@@ -32,6 +32,8 @@ import org.apache.isis.viewer.wicket.ui.components.scalars.string.MultiLineStrin
import org.apache.isis.viewer.wicket.ui.panels.PanelUtil;
import org.apache.isis.viewer.wicket.viewer.wicketapp.IsisWicketApplication;
+import de.agilecoders.wicket.webjars.request.resource.WebjarsCssResourceReference;
+
@Configuration
public class WicketViewerCssBundleInit implements WicketApplicationInitializer {