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/11/16 08:29:16 UTC

git commit: ISIS-589: simplified the CSS bundling, fixed some issues

Updated Branches:
  refs/heads/master bf4af4ec3 -> 71df3f63f


ISIS-589: simplified the CSS bundling, fixed some issues

Specifically:
* no need to contribute a list of classes, just a single will suffice
* no need for IsisBlobOrClobPanelAbstract, has no CSS
* cannot bundle LinksSelectPanelAbstract, since has images relative to class, referenced by its in CSS

In addition:
* fixed some existing CSS that wasn't correctly scoped so was not being applied.


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

Branch: refs/heads/master
Commit: 71df3f63fae3e369d0818d397b5ec467dbe62299
Parents: bf4af4e
Author: Dan Haywood <da...@apache.org>
Authored: Sat Nov 16 07:29:00 2013 +0000
Committer: Dan Haywood <da...@apache.org>
Committed: Sat Nov 16 07:29:00 2013 +0000

----------------------------------------------------------------------
 .../wicket/viewer/IsisWicketApplication.java    |  46 ++++++--
 .../isis/viewer/wicket/ui/ComponentFactory.java |   2 +-
 .../wicket/ui/ComponentFactoryAbstract.java     |  39 +++----
 .../cssmenu/AppActionsCssMenuFactory.java       |   2 +-
 .../bookmarkedpages/BookmarkedPagesPanel.css    |  54 ++++-----
 .../bookmarkedpages/BookmarkedPagesPanel.html   |  48 ++++----
 ...ectionContentsLinksSelectorPanelFactory.java |   4 +-
 .../entity/EntityComponentFactoryAbstract.java  |   8 +-
 .../links/EntityLinksSelectorPanelFactory.java  |   4 +-
 .../scalars/ComponentFactoryScalarAbstract.java |  13 +--
 .../isisapplib/IsisBlobOrClobPanelAbstract.css  |  34 ------
 .../isisapplib/IsisBlobOrClobPanelAbstract.html |   2 -
 .../isisapplib/IsisBlobOrClobPanelAbstract.java |   3 +-
 .../isisapplib/IsisBlobPanelFactory.java        |   5 +-
 .../isisapplib/IsisClobPanelFactory.java        |   5 +-
 .../scalars/string/StringPanelFactory.java      |   2 +-
 .../unknown/UnknownModelPanelFactory.java       |   4 +-
 .../EntityLinkSelect2PanelFactory.java          |   2 +-
 .../EntityLinkSimplePanelFactory.java           |   2 +-
 .../isis/viewer/wicket/ui/panels/PanelUtil.java |  19 +---
 .../links/LinksSelectorPanelAbstract.css        |  14 +--
 .../links/LinksSelectorPanelAbstract.java       |   8 ++
 .../ui/ComponentFactoryAbstractTest_init.java   | 109 +++++++++++++++++++
 23 files changed, 254 insertions(+), 175 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/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 1b97d1d..68457e7 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
@@ -20,7 +20,7 @@
 package org.apache.isis.viewer.wicket.viewer;
 
 import java.util.Collection;
-import java.util.LinkedHashSet;
+import java.util.Collections;
 import java.util.List;
 import java.util.ServiceLoader;
 import java.util.Set;
@@ -82,15 +82,14 @@ import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 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.app.registry.ComponentFactoryRegistryAccessor;
-import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssMenuItem;
-import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssMenuPanel;
-import org.apache.isis.viewer.wicket.ui.components.widgets.cssmenu.CssSubMenuItemsPanel;
+import org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib.IsisBlobOrClobPanelAbstract;
+import org.apache.isis.viewer.wicket.ui.components.scalars.string.MultiLineStringPanel;
 import org.apache.isis.viewer.wicket.ui.pages.BookmarkedPagesModelProvider;
-import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassList;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistryAccessor;
 import org.apache.isis.viewer.wicket.ui.panels.PanelUtil;
+import org.apache.isis.viewer.wicket.ui.selector.links.LinksSelectorPanelAbstract;
 import org.apache.isis.viewer.wicket.viewer.integration.isis.DeploymentTypeWicketAbstract;
 import org.apache.isis.viewer.wicket.viewer.integration.isis.WicketServer;
 import org.apache.isis.viewer.wicket.viewer.integration.isis.WicketServerPrototype;
@@ -249,21 +248,54 @@ public class IsisWicketApplication extends AuthenticatedWebApplication implement
             LOG.error("Failed to initialize", ex);
             throw ex;
         }
-
     }
 
     private void buildCssBundle() {
+        // get the css for all components built by component factories
         final Set<CssResourceReference> references = cssResourceReferencesForAllComponents();
+        
+        // some additional special cases.
+        addSpecialCasesToCssBundle(references);
+        
+        // create the bundle
         getResourceBundles().addCssBundle(
                 IsisWicketApplication.class, "isis-wicket-viewer-bundle.css", 
                 references.toArray(new CssResourceReference[]{}));
     }
 
+    /**
+     * Additional special cases to be included in the main CSS bundle.
+     * 
+     * <p>
+     * These are typically either superclasses or components that don't have their own ComponentFactory, or
+     * for {@link ComponentFactory}s (such as <tt>StringPanelFactory</tt>) that don't quite follow the usual pattern
+     * (because they create different types of panels).
+     * 
+     * <p>
+     * Note that it doesn't really matter if we miss one or two; their CSS will simply be served up individually. 
+     */
+    private void addSpecialCasesToCssBundle(final Set<CssResourceReference> references) {
+        
+        // abstract classes
+        
+        // ... though it turns out we cannot add this particular one to the bundle, because 
+        // it has CSS image links intended to be resolved relative to LinksSelectorPanelAbstract.class.
+        // Adding them into the bundle would mean these CSS links are resolved relative to IsisWicketApplication.class 
+        // instead.
+        // references.add(PanelUtil.cssResourceReferenceFor(LinksSelectorPanelAbstract.class));
+        
+        // non-conforming component factories
+        references.add(PanelUtil.cssResourceReferenceFor(MultiLineStringPanel.class));
+    }
+
     private final static Function<ComponentFactory, Iterable<CssResourceReference>> getCssResourceReferences = 
             new Function<ComponentFactory, Iterable<CssResourceReference>>(){
                 @Override
                 public Iterable<CssResourceReference> apply(final ComponentFactory input) {
-                   return input.getCssResourceReferences();
+                   final CssResourceReference cssResourceReference = input.getCssResourceReferences();
+                   return cssResourceReference != null? 
+                           Collections.singletonList(cssResourceReference): 
+                           Collections.<CssResourceReference>emptyList();
                 }
              };
 

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentFactory.java
index f4c189e..3b8dd18 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentFactory.java
@@ -102,6 +102,6 @@ public interface ComponentFactory extends Serializable {
      */
     String getName();
 
-    Iterable<CssResourceReference> getCssResourceReferences();
+    CssResourceReference getCssResourceReferences();
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentFactoryAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentFactoryAbstract.java
index 422daa3..24c5049 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentFactoryAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/ComponentFactoryAbstract.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.viewer.wicket.ui;
 
-import java.util.Collections;
-
 import org.apache.wicket.Component;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.request.resource.CssResourceReference;
@@ -37,21 +35,27 @@ public abstract class ComponentFactoryAbstract implements ComponentFactory {
     private final ComponentType componentType;
     private final String name;
 
-    private final Class<?>[] cssClasses;
+    private final Class<?> componentClass;
+
+    public ComponentFactoryAbstract(final ComponentType componentType) {
+        this(componentType, null, null);
+    }
 
-    public ComponentFactoryAbstract(final ComponentType componentType, @SuppressWarnings("rawtypes") Class... classes) {
-        this(componentType, null, classes);
+    public ComponentFactoryAbstract(final ComponentType componentType, final String name) {
+        this(componentType, name, null);
+    }
+    
+    public ComponentFactoryAbstract(final ComponentType componentType, @SuppressWarnings("rawtypes") Class componentClass) {
+        this(componentType, null, componentClass);
     }
 
-    public ComponentFactoryAbstract(final ComponentType componentType, final String name, @SuppressWarnings("rawtypes") Class... cssClasses) {
+    public ComponentFactoryAbstract(final ComponentType componentType, final String name, @SuppressWarnings("rawtypes") Class componentClass) {
         this.componentType = componentType;
         this.name = name != null ? name : getClass().getSimpleName();
-        for (Class<?> cls : cssClasses) {
-            if(ComponentFactory.class.isAssignableFrom(cls)) {
-                throw new IllegalArgumentException("specified a ComponentFactory as a cssClass... you probably meant the component instead? cls = " + cls.getName());
-            }
+        if(componentClass != null && ComponentFactory.class.isAssignableFrom(componentClass)) {
+            throw new IllegalArgumentException("specified a ComponentFactory as a componentClass... you probably meant the component instead? componentClass = " + componentClass.getName());
         }
-        this.cssClasses = cssClasses;
+        this.componentClass = componentClass;
     }
 
     @Override
@@ -103,18 +107,9 @@ public abstract class ComponentFactoryAbstract implements ComponentFactory {
     }
 
     @Override
-    public Iterable<CssResourceReference> getCssResourceReferences() {
-        if (cssClasses!=null && cssClasses.length>0) {
-            return cssResourceReferencesFor(cssClasses);
-        } else {
-            return Collections.<CssResourceReference>emptyList();
-        }
+    public CssResourceReference getCssResourceReferences() {
+        return PanelUtil.cssResourceReferenceFor(componentClass);
     }
 
-    @SuppressWarnings("rawtypes")
-    private static Iterable<CssResourceReference> cssResourceReferencesFor(
-            final Class... classes) {
-        return PanelUtil.cssResourceReferencesFor(classes);
-    }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuFactory.java
index 67f1e35..016731f 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/appactions/cssmenu/AppActionsCssMenuFactory.java
@@ -77,7 +77,7 @@ public class AppActionsCssMenuFactory extends ComponentFactoryAbstract {
     }
 
     public AppActionsCssMenuFactory() {
-        super(ComponentType.APPLICATION_ACTIONS);
+        super(ComponentType.APPLICATION_ACTIONS, CssMenuPanel.class);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.css
index 2fac53a..6caa1bb 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.css
@@ -17,7 +17,7 @@
  *  under the License.
  */
 
-.bookmarkedPagesPanel {
+.bookmarkedPagesPanel .bookmarkedPagesPanelHolder {
 	font-size: 0.7em;
 	text-transform:uppercase;
 	font-weight:bold;
@@ -25,17 +25,17 @@
 	margin-bottom:5px;
 }
 
-.bookmarkedPagesPanel .bookmarkedPagesList {
+.bookmarkedPagesPanel .bookmarkedPagesPanelHolder .bookmarkedPagesList {
     margin-top:30px;
 	
 }
 
-.bookmarkedPagesPanel .bookmarkedPageItem {
+.bookmarkedPagesPanel .bookmarkedPagesPanelHolder .bookmarkedPageItem {
     margin-top:10px;
     margin-bottom:10px;
 }
 
-.bookmarkedPagesPanel span.bookmarkedPageImageAndTitle {
+.bookmarkedPagesPanel .bookmarkedPagesPanelHolder span.bookmarkedPageImageAndTitle {
     margin-right: 5px;
     margin-bottom:5px;
 
@@ -47,11 +47,11 @@
     padding:10px 10px 3px 10px;
 }
 
-.bookmarkedPagesPanel span.bookmarkedPageImageAndTitle:hover {
+.bookmarkedPagesPanel .bookmarkedPagesPanelHolder span.bookmarkedPageImageAndTitle:hover {
     background-color:#FFFFFF;
 }
 
-.bookmarkedPagesPanel .bookmarkedPagesList a img.bookmarkedPageImage {
+.bookmarkedPagesPanel .bookmarkedPagesPanelHolder .bookmarkedPagesList a img.bookmarkedPageImage {
     /*float:left;*/
     background-color: transparent;
     width: 16px;
@@ -59,27 +59,27 @@
     /*padding:3px 0px 0px 3px;*/
 }
 
-.bookmarkedPagesPanel .bookmarkedPagesList span.bookmarkedPageTitle {
+.bookmarkedPagesPanel .bookmarkedPagesPanelHolder .bookmarkedPagesList span.bookmarkedPageTitle {
 	font-style:normal !important;
     
     vertical-align: top;
     padding-left: 5px;
 }
 
-.bookmarkedPagesPanel span.bookmarkedPageTitle {
+.bookmarkedPagesPanel .bookmarkedPagesPanelHolder span.bookmarkedPageTitle {
 	background-color:#F0EFEA;
 }
 
-.bookmarkedPagesPanel .bookmarkedPagesList a:hover span.bookmarkedPageTitle {
+.bookmarkedPagesPanel .bookmarkedPagesPanelHolder .bookmarkedPagesList a:hover span.bookmarkedPageTitle {
 	text-decoration:none;
     background-color:#FFFFFF;
 }
 
-.bookmarkedPagesPanel .clearBookmarks {
+.bookmarkedPagesPanel .bookmarkedPagesPanelHolder .clearBookmarks {
 	color: rgb(128,0,0);
 }
 
-.bookmarkedPagesPanel .clearBookmarks {
+.bookmarkedPagesPanel .bookmarkedPagesPanelHolder .clearBookmarks {
 	border-radius: 4px 4px 4px 4px;
 	color: #46413B;
 	display: block;
@@ -89,13 +89,12 @@
 	margin-right: 5px;
 }
 
-.bookmarkedPagesPanel .currentBookmark span.bookmarkedPageImageAndTitle,
-.bookmarkedPagesPanel .currentBookmark span.bookmarkedPageTitle {
+.bookmarkedPagesPanel .bookmarkedPagesPanelHolder .currentBookmark span.bookmarkedPageImageAndTitle,
+.bookmarkedPagesPanel .bookmarkedPagesPanelHolder .currentBookmark span.bookmarkedPageTitle {
     background-color:#FFFFFF;
 }
 
-
-.showPanelTab {
+.bookmarkedPagesPanel .showPanelTab {
     border-radius: 0px 8px 8px 0px;
 	width:10px;
     height:200px;
@@ -111,7 +110,7 @@
     font-weight:bold;
 }
 
-#bookmarkedPagesSlidingDiv {
+.bookmarkedPagesPanel #bookmarkedPagesSlidingDiv {
     border-radius: 0px 8px 8px 0px;
     position:fixed;
     left:0px;
@@ -121,7 +120,8 @@
     width:0;/*new line*/
     z-index: 998;
 }
-#bookmarkedPagesSlidingDiv .content {
+
+.bookmarkedPagesPanel #bookmarkedPagesSlidingDiv .content {
     width:290px;
     margin-left:30px;
     
@@ -129,26 +129,26 @@
 }
 
 
-.bookmarkDepth0 {
+.bookmarkedPagesPanel .bookmarkDepth0 {
     padding-left: 0px;	
 }
-.bookmarkDepth1 {
+.bookmarkedPagesPanel .bookmarkDepth1 {
     padding-left: 20px;  
 }
-.bookmarkDepth2 {
+.bookmarkedPagesPanel .bookmarkDepth2 {
     padding-left: 40px;  
 }
-.bookmarkDepth3 {
+.bookmarkedPagesPanel .bookmarkDepth3 {
     padding-left: 60px;  
 }
-.bookmarkDepth4 {
+.bookmarkedPagesPanel .bookmarkDepth4 {
     padding-left: 80px;  
 }
-.bookmarkDepth5 {
+.bookmarkedPagesPanel .bookmarkDepth5 {
     padding-left: 100px;  
 }
 
-.clearBookmarkPlaceHolder {
+.bookmarkedPagesPanel .clearBookmarkPlaceHolder {
 	position: relative;
 	top: -7px;
     width: 20px;
@@ -156,11 +156,11 @@
     padding-bottom: 40px;
 }
 
-.clearBookmark,
-.clearBookmarks {
+.bookmarkedPagesPanel .clearBookmark,
+.bookmarkedPagesPanel .clearBookmarks {
     background: url('images/clear_bookmarks.png') no-repeat;
 }
 
-.clearBookmarks span {
+.bookmarkedPagesPanel .clearBookmarks span {
 	padding-left: 25px;
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.html
index 62bae65..be68d2c 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/bookmarkedpages/BookmarkedPagesPanel.html
@@ -24,29 +24,31 @@
       lang="en">
 	<body>
 		<wicket:panel>
-            <div class="showPanelTab">
-            </div>
-            <div id="bookmarkedPagesSlidingDiv">
-                <div class="content">
-                    <div id="bookmarkedPages" class="bookmarkedPagesPanel bookmarkedPagesComponentType">
-                        <a href="#" wicket:id="clearBookmarks" class="clearBookmarks" title="Clear Bookmarks">
-                            <span>clear all</span>
-                        </a>
-                        <ul wicket:id="bookmarkList" class="bookmarkedPagesList">
-                          <li wicket:id="bookmarkedPageItem" class="bookmarkedPageItem">
-                            <span>
-                                <a href="#" wicket:id="clearBookmarkLink" class="clearBookmarkPlaceHolder"></a>
-                                <a href="#" wicket:id="bookmarkedPageLink">
-                                    <span class="bookmarkedPageImageAndTitle">
-                                        <img wicket:id="bookmarkedPageImage" class="bookmarkedPageImage"/>
-                                        <span wicket:id="bookmarkedPageTitle" class="bookmarkedPageTitle">[link title]</span>
-                                    </span>
-                                </a>
-                            </span>
-                          </li>
-                        </ul>
-                    </div>
-               </div>   
+            <div class="bookmarkedPagesPanel">
+                <div class="showPanelTab">
+                </div>
+                <div id="bookmarkedPagesSlidingDiv">
+                    <div class="content">
+                        <div id="bookmarkedPages" class="bookmarkedPagesPanelHolder bookmarkedPagesComponentType">
+                            <a href="#" wicket:id="clearBookmarks" class="clearBookmarks" title="Clear Bookmarks">
+                                <span>clear all</span>
+                            </a>
+                            <ul wicket:id="bookmarkList" class="bookmarkedPagesList">
+                              <li wicket:id="bookmarkedPageItem" class="bookmarkedPageItem">
+                                <span>
+                                    <a href="#" wicket:id="clearBookmarkLink" class="clearBookmarkPlaceHolder"></a>
+                                    <a href="#" wicket:id="bookmarkedPageLink">
+                                        <span class="bookmarkedPageImageAndTitle">
+                                            <img wicket:id="bookmarkedPageImage" class="bookmarkedPageImage"/>
+                                            <span wicket:id="bookmarkedPageTitle" class="bookmarkedPageTitle">[link title]</span>
+                                        </span>
+                                    </a>
+                                </span>
+                              </li>
+                            </ul>
+                        </div>
+                   </div>   
+                </div>
             </div>
 		</wicket:panel>
 	</body>

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanelFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanelFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanelFactory.java
index 7e090da..de0a3bb 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanelFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/selector/links/CollectionContentsLinksSelectorPanelFactory.java
@@ -21,13 +21,11 @@ package org.apache.isis.viewer.wicket.ui.components.collectioncontents.selector.
 
 import org.apache.wicket.Component;
 import org.apache.wicket.model.IModel;
-import org.apache.wicket.request.resource.CssResourceReference;
 
 import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
-import org.apache.isis.viewer.wicket.ui.selector.links.LinksSelectorPanelAbstract;
 
 /**
  * {@link ComponentFactory} for {@link CollectionContentsLinksSelectorPanel}.
@@ -42,7 +40,7 @@ public class CollectionContentsLinksSelectorPanelFactory extends ComponentFactor
 
     public CollectionContentsLinksSelectorPanelFactory() {
         super(ComponentType.COLLECTION_CONTENTS, 
-                CollectionContentsLinksSelectorPanel.class, LinksSelectorPanelAbstract.class);
+                CollectionContentsLinksSelectorPanel.class);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityComponentFactoryAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityComponentFactoryAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityComponentFactoryAbstract.java
index be0e5c6..717caf3 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityComponentFactoryAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityComponentFactoryAbstract.java
@@ -38,12 +38,12 @@ public abstract class EntityComponentFactoryAbstract extends ComponentFactoryAbs
 
     private static final long serialVersionUID = 1L;
 
-    public EntityComponentFactoryAbstract(final ComponentType componentType, final @SuppressWarnings("rawtypes") Class... classes) {
-        super(componentType, classes);
+    public EntityComponentFactoryAbstract(final ComponentType componentType, final @SuppressWarnings("rawtypes") Class componentClass) {
+        super(componentType, componentClass);
     }
 
-    public EntityComponentFactoryAbstract(final ComponentType componentType, final String name, final @SuppressWarnings("rawtypes") Class... classes) {
-        super(componentType, name, classes);
+    public EntityComponentFactoryAbstract(final ComponentType componentType, final String name, final @SuppressWarnings("rawtypes") Class componentClass) {
+        super(componentType, name, componentClass);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanelFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanelFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanelFactory.java
index 615599a..7a9f6d0 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanelFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/selector/links/EntityLinksSelectorPanelFactory.java
@@ -26,7 +26,6 @@ import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.entity.EntityComponentFactoryAbstract;
-import org.apache.isis.viewer.wicket.ui.selector.links.LinksSelectorPanelAbstract;
 
 /**
  * {@link ComponentFactory} for {@link EntityLinksSelectorPanel}.
@@ -40,8 +39,7 @@ public class EntityLinksSelectorPanelFactory extends EntityComponentFactoryAbstr
     private static final long serialVersionUID = 1L;
 
     public EntityLinksSelectorPanelFactory() {
-        super(ComponentType.ENTITY, 
-                EntityLinksSelectorPanel.class, LinksSelectorPanelAbstract.class);
+        super(ComponentType.ENTITY, EntityLinksSelectorPanel.class);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java
index db034e8..ed0d8a4 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java
@@ -19,9 +19,6 @@
 
 package org.apache.isis.viewer.wicket.ui.components.scalars;
 
-import java.util.Collections;
-import java.util.List;
-
 import org.apache.wicket.Component;
 import org.apache.wicket.model.IModel;
 
@@ -36,15 +33,9 @@ public abstract class ComponentFactoryScalarAbstract extends ComponentFactoryAbs
     private final Class<?>[] scalarTypes;
 
     public ComponentFactoryScalarAbstract(
-            final @SuppressWarnings("rawtypes") Class panelClass, 
-            final Class<?>... scalarTypes) {
-        this(Collections.singletonList(panelClass), scalarTypes);
-    }
-    
-    public ComponentFactoryScalarAbstract(
-            final @SuppressWarnings("rawtypes") List<Class> panelClasses, 
+            final @SuppressWarnings("rawtypes") Class componentClass, 
             final Class<?>... scalarTypes) {
-        super(ComponentType.SCALAR_NAME_AND_VALUE, panelClasses.toArray(new Class[]{}));
+        super(ComponentType.SCALAR_NAME_AND_VALUE, componentClass);
         this.scalarTypes = scalarTypes;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.css
deleted file mode 100644
index 1e56186..0000000
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.css
+++ /dev/null
@@ -1,34 +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.
- */
-
-/* REVIEW: what is this, exactly */ 
-.yourBtn{
-   position: relative;
-       top: 150px;
-   font-family: calibri;
-   width: 150px;
-   padding: 10px;
-   -webkit-border-radius: 5px;
-   -moz-border-radius: 5px;
-   border: 1px dashed #BBB; 
-   text-align: center;
-   background-color: #DDD;
-   cursor:pointer;
-}
-

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
index 8c1ca98..cf3302e 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.html
@@ -18,8 +18,6 @@
   under the License.
 -->
 <html>
-	<wicket:head>
-	</wicket:head>
 	<body>
 		<wicket:panel>
 			<div class="isisBlobPanel scalarNameAndValueComponentType">

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
index cbeed95..251e461 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobOrClobPanelAbstract.java
@@ -26,7 +26,6 @@ import java.util.List;
 import javax.activation.MimeType;
 import javax.imageio.ImageIO;
 
-import org.apache.wicket.Application;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
@@ -34,7 +33,6 @@ import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.behavior.Behavior;
 import org.apache.wicket.extensions.markup.html.image.resource.ThumbnailImageResource;
 import org.apache.wicket.markup.head.IHeaderResponse;
-import org.apache.wicket.markup.head.JavaScriptHeaderItem;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.form.FormComponentLabel;
@@ -56,6 +54,7 @@ import org.apache.isis.core.commons.lang.CloseableExtensions;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract;
+import org.apache.isis.viewer.wicket.ui.panels.PanelUtil;
 import org.apache.isis.viewer.wicket.ui.util.Components;
 
 public abstract class IsisBlobOrClobPanelAbstract<T extends NamedWithMimeType> extends ScalarPanelAbstract {

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanelFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanelFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanelFactory.java
index 9c099b6..c3fbea4 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanelFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisBlobPanelFactory.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib;
 
-import com.google.common.collect.Lists;
-
 import org.apache.wicket.Component;
 
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
@@ -35,8 +33,7 @@ public class IsisBlobPanelFactory extends ComponentFactoryScalarAbstract {
     private static final long serialVersionUID = 1L;
 
     public IsisBlobPanelFactory() {
-        super(Lists.<Class>newArrayList(IsisBlobPanel.class, IsisBlobOrClobPanelAbstract.class), org.apache.isis.applib.value.Blob.class);
-        //super(IsisBlobPanel.class, org.apache.isis.applib.value.Blob.class);
+        super(IsisBlobPanel.class, org.apache.isis.applib.value.Blob.class);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisClobPanelFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisClobPanelFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisClobPanelFactory.java
index 99061f0..d9dc802 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisClobPanelFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/isisapplib/IsisClobPanelFactory.java
@@ -19,8 +19,6 @@
 
 package org.apache.isis.viewer.wicket.ui.components.scalars.isisapplib;
 
-import com.google.common.collect.Lists;
-
 import org.apache.wicket.Component;
 
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
@@ -35,8 +33,7 @@ public class IsisClobPanelFactory extends ComponentFactoryScalarAbstract {
     private static final long serialVersionUID = 1L;
 
     public IsisClobPanelFactory() {
-        super(Lists.<Class>newArrayList(IsisClobPanel.class, IsisBlobOrClobPanelAbstract.class), org.apache.isis.applib.value.Clob.class);
-        //super(IsisClobPanel.class, org.apache.isis.applib.value.Clob.class);
+        super(IsisClobPanel.class, org.apache.isis.applib.value.Clob.class);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/StringPanelFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/StringPanelFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/StringPanelFactory.java
index dceb3c1..17eb3ce 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/StringPanelFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/string/StringPanelFactory.java
@@ -34,7 +34,7 @@ public class StringPanelFactory extends ComponentFactoryScalarAbstract {
     @SuppressWarnings("rawtypes")
     public StringPanelFactory() {
         super(
-            Lists.<Class>newArrayList(StringPanel.class, MultiLineStringPanel.class), 
+            StringPanel.class, 
             String.class);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/unknown/UnknownModelPanelFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/unknown/UnknownModelPanelFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/unknown/UnknownModelPanelFactory.java
index ce82e9d..e7d80e6 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/unknown/UnknownModelPanelFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/unknown/UnknownModelPanelFactory.java
@@ -57,8 +57,8 @@ public class UnknownModelPanelFactory implements ComponentFactory {
     }
 
     @Override
-    public Iterable<CssResourceReference> getCssResourceReferences() {
-        return PanelUtil.cssResourceReferencesFor(UnknownModelPanel.class);
+    public CssResourceReference getCssResourceReferences() {
+        return PanelUtil.cssResourceReferenceFor(UnknownModelPanel.class);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2PanelFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2PanelFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2PanelFactory.java
index 7f75eb7..911ca68 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2PanelFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLinkSelect2PanelFactory.java
@@ -33,7 +33,7 @@ public class EntityLinkSelect2PanelFactory extends ComponentFactoryAbstract {
     private static final long serialVersionUID = 1L;
 
     public EntityLinkSelect2PanelFactory() {
-        super(ComponentType.ENTITY_LINK);
+        super(ComponentType.ENTITY_LINK, EntityLinkSelect2Panel.class);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanelFactory.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanelFactory.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanelFactory.java
index 9286148..02afd2a 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanelFactory.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanelFactory.java
@@ -34,7 +34,7 @@ public class EntityLinkSimplePanelFactory extends ComponentFactoryAbstract {
     private static final long serialVersionUID = 1L;
 
     public EntityLinkSimplePanelFactory() {
-        super(ComponentType.ENTITY_LINK);
+        super(ComponentType.ENTITY_LINK, EntityLinkSimplePanel.class);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelUtil.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelUtil.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelUtil.java
index 72046ae..3a79669 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelUtil.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/PanelUtil.java
@@ -18,10 +18,7 @@
  */
 package org.apache.isis.viewer.wicket.ui.panels;
 
-import java.util.List;
-
 import com.google.common.base.Strings;
-import com.google.common.collect.Lists;
 
 import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.CssReferenceHeaderItem;
@@ -49,7 +46,7 @@ public final class PanelUtil {
         response.render(forReference);
     }
 
-    private static CssResourceReference cssResourceReferenceFor(final Class<?> cls) {
+    public static CssResourceReference cssResourceReferenceFor(final Class<?> cls) {
         final String url = cssFor(cls);
         if(url == null) {
             return null;
@@ -57,18 +54,10 @@ public final class PanelUtil {
         return new CssResourceReference(cls, url);
     }
 
-    public static Iterable<CssResourceReference> cssResourceReferencesFor(final Class<?>... classes) {
-        final List<CssResourceReference> cssResourceReferences = Lists.newArrayList();
-        for (Class<?> cls : classes) {
-            final CssResourceReference cssResourceReference = cssResourceReferenceFor(cls);
-            if(cssResourceReference != null) {
-                cssResourceReferences.add(cssResourceReference);
-            }
-        }
-        return cssResourceReferences;
-    }
-    
     private static String cssFor(final Class<?> cls) {
+        if(cls == null) {
+            return null;
+        }
         String simpleName = cls.getSimpleName();
         if(Strings.isNullOrEmpty(simpleName)) {
             return null; // eg inner classes

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.css
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.css b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.css
index 6552c8d..49c6b0b 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.css
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.css
@@ -45,7 +45,7 @@
 	-webkit-border-radius:0px 4px 4px 0px;
 }
 
-a span.ViewLinkItem {
+.linksSelectorPanel a span.ViewLinkItem {
 	color:#46423C;
 	background-color:#F0EFEA;
 	float:left;
@@ -54,7 +54,7 @@ a span.ViewLinkItem {
 	line-height:30px;
 }
 
-span.ViewLinkItem {
+.linksSelectorPanel span.ViewLinkItem {
 	color:#FFFFFF;
 	background-color:#20B5C2;
 	float:left;
@@ -66,31 +66,31 @@ span.ViewLinkItem {
 	text-indent:-999em;
 }
 
-span.ViewLinkItem.hide {
+.linksSelectorPanel span.ViewLinkItem.hide {
 	background-image:url('images/icon_hide_on.png');
 	background-position: center center;
 	background-repeat:no-repeat;
 }
 
-span.ViewLinkItem.table {
+.linksSelectorPanel span.ViewLinkItem.table {
 	background-image:url('images/icon_table_on.png');
 	background-position: center center;
 	background-repeat:no-repeat;
 }
 
-a span.ViewLinkItem.hide {
+.linksSelectorPanel a span.ViewLinkItem.hide {
 	background-image:url('images/icon_hide_off.png');
 	background-position: center center;
 	background-repeat:no-repeat;
 }
 
-a span.ViewLinkItem.table {
+.linksSelectorPanel a span.ViewLinkItem.table {
 	background-image:url('images/icon_table_off.png');
 	background-position: center center;
 	background-repeat:no-repeat;
 }
 
-.ViewLinkItem {
+.linksSelectorPanel .ViewLinkItem {
 	padding:0px 10px;
 	font-weight:bold;
 	text-transform:uppercase;

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
index bf6195a..62065a6 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/selector/links/LinksSelectorPanelAbstract.java
@@ -32,6 +32,7 @@ import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.AjaxLink;
 import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.markup.head.IHeaderResponse;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.AbstractLink;
@@ -48,6 +49,7 @@ import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.additionallinks.AdditionalLinksPanel;
 import org.apache.isis.viewer.wicket.ui.components.collectioncontents.unresolved.CollectionContentsAsUnresolvedPanelFactory;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
+import org.apache.isis.viewer.wicket.ui.panels.PanelUtil;
 import org.apache.isis.viewer.wicket.ui.util.Components;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
 
@@ -270,4 +272,10 @@ public abstract class LinksSelectorPanelAbstract<T extends IModel<?>> extends Pa
         return otherFactories;
     }
 
+    @Override
+    public void renderHead(final IHeaderResponse response) {
+        super.renderHead(response);
+        PanelUtil.renderHead(response, LinksSelectorPanelAbstract.class);
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/71df3f63/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/ComponentFactoryAbstractTest_init.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/ComponentFactoryAbstractTest_init.java b/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/ComponentFactoryAbstractTest_init.java
new file mode 100644
index 0000000..a47fb1b
--- /dev/null
+++ b/component/viewer/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/ComponentFactoryAbstractTest_init.java
@@ -0,0 +1,109 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.isis.viewer.wicket.ui;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.model.IModel;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class ComponentFactoryAbstractTest_init {
+
+    @Rule
+    public ExpectedException thrown= ExpectedException.none();
+    
+    @Test
+    public void canInstantiateComponentFactoryWithNoComponentClass() {
+        class ComponentFactoryWithNoComponentClass extends ComponentFactoryAbstract {
+
+            private static final long serialVersionUID = 1L;
+
+            public ComponentFactoryWithNoComponentClass() {
+                super(null);
+            }
+
+            @Override
+            protected ApplicationAdvice appliesTo(IModel<?> model) {
+                return null;
+            }
+
+            @Override
+            public Component createComponent(String id, IModel<?> model) {
+                return null;
+            }
+            
+        }
+        
+        new ComponentFactoryWithNoComponentClass();
+    }
+    
+    @Test
+    public void canInstantiateComponentFactoryWithComponentClass() {
+        class ComponentClass {};
+        class ComponentFactoryWithComponentClass extends ComponentFactoryAbstract {
+            
+            private static final long serialVersionUID = 1L;
+
+            public ComponentFactoryWithComponentClass() {
+                super(null, ComponentClass.class);
+            }
+            
+            @Override
+            protected ApplicationAdvice appliesTo(IModel<?> model) {
+                return null;
+            }
+            
+            @Override
+            public Component createComponent(String id, IModel<?> model) {
+                return null;
+            }
+            
+        }
+        
+        new ComponentFactoryWithComponentClass();
+    }
+
+    @Test
+    public void cannotInstantiateComponentFactoryWithIncorrectComponentClass() {
+        thrown.expect(IllegalArgumentException.class);
+        
+        class ComponentFactoryWithIncorrectComponentClass extends ComponentFactoryAbstract {
+
+            private static final long serialVersionUID = 1L;
+
+            public ComponentFactoryWithIncorrectComponentClass() {
+                super(null, ComponentFactoryWithIncorrectComponentClass.class);
+            }
+
+            @Override
+            protected ApplicationAdvice appliesTo(IModel<?> model) {
+                return null;
+            }
+
+            @Override
+            public Component createComponent(String id, IModel<?> model) {
+                return null;
+            }
+            
+        }
+        
+        new ComponentFactoryWithIncorrectComponentClass();
+    }
+
+
+}