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 2013/02/15 10:24:43 UTC
[1/3] git commit: ISIS-335,
ISIS-342: length to abbreviate title to now configurable
ISIS-335, ISIS-342: length to abbreviate title to now configurable
* using "isis.viewer.wicket.maxTitleLengthInTables" config property
* this can go in isis.properties, or (as of ISIS-342 fix) can live in "viewer_wicket.properties",
(assuming have added appropriate "isis.viewers" context param in web.xml)
Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/d1b1d0c9
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/d1b1d0c9
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/d1b1d0c9
Branch: refs/heads/master
Commit: d1b1d0c9fae88733c5a695d75cd2f908bc8e6920
Parents: 2bbc2a8
Author: Dan Haywood <da...@apache.org>
Authored: Fri Feb 15 08:58:06 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Fri Feb 15 08:58:06 2013 +0000
----------------------------------------------------------------------
.../wicket/viewer/IsisWicketApplication.java | 19 ++-
.../viewer/wicket/viewer/IsisWicketModule.java | 9 +-
.../viewer/IsisWicketUnsecuredApplication.java | 2 +-
.../viewer/imagecache/ImageCacheClassPath.java | 130 ---------------
.../imagecache/ImageResourceCacheClassPath.java | 130 +++++++++++++++
.../settings/WicketViewerSettingsDefault.java | 38 +++++
.../wicket/model/isis/ImageResourceCache.java | 33 ++++
.../wicket/model/isis/WicketViewerSettings.java | 26 +++
.../wicket/model/models/ImageResourceCache.java | 33 ----
.../ui/components/actionlink/ActionLinkPanel.java | 2 +-
.../bookmarkedpages/BookmarkedPagesPanel.java | 2 +-
.../entity/header/EntityHeaderPanel.java | 2 +-
.../entity/icontitle/EntityIconAndTitlePanel.java | 21 ++-
.../EntityIconAndTitlePanelTest_abbreviated.java | 34 ++++
.../isis/core/webapp/IsisWebAppBootstrapper.java | 17 +--
.../core/webapp/IsisWebAppBootstrapperUtil.java | 52 ++++++
.../main/webapp/WEB-INF/viewer_wicket.properties | 29 ++++
.../viewer-webapp/src/main/webapp/WEB-INF/web.xml | 11 +-
18 files changed, 392 insertions(+), 198 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
index e1cebfe..086b878 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketApplication.java
@@ -47,9 +47,11 @@ import org.apache.wicket.settings.IRequestCycleSettings.RenderStrategy;
import org.apache.isis.core.commons.authentication.AuthenticationSession;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAware;
+import org.apache.isis.core.commons.config.ConfigurationConstants;
import org.apache.isis.core.commons.config.IsisConfigurationBuilder;
import org.apache.isis.core.commons.config.IsisConfigurationBuilderPrimer;
import org.apache.isis.core.commons.config.IsisConfigurationBuilderResourceStreams;
+import org.apache.isis.core.commons.config.NotFoundPolicy;
import org.apache.isis.core.commons.resource.ResourceStreamSource;
import org.apache.isis.core.commons.resource.ResourceStreamSourceComposite;
import org.apache.isis.core.commons.resource.ResourceStreamSourceContextLoaderClassPath;
@@ -60,11 +62,13 @@ import org.apache.isis.core.runtime.runner.IsisInjectModule;
import org.apache.isis.core.runtime.system.DeploymentType;
import org.apache.isis.core.runtime.system.IsisSystem;
import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.core.webapp.IsisWebAppBootstrapperUtil;
import org.apache.isis.core.webapp.WebAppConstants;
import org.apache.isis.core.webapp.config.ResourceStreamSourceForWebInf;
+import org.apache.isis.viewer.wicket.model.isis.ImageResourceCache;
+import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
import org.apache.isis.viewer.wicket.model.models.BookmarkedPagesModel;
-import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
import org.apache.isis.viewer.wicket.model.models.PageType;
import org.apache.isis.viewer.wicket.ui.ComponentFactory;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
@@ -149,6 +153,12 @@ public class IsisWicketApplication extends AuthenticatedWebApplication implement
* {@link Inject}ed when {@link #init() initialized}.
*/
@Inject
+ private WicketViewerSettings wicketViewerSettings;
+
+ /**
+ * {@link Inject}ed when {@link #init() initialized}.
+ */
+ @Inject
private PageClassRegistry pageClassRegistry;
@@ -177,11 +187,8 @@ public class IsisWicketApplication extends AuthenticatedWebApplication implement
protected void init() {
super.init();
- final RenderStrategy renderStrategy = RenderStrategy.REDIRECT_TO_RENDER;
-
- getRequestCycleSettings().setRenderStrategy(renderStrategy);
+ getRequestCycleSettings().setRenderStrategy(RenderStrategy.REDIRECT_TO_RENDER);
- // 6.0.0 instead of subclassing newRequestCycle
getRequestCycleListeners().add(new WebRequestCycleForIsis());
getResourceSettings().setParentFolderPlaceholder("$up$");
@@ -237,6 +244,8 @@ public class IsisWicketApplication extends AuthenticatedWebApplication implement
primeConfigurationBuilder(configurationBuilder, servletContext);
configurationBuilder.addDefaultConfigurationResources();
+
+ IsisWebAppBootstrapperUtil.addConfigurationResourcesForViewers(configurationBuilder, servletContext);
return configurationBuilder;
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
index 2e74e82..cb3c1e5 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketModule.java
@@ -23,16 +23,18 @@ import com.google.inject.AbstractModule;
import com.google.inject.name.Names;
import com.google.inject.util.Providers;
-import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
+import org.apache.isis.viewer.wicket.model.isis.ImageResourceCache;
+import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistrar;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
import org.apache.isis.viewer.wicket.ui.pages.PageClassList;
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
-import org.apache.isis.viewer.wicket.viewer.imagecache.ImageCacheClassPath;
+import org.apache.isis.viewer.wicket.viewer.imagecache.ImageResourceCacheClassPath;
import org.apache.isis.viewer.wicket.viewer.registries.components.ComponentFactoryRegistrarDefault;
import org.apache.isis.viewer.wicket.viewer.registries.components.ComponentFactoryRegistryDefault;
import org.apache.isis.viewer.wicket.viewer.registries.pages.PageClassListDefault;
import org.apache.isis.viewer.wicket.viewer.registries.pages.PageClassRegistryDefault;
+import org.apache.isis.viewer.wicket.viewer.settings.WicketViewerSettingsDefault;
/**
* To override
@@ -63,7 +65,8 @@ public class IsisWicketModule extends AbstractModule {
bind(PageClassRegistry.class).to(PageClassRegistryDefault.class);
bind(PageClassList.class).to(PageClassListDefault.class);
bind(ComponentFactoryRegistrar.class).to(ComponentFactoryRegistrarDefault.class);
- bind(ImageResourceCache.class).to(ImageCacheClassPath.class);
+ bind(ImageResourceCache.class).to(ImageResourceCacheClassPath.class);
+ bind(WicketViewerSettings.class).to(WicketViewerSettingsDefault.class);
bind(String.class).annotatedWith(Names.named("applicationName")).toInstance("Apache Isis Wicket Viewer");
bind(String.class).annotatedWith(Names.named("applicationCss")).toProvider(Providers.of((String)null));
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketUnsecuredApplication.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketUnsecuredApplication.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketUnsecuredApplication.java
index b4c1eb2..6685be3 100644
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketUnsecuredApplication.java
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/IsisWicketUnsecuredApplication.java
@@ -59,8 +59,8 @@ import org.apache.isis.core.runtime.system.IsisSystem;
import org.apache.isis.core.runtime.system.context.IsisContext;
import org.apache.isis.core.webapp.WebAppConstants;
import org.apache.isis.core.webapp.config.ResourceStreamSourceForWebInf;
+import org.apache.isis.viewer.wicket.model.isis.ImageResourceCache;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
-import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
import org.apache.isis.viewer.wicket.model.models.PageType;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageCacheClassPath.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageCacheClassPath.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageCacheClassPath.java
deleted file mode 100644
index ecb7f53..0000000
--- a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageCacheClassPath.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.viewer.wicket.viewer.imagecache;
-
-import images.Images;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
-import org.apache.wicket.request.resource.PackageResourceReference;
-import org.apache.wicket.request.resource.ResourceReference;
-
-import com.google.common.collect.Maps;
-import com.google.inject.Singleton;
-
-/**
- * Caches images loaded up the <tt>images</tt> package (using the {@link Images}
- * class).
- *
- * <p>
- * Searches for a fixed set of suffixes: {@value #IMAGE_SUFFICES}.
- */
-@Singleton
-public class ImageCacheClassPath implements ImageResourceCache {
-
- private static final List<String> IMAGE_SUFFICES = Arrays.asList("png", "gif", "jpeg", "jpg");
- private static final String FALLBACK_IMAGE = "Default.png";
-
- private final Map<ObjectSpecification, ResourceReference> resourceReferenceBySpec = Maps.newHashMap();
- private PackageResourceReference fallbackResourceReference;
-
-
- @Override
- public ResourceReference resourceReferenceFor(ObjectAdapter adapter) {
- return resourceReferenceForSpec(adapter.getSpecification());
- }
-
- @Override
- public ResourceReference resourceReferenceForSpec(final ObjectSpecification spec) {
- if(spec == null) {
- return fallbackResourceReference();
- }
- ResourceReference resourceReference = resourceReferenceBySpec.get(spec);
- if(resourceReference != null) {
- return resourceReference;
- }
-
- resourceReference = lookupResourceReferenceFor(spec);
-
- resourceReferenceBySpec.put(spec, resourceReference);
- return resourceReference;
- }
-
- private ResourceReference lookupResourceReferenceFor(final ObjectSpecification spec) {
- final Class<?> correspondingClass = spec.getCorrespondingClass();
- final String specName = correspondingClass.getSimpleName();
-
- final ResourceReference resourceReference = resourceReferenceFor(specName);
- if(resourceReference != null) {
- return resourceReference;
- }
-
- // search up hierarchy
- final ObjectSpecification superSpec = spec.superclass();
- if(superSpec != null) {
- return resourceReferenceForSpec(superSpec);
- }
-
- return fallbackResourceReference();
- }
-
-
- private ResourceReference fallbackResourceReference() {
- if(fallbackResourceReference == null) {
- fallbackResourceReference = newPackageResourceReference(FALLBACK_IMAGE);
- }
- return fallbackResourceReference;
- }
-
- private static ResourceReference resourceReferenceFor(final String specName) {
- for(String imageSuffix: IMAGE_SUFFICES) {
- final String imageName = specName + "." + imageSuffix;
-
- InputStream resourceAsStream = null;
- resourceAsStream = Images.class.getResourceAsStream(imageName);
- if(resourceAsStream == null) {
- continue;
- } else {
- closeSafely(resourceAsStream);
- }
- return newPackageResourceReference(imageName);
- }
- return null;
- }
-
- private static PackageResourceReference newPackageResourceReference(final String imageFile) {
- return new PackageResourceReference(Images.class, imageFile);
- }
-
- private static void closeSafely(InputStream resourceAsStream) {
- try {
- resourceAsStream.close();
- } catch (IOException e) {
- // ignore
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java
new file mode 100644
index 0000000..42d2293
--- /dev/null
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/imagecache/ImageResourceCacheClassPath.java
@@ -0,0 +1,130 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.viewer.wicket.viewer.imagecache;
+
+import images.Images;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+import org.apache.isis.viewer.wicket.model.isis.ImageResourceCache;
+import org.apache.wicket.request.resource.PackageResourceReference;
+import org.apache.wicket.request.resource.ResourceReference;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Singleton;
+
+/**
+ * Caches images loaded up the <tt>images</tt> package (using the {@link Images}
+ * class).
+ *
+ * <p>
+ * Searches for a fixed set of suffixes: {@value #IMAGE_SUFFICES}.
+ */
+@Singleton
+public class ImageResourceCacheClassPath implements ImageResourceCache {
+
+ private static final List<String> IMAGE_SUFFICES = Arrays.asList("png", "gif", "jpeg", "jpg");
+ private static final String FALLBACK_IMAGE = "Default.png";
+
+ private final Map<ObjectSpecification, ResourceReference> resourceReferenceBySpec = Maps.newHashMap();
+ private PackageResourceReference fallbackResourceReference;
+
+
+ @Override
+ public ResourceReference resourceReferenceFor(ObjectAdapter adapter) {
+ return resourceReferenceForSpec(adapter.getSpecification());
+ }
+
+ @Override
+ public ResourceReference resourceReferenceForSpec(final ObjectSpecification spec) {
+ if(spec == null) {
+ return fallbackResourceReference();
+ }
+ ResourceReference resourceReference = resourceReferenceBySpec.get(spec);
+ if(resourceReference != null) {
+ return resourceReference;
+ }
+
+ resourceReference = lookupResourceReferenceFor(spec);
+
+ resourceReferenceBySpec.put(spec, resourceReference);
+ return resourceReference;
+ }
+
+ private ResourceReference lookupResourceReferenceFor(final ObjectSpecification spec) {
+ final Class<?> correspondingClass = spec.getCorrespondingClass();
+ final String specName = correspondingClass.getSimpleName();
+
+ final ResourceReference resourceReference = resourceReferenceFor(specName);
+ if(resourceReference != null) {
+ return resourceReference;
+ }
+
+ // search up hierarchy
+ final ObjectSpecification superSpec = spec.superclass();
+ if(superSpec != null) {
+ return resourceReferenceForSpec(superSpec);
+ }
+
+ return fallbackResourceReference();
+ }
+
+
+ private ResourceReference fallbackResourceReference() {
+ if(fallbackResourceReference == null) {
+ fallbackResourceReference = newPackageResourceReference(FALLBACK_IMAGE);
+ }
+ return fallbackResourceReference;
+ }
+
+ private static ResourceReference resourceReferenceFor(final String specName) {
+ for(String imageSuffix: IMAGE_SUFFICES) {
+ final String imageName = specName + "." + imageSuffix;
+
+ InputStream resourceAsStream = null;
+ resourceAsStream = Images.class.getResourceAsStream(imageName);
+ if(resourceAsStream == null) {
+ continue;
+ } else {
+ closeSafely(resourceAsStream);
+ }
+ return newPackageResourceReference(imageName);
+ }
+ return null;
+ }
+
+ private static PackageResourceReference newPackageResourceReference(final String imageFile) {
+ return new PackageResourceReference(Images.class, imageFile);
+ }
+
+ private static void closeSafely(InputStream resourceAsStream) {
+ try {
+ resourceAsStream.close();
+ } catch (IOException e) {
+ // ignore
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
new file mode 100644
index 0000000..5e06b2f
--- /dev/null
+++ b/component/viewer/wicket/impl/src/main/java/org/apache/isis/viewer/wicket/viewer/settings/WicketViewerSettingsDefault.java
@@ -0,0 +1,38 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.viewer.wicket.viewer.settings;
+
+import org.apache.isis.core.commons.config.IsisConfiguration;
+import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
+
+import com.google.inject.Singleton;
+
+@Singleton
+public class WicketViewerSettingsDefault implements WicketViewerSettings {
+
+ public int getMaxTitleLengthInTables() {
+ return getConfiguration().getInteger("isis.viewer.wicket.maxTitleLengthInTables", 12);
+ }
+
+ IsisConfiguration getConfiguration() {
+ return IsisContext.getConfiguration();
+ }
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/ImageResourceCache.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/ImageResourceCache.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/ImageResourceCache.java
new file mode 100644
index 0000000..4167013
--- /dev/null
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/ImageResourceCache.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.viewer.wicket.model.isis;
+
+import org.apache.wicket.request.resource.ResourceReference;
+
+import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
+
+public interface ImageResourceCache {
+
+ ResourceReference resourceReferenceFor(ObjectAdapter adapter);
+
+ ResourceReference resourceReferenceForSpec(ObjectSpecification objectSpecification);
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
new file mode 100644
index 0000000..8855a02
--- /dev/null
+++ b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/isis/WicketViewerSettings.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.isis.viewer.wicket.model.isis;
+
+
+public interface WicketViewerSettings {
+
+ public int getMaxTitleLengthInTables();
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ImageResourceCache.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ImageResourceCache.java b/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ImageResourceCache.java
deleted file mode 100644
index b12bcf4..0000000
--- a/component/viewer/wicket/model/src/main/java/org/apache/isis/viewer/wicket/model/models/ImageResourceCache.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.isis.viewer.wicket.model.models;
-
-import org.apache.wicket.request.resource.ResourceReference;
-
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.core.metamodel.spec.ObjectSpecification;
-
-public interface ImageResourceCache {
-
- ResourceReference resourceReferenceFor(ObjectAdapter adapter);
-
- ResourceReference resourceReferenceForSpec(ObjectSpecification objectSpecification);
-
-}
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanel.java
index 7d9aa81..dd1d7fa 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionlink/ActionLinkPanel.java
@@ -36,9 +36,9 @@ import org.apache.wicket.request.resource.PackageResourceReference;
import org.apache.wicket.request.resource.ResourceReference;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.wicket.model.isis.ImageResourceCache;
import org.apache.isis.viewer.wicket.model.models.ActionModel;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
-import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
import org.apache.isis.viewer.wicket.model.models.PageType;
import org.apache.isis.viewer.wicket.ui.components.entity.EntityActionLinkFactory;
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
index 5eb7a69..fe364a0 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.java
@@ -38,9 +38,9 @@ import org.apache.isis.core.metamodel.spec.ObjectSpecId;
import org.apache.isis.core.metamodel.spec.ObjectSpecification;
import org.apache.isis.core.metamodel.spec.SpecificationLoaderSpi;
import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.viewer.wicket.model.isis.ImageResourceCache;
import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
import org.apache.isis.viewer.wicket.model.models.BookmarkedPagesModel;
-import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
import org.apache.isis.viewer.wicket.model.models.PageType;
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
index f437c0a..bdfdcec 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/header/EntityHeaderPanel.java
@@ -40,10 +40,10 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectActionFilters;
import org.apache.isis.core.metamodel.spec.feature.ObjectActions;
import org.apache.isis.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.isis.core.runtime.system.context.IsisContext;
+import org.apache.isis.viewer.wicket.model.isis.ImageResourceCache;
import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
import org.apache.isis.viewer.wicket.model.models.ActionModel;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
-import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
import org.apache.isis.viewer.wicket.model.util.ObjectAssociations;
import org.apache.isis.viewer.wicket.ui.ComponentFactory;
import org.apache.isis.viewer.wicket.ui.ComponentType;
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
index 29fad02..237f341 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
@@ -20,8 +20,9 @@
package org.apache.isis.viewer.wicket.ui.components.entity.icontitle;
import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
+import org.apache.isis.viewer.wicket.model.isis.ImageResourceCache;
+import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
import org.apache.isis.viewer.wicket.model.models.EntityModel;
-import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
import org.apache.isis.viewer.wicket.model.models.PageType;
import org.apache.isis.viewer.wicket.ui.components.entity.EntityActionLinkFactory;
import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
@@ -52,7 +53,6 @@ public class EntityIconAndTitlePanel extends PanelAbstract<EntityModel> {
private static final String ID_ENTITY_TITLE = "entityTitle";
private static final String ID_ENTITY_ICON = "entityImage";
- private static final int TITLE_MAX_LEN_IF_ULTRA_COMPACT = 12;
private Label label;
private Image image;
@@ -115,8 +115,7 @@ public class EntityIconAndTitlePanel extends PanelAbstract<EntityModel> {
if (adapter != null) {
String titleString = adapter.titleString();
if(model.getRenderingHint().isUltraCompact()) {
- //return "";
- return abbreviated(titleString, TITLE_MAX_LEN_IF_ULTRA_COMPACT);
+ return abbreviated(titleString, getSettings().getMaxTitleLengthInTables());
}
return titleString;
} else {
@@ -124,8 +123,12 @@ public class EntityIconAndTitlePanel extends PanelAbstract<EntityModel> {
}
}
- private static String abbreviated(final String str, final int maxLength) {
- return str.length() < maxLength ? str : str.substring(0, maxLength - 3) + "...";
+ static String abbreviated(final String str, final int maxLength) {
+ int length = str.length();
+ if (length <= maxLength) {
+ return str;
+ }
+ return maxLength <= 3 ? "" : str.substring(0, maxLength - 3) + "...";
}
@@ -154,5 +157,11 @@ public class EntityIconAndTitlePanel extends PanelAbstract<EntityModel> {
protected ImageResourceCache getImageCache() {
return imageCache;
}
+
+ @Inject
+ private WicketViewerSettings settings;
+ protected WicketViewerSettings getSettings() {
+ return settings;
+ }
}
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanelTest_abbreviated.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanelTest_abbreviated.java b/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanelTest_abbreviated.java
new file mode 100644
index 0000000..8fc27eb
--- /dev/null
+++ b/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanelTest_abbreviated.java
@@ -0,0 +1,34 @@
+package org.apache.isis.viewer.wicket.ui.components.entity.icontitle;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.assertThat;
+
+import org.junit.Test;
+
+public class EntityIconAndTitlePanelTest_abbreviated {
+
+ @Test
+ public void notTruncated() throws Exception {
+ assertThat(EntityIconAndTitlePanel.abbreviated("abcdef", 6), is("abcdef"));
+ }
+
+ @Test
+ public void truncated() throws Exception {
+ assertThat(EntityIconAndTitlePanel.abbreviated("abcdefg", 6), is("abc..."));
+ }
+
+ @Test
+ public void notTruncatedAtEllipsesLimit() throws Exception {
+ assertThat(EntityIconAndTitlePanel.abbreviated("abc", 3), is("abc"));
+ assertThat(EntityIconAndTitlePanel.abbreviated("ab", 2), is("ab"));
+ assertThat(EntityIconAndTitlePanel.abbreviated("a", 1), is("a"));
+ }
+
+ @Test
+ public void truncatedAtEllipsesLimit() throws Exception {
+ assertThat(EntityIconAndTitlePanel.abbreviated("abcd", 3), is(""));
+ assertThat(EntityIconAndTitlePanel.abbreviated("abc", 2), is(""));
+ assertThat(EntityIconAndTitlePanel.abbreviated("ab", 1), is(""));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapper.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapper.java b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapper.java
index b24cfea..7e0f065 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapper.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapper.java
@@ -105,7 +105,7 @@ public class IsisWebAppBootstrapper implements ServletContextListener {
addConfigurationResourcesForWebApps(isisConfigurationBuilder);
addConfigurationResourcesForDeploymentType(isisConfigurationBuilder, deploymentType);
- addConfigurationResourcesForViewers(isisConfigurationBuilder, servletContext);
+ IsisWebAppBootstrapperUtil.addConfigurationResourcesForViewers(isisConfigurationBuilder, servletContext);
isisConfigurationBuilder.add(WebAppConstants.WEB_APP_DIR, webappDir);
isisConfigurationBuilder.add(SystemConstants.NOSPLASH_KEY, "true");
@@ -184,21 +184,6 @@ public class IsisWebAppBootstrapper implements ServletContextListener {
}
}
- private void addConfigurationResourcesForViewers(final IsisConfigurationBuilder configurationLoader, final ServletContext servletContext) {
- addConfigurationResourcesForContextParam(configurationLoader, servletContext, "isis.viewers");
- addConfigurationResourcesForContextParam(configurationLoader, servletContext, "isis.viewer");
- }
-
- private void addConfigurationResourcesForContextParam(final IsisConfigurationBuilder configurationLoader, final ServletContext servletContext, final String name) {
- final String viewers = servletContext.getInitParameter(name);
- if (viewers == null) {
- return;
- }
- for (final String viewer : viewers.split(",")) {
- configurationLoader.addConfigurationResource("viewer_" + viewer + ".properties", NotFoundPolicy.CONTINUE);
- }
- }
-
// /////////////////////////////////////////////////////
// Destroy
// /////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapperUtil.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapperUtil.java b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapperUtil.java
new file mode 100644
index 0000000..d859b56
--- /dev/null
+++ b/core/runtime/src/main/java/org/apache/isis/core/webapp/IsisWebAppBootstrapperUtil.java
@@ -0,0 +1,52 @@
+/*
+ * 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.webapp;
+
+import javax.servlet.ServletContext;
+
+import org.apache.isis.core.commons.config.IsisConfigurationBuilder;
+import org.apache.isis.core.commons.config.NotFoundPolicy;
+
+
+/**
+ * Factored out of {@link IsisWebAppBootstrapper} in order that can
+ * be reused by other bootstrappers (eg the wicket viewer's
+ * <tt>IsisWicketApplication</tt>).
+ */
+public final class IsisWebAppBootstrapperUtil {
+
+ private IsisWebAppBootstrapperUtil(){}
+
+ public static void addConfigurationResourcesForViewers(final IsisConfigurationBuilder configurationLoader, final ServletContext servletContext) {
+ addConfigurationResourcesForContextParam(configurationLoader, servletContext, "isis.viewers");
+ addConfigurationResourcesForContextParam(configurationLoader, servletContext, "isis.viewer");
+ }
+
+ private static void addConfigurationResourcesForContextParam(final IsisConfigurationBuilder configurationLoader, final ServletContext servletContext, final String name) {
+ final String viewers = servletContext.getInitParameter(name);
+ if (viewers == null) {
+ return;
+ }
+ for (final String viewer : viewers.split(",")) {
+ configurationLoader.addConfigurationResource("viewer_" + viewer + ".properties", NotFoundPolicy.CONTINUE);
+ }
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/viewer_wicket.properties b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
new file mode 100644
index 0000000..9deff07
--- /dev/null
+++ b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/viewer_wicket.properties
@@ -0,0 +1,29 @@
+# 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.
+
+#
+# configuration file for the Wicket viewer
+#
+
+#
+# The maximum length of titles to display in standalone or parented tables.
+# Titles longer than this length will be truncated with trailing ellipses (...)
+#
+# For example, if set to 12, the title
+# "Buy milk on 15-Feb-13" will be truncated to "Buy milk ..."
+#
+isis.viewer.wicket.maxTitleLengthInTables=3
http://git-wip-us.apache.org/repos/asf/isis/blob/d1b1d0c9/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
index e8d2287..13e575e 100644
--- a/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
+++ b/example/application/quickstart_wicket_restful_jdo/viewer-webapp/src/main/webapp/WEB-INF/web.xml
@@ -27,7 +27,6 @@
<welcome-file>about/index.html</welcome-file>
</welcome-file-list>
-
<!-- shiro security configuration -->
<listener>
<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
@@ -68,6 +67,16 @@
-->
+ <!--
+ determines which additional configuration files to search for
+ -->
+ <context-param>
+ <param-name>isis.viewers</param-name>
+ <param-value>wicket,restfulobjects</param-value>
+ </context-param>
+
+
+
<!-- cache static resources for 1 day -->
<filter>