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