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 2017/12/29 17:41:32 UTC

[isis] 01/02: ISIS-1787: adds 'cssPrefix' configuration property to append to the CSS class for table columns.

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

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit da34abfc55a41b8bbbd3fbabfc811fa90b2e25b4
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Dec 29 17:35:08 2017 +0000

    ISIS-1787: adds 'cssPrefix' configuration property to append to the CSS class for table columns.
    
    For action link, which also used to add a similar CSS class, just remove the CSS class... there are plenty of other
---
 .../asciidoc/guides/ugvw/_ugvw_configuration-properties.adoc | 12 ++++++++++--
 .../org/apache/isis/core/commons/lang/StringExtensions.java  |  3 ---
 .../wicket/viewer/settings/WicketViewerSettingsDefault.java  |  5 +++++
 .../isis/viewer/wicket/model/isis/WicketViewerSettings.java  |  6 ++++++
 .../actionmenu/entityactions/AdditionalLinksPanel.java       |  5 +----
 .../ajaxtable/CollectionContentsAsAjaxTablePanel.java        |  5 ++++-
 .../ajaxtable/columns/ObjectAdapterPropertyColumn.java       | 12 ++++++++++--
 .../domainapp/application/manifest/viewer_wicket.properties  | 10 ++++++++++
 8 files changed, 46 insertions(+), 12 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties.adoc b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties.adoc
index 254ed01..aa4075d 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugvw/_ugvw_configuration-properties.adoc
@@ -57,11 +57,19 @@ If you prefer you can place all configuration properties into `WEB-INF/isis.prop
 | Whether to show chooser for Breadcrumbs (bottom-left in the Wicket viewer)
 
 |`isis.viewer.wicket.` +
+`cssPrefix`
+| string +
+(`isis`)
+| (`1.16.0-SNAPSHOT`) Table columns have CSS classes identifying the property; this allows individual table columns to targeted and styled.
+This property defines a prefix to avoid clashes between property names and bootstrap# CSS classes.
+
+For example, if set to "isis" then the CSS class added for an "active" property will be "isis-active" (otherwise,it would be simply have been "active").
+
+|`isis.viewer.wicket.` +
 `datePattern`
 | date format +
 (`dd-MM-yyyy`)
-|The `SimpleDateFormat` used to render dates.  For the date picker (which uses `moment.js` library), this is converted
-dynamically into the corresponding `moment.js` format.
+|The `SimpleDateFormat` used to render dates.  For the date picker (which uses `moment.js` library), this is converted dynamically into the corresponding `moment.js` format.
 
 |`isis.viewer.wicket.` +
 `dateTimePattern`
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringExtensions.java b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringExtensions.java
index cf7f978..6393b97 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringExtensions.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/commons/lang/StringExtensions.java
@@ -604,7 +604,4 @@ public final class StringExtensions {
         return buf.toString();
     }
 
-
-
-    
 }
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
index 6782fd9..c96e428 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
@@ -51,6 +51,11 @@ public class WicketViewerSettingsDefault implements WicketViewerSettings {
         return getConfiguration().getInteger("isis.viewer.wicket.maxTitleLengthInParentedTables", getMaxTitleLengthInTables());
     }
 
+    @Override
+    public String getCssPrefix() {
+        return getConfiguration().getString("isis.viewer.wicket.cssPrefix", "isis");
+    }
+
     /**
      * Fallback for either {@link #getMaxTitleLengthInParentedTables()} and {@link #getMaxTitleLengthInParentedTables()}
      */
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
index cd9b5ad..af478cc 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
@@ -38,6 +38,12 @@ public interface WicketViewerSettings extends Serializable {
     int getMaxTitleLengthInParentedTables();
 
     /**
+     * The prefix, if any, of any CSS class name that identifies property columns within tables.
+     * @return
+     */
+    String getCssPrefix();
+
+    /**
      * The pattern used for rendering and parsing dates.
      *
      * <p>
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java
index 3761e47..5e0e64c 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/AdditionalLinksPanel.java
@@ -33,12 +33,11 @@ import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.model.Model;
 
 import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.core.commons.lang.StringExtensions;
 import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaPosition;
-import org.apache.isis.viewer.wicket.ui.components.widgets.linkandlabel.ActionLink;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.links.ListOfLinksModel;
 import org.apache.isis.viewer.wicket.ui.components.actionmenu.CssClassFaBehavior;
+import org.apache.isis.viewer.wicket.ui.components.widgets.linkandlabel.ActionLink;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 import org.apache.isis.viewer.wicket.ui.util.Components;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
@@ -152,8 +151,6 @@ public class AdditionalLinksPanel extends PanelAbstract<ListOfLinksModel> {
                 final String cssClass = linkAndLabel.getCssClass();
                 CssClassAppender.appendCssClassTo(link, cssClass);
 
-                viewTitleLabel.add(new CssClassAppender(StringExtensions.asLowerDashed(linkAndLabel.getLabel())));
-
                 link.addOrReplace(viewTitleLabel);
 
                 final String cssClassFa = linkAndLabel.getCssClassFa();
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
index dc8d842..5e0a908 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
@@ -125,6 +125,9 @@ public class CollectionContentsAsAjaxTablePanel
 
                     // perhaps something to tackle in a separate ticket....
                     ajaxRequestTarget.add(dataTable);
+
+                    // hmm... just reading this;
+                    // could perhaps use ajaxRequestTarget.addJavaScript(JGrowlUtils....)
                 }
             };
             toggleboxColumn.setOnConcurrencyExceptionHandler(handler2);
@@ -258,7 +261,7 @@ public class CollectionContentsAsAjaxTablePanel
         final NamedFacet facet = property.getFacet(NamedFacet.class);
         final boolean escaped = facet == null || facet.escaped();
 
-        return new ObjectAdapterPropertyColumn(Model.of(property.getName()), property.getId(), property.getId(), escaped);
+        return new ObjectAdapterPropertyColumn(Model.of(property.getName()), property.getId(), property.getId(), escaped, getSettings());
     }
 
 
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterPropertyColumn.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterPropertyColumn.java
index 579e207..cab48a4 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterPropertyColumn.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterPropertyColumn.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns;
 
+import com.google.common.base.Strings;
+
 import org.apache.wicket.Component;
 import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
 import org.apache.wicket.markup.html.basic.Label;
@@ -27,6 +29,7 @@ import org.apache.wicket.model.IModel;
 
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
+import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.mementos.PropertyMemento;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.EntityModel.RenderingHint;
@@ -51,15 +54,18 @@ public final class ObjectAdapterPropertyColumn extends ColumnAbstract<ObjectAdap
 
     private final String propertyExpression;
     private final boolean escaped;
+    private final String cssPrefix;
 
     public ObjectAdapterPropertyColumn(
             final IModel<String> columnNameModel,
             final String sortProperty,
             final String propertyName,
-            final boolean escaped) {
+            final boolean escaped,
+            final WicketViewerSettings settings) {
         super(columnNameModel, sortProperty);
         this.propertyExpression = propertyName;
         this.escaped = escaped;
+        this.cssPrefix = settings.getCssPrefix();
     }
 
     public Component getHeader(final String componentId)
@@ -72,7 +78,9 @@ public final class ObjectAdapterPropertyColumn extends ColumnAbstract<ObjectAdap
     @Override
     public String getCssClass() {
         final String cssClass = super.getCssClass();
-        return (cssClass != null ? (cssClass + " ") : "") + propertyExpression;
+        return (!Strings.isNullOrEmpty(cssClass) ? (cssClass + " ") : "") +
+               (!Strings.isNullOrEmpty(cssPrefix) ? cssPrefix + "-" : "") +
+                propertyExpression;
     }
 
     @Override
diff --git a/example/application/simpleapp/application/src/main/resources/domainapp/application/manifest/viewer_wicket.properties b/example/application/simpleapp/application/src/main/resources/domainapp/application/manifest/viewer_wicket.properties
index 96fa2ac..2f7325e 100644
--- a/example/application/simpleapp/application/src/main/resources/domainapp/application/manifest/viewer_wicket.properties
+++ b/example/application/simpleapp/application/src/main/resources/domainapp/application/manifest/viewer_wicket.properties
@@ -33,6 +33,16 @@ isis.viewer.wicket.maxTitleLengthInParentedTables=0
 
 
 #
+# Table columns have CSS classes identifying the property; this allows individual table columns to targeted and styled.
+# This property defines a prefix to avoid clashes between property names and bootstrap# CSS classes.
+# For example, if set to "isis" then the CSS class added for an "active" property will be "isis-active" (otherwise,
+# it would be simply have been "active").
+# The default value if not specified is simply "isis".
+#
+#isis.viewer.wicket.cssPrefix=isis
+
+
+#
 # in Firefox and more recent versions of Chrome 54+, cannot copy out of disabled fields; instead we use the
 # readonly attribute (https://www.w3.org/TR/2014/REC-html5-20141028/forms.html#the-readonly-attribute)
 # This behaviour is enabled by default but can be disabled using this flag

-- 
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.