You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2014/11/20 12:28:09 UTC

[1/4] isis git commit: ISIS-956: updates to CssClassFaFacetOnMemberFactory and to example apps (plus other minor tidy up in ServicesInstallerFromConfiguration which was used as basis/reference of implementation of parsing strings from config file.)

Repository: isis
Updated Branches:
  refs/heads/master 2f24674c4 -> 07b423587


ISIS-956: updates to CssClassFaFacetOnMemberFactory and to example apps (plus other minor tidy up in ServicesInstallerFromConfiguration which was used as basis/reference of implementation of parsing strings from config file.)


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/4bd90975
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/4bd90975
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/4bd90975

Branch: refs/heads/master
Commit: 4bd90975ffa9286a8af879cb213f1157c65d591a
Parents: 2f24674
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Nov 20 12:13:06 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 20 12:13:06 2014 +0100

----------------------------------------------------------------------
 .../CssClassFaFacetOnMemberFactory.java         | 94 +++++++++++++++++++-
 ...ClassFaFacetOnMemberFromConfiguredRegex.java | 30 +++++++
 .../ServicesInstallerFromConfiguration.java     | 38 +++++---
 .../services/ServicesInstallerUtils.java        | 22 ++---
 .../src/main/webapp/WEB-INF/isis.properties     | 16 ++++
 .../src/main/webapp/WEB-INF/isis.properties     | 16 ++++
 6 files changed, 185 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/4bd90975/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
index 5a835a7..6e8dd1d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFactory.java
@@ -19,8 +19,18 @@
 
 package org.apache.isis.core.metamodel.facets.members.cssclassfa.annotprop;
 
+import java.lang.reflect.Method;
+import java.util.Map;
 import java.util.Properties;
+import java.util.StringTokenizer;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import com.google.common.base.Strings;
+import com.google.common.collect.Maps;
 import org.apache.isis.applib.annotation.CssClassFa;
+import org.apache.isis.core.commons.config.ConfigurationConstants;
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.commons.config.IsisConfigurationAware;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
@@ -29,7 +39,9 @@ import org.apache.isis.core.metamodel.facets.ContributeeMemberFacetFactory;
 import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
 import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet;
 
