Author: ivaynberg
Date: Mon Jun 25 06:54:18 2007
New Revision: 550502

URL: http://svn.apache.org/viewvc?view=rev&rev=550502
Log:
WICKET-636: Get the ability to add some properties to the html "<option>" tag 
for the palette component

Modified:
    
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
    
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/component/AbstractOptions.java
    
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.js

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java?view=diff&rev=550502&r1=550501&r2=550502
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/Palette.java
 Mon Jun 25 06:54:18 2007
@@ -17,6 +17,7 @@
 package org.apache.wicket.extensions.markup.html.form.palette;
 
 import java.util.Collection;
+import java.util.HashMap;
 import java.util.Iterator;
 
 import org.apache.wicket.Component;
@@ -366,9 +367,22 @@
         */
        protected Component newSelectionComponent()
        {
-               return new Selection("selection", this);
+               return new Selection("selection", this) {
+                       private static final long serialVersionUID = 1L;
+
+                       protected HashMap getAdditionalAttributes(Object 
choice) {
+                return 
Palette.this.getAdditionalAttributesForSelection(choice);
+            }
+        };
        }
 
+    /**
+     * @see 
wicket.extensions.markup.html.form.palette.component#getAdditionalAttributes()
+     */
+    protected HashMap getAdditionalAttributesForSelection(Object choice) {
+        return null;
+    }
+       
        /**
         * factory method for the available items component
         * 
@@ -376,9 +390,22 @@
         */
        protected Component newChoicesComponent()
        {
-               return new Choices("choices", this);
+               return new Choices("choices", this) {
+                       private static final long serialVersionUID = 1L;
+
+                       protected HashMap getAdditionalAttributes(Object 
choice) {
+                return Palette.this.getAdditionalAttributesForChoices(choice);
+            }
+        };
        }
 
+    /**
+     * @see 
wicket.extensions.markup.html.form.palette.component#getAdditionalAttributes()
+     */
+    protected HashMap getAdditionalAttributesForChoices(Object choice) {
+        return null;
+    }
+       
        private Component getChoicesComponent()
        {
                return choicesComponent;

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/component/AbstractOptions.java
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/component/AbstractOptions.java?view=diff&rev=550502&r1=550501&r2=550502
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/component/AbstractOptions.java
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/component/AbstractOptions.java
 Mon Jun 25 06:54:18 2007
@@ -16,6 +16,7 @@
  */
 package org.apache.wicket.extensions.markup.html.form.palette.component;
 
+import java.util.HashMap;
 import java.util.Iterator;
 
 import org.apache.wicket.extensions.markup.html.form.palette.Palette;
@@ -81,8 +82,18 @@
                                                  "    
Wicket.Form.excludeFromAjaxSerialization." + this.getMarkupId() + "='true';" +
                                                  
JavascriptUtils.SCRIPT_CLOSE_TAG);
                        
-                       buffer.append("\n<option 
value=\"").append(id).append("\">").append(value).append(
-                                       "</option>");
+            buffer.append("\n<option value=\"").append(id).append("\"");
+            
+            HashMap additionalAttributesMap = getAdditionalAttributes(choice);
+            if(additionalAttributesMap != null) {
+                Iterator iter = additionalAttributesMap.keySet().iterator();
+                while(iter.hasNext()) {
+                    String next = (String)iter.next();
+                    buffer.append(" " + next.toString() + "=\"" + 
additionalAttributesMap.get(next).toString() + "\"");
+                }
+            }
+            
+                       buffer.append(">").append(value).append("</option>");
 
                }
 
@@ -90,6 +101,13 @@
                replaceComponentTagBody(markupStream, openTag, buffer);
        }
 
+    /**
+     * @return map of attribute/value pairs (String/String)
+     */
+    protected HashMap getAdditionalAttributes(Object choice) {
+        return null;
+    }
+       
        /**
         * 
         * @param tag

Modified: 
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.js
URL: 
http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.js?view=diff&rev=550502&r1=550501&r2=550502
==============================================================================
--- 
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.js
 (original)
+++ 
incubator/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/palette/palette.js
 Mon Jun 25 06:54:18 2007
@@ -50,12 +50,8 @@
        function paletteMoveHelper(source, dest) {
                var dirty=false;
                for (var i=0;i<source.options.length;i++) {
-                       if (source.options[i].selected) {
-                               var option=new Option(source.options[i].text, 
source.options[i].value);
-                               var destIndex=dest.options.length;
-                               dest.options[destIndex]=option;
-                               dest.options[destIndex].selected=true;
-                               source.options[i]=null;
+                       if (source.options[i].selected) {       
+                               dest.appendChild(source.options[i]);
                                i--;
                                dirty=true;
                        }
@@ -73,21 +69,13 @@
        }
        
        function paletteMoveUpHelper(box) {
-               var start=0;
                var dirty=false;
-
-               for (start=0;start<box.options.length;start++) {
-                       if (box.options[start].selected==false) {
-                               break;
-                       }
-               }
-               start++;
-
-               for (var i=start;i<box.options.length;i++) {
-                       if (box.options[i].selected) {
-                               paletteSwapHelper(box, i, i-1);
-                               box.options[i-1].selected=true;
-                               dirty=true;
+               for (var i=0;i<box.options.length;i++) {
+                       if (box.options[i].selected && i>0) {
+                               if(!box.options[i-1].selected) {
+                                       
box.insertBefore(box.options[i],box.options[i-1]);
+                                       dirty=true;
+                               }
                        }
                }
                return dirty;
@@ -95,7 +83,6 @@
        
        function paletteMoveDown(choicesId, selectionId, recorderId) {
                var selection=paletteResolve(selectionId);
-               
 
                if (paletteMoveDownHelper(selection)) {
                        var recorder=paletteResolve(recorderId);
@@ -104,36 +91,17 @@
        }
 
        function paletteMoveDownHelper(box) {
-               var start=0;
                var dirty=false;
-
-               for (start=box.options.length-1;start>=0;start--) {
-                       if (box.options[start].selected==false) {
-                               break;
-                       }
-               }
-               start--;
-
-               for (var i=start;i>=0;i--) {
-                       if (box.options[i].selected) {
-                               paletteSwapHelper(box, i, i+1);
-                               box.options[i+1].selected=true;
-                               dirty=true;
+               for (var i=box.options.length-1;i>=0;i--) {
+                       if (box.options[i].selected && i<box.options.length-1) {
+                               if(!box.options[i+1].selected) {
+                                       
box.insertBefore(box.options[i+1],box.options[i]);
+                                       dirty=true;
+                               }
                        }
                }
                return dirty;
-       }
-       
-               
-       function paletteSwapHelper(box, idx1, idx2) {
-               var value1=box.options[idx1].value;
-               var text1=box.options[idx1].text;
-               var value2=box.options[idx2].value;
-               var text2=box.options[idx2].text;
-               box.options[idx1]=new Option(text2, value2);
-               box.options[idx2]=new Option(text1, value1);
-       }
-       
+       }       
        
        function paletteUpdateRecorder(selection, recorder) {
                recorder.value="";
@@ -152,4 +120,3 @@
                        box.options[i].selected=false;
                }       
        }
-       
\ No newline at end of file


Reply via email to