You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by mg...@apache.org on 2015/01/31 15:17:58 UTC

isis git commit: ISIS-1020 Use Wicket-Select2 from WicketStuff instead of the non-maintained original one

Repository: isis
Updated Branches:
  refs/heads/ISIS-1020-problems-with-select2 [created] 5013f0b0b


ISIS-1020 Use Wicket-Select2 from WicketStuff instead of the non-maintained original one


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

Branch: refs/heads/ISIS-1020-problems-with-select2
Commit: 5013f0b0b40153fdf6181373750daa14bd793217
Parents: 40c6a45
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sat Jan 31 16:17:08 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sat Jan 31 16:17:08 2015 +0200

----------------------------------------------------------------------
 .../wicket/viewer/IsisWicketApplication.java    |  2 +-
 component/viewer/wicket/pom.xml                 |  8 +--
 component/viewer/wicket/ui/pom.xml              |  4 +-
 .../reference/EntityLinkSelect2Panel.java       |  3 +-
 .../scalars/reference/ReferencePanel.java       |  6 +-
 .../ObjectAdapterMementoProviderAbstract.java   |  5 +-
 .../widgets/breadcrumbs/BreadcrumbPanel.java    | 70 ++++++++++----------
 .../select2/Select2BootstrapCssReference.java   |  5 +-
 .../widgets/select2/Select2ChoiceUtil.java      | 32 ++++++++-
 .../valuechoices/ValueChoicesSelect2Panel.java  |  4 +-
 10 files changed, 82 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/5013f0b0/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 319d42f..9da8625 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
@@ -42,7 +42,6 @@ import com.google.inject.Guice;
 import com.google.inject.Inject;
 import com.google.inject.Injector;
 import com.google.inject.Module;
-import com.vaynberg.wicket.select2.ApplicationSettings;
 import org.apache.wicket.Application;
 import org.apache.wicket.ConverterLocator;
 import org.apache.wicket.IConverterLocator;
@@ -64,6 +63,7 @@ import org.apache.wicket.settings.IRequestCycleSettings.RenderStrategy;
 import org.apache.wicket.util.time.Duration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.wicketstuff.select2.ApplicationSettings;
 import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProviderAware;

http://git-wip-us.apache.org/repos/asf/isis/blob/5013f0b0/component/viewer/wicket/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/pom.xml b/component/viewer/wicket/pom.xml
index ff3a1f0..9c9148d 100644
--- a/component/viewer/wicket/pom.xml
+++ b/component/viewer/wicket/pom.xml
@@ -47,8 +47,8 @@
         <wicket-bootstrap.version>0.9.7</wicket-bootstrap.version>
         <wicket-source.version>6.0.0.8</wicket-source.version>
 
-        <wicket-select2.version>2.2.3</wicket-select2.version>
-        <select2.version>3.5.1</select2.version>
+        <wicket-select2.version>6.18.0</wicket-select2.version>
+        <select2.version>3.5.2</select2.version>
     </properties>
 
     <!-- used in Site generation for relative references. -->
@@ -269,8 +269,8 @@
 
             <!-- Wicket-Select2 -->
             <dependency>
-                <groupId>com.vaynberg.wicket.select2</groupId>
-                <artifactId>wicket-select2</artifactId>
+                <groupId>org.wicketstuff</groupId>
+                <artifactId>wicketstuff-select2</artifactId>
                 <version>${wicket-select2.version}</version>
                 <exclusions>
                     <exclusion>

http://git-wip-us.apache.org/repos/asf/isis/blob/5013f0b0/component/viewer/wicket/ui/pom.xml
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/pom.xml b/component/viewer/wicket/ui/pom.xml
index 11e676d..8b6d116 100644
--- a/component/viewer/wicket/ui/pom.xml
+++ b/component/viewer/wicket/ui/pom.xml
@@ -96,8 +96,8 @@
 			<artifactId>wicket-guice</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>com.vaynberg.wicket.select2</groupId>
-			<artifactId>wicket-select2</artifactId>
+            <groupId>org.wicketstuff</groupId>
+            <artifactId>wicketstuff-select2</artifactId>
 		</dependency>
 
         <dependency>

http://git-wip-us.apache.org/repos/asf/isis/blob/5013f0b0/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.java
index aab5d83..ea32d71 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/EntityLinkSelect2Panel.java
@@ -19,7 +19,6 @@
 
 package org.apache.isis.viewer.wicket.ui.components.scalars.reference;
 
-import com.vaynberg.wicket.select2.Select2Choice;
 
 import org.apache.wicket.markup.html.form.FormComponentPanel;
 
@@ -42,7 +41,7 @@ class EntityLinkSelect2Panel extends FormComponentPanelAbstract<ObjectAdapter> i
 
     /**
      * Necessary because {@link FormComponentPanel} overrides this as <tt>true</tt>, whereas we want to
-     * report on the state of the underlying {@link Select2Choice}.
+     * report on the state of the underlying {@link org.wicketstuff.select2.Select2Choice}.
      */
     @Override
     public boolean checkRequired() {

http://git-wip-us.apache.org/repos/asf/isis/blob/5013f0b0/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
index 34c8f38..bbc4151 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/reference/ReferencePanel.java
@@ -22,9 +22,6 @@ package org.apache.isis.viewer.wicket.ui.components.scalars.reference;
 import javax.inject.Inject;
 import java.util.List;
 import com.google.common.collect.Lists;
-import com.vaynberg.wicket.select2.ChoiceProvider;
-import com.vaynberg.wicket.select2.Select2Choice;
-import com.vaynberg.wicket.select2.Settings;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
@@ -36,6 +33,9 @@ import org.apache.wicket.model.Model;
 import org.apache.wicket.validation.IValidatable;
 import org.apache.wicket.validation.IValidator;
 import org.apache.wicket.validation.ValidationError;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Select2Choice;
+import org.wicketstuff.select2.Settings;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;

http://git-wip-us.apache.org/repos/asf/isis/blob/5013f0b0/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
index ef7fb78..bda83fc 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/ObjectAdapterMementoProviderAbstract.java
@@ -22,9 +22,10 @@ import java.util.Locale;
 import com.google.common.base.Function;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.Lists;
-import com.vaynberg.wicket.select2.TextChoiceProvider;
 import org.apache.wicket.Session;
 import org.apache.wicket.util.convert.IConverter;
+import org.wicketstuff.select2.Response;
+import org.wicketstuff.select2.TextChoiceProvider;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.adapter.oid.RootOid;
@@ -76,7 +77,7 @@ public abstract class ObjectAdapterMementoProviderAbstract extends TextChoicePro
     }
 
     @Override
-    public void query(final String term, final int page, final com.vaynberg.wicket.select2.Response<ObjectAdapterMemento> response) {
+    public void query(final String term, final int page, final Response<ObjectAdapterMemento> response) {
         
         final List<ObjectAdapterMemento> mementos = Lists.newArrayList(obtainMementos(term));
         // if not mandatory, and the list doesn't contain null already, then add it in.

http://git-wip-us.apache.org/repos/asf/isis/blob/5013f0b0/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
index 76badf0..6d19acc 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
@@ -17,14 +17,14 @@
 package org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs;
 
 import java.util.Collection;
-import com.vaynberg.wicket.select2.Response;
-import com.vaynberg.wicket.select2.Select2Choice;
-import com.vaynberg.wicket.select2.Settings;
-import com.vaynberg.wicket.select2.TextChoiceProvider;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.wicketstuff.select2.Response;
+import org.wicketstuff.select2.Select2Choice;
+import org.wicketstuff.select2.Settings;
+import org.wicketstuff.select2.TextChoiceProvider;
 import org.apache.isis.core.commons.authentication.MessageBroker;
 import org.apache.isis.core.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
@@ -51,34 +51,7 @@ public class BreadcrumbPanel extends PanelAbstract<IModel<Void>> {
         final BreadcrumbModel breadcrumbModel = session.getBreadcrumbModel();
         
         final IModel<EntityModel> entityModel = new Model<EntityModel>();
-        final Select2Choice<EntityModel> breadcrumbChoice = new Select2Choice<EntityModel>(ID_BREADCRUMBS, entityModel);
-
-        breadcrumbChoice.add(
-            new AjaxFormComponentUpdatingBehavior("change"){
-    
-                private static final long serialVersionUID = 1L;
-    
-                @Override
-                protected void onUpdate(AjaxRequestTarget target) {
-                    final String oidStr = breadcrumbChoice.getInput();
-                    final EntityModel selectedModel = breadcrumbModel.lookup(oidStr);
-                    if(selectedModel == null) {
-                        final MessageBroker messageBroker = IsisContext.getAuthenticationSession().getMessageBroker();
-                        messageBroker.addWarning("Cannot find object");
-                        String feedbackMsg = JGrowlUtil.asJGrowlCalls(messageBroker);
-                        target.appendJavaScript(feedbackMsg);
-                        breadcrumbModel.remove(oidStr);
-                        return;
-                    }
-                    setResponsePage(EntityPage.class, selectedModel.getPageParameters());
-                }
-            });
-        
-        final Settings settings = breadcrumbChoice.getSettings();
-        settings.setMinimumInputLength(0);
-        settings.setWidth("100%");
-        
-        breadcrumbChoice.setProvider(new TextChoiceProvider<EntityModel>() {
+        TextChoiceProvider<EntityModel> choiceProvider = new TextChoiceProvider<EntityModel>() {
 
             private static final long serialVersionUID = 1L;
 
@@ -91,7 +64,7 @@ public class BreadcrumbPanel extends PanelAbstract<IModel<Void>> {
             protected Object getId(EntityModel choice) {
                 try {
                     return PageParameterNames.OBJECT_OID.getStringFrom(choice.getPageParameters());
-                } catch(Exception ex) {
+                } catch (Exception ex) {
                     breadcrumbModel.remove(choice);
                     return null;
                 }
@@ -106,8 +79,35 @@ public class BreadcrumbPanel extends PanelAbstract<IModel<Void>> {
             public Collection<EntityModel> toChoices(Collection<String> ids) {
                 return breadcrumbModel.getList();
             }
-            
-        });
+
+        };
+        final Select2Choice<EntityModel> breadcrumbChoice = new Select2Choice<>(ID_BREADCRUMBS, entityModel, choiceProvider);
+
+        breadcrumbChoice.add(
+            new AjaxFormComponentUpdatingBehavior("change"){
+    
+                private static final long serialVersionUID = 1L;
+    
+                @Override
+                protected void onUpdate(AjaxRequestTarget target) {
+                    final String oidStr = breadcrumbChoice.getInput();
+                    final EntityModel selectedModel = breadcrumbModel.lookup(oidStr);
+                    if(selectedModel == null) {
+                        final MessageBroker messageBroker = IsisContext.getAuthenticationSession().getMessageBroker();
+                        messageBroker.addWarning("Cannot find object");
+                        String feedbackMsg = JGrowlUtil.asJGrowlCalls(messageBroker);
+                        target.appendJavaScript(feedbackMsg);
+                        breadcrumbModel.remove(oidStr);
+                        return;
+                    }
+                    setResponsePage(EntityPage.class, selectedModel.getPageParameters());
+                }
+            });
+        
+        final Settings settings = breadcrumbChoice.getSettings();
+        settings.setMinimumInputLength(0);
+        settings.setWidth("100%");
+        
         addOrReplace(breadcrumbChoice);
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/5013f0b0/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2BootstrapCssReference.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2BootstrapCssReference.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2BootstrapCssReference.java
index 3e714fd..e0d7b30 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2BootstrapCssReference.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2BootstrapCssReference.java
@@ -1,11 +1,10 @@
 package org.apache.isis.viewer.wicket.ui.components.widgets.select2;
 
-import de.agilecoders.wicket.webjars.request.resource.WebjarsCssResourceReference;
-
 import com.google.common.collect.Lists;
 import org.apache.wicket.markup.head.CssHeaderItem;
 import org.apache.wicket.markup.head.HeaderItem;
 import org.apache.wicket.request.resource.CssResourceReference;
+import org.wicketstuff.select2.Select2Choice;
 
 /**
  * A CSS reference that loads <a href="https://github.com/ivaynberg/select2/">Select2.css</a>
@@ -20,6 +19,6 @@ public class Select2BootstrapCssReference extends CssResourceReference {
 
     @Override
     public Iterable<? extends HeaderItem> getDependencies() {
-        return Lists.newArrayList(CssHeaderItem.forReference(new WebjarsCssResourceReference("/select2/current/select2.css")));
+        return Lists.newArrayList(CssHeaderItem.forReference(new CssResourceReference(Select2Choice.class, "res/select2.css")));
     }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/5013f0b0/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2ChoiceUtil.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2ChoiceUtil.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2ChoiceUtil.java
index fb82253..a71e411 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2ChoiceUtil.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/select2/Select2ChoiceUtil.java
@@ -16,20 +16,46 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.widgets.select2;
 
-import com.vaynberg.wicket.select2.Select2Choice;
+import java.util.Collection;
 
+import org.apache.wicket.ajax.json.JSONException;
+import org.apache.wicket.ajax.json.JSONWriter;
 import org.apache.wicket.model.IModel;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Response;
+import org.wicketstuff.select2.Select2Choice;
 
 import org.apache.isis.viewer.wicket.model.mementos.ObjectAdapterMemento;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 
-public final class Select2ChoiceUtil  {
+public final class
+        Select2ChoiceUtil  {
 
     private Select2ChoiceUtil(){}
 
     public static Select2Choice<ObjectAdapterMemento> newSelect2Choice(String id, final IModel<ObjectAdapterMemento> modelObject, ScalarModel scalarModel) {
-        Select2Choice<ObjectAdapterMemento> select2Choice = new Select2Choice<>(id, modelObject);
+        Select2Choice<ObjectAdapterMemento> select2Choice = new Select2Choice<>(id, modelObject, EmptyChoiceProvider.INSTANCE);
         select2Choice.setRequired(scalarModel.isRequired());
         return select2Choice;
     }
+
+    private static class EmptyChoiceProvider extends ChoiceProvider<ObjectAdapterMemento> {
+
+        private static final EmptyChoiceProvider INSTANCE = new EmptyChoiceProvider();
+
+        @Override
+        public void query(String term, int page, Response<ObjectAdapterMemento> response) {
+
+        }
+
+        @Override
+        public void toJson(ObjectAdapterMemento choice, JSONWriter writer) throws JSONException {
+
+        }
+
+        @Override
+        public Collection<ObjectAdapterMemento> toChoices(Collection<String> ids) {
+            return null;
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/5013f0b0/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
----------------------------------------------------------------------
diff --git a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
index 3932e14..28455b7 100644
--- a/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
+++ b/component/viewer/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/valuechoices/ValueChoicesSelect2Panel.java
@@ -23,8 +23,6 @@ import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.Lists;
-import com.vaynberg.wicket.select2.ChoiceProvider;
-import com.vaynberg.wicket.select2.Select2Choice;
 import org.apache.wicket.AttributeModifier;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
@@ -32,6 +30,8 @@ import org.apache.wicket.behavior.Behavior;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.model.IModel;
 import org.apache.wicket.model.Model;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Select2Choice;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.adapter.mgr.AdapterManager.ConcurrencyChecking;
 import org.apache.isis.core.metamodel.facets.all.named.NamedFacet;