-public class CssClassFaFacetOnMemberFactory extends FacetFactoryAbstract implements ContributeeMemberFacetFactory {
+public class CssClassFaFacetOnMemberFactory extends FacetFactoryAbstract implements ContributeeMemberFacetFactory, IsisConfigurationAware{
+
+    private IsisConfiguration configuration;
 
     public CssClassFaFacetOnMemberFactory() {
         super(FeatureType.ACTIONS_ONLY);
@@ -41,7 +53,10 @@ public class CssClassFaFacetOnMemberFactory extends FacetFactoryAbstract impleme
         if(cssClassFaFacet == null) {
             cssClassFaFacet = createFromAnnotationIfPossible(processMethodContext);
         }
-        
+        if(cssClassFaFacet == null) {
+            cssClassFaFacet = createFromConfiguredRegexIfPossible(processMethodContext);
+        }
+
         // no-op if null
         FacetUtil.addFacet(cssClassFaFacet);
     }
@@ -68,5 +83,80 @@ public class CssClassFaFacetOnMemberFactory extends FacetFactoryAbstract impleme
         return annotation != null ? new CssClassFaFacetOnMemberAnnotation(annotation.value(), processMethodContext.getFacetHolder()) : null;
     }
 
+    //region > faIconFromPattern
+
+
+    private final static Pattern FA_ICON_REGEX_PATTERN = Pattern.compile("([^:]+):(.+)");
+
+    private CssClassFaFacet createFromConfiguredRegexIfPossible(final ProcessMethodContext processMethodContext) {
+        final Method method = processMethodContext.getMethod();
+
+        String value = faIconIfAnyFor(method);
+
+        return value != null
+                ? new CssClassFaFacetOnMemberFromConfiguredRegex(value, processMethodContext.getFacetHolder())
+                : null;
+    }
+
+    private String faIconIfAnyFor(Method method) {
+        final String name = method.getName();
+        return faIconIfAnyFor(name);
+    }
+
+    private String faIconIfAnyFor(String name) {
+        final Map<Pattern, String> faIconByPattern = getFaIconByPattern();
+
+        for (Map.Entry<Pattern, String> entry : faIconByPattern.entrySet()) {
+            final Pattern pattern = entry.getKey();
+            final String faIcon = entry.getValue();
+            if(pattern.matcher(name).matches()) {
+                return faIcon;
+            }
+        }
+        return null;
+    }
+
+    private Map<Pattern,String> faIconByPattern;
+
+    private Map<Pattern, String> getFaIconByPattern() {
+        if (faIconByPattern == null) {
+            // build lazily
+            final String cssClassFaPatterns = configuration.getString("isis.reflector.facet.cssClassFa.patterns");
+            this.faIconByPattern = buildFaIconByPattern(cssClassFaPatterns);
+        }
+        return faIconByPattern;
+    }
+
+    private static Map<Pattern, String> buildFaIconByPattern(String cssClassFaPatterns) {
+        final Map<Pattern,String> faIconByPattern = Maps.newLinkedHashMap();
+        if(cssClassFaPatterns != null) {
+            final StringTokenizer regexToFaIcons = new StringTokenizer(cssClassFaPatterns, ConfigurationConstants.LIST_SEPARATOR);
+            final Map<String,String> faIconByRegex = Maps.newLinkedHashMap();
+            while (regexToFaIcons.hasMoreTokens()) {
+                String regexToFaIcon = regexToFaIcons.nextToken().trim();
+                if (Strings.isNullOrEmpty(regexToFaIcon)) {
+                    continue;
+                }
+                final Matcher matcher = FA_ICON_REGEX_PATTERN.matcher(regexToFaIcon);
+                if(matcher.matches()) {
+                    faIconByRegex.put(matcher.group(1), matcher.group(2));
+                }
+            }
+            for (Map.Entry<String, String> entry : faIconByRegex.entrySet()) {
+                final String regex = entry.getKey();
+                final String faIcon = entry.getValue();
+                faIconByPattern.put(Pattern.compile(regex), faIcon);
+            }
+        }
+        return faIconByPattern;
+    }
+    //endregion
+
+    //region > injected
+    @Override
+    public void setConfiguration(final IsisConfiguration configuration) {
+        this.configuration = configuration;
+    }
+    //endregion
 }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/4bd90975/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java
new file mode 100644
index 0000000..9be8ed8
--- /dev/null
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/members/cssclassfa/annotprop/CssClassFaFacetOnMemberFromConfiguredRegex.java
@@ -0,0 +1,30 @@
+/*
+ *  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.members.cssclassfa.annotprop;
+
+import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacetAbstract;
+
+public class CssClassFaFacetOnMemberFromConfiguredRegex extends CssClassFaFacetAbstract {
+
+    public CssClassFaFacetOnMemberFromConfiguredRegex(final String value, final FacetHolder holder) {
+        super(value, holder);
+    }
+}

http://git-wip-us.apache.org/repos/asf/isis/blob/4bd90975/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromConfiguration.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromConfiguration.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromConfiguration.java
index a5189b3..8d3b602 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromConfiguration.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerFromConfiguration.java
@@ -19,9 +19,14 @@
 
 package org.apache.isis.core.runtime.services;
 
-import java.util.*;
+import java.util.List;
+import java.util.Map;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.StringTokenizer;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import com.google.common.base.Strings;
 import com.google.common.collect.Maps;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -44,7 +49,7 @@ public class ServicesInstallerFromConfiguration extends InstallerAbstract implem
     @Deprecated
     private static final String SERVICES_PREFIX = "services.prefix";
 
-    private final static Pattern regex = Pattern.compile("((\\d+):)(.*)");
+    private final static Pattern POSITIONED_SERVICE_REGEX = Pattern.compile("((\\d+):)(.*)");
 
     private final ServiceInstantiator serviceInstantiator;
 
@@ -61,6 +66,7 @@ public class ServicesInstallerFromConfiguration extends InstallerAbstract implem
 
     private Map<DeploymentType, List<Object>> servicesByDeploymentType = Maps.newHashMap();
 
+
     public void init() {
         initIfRequired();
     }
@@ -137,18 +143,33 @@ public class ServicesInstallerFromConfiguration extends InstallerAbstract implem
             if (serviceName.equals("")) {
                 continue;
             }
-            final Matcher matcher = regex.matcher(serviceName);
+            final Matcher matcher = POSITIONED_SERVICE_REGEX.matcher(serviceName);
             Integer order = Integer.MAX_VALUE;
             if(matcher.matches()) {
                 order = Integer.parseInt(matcher.group(2));
                 serviceName = matcher.group(3);
             }
 
-            final String service = ServicesInstallerUtils.fullyQualifiedServiceName(servicePrefix, serviceName);
+            final String service = fullyQualifiedServiceName(servicePrefix, serviceName);
             ServicesInstallerUtils.appendInPosition(positionedServices, "" + order, service);
         }
     }
 
+    static String fullyQualifiedServiceName(String servicePrefix, String serviceName) {
+        final StringBuilder buf = new StringBuilder();
+
+        if(!Strings.isNullOrEmpty(servicePrefix)) {
+            buf.append(servicePrefix);
+            if(!servicePrefix.endsWith(".")) {
+                buf.append(".");
+            }
+        }
+
+        buf.append(serviceName);
+        return buf.toString();
+    }
+
+
     private void appendObjectFixtureService(DeploymentType deploymentType, final SortedMap<String, SortedSet<String>> positionedServices) {
 
         final String group = deploymentType != null? deploymentType.name(): null;
@@ -162,15 +183,6 @@ public class ServicesInstallerFromConfiguration extends InstallerAbstract implem
         }
     }
 
-    // unused, I think....?
-    private static String servicePrefix(final String servicePrefix) {
-        String prefix = servicePrefix == null ? "" : servicePrefix.trim();
-        if (prefix.length() > 0 && !prefix.endsWith(ConfigurationConstants.DELIMITER)) {
-            prefix = prefix + ConfigurationConstants.DELIMITER;
-        }
-        return prefix;
-    }
-
     @Override
     public List<Class<?>> getTypes() {
         return listOf(List.class); // ie List<Object.class>, of services

http://git-wip-us.apache.org/repos/asf/isis/blob/4bd90975/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerUtils.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerUtils.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerUtils.java
index 88d4919..34f72c0 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerUtils.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServicesInstallerUtils.java
@@ -19,10 +19,14 @@
 
 package org.apache.isis.core.runtime.services;
 
-import java.util.*;
+import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.SortedSet;
 import com.google.common.base.Function;
 import com.google.common.base.Predicates;
-import com.google.common.base.Strings;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
@@ -103,18 +107,4 @@ final class ServicesInstallerUtils  {
         };
     }
 
-    static String fullyQualifiedServiceName(String servicePrefix, String serviceName) {
-        final StringBuilder buf = new StringBuilder();
-
-        if(!Strings.isNullOrEmpty(servicePrefix)) {
-            buf.append(servicePrefix);
-            if(!servicePrefix.endsWith(".")) {
-                buf.append(".");
-            }
-        }
-
-        buf.append(serviceName);
-
-        return buf.toString();
-    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/4bd90975/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties
index 54bf51c..339bae3 100644
--- a/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/application/simpleapp/webapp/src/main/webapp/WEB-INF/isis.properties
@@ -95,6 +95,22 @@ isis.authorization=shiro
 
 
 
+#
+# patterns for applying CssClassFa facet (font-awesome icons) to member names
+#
+isis.reflector.facet.cssClassFa.patterns=\
+                        create.*:fa-plus,\
+                        update.*:fa-edit,\
+                        add.*:fa-plus-square,\
+                        remove.*:fa-minus-square,\
+                        move.*:fa-exchange,\
+                        first.*:fa-star,\
+                        find.*:fa-search,\
+                        clear.*:fa-remove,\
+                        previous.*:fa-step-backward,\
+                        next.*:fa-step-forward,\
+                        list.*:fa-list
+
 #################################################################################
 #
 # Value facet defaults

http://git-wip-us.apache.org/repos/asf/isis/blob/4bd90975/example/application/todoapp/webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/application/todoapp/webapp/src/main/webapp/WEB-INF/isis.properties b/example/application/todoapp/webapp/src/main/webapp/WEB-INF/isis.properties
index 66fbabd..494a818 100644
--- a/example/application/todoapp/webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/application/todoapp/webapp/src/main/webapp/WEB-INF/isis.properties
@@ -95,6 +95,22 @@ isis.authorization=shiro
 
 
 
+#
+# patterns for applying CssClassFa facet (font-awesome icons) to member names
+#
+isis.reflector.facet.cssClassFa.patterns=\
+                        create.*:fa-plus,\
+                        update.*:fa-edit,\
+                        add.*:fa-plus-square,\
+                        remove.*:fa-minus-square,\
+                        move.*:fa-exchange,\
+                        first.*:fa-star,\
+                        find.*:fa-search,\
+                        clear.*:fa-remove,\
+                        previous.*:fa-step-backward,\
+                        next.*:fa-step-forward,\
+                        list.*:fa-list
+
 #################################################################################
 #
 # Value facet defaults


[3/4] isis git commit: ISIS-956: recreating todoapp archetype

Posted by da...@apache.org.
ISIS-956: recreating todoapp archetype


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/b1e34c30
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/b1e34c30
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/b1e34c30

Branch: refs/heads/master
Commit: b1e34c30f8492f65fc6d90758301f64446dc7cdd
Parents: 541ab11
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Nov 20 12:18:20 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 20 12:18:20 2014 +0100

----------------------------------------------------------------------
 .../webapp/src/main/webapp/WEB-INF/isis.properties  | 16 ++++++++++++++++
 .../resources/projects/basic/archetype.properties   |  2 +-
 2 files changed, 17 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/b1e34c30/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
index 97fae7f..f91fa59 100644
--- a/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/archetype/todoapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
@@ -98,6 +98,22 @@ ${symbol_pound}isis.reflector.validator=
 
 
 
+${symbol_pound}
+${symbol_pound} patterns for applying CssClassFa facet (font-awesome icons) to member names
+${symbol_pound}
+isis.reflector.facet.cssClassFa.patterns=${symbol_escape}
+                        create.*:fa-plus,${symbol_escape}
+                        update.*:fa-edit,${symbol_escape}
+                        add.*:fa-plus-square,${symbol_escape}
+                        remove.*:fa-minus-square,${symbol_escape}
+                        move.*:fa-exchange,${symbol_escape}
+                        first.*:fa-star,${symbol_escape}
+                        find.*:fa-search,${symbol_escape}
+                        clear.*:fa-remove,${symbol_escape}
+                        previous.*:fa-step-backward,${symbol_escape}
+                        next.*:fa-step-forward,${symbol_escape}
+                        list.*:fa-list
+
 ${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbo
 l_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}
 ${symbol_pound}
 ${symbol_pound} Value facet defaults

http://git-wip-us.apache.org/repos/asf/isis/blob/b1e34c30/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
----------------------------------------------------------------------
diff --git a/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties b/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
index da0d140..16ccd95 100644
--- a/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/todoapp/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Tue Nov 18 11:41:25 CET 2014
+#Thu Nov 20 12:18:13 CET 2014
 package=it.pkg
 version=0.1-SNAPSHOT
 groupId=archetype.it


[4/4] isis git commit: ISIS-537: minor fixes for menus.

Posted by da...@apache.org.
ISIS-537: minor fixes for menus.

1. scrollable menu if long
2. adding "top-menu-xxx" class to each top menu to allow application.css to apply targetted fixes if required (eg <ul class="pull-right" ...> if require right-align)
3. use Isis' CssClassAppender rather than Wicket's CssClassNameAppender (consistency in codebase)
4. removing unused code from PageAbstract


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/07b42358
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/07b42358
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/07b42358

Branch: refs/heads/master
Commit: 07b42358756655e88e084f6847e5bfadcda4b122
Parents: b1e34c3
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Nov 20 12:16:34 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 20 12:18:58 2014 +0100

----------------------------------------------------------------------
 .../widgets/cssmenu/ApplicationActionsPanel.css |  7 ++++
 .../cssmenu/ApplicationActionsPanel.html        |  2 +-
 .../cssmenu/ApplicationActionsPanel.java        | 15 ++++---
 .../viewer/wicket/ui/pages/PageAbstract.java    | 41 +++++++-------------
 .../viewer/wicket/ui/util/CssClassAppender.java |  3 ++
 .../wicket/ui/pages/PageAbstractTest.java       |  6 ++-
 6 files changed, 39 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/07b42358/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.css
index b777dcd..9367e66 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.css
@@ -95,3 +95,10 @@
     border-radius: 0;
     color: initial;
 }
+
+.scrollable-menu {
+    min-width: 250px;
+    height: auto;
+    max-height: 600px;
+    overflow-x: hidden;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/07b42358/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.html
index 0562067..3a6dd5d 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.html
@@ -4,7 +4,7 @@
         <wicket:panel>
             <li class="dropdown" wicket:id="menuItems">
                 <a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"><span wicket:id="name"></span> <span class="caret"></span></a>
-                <ul class="dropdown-menu multi-level" role="menu">
+                <ul wicket:id="topMenu" class="dropdown-menu scrollable-menu multi-level" role="menu">
                     <li wicket:id="subMenuItems">
                         <wicket:container wicket:id="content"></wicket:container>
                     </li>

http://git-wip-us.apache.org/repos/asf/isis/blob/07b42358/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.java
index 48b34d4..d2c3f05 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/cssmenu/ApplicationActionsPanel.java
@@ -1,16 +1,17 @@
 package org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu;
 
-import de.agilecoders.wicket.core.markup.html.bootstrap.behavior.CssClassNameAppender;
 import de.agilecoders.wicket.core.markup.html.bootstrap.components.TooltipBehavior;
 import de.agilecoders.wicket.extensions.markup.html.bootstrap.button.DropdownAutoOpenJavaScriptReference;
 
 import java.util.List;
 import com.google.common.base.Strings;
 import com.google.common.collect.Lists;
+import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.AbstractLink;
 import org.apache.wicket.markup.html.list.ListItem;
@@ -50,6 +51,10 @@ public class ApplicationActionsPanel extends Panel {
                 CssMenuItem menuItem = listItem.getModelObject();
                 listItem.add(new Label("name", menuItem.getName()));
 
+                MarkupContainer topMenu = new WebMarkupContainer("topMenu");
+
+                topMenu.add(new CssClassAppender("top-menu-" + CssClassAppender.asCssStyle(menuItem.getName())));
+                listItem.add(topMenu);
                 List<CssMenuItem> subMenuItems = withSeparators(menuItem);
 
 // fake data to test multi-level menus
@@ -75,7 +80,7 @@ public class ApplicationActionsPanel extends Panel {
                         }
                     }
                 };
-                listItem.add(subMenuItemsView);
+                topMenu.add(subMenuItemsView);
             }
         };
         add(menuItemsView);
@@ -139,13 +144,13 @@ public class ApplicationActionsPanel extends Panel {
             subMenuItemLink.addOrReplace(menuItemLabel);
 
             if (!menuItem.isEnabled()) {
-                listItem.add(new CssClassNameAppender("disabled"));
+                listItem.add(new CssClassAppender("disabled"));
                 subMenuItemLink.setEnabled(false);
                 TooltipBehavior tooltipBehavior = new TooltipBehavior(Model.of(menuItem.getDisabledReason()));
                 listItem.add(tooltipBehavior);
             }
             if (menuItem.isPrototyping()) {
-                subMenuItemLink.add(new CssClassNameAppender("prototype"));
+                subMenuItemLink.add(new CssClassAppender("prototype"));
             }
             leafItem.add(subMenuItemLink);
 
@@ -160,7 +165,7 @@ public class ApplicationActionsPanel extends Panel {
             }
         } else {
             leafItem = new Fragment("content", "empty", ApplicationActionsPanel.this);
-            listItem.add(new CssClassNameAppender("divider"));
+            listItem.add(new CssClassAppender("divider"));
         }
         listItem.add(leafItem);
 

http://git-wip-us.apache.org/repos/asf/isis/blob/07b42358/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
index 8c94106..b12fa60 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.java
@@ -35,7 +35,12 @@ import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.Page;
 import org.apache.wicket.RestartResponseAtInterceptPageException;
 import org.apache.wicket.event.Broadcast;
-import org.apache.wicket.markup.head.*;
+import org.apache.wicket.markup.head.CssHeaderItem;
+import org.apache.wicket.markup.head.CssReferenceHeaderItem;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.JavaScriptReferenceHeaderItem;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
 import org.apache.wicket.markup.head.filter.HeaderResponseContainer;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.WebPage;
@@ -66,7 +71,13 @@ import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.core.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.viewer.wicket.model.hints.IsisEnvelopeEvent;
 import org.apache.isis.viewer.wicket.model.hints.IsisEventLetterAbstract;
-import org.apache.isis.viewer.wicket.model.models.*;
+import org.apache.isis.viewer.wicket.model.models.ActionPrompt;
+import org.apache.isis.viewer.wicket.model.models.ActionPromptProvider;
+import org.apache.isis.viewer.wicket.model.models.ApplicationActionsModel;
+import org.apache.isis.viewer.wicket.model.models.BookmarkableModel;
+import org.apache.isis.viewer.wicket.model.models.BookmarkedPagesModel;
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.model.models.PageType;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
@@ -105,13 +116,6 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
     public static final String ID_MENU_LINK = "menuLink";
 
     private static final String ID_THEME_PICKER = "themePicker";
-
-    // TODO mgrigorov: are those used somewhere else ? since they are public
-    public static final String ID_LOGOUT_LINK = "logoutLink";
-    public static final String ID_LOGOUT_TEXT = "logoutText";
-    public static final String ID_ABOUT_LINK = "aboutLink";
-
-    private static final String ID_COPY_LINK = "copyLink";
     private static final String ID_BREADCRUMBS = "breadcrumbs";
 
 
@@ -164,7 +168,7 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
             themeDiv = new WebMarkupContainer(ID_THEME);
             add(themeDiv);
             if(applicationName != null) {
-                themeDiv.add(new CssClassAppender(asCssStyle(applicationName)));
+                themeDiv.add(new CssClassAppender(CssClassAppender.asCssStyle(applicationName)));
             }
 
             addApplicationActions(themeDiv);
@@ -222,23 +226,6 @@ public abstract class PageAbstract extends WebPage implements ActionPromptProvid
         return pageClassRegistry.getPageClass(PageType.SIGN_IN);
     }
 
-    static String asCssStyle(final String str) {
-        return str.toLowerCase().replaceAll("[^A-Za-z0-9 ]", "").replaceAll("\\s+", "-");
-    }
-
-    // TODO mgrigorov this method is not used
-    protected ExceptionModel recognizeException(Exception ex) {
-        List<ExceptionRecognizer> exceptionRecognizers;
-        try {
-            exceptionRecognizers = getServicesInjector().lookupServices(ExceptionRecognizer.class);
-        } catch(Exception ex2) {
-            LOG.warn("Unable to obtain exceptionRecognizers (no session?)");
-            exceptionRecognizers = Collections.emptyList();
-        }
-        final String recognizedMessageIfAny = new ExceptionRecognizerComposite(exceptionRecognizers).recognize(ex);
-        return ExceptionModel.create(recognizedMessageIfAny, ex);
-    }
-
     @Override
     public void renderHead(IHeaderResponse response) {
         

http://git-wip-us.apache.org/repos/asf/isis/blob/07b42358/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/CssClassAppender.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/CssClassAppender.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/CssClassAppender.java
index 1fef4f6..8c4e1c0 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/CssClassAppender.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/CssClassAppender.java
@@ -39,4 +39,7 @@ public class CssClassAppender extends AttributeAppender {
         this(Model.of(append));
     }
 
+    public static String asCssStyle(final String str) {
+        return str.toLowerCase().replaceAll("[^A-Za-z0-9- ]", "").replaceAll("\\s+", "-");
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/07b42358/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstractTest.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstractTest.java b/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstractTest.java
index 8a354d3..fccbca6 100644
--- a/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstractTest.java
+++ b/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstractTest.java
@@ -20,6 +20,8 @@ package org.apache.isis.viewer.wicket.ui.pages;
 
 import org.junit.Test;
 
+import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
+
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 
@@ -29,12 +31,12 @@ public abstract class PageAbstractTest {
 
         @Test
         public void withSpacesAndCapitals() throws Exception {
-            assertThat(PageAbstract.asCssStyle("Simple App"), is("simple-app"));
+            assertThat(CssClassAppender.asCssStyle("Simple App"), is("simple-app"));
         }
 
         @Test
         public void withOtherCharacters() throws Exception {
-            assertThat(PageAbstract.asCssStyle("Kitchen Sink (Demo) App"), is("kitchen-sink-demo-app"));
+            assertThat(CssClassAppender.asCssStyle("Kitchen Sink (Demo) App"), is("kitchen-sink-demo-app"));
         }
 
     }


[2/4] isis git commit: ISIS-956: recreating simpleapp archetype

Posted by da...@apache.org.
ISIS-956: recreating simpleapp archetype


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/541ab11a
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/541ab11a
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/541ab11a

Branch: refs/heads/master
Commit: 541ab11a05be1688abeed01fce2247af467f0ce2
Parents: 4bd9097
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Nov 20 12:17:26 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Nov 20 12:17:26 2014 +0100

----------------------------------------------------------------------
 .../webapp/src/main/webapp/WEB-INF/isis.properties  | 16 ++++++++++++++++
 .../resources/projects/basic/archetype.properties   |  2 +-
 2 files changed, 17 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/541ab11a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
index db13b88..cd3a6ad 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/isis.properties
@@ -98,6 +98,22 @@ ${symbol_pound}isis.reflector.validator=
 
 
 
+${symbol_pound}
+${symbol_pound} patterns for applying CssClassFa facet (font-awesome icons) to member names
+${symbol_pound}
+isis.reflector.facet.cssClassFa.patterns=${symbol_escape}
+                        create.*:fa-plus,${symbol_escape}
+                        update.*:fa-edit,${symbol_escape}
+                        add.*:fa-plus-square,${symbol_escape}
+                        remove.*:fa-minus-square,${symbol_escape}
+                        move.*:fa-exchange,${symbol_escape}
+                        first.*:fa-star,${symbol_escape}
+                        find.*:fa-search,${symbol_escape}
+                        clear.*:fa-remove,${symbol_escape}
+                        previous.*:fa-step-backward,${symbol_escape}
+                        next.*:fa-step-forward,${symbol_escape}
+                        list.*:fa-list
+
 ${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbo
 l_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}
 ${symbol_pound}
 ${symbol_pound} Value facet defaults

http://git-wip-us.apache.org/repos/asf/isis/blob/541ab11a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
----------------------------------------------------------------------
diff --git a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
index 8d6ce03..7fa9f64 100644
--- a/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/simpleapp/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Tue Nov 18 12:15:39 CET 2014
+#Thu Nov 20 12:17:20 CET 2014
 package=it.pkg
 version=0.1-SNAPSHOT
 groupId=archetype.it