Author: svenmeier
Date: Thu Nov 17 21:26:58 2011
New Revision: 1203373

URL: http://svn.apache.org/viewvc?rev=1203373&view=rev
Log:
WICKET-4231 allow palette's choicesModel to take current selection into account

Added:
    
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/
    
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/
    
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTest.java
   (with props)
    
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.html
   (with props)
    
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.java
   (with props)
Modified:
    
wicket/branches/wicket-1.5.x/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java

Modified: 
wicket/branches/wicket-1.5.x/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.5.x/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java?rev=1203373&r1=1203372&r2=1203373&view=diff
==============================================================================
--- 
wicket/branches/wicket-1.5.x/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
 (original)
+++ 
wicket/branches/wicket-1.5.x/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
 Thu Nov 17 21:26:58 2011
@@ -492,25 +492,24 @@ public class Palette<T> extends Panel
         */
        protected final void updateModel()
        {
-               // prepare model
-               modelChanging();
-               Collection<T> model = getModelCollection();
-               model.clear();
-
-               // update model
+               // get the selected choices first, since the available choices 
might depend on the
+               // previously selected objects.
                Iterator<T> it = getRecorderComponent().getSelectedChoices();
 
+               modelChanging();
+
+               Collection<T> collection = getModelCollection();
+               collection.clear();
                while (it.hasNext())
                {
-                       final T selectedChoice = it.next();
-                       model.add(selectedChoice);
+                       collection.add(it.next());
                }
+
                modelChanged();
 
-               // call model.setObject()
                @SuppressWarnings("unchecked")
                IModel<Object> defaultModel = (IModel<Object>)getDefaultModel();
-               defaultModel.setObject(model);
+               defaultModel.setObject(collection);
        }
 
        /**

Added: 
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTest.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTest.java?rev=1203373&view=auto
==============================================================================
--- 
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTest.java
 (added)
+++ 
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTest.java
 Thu Nov 17 21:26:58 2011
@@ -0,0 +1,127 @@
+/*
+ * 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.wicket.extensions.markup.html.form.palette;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.wicket.WicketTestCase;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.model.util.ListModel;
+import org.apache.wicket.util.tester.FormTester;
+import org.junit.Test;
+
+/**
+ * Test for {@link Palette}.
+ */
+public class PaletteTest extends WicketTestCase
+{
+
+       /**
+        */
+       @Test
+       public void standard()
+       {
+               IModel<List<String>> selected = new ListModel<String>(new 
ArrayList<String>(Arrays.asList(
+                       "A", "D")));
+
+               IModel<List<String>> all = new ListModel<String>(new 
ArrayList<String>(Arrays.asList("A",
+                       "B", "C", "D")));
+
+               PaletteTestPage testPage = new PaletteTestPage(selected, all);
+
+               tester.startPage(testPage);
+
+               FormTester formTester = 
tester.newFormTester(testPage.form.getId());
+               formTester.submit();
+
+               Collection<String> collection = 
testPage.palette.getModelCollection();
+
+               assertEquals(2, collection.size());
+               Iterator<String> iterator = collection.iterator();
+               assertEquals("A", iterator.next());
+               assertEquals("D", iterator.next());
+       }
+
+       /**
+        * WICKET-4231 palette with choicesModel missing currently selected
+        */
+       @Test
+       public void choicesModelMissingSelected()
+       {
+               IModel<List<String>> selected = new ListModel<String>(new 
ArrayList<String>(
+                       Arrays.asList("D")));
+
+               IModel<List<String>> all = new ListModel<String>(new 
ArrayList<String>(Arrays.asList("A",
+                       "B", "C")));
+
+               PaletteTestPage testPage = new PaletteTestPage(selected, all);
+
+               tester.startPage(testPage);
+
+               FormTester formTester = 
tester.newFormTester(testPage.form.getId());
+               formTester.submit();
+
+               Collection<String> collection = 
testPage.palette.getModelCollection();
+
+               assertEquals(0, collection.size());
+       }
+
+       /**
+        * WICKET-4231 palette with choicesModel accounting for currently 
selected
+        */
+       @Test
+       public void choicesModelAccountingForSelected()
+       {
+               final List<String> list = new 
ArrayList<String>(Arrays.asList("D"));
+
+               IModel<List<String>> selected = new ListModel<String>(list);
+
+               IModel<List<String>> all = new 
LoadableDetachableModel<List<String>>()
+               {
+                       @Override
+                       protected List<String> load()
+                       {
+                               List<String> fromDB = Arrays.asList("A", "B", 
"C"); // normally coming from DB
+
+                               List<String> result = new ArrayList<String>();
+                               result.addAll(fromDB);
+
+                               // include already selected
+                               result.addAll(list);
+
+                               return result;
+                       }
+               };
+
+               PaletteTestPage testPage = new PaletteTestPage(selected, all);
+
+               tester.startPage(testPage);
+
+               FormTester formTester = 
tester.newFormTester(testPage.form.getId());
+               formTester.submit();
+
+               Collection<String> collection = 
testPage.palette.getModelCollection();
+
+               assertEquals(1, collection.size());
+               assertEquals("D", collection.iterator().next());
+       }
+}

Propchange: 
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.html
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.html?rev=1203373&view=auto
==============================================================================
--- 
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.html
 (added)
+++ 
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.html
 Thu Nov 17 21:26:58 2011
@@ -0,0 +1,9 @@
+<html>
+<head><title>CheckGroupTestPage4</title></head>
+<body>
+       <form wicket:id="form">
+               <div wicket:id="palette">
+               </div>
+       </form>
+</body>
+</html>

Propchange: 
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.html
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.java
URL: 
http://svn.apache.org/viewvc/wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.java?rev=1203373&view=auto
==============================================================================
--- 
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.java
 (added)
+++ 
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.java
 Thu Nov 17 21:26:58 2011
@@ -0,0 +1,63 @@
+/*
+ * 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.wicket.extensions.markup.html.form.palette;
+
+import java.util.List;
+
+import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.IChoiceRenderer;
+import org.apache.wicket.model.IModel;
+
+/**
+ * tests palette
+ */
+public class PaletteTestPage extends WebPage
+{
+
+       private static final long serialVersionUID = 1L;
+
+       public Form<Void> form;
+
+       public Palette<String> palette;
+
+       /**
+        * Constructor
+        */
+       public PaletteTestPage(IModel<List<String>> selected, 
IModel<List<String>> all)
+       {
+               form = new Form<Void>("form");
+               add(form);
+
+               IChoiceRenderer<String> choiceRenderer = new 
IChoiceRenderer<String>()
+               {
+                       public Object getDisplayValue(String s)
+                       {
+                               return s;
+                       }
+
+                       public String getIdValue(String s, int index)
+                       {
+                               return s;
+                       }
+               };
+
+
+               palette = new Palette<String>("palette", selected, all, 
choiceRenderer, 10, true);
+               form.add(palette);
+       }
+}

Propchange: 
wicket/branches/wicket-1.5.x/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to