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 2012/09/20 13:10:47 UTC

svn commit: r1387971 - in /incubator/isis/trunk/framework/viewer/wicket: wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/registry/ wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ wicket-ui/src/main/java/org/apa...

Author: danhaywood
Date: Thu Sep 20 11:10:46 2012
New Revision: 1387971

URL: http://svn.apache.org/viewvc?rev=1387971&view=rev
Log:
ISIS-232: change value choices to also use Select2 widget.

Added:
    incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoices.css
      - copied, changed from r1387970, incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesPanel.css
    incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoices.html
      - copied, changed from r1387970, incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesPanel.html
    incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoices.java
      - copied, changed from r1387970, incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesPanel.java
    incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesComponentFactory.java
      - copied, changed from r1387970, incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/ValuePanelFactory.java
Removed:
    incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesPanel.css
    incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesPanel.html
    incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesPanel.java
Modified:
    incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/registry/ComponentFactoryRegistrar.java
    incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java
    incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
    incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/ValuePanelFactory.java
    incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLink.java
    incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
    incubator/isis/trunk/framework/viewer/wicket/wicket-viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java

Modified: incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/registry/ComponentFactoryRegistrar.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/registry/ComponentFactoryRegistrar.java?rev=1387971&r1=1387970&r2=1387971&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/registry/ComponentFactoryRegistrar.java (original)
+++ incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/app/registry/ComponentFactoryRegistrar.java Thu Sep 20 11:10:46 2012
@@ -23,6 +23,8 @@ import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
 
+import javax.annotation.Nullable;
+
 import com.google.common.base.Predicate;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.Lists;
@@ -40,28 +42,44 @@ public interface ComponentFactoryRegistr
     
     public static class ComponentFactoryList implements Iterable<ComponentFactory> {
         private final List<ComponentFactory> componentFactories = Lists.newArrayList();
+
         public void add(ComponentFactory componentFactory) {
             componentFactories.add(componentFactory);
         }
 
         public void replace(final ComponentFactory replacementComponentFactory) {
-            removeExistingthatMatch(replacementComponentFactory);
+            removeExisting(matching(replacementComponentFactory.getComponentType()));
+            add(replacementComponentFactory);
+        }
+
+        public void replace(final Class<? extends ComponentFactory> toReplace, final ComponentFactory replacementComponentFactory) {
+            removeExisting(matching(toReplace));
             add(replacementComponentFactory);
         }
 
-        private void removeExistingthatMatch(final ComponentFactory replacementComponentFactory) {
-            final ComponentType componentType = replacementComponentFactory.getComponentType();
-            
-            final Collection<ComponentFactory> matching = Collections2.filter(componentFactories, new Predicate<ComponentFactory>() {
+        private void removeExisting(final Predicate<ComponentFactory> predicate) {
+            final Collection<ComponentFactory> matching = Collections2.filter(componentFactories, predicate);
+            componentFactories.removeAll(matching);
+        }
+
+        private static Predicate<ComponentFactory> matching(final ComponentType componentType) {
+            return new Predicate<ComponentFactory>() {
                 @Override
                 public boolean apply(ComponentFactory input) {
                     return input.getComponentType() == componentType;
                 }
-            });
-            
-            componentFactories.removeAll(matching);
+            };
         }
-        
+
+        private static Predicate<ComponentFactory> matching(final Class<? extends ComponentFactory> toReplace) {
+            return new Predicate<ComponentFactory>() {
+                @Override
+                public boolean apply(ComponentFactory input) {
+                    return toReplace.isAssignableFrom(input.getClass());
+                }
+            };
+        }
+
         @Override
         public Iterator<ComponentFactory> iterator() {
             return componentFactories.iterator();

Modified: incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java?rev=1387971&r1=1387970&r2=1387971&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java (original)
+++ incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ComponentFactoryScalarAbstract.java Thu Sep 20 11:10:46 2012
@@ -19,16 +19,12 @@
 
 package org.apache.isis.viewer.wicket.ui.components.scalars;
 
-import java.util.List;
-
 import org.apache.wicket.Component;
 import org.apache.wicket.model.IModel;
 
-import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
-import org.apache.isis.viewer.wicket.ui.components.widgets.valuechoices.ValueChoicesPanel;
 
 public abstract class ComponentFactoryScalarAbstract extends ComponentFactoryAbstract {
 
@@ -47,23 +43,14 @@ public abstract class ComponentFactorySc
             return ApplicationAdvice.DOES_NOT_APPLY;
         }
         final ScalarModel scalarModel = (ScalarModel) model;
-        return appliesIf(scalarModel.isScalarTypeAnyOf(scalarTypes));
+        final boolean hasNoChoices = scalarModel.getChoices().isEmpty();
+        return appliesIf(hasNoChoices && scalarModel.isScalarTypeAnyOf(scalarTypes));
     }
 
-    int choiceCount = 0;
-
     @Override
     public final Component createComponent(final String id, final IModel<?> model) {
         final ScalarModel scalarModel = (ScalarModel) model;
-        // return createComponent(id, scalarModel);
-
-        // TODO: This is where the ValueChoicesPanel panel gets created.
-        final List<ObjectAdapter> choices = scalarModel.getChoices();
-        if (choices.size() > 0) {
-            return new ValueChoicesPanel(id, scalarModel);
-        } else {
-            return createComponent(id, scalarModel);
-        }
+        return createComponent(id, scalarModel);
     }
 
     protected abstract Component createComponent(String id, ScalarModel scalarModel);

Modified: incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java?rev=1387971&r1=1387970&r2=1387971&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java (original)
+++ incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java Thu Sep 20 11:10:46 2012
@@ -156,7 +156,7 @@ public abstract class ScalarPanelAbstrac
     private void addCssForMetaModel() {
         final String cssForMetaModel = getModel().getLongName();
         if (cssForMetaModel != null) {
-            add(new AttributeAppender("class", true, Model.of(cssForMetaModel), " "));
+            add(new AttributeAppender("class", Model.of(cssForMetaModel), " "));
         }
     }
 

Modified: incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/ValuePanelFactory.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/ValuePanelFactory.java?rev=1387971&r1=1387970&r2=1387971&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/ValuePanelFactory.java (original)
+++ incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/ValuePanelFactory.java Thu Sep 20 11:10:46 2012
@@ -44,8 +44,8 @@ public class ValuePanelFactory extends C
             return ApplicationAdvice.DOES_NOT_APPLY;
         }
         final ScalarModel scalarModel = (ScalarModel) model;
-        final ValueFacet facet = scalarModel.getTypeOfSpecification().getFacet(ValueFacet.class);
-        return appliesIf(facet != null);
+        final ValueFacet valueFacet = scalarModel.getTypeOfSpecification().getFacet(ValueFacet.class);
+        return appliesIf(scalarModel.getChoices().isEmpty() && valueFacet != null);
     }
 
     @Override

Modified: incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLink.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLink.java?rev=1387971&r1=1387970&r2=1387971&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLink.java (original)
+++ incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitylink/EntityLink.java Thu Sep 20 11:10:46 2012
@@ -338,12 +338,20 @@ public class EntityLink extends FormComp
             @Override
             public void onClick() {
                 getEntityModel().toggleDetails();
+                doSyncEntityDetailsOnClick();
             }
+
         };
         addOrReplace(entityDetailsLink);
         entityDetailsLink.add(new Label(ID_ENTITY_DETAILS_LINK_LABEL, buildEntityDetailsModel()));
     }
 
+    /**
+     * Optional hook
+     */
+    protected void doSyncEntityDetailsOnClick() {
+    }
+
     private void syncEntityClearLinksWithInput(final ObjectAdapter adapter) {
         if (adapter == null) {
             permanentlyHide(ID_ENTITY_CLEAR_LINK);

Copied: incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoices.css (from r1387970, incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesPanel.css)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoices.css?p2=incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoices.css&p1=incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesPanel.css&r1=1387970&r2=1387971&rev=1387971&view=diff
==============================================================================
    (empty)

Copied: incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoices.html (from r1387970, incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesPanel.html)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoices.html?p2=incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoices.html&p1=incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesPanel.html&r1=1387970&r2=1387971&rev=1387971&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesPanel.html (original)
+++ incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoices.html Thu Sep 20 11:10:46 2012
@@ -22,7 +22,11 @@
       xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"  
       xml:lang="en"  
       lang="en">
-	<head></head>
+	<head>
+		<wicket:link>
+			<link href="ValueChoices.css" rel="stylesheet" type="text/css"/>
+		</wicket:link>
+	</head>
 	<body>
 		<wicket:panel>
 			<div class="string scalarPanel">

Copied: incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoices.java (from r1387970, incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesPanel.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoices.java?p2=incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoices.java&p1=incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesPanel.java&r1=1387970&r2=1387971&rev=1387971&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesPanel.java (original)
+++ incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoices.java Thu Sep 20 11:10:46 2012
@@ -41,8 +41,8 @@ import org.apache.isis.viewer.wicket.ui.
 /**
  * Initial skeleton - trying to add support for value choices.
  */
-public class ValueChoicesPanel extends ScalarPanelAbstract { // ScalarPanelTextFieldAbstract
-    private static final Logger LOG = Logger.getLogger(ValueChoicesPanel.class);
+public class ValueChoices extends ScalarPanelAbstract { // ScalarPanelTextFieldAbstract
+    private static final Logger LOG = Logger.getLogger(ValueChoices.class);
 
     private static final long serialVersionUID = 1L;
 
@@ -57,7 +57,7 @@ public class ValueChoicesPanel extends S
     private FormComponent<ObjectAdapterMemento> valueField;
     private ObjectAdapterMemento pending;
 
-    public ValueChoicesPanel(final String id, final ScalarModel scalarModel) {
+    public ValueChoices(final String id, final ScalarModel scalarModel) {
         super(id, scalarModel);
         pending = scalarModel.getObjectAdapterMemento();
     }
@@ -95,7 +95,7 @@ public class ValueChoicesPanel extends S
                 if (LOG.isDebugEnabled()) {
                     LOG.debug("TextField: pending is null");
                 }
-                final ObjectAdapter adapter = ValueChoicesPanel.this.getModelValue();
+                final ObjectAdapter adapter = ValueChoices.this.getModelValue();
                 return ObjectAdapterMemento.createOrNull(adapter);
             }
 
@@ -138,7 +138,7 @@ public class ValueChoicesPanel extends S
 
         final String describedAs = getModel().getDescribedAs();
         if(describedAs != null) {
-            labelIfRegular.add(new AttributeModifier("title", true, Model.of(describedAs)));
+            labelIfRegular.add(new AttributeModifier("title", Model.of(describedAs)));
         }
 
         final Label scalarName = new Label(ID_SCALAR_NAME, getRendering().getLabelCaption(valueField));

Copied: incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesComponentFactory.java (from r1387970, incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/ValuePanelFactory.java)
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesComponentFactory.java?p2=incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesComponentFactory.java&p1=incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/ValuePanelFactory.java&r1=1387970&r2=1387971&rev=1387971&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/value/ValuePanelFactory.java (original)
+++ incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesComponentFactory.java Thu Sep 20 11:10:46 2012
@@ -1,57 +1,53 @@
-/*
- *  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.components.scalars.value;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.model.IModel;
-
-import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
-import org.apache.isis.viewer.wicket.model.models.ScalarModel;
-import org.apache.isis.viewer.wicket.ui.ComponentFactory;
-import org.apache.isis.viewer.wicket.ui.components.scalars.ComponentFactoryScalarAbstract;
-
-/**
- * {@link ComponentFactory} for the {@link ValuePanel}.
- */
-public class ValuePanelFactory extends ComponentFactoryScalarAbstract {
-
-    private static final long serialVersionUID = 1L;
-
-    public ValuePanelFactory() {
-        super(); // not asking the supertype to validate types, so can just pass in nothing here.
-    }
-
-    @Override
-    public ApplicationAdvice appliesTo(final IModel<?> model) {
-        if (!(model instanceof ScalarModel)) {
-            return ApplicationAdvice.DOES_NOT_APPLY;
-        }
-        final ScalarModel scalarModel = (ScalarModel) model;
-        final ValueFacet facet = scalarModel.getTypeOfSpecification().getFacet(ValueFacet.class);
-        return appliesIf(facet != null);
-    }
-
-    @Override
-    public Component createComponent(final String id, final ScalarModel scalarModel) {
-        return new ValuePanel(id, scalarModel);
-    }
-
-
-}
+/*
+ *  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.components.widgets.valuechoices;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.model.IModel;
+
+import org.apache.isis.viewer.wicket.model.models.ScalarModel;
+import org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract;
+import org.apache.isis.viewer.wicket.ui.ComponentType;
+
+public class ValueChoicesComponentFactory extends ComponentFactoryAbstract {
+
+    private static final long serialVersionUID = 1L;
+
+    public ValueChoicesComponentFactory() {
+        super(ComponentType.SCALAR_NAME_AND_VALUE);
+    }
+
+    @Override
+    public ApplicationAdvice appliesTo(final IModel<?> model) {
+        if (!(model instanceof ScalarModel)) {
+            return ApplicationAdvice.DOES_NOT_APPLY;
+        }
+        final ScalarModel scalarModel = (ScalarModel) model;
+        final boolean hasChoices = !scalarModel.getChoices().isEmpty();
+        return appliesIf(hasChoices);
+    }
+
+    @Override
+    public final Component createComponent(final String id, final IModel<?> model) {
+        final ScalarModel scalarModel = (ScalarModel) model;
+        return new ValueChoices(id, scalarModel);
+    }
+
+}

Modified: incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css?rev=1387971&r1=1387970&r2=1387971&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css (original)
+++ incubator/isis/trunk/framework/viewer/wicket/wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/pages/PageAbstract.css Thu Sep 20 11:10:46 2012
@@ -315,17 +315,59 @@ div.scalarPanel {
 }
 
 
-div.wicket-aa {
-	border: thin;
-	border-color: #00477F;
+
+/********************* Select2 component styling *****************************/
+
+.entityPage .select2-container {
+	width: 200px;
 }
 
-.wicket-aa li {
-	background-color: white;
+.entityPage .select2-container .select2-choice {
+    padding: 0 0 0 0px;
 }
 
-.wicket-aa .selected {
-	background-color: #00477F;
-	color: white;
+
+.entityPage .select2-container .select2-choice {
+    -webkit-border-radius: 0px;
+    -moz-border-radius: 0px;
+    border-radius: 0px;
+	
+	height: 20px;
+    line-height: 20px;
 	
 }
+
+.entityPage .select2-container.select2-drop-above .select2-choice
+{
+    -webkit-border-radius:0px;
+    -moz-border-radius:0px;
+    border-radius:0px;
+}
+
+.entityPage .select2-drop {
+    -webkit-border-radius:0px;
+    -moz-border-radius:0px;
+    border-radius:0px;
+}
+
+.entityPage .select2-drop.select2-drop-above {
+    -webkit-border-radius:0px;
+    -moz-border-radius:0px;
+    border-radius:0px;
+}
+
+.entityPage .select2-container .select2-choice div {
+    -webkit-border-radius:0px;
+    -moz-border-radius:0px;
+    border-radius:0px;
+    background: #EBEBE4;
+}
+
+.entityPage .select2-container.select2-container-disabled .select2-choice {
+	background-color: #EBEBE4;
+	border: 1px solid #AAA;
+}
+
+.entityPage .select2-container a {
+	font-weight: normal;
+}

Modified: incubator/isis/trunk/framework/viewer/wicket/wicket-viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java
URL: http://svn.apache.org/viewvc/incubator/isis/trunk/framework/viewer/wicket/wicket-viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java?rev=1387971&r1=1387970&r2=1387971&view=diff
==============================================================================
--- incubator/isis/trunk/framework/viewer/wicket/wicket-viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java (original)
+++ incubator/isis/trunk/framework/viewer/wicket/wicket-viewer/src/main/java/org/apache/isis/viewer/wicket/viewer/registries/components/ComponentFactoryRegistrarDefault.java Thu Sep 20 11:10:46 2012
@@ -77,6 +77,7 @@ import org.apache.isis.viewer.wicket.ui.
 import org.apache.isis.viewer.wicket.ui.components.voidreturn.VoidReturnPanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.welcome.WelcomePanelFactory;
 import org.apache.isis.viewer.wicket.ui.components.widgets.entitylink.EntityLinkFactory;
+import org.apache.isis.viewer.wicket.ui.components.widgets.valuechoices.ValueChoicesComponentFactory;
 
 /**
  * Default implementation of {@link ComponentFactoryRegistrar} that registers a
@@ -197,8 +198,8 @@ public class ComponentFactoryRegistrarDe
 
         componentFactories.add(new StringPanelFactory());
 
-        // componentFactories.add(new JavaAwtImagePanelFactory()); //
         // work-in-progress
+        // componentFactories.add(new JavaAwtImagePanelFactory()); 
         componentFactories.add(new JavaUtilDatePanelFactory());
         componentFactories.add(new JavaSqlDatePanelFactory());
         componentFactories.add(new JavaSqlTimePanelFactory());
@@ -218,6 +219,9 @@ public class ComponentFactoryRegistrarDe
         componentFactories.add(new JodaLocalDatePanelFactory());
 
         componentFactories.add(new ValuePanelFactory());
+
+        // or for choices
+        componentFactories.add(new ValueChoicesComponentFactory());
     }
 
     protected void addComponentFactoriesForEntityLink(final ComponentFactoryList componentFactories) {