You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by gb...@apache.org on 2010/02/25 19:05:06 UTC

svn commit: r916382 - in /pivot/trunk: tests/src/org/apache/pivot/tests/ wtk-terra/src/org/apache/pivot/wtk/skin/terra/ wtk/src/org/apache/pivot/wtk/ wtk/src/org/apache/pivot/wtk/skin/

Author: gbrown
Date: Thu Feb 25 18:05:06 2010
New Revision: 916382

URL: http://svn.apache.org/viewvc?rev=916382&view=rev
Log:
Add additional bind mapping interfaces for Calendar, CalendarButton, and TextInput.

Modified:
    pivot/trunk/tests/src/org/apache/pivot/tests/TextInputValidatorTest.java
    pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFormSkin.java
    pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTextInputSkin.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/Calendar.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarButton.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarButtonListener.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarListener.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/TextInput.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/TextInputListener.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java
    pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarSkin.java

Modified: pivot/trunk/tests/src/org/apache/pivot/tests/TextInputValidatorTest.java
URL: http://svn.apache.org/viewvc/pivot/trunk/tests/src/org/apache/pivot/tests/TextInputValidatorTest.java?rev=916382&r1=916381&r2=916382&view=diff
==============================================================================
--- pivot/trunk/tests/src/org/apache/pivot/tests/TextInputValidatorTest.java (original)
+++ pivot/trunk/tests/src/org/apache/pivot/tests/TextInputValidatorTest.java Thu Feb 25 18:05:06 2010
@@ -22,7 +22,6 @@
 import org.apache.pivot.wtk.TextInput;
 import org.apache.pivot.wtk.TextInputListener;
 import org.apache.pivot.wtk.Window;
-import org.apache.pivot.wtk.text.TextNode;
 import org.apache.pivot.wtk.text.validation.FloatRangeValidator;
 import org.apache.pivot.wtk.text.validation.IntRangeValidator;
 import org.apache.pivot.wtk.text.validation.RegexTextValidator;
@@ -55,39 +54,11 @@
         textinputFloatRange.setValidator(new FloatRangeValidator(0.3f, 2000f));
 
         // test the listener by updating a label
-        textinputFloatRange.getTextInputListeners().add(new TextInputListener() {
-            @Override
-            public void maximumLengthChanged(TextInput textInput, int previousMaximumLength) {
-            }
-
-            @Override
-            public void passwordChanged(TextInput textInput) {
-            }
-
-            @Override
-            public void promptChanged(TextInput textInput, String previousPrompt) {
-            }
-
-            @Override
-            public void textKeyChanged(TextInput textInput, String previousTextKey) {
-            }
-
-            @Override
-            public void textNodeChanged(TextInput textInput, TextNode previousTextNode) {
-            }
-
-            @Override
-            public void textSizeChanged(TextInput textInput, int previousTextSize) {
-            }
-
+        textinputFloatRange.getTextInputListeners().add(new TextInputListener.Adapter() {
             @Override
             public void textValidChanged(TextInput textInput) {
                 invalidLabel.setText(textInput.isTextValid() ? "valid" : "invalid");
             }
-
-            @Override
-            public void textValidatorChanged(TextInput textInput, Validator validator) {
-            }
         });
 
         invalidLabel = (Label)wtkxSerializer.get("invalidLabel");

Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFormSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFormSkin.java?rev=916382&r1=916381&r2=916382&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFormSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraFormSkin.java Thu Feb 25 18:05:06 2010
@@ -747,7 +747,7 @@
                     label.setVisible(true);
 
                     // Determine the label size and baseline
-                    Dimensions labelSize = new Dimensions(maximumLabelWidth, label.getPreferredHeight());
+                    Dimensions labelSize = label.getPreferredSize();
                     label.setSize(labelSize);
                     int labelAscent = label.getBaseline(labelSize.width, labelSize.height);
                     int labelDescent = labelSize.height - labelAscent;
@@ -777,7 +777,7 @@
                     int rowHeight = maximumAscent + maximumDescent;
 
                     // Position the label
-                    int labelX = padding.left;
+                    int labelX = padding.left + maximumLabelWidth - label.getWidth();
                     if (showFlagIcons) {
                         labelX += (maximumFlagImageWidth + flagIconOffset);
                     }
@@ -786,7 +786,11 @@
                     label.setLocation(labelX, labelY);
 
                     // Position the field
-                    int fieldX = labelX + maximumLabelWidth + horizontalSpacing;
+                    int fieldX = padding.left + maximumLabelWidth + horizontalSpacing;
+                    if (showFlagIcons) {
+                        fieldX += (maximumFlagImageWidth + flagIconOffset);
+                    }
+
                     int fieldY = rowY + (baseline - fieldAscent);
                     field.setLocation(fieldX, fieldY);
 

Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTextInputSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTextInputSkin.java?rev=916382&r1=916381&r2=916382&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTextInputSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraTextInputSkin.java Thu Feb 25 18:05:06 2010
@@ -1357,6 +1357,11 @@
     }
 
     @Override
+    public void bindMappingChanged(TextInput textInput, TextInput.BindMapping previousBindMapping) {
+        // No-op
+    }
+
+    @Override
     public void textValidChanged(TextInput textInput) {
         repaintComponent();
     }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/Calendar.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/Calendar.java?rev=916382&r1=916381&r2=916382&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/Calendar.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/Calendar.java Thu Feb 25 18:05:06 2010
@@ -25,17 +25,34 @@
 import org.apache.pivot.util.Filter;
 import org.apache.pivot.util.ListenerList;
 
-
 /**
  * Component that allows the user to select a date.
  */
 public class Calendar extends Container {
     /**
+     * Translates between calendar date and context data during data binding.
+     */
+    public interface BindMapping {
+        /**
+         * Converts a context value to a calendar date.
+         *
+         * @param value
+         */
+        public CalendarDate toDate(Object value);
+
+        /**
+         * Converts a calendar date to a context value.
+         *
+         * @param calendarDate
+         */
+        public Object valueOf(CalendarDate calendarDate);
+    }
+
+    /**
      * Calendar listener list.
      */
     private static class CalendarListenerList extends ListenerList<CalendarListener>
         implements CalendarListener {
-
         @Override
         public void yearChanged(Calendar calendar, int previousYear) {
             for (CalendarListener listener : this) {
@@ -71,6 +88,13 @@
                 listener.selectedDateKeyChanged(calendar, previousSelectedDateKey);
             }
         }
+
+        @Override
+        public void bindMappingChanged(Calendar calendar, BindMapping previousBindMapping) {
+            for (CalendarListener listener : this) {
+                listener.bindMappingChanged(calendar, previousBindMapping);
+            }
+        }
     }
 
     /**
@@ -96,6 +120,7 @@
     private Locale locale = Locale.getDefault();
     private Filter<CalendarDate> disabledDateFilter = null;
     private String selectedDateKey = null;
+    private BindMapping bindMapping = null;
 
     private CalendarListenerList calendarListeners = new CalendarListenerList();
     private CalendarSelectionListenerList calendarSelectionListeners =
@@ -305,6 +330,19 @@
         }
     }
 
+    public BindMapping getBindMapping() {
+        return bindMapping;
+    }
+
+    public void setBindMapping(BindMapping bindMapping) {
+        BindMapping previousBindMapping = this.bindMapping;
+
+        if (previousBindMapping != bindMapping) {
+            this.bindMapping = bindMapping;
+            calendarListeners.bindMappingChanged(this, previousBindMapping);
+        }
+    }
+
     /**
      * Loads the selected date from the specified bind context using this date
      * picker's bind key, if one is set.
@@ -317,6 +355,8 @@
 
             if (value instanceof CalendarDate) {
                 setSelectedDate((CalendarDate)value);
+            } else if (bindMapping != null) {
+                setSelectedDate(bindMapping.toDate(value));
             } else if (value instanceof String) {
                 setSelectedDate((String)value);
             } else {
@@ -334,7 +374,8 @@
     public void store(Dictionary<String, ?> context) {
         if (isEnabled()
             && selectedDateKey != null) {
-            JSONSerializer.put(context, selectedDateKey, selectedDate);
+            JSONSerializer.put(context, selectedDateKey, (bindMapping == null) ?
+                selectedDate : bindMapping.valueOf(selectedDate));
         }
     }
 

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarButton.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarButton.java?rev=916382&r1=916381&r2=916382&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarButton.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarButton.java Thu Feb 25 18:05:06 2010
@@ -26,7 +26,6 @@
 import org.apache.pivot.util.ListenerList;
 import org.apache.pivot.wtk.content.CalendarButtonDataRenderer;
 
-
 /**
  * A component that allows a user to select a calendar date. The calendar
  * is hidden until the user pushes the button.
@@ -60,6 +59,14 @@
                 listener.selectedDateKeyChanged(calendarButton, previousSelectedDateKey);
             }
         }
+
+        @Override
+        public void bindMappingChanged(CalendarButton calendarButton,
+            Calendar.BindMapping previousBindMapping) {
+            for (CalendarButtonListener listener : this) {
+                listener.bindMappingChanged(calendarButton, previousBindMapping);
+            }
+        }
     }
 
     /**
@@ -82,6 +89,7 @@
     private Locale locale = Locale.getDefault();
     private Filter<CalendarDate> disabledDateFilter = null;
     private String selectedDateKey = null;
+    private Calendar.BindMapping bindMapping = null;
 
     private CalendarButtonListenerList calendarButtonListeners =
         new CalendarButtonListenerList();
@@ -266,6 +274,19 @@
         }
     }
 
+    public Calendar.BindMapping getBindMapping() {
+        return bindMapping;
+    }
+
+    public void setBindMapping(Calendar.BindMapping bindMapping) {
+        Calendar.BindMapping previousBindMapping = this.bindMapping;
+
+        if (previousBindMapping != bindMapping) {
+            this.bindMapping = bindMapping;
+            calendarButtonListeners.bindMappingChanged(this, previousBindMapping);
+        }
+    }
+
     /**
      * Loads the selected date from the specified bind context using this date
      * picker button's bind key, if one is set.
@@ -280,6 +301,8 @@
 
             if (value instanceof CalendarDate) {
                 setSelectedDate((CalendarDate)value);
+            } else if (bindMapping != null) {
+                setSelectedDate(bindMapping.toDate(value));
             } else if (value instanceof String) {
                 setSelectedDate((String)value);
             } else {
@@ -297,7 +320,8 @@
     public void store(Dictionary<String, ?> context) {
         if (isEnabled()
             && selectedDateKey != null) {
-            JSONSerializer.put(context, selectedDateKey, selectedDate);
+            JSONSerializer.put(context, selectedDateKey, (bindMapping == null) ?
+                selectedDate : bindMapping.valueOf(selectedDate));
         }
     }
 

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarButtonListener.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarButtonListener.java?rev=916382&r1=916381&r2=916382&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarButtonListener.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarButtonListener.java Thu Feb 25 18:05:06 2010
@@ -42,6 +42,11 @@
         public void selectedDateKeyChanged(CalendarButton calendarButton,
             String previousSelectedDateKey) {
         }
+
+        @Override
+        public void bindMappingChanged(CalendarButton calendarButton,
+            Calendar.BindMapping previousBindMapping) {
+        }
     }
 
     /**
@@ -69,4 +74,13 @@
      */
     public void selectedDateKeyChanged(CalendarButton calendarButton,
         String previousSelectedDateKey);
+
+    /**
+     * Called when a calendar button's bind mapping has changed.
+     *
+     * @param calendarButton
+     * @param previousBindMapping
+     */
+    public void bindMappingChanged(CalendarButton calendarButton,
+        Calendar.BindMapping previousBindMapping);
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarListener.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarListener.java?rev=916382&r1=916381&r2=916382&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarListener.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarListener.java Thu Feb 25 18:05:06 2010
@@ -46,8 +46,11 @@
         }
 
         @Override
-        public void selectedDateKeyChanged(Calendar calendar,
-            String previousSelectedDateKey) {
+        public void selectedDateKeyChanged(Calendar calendar, String previousSelectedDateKey) {
+        }
+
+        @Override
+        public void bindMappingChanged(Calendar calendar, Calendar.BindMapping previousBindMapping) {
         }
     }
 
@@ -89,6 +92,13 @@
      * @param calendar
      * @param previousSelectedDateKey
      */
-    public void selectedDateKeyChanged(Calendar calendar,
-        String previousSelectedDateKey);
+    public void selectedDateKeyChanged(Calendar calendar, String previousSelectedDateKey);
+
+    /**
+     * Called when a calendar's bind mapping has changed.
+     *
+     * @param calendar
+     * @param previousBindMapping
+     */
+    public void bindMappingChanged(Calendar calendar, Calendar.BindMapping previousBindMapping);
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TextInput.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TextInput.java?rev=916382&r1=916381&r2=916382&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TextInput.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TextInput.java Thu Feb 25 18:05:06 2010
@@ -59,6 +59,18 @@
         public Bounds getCharacterBounds(int offset);
     }
 
+    /**
+     * Translates between text and context data during data binding.
+     */
+    public interface BindMapping {
+        /**
+         * Returns the value that will stored in the bind context.
+         *
+         * @param text
+         */
+        public Object valueOf(String text);
+    }
+
     private static class TextInputListenerList extends ListenerList<TextInputListener>
         implements TextInputListener {
         @Override
@@ -104,6 +116,13 @@
         }
 
         @Override
+        public void bindMappingChanged(TextInput textInput, TextInput.BindMapping previousBindMapping) {
+            for (TextInputListener listener : this) {
+                listener.bindMappingChanged(textInput, previousBindMapping);
+            }
+        }
+
+        @Override
         public void textValidChanged(TextInput textInput) {
             for (TextInputListener listener : this) {
                 listener.textValidChanged(textInput);
@@ -169,6 +188,7 @@
     private String prompt = null;
 
     private String textKey = null;
+    private BindMapping bindMapping = null;
 
     private Validator validator = null;
     private boolean textValid = true;
@@ -695,6 +715,19 @@
         }
     }
 
+    public BindMapping getBindMapping() {
+        return bindMapping;
+    }
+
+    public void setBindMapping(BindMapping bindMapping) {
+        BindMapping previousBindMapping = this.bindMapping;
+
+        if (previousBindMapping != bindMapping) {
+            this.bindMapping = bindMapping;
+            textInputListeners.bindMappingChanged(this, previousBindMapping);
+        }
+    }
+
     @Override
     public void load(Dictionary<String, ?> context) {
         if (textKey != null
@@ -712,7 +745,9 @@
     public void store(Dictionary<String, ?> context) {
         if (isEnabled()
             && textKey != null) {
-            JSONSerializer.put(context, textKey, getText());
+            String text = getText();
+            JSONSerializer.put(context, textKey, (bindMapping == null) ?
+                text : bindMapping.valueOf(text));
         }
     }
 

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TextInputListener.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TextInputListener.java?rev=916382&r1=916381&r2=916382&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/TextInputListener.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TextInputListener.java Thu Feb 25 18:05:06 2010
@@ -52,6 +52,10 @@
         }
 
         @Override
+        public void bindMappingChanged(TextInput textInput, TextInput.BindMapping previousBindMapping) {
+        }
+
+        @Override
         public void textValidChanged(TextInput textInput) {
         }
 
@@ -107,6 +111,14 @@
     public void textKeyChanged(TextInput textInput, String previousTextKey);
 
     /**
+     * Called when a text input's bind mapping has changed.
+     *
+     * @param textInput
+     * @param previousBindMapping
+     */
+    public void bindMappingChanged(TextInput textInput, TextInput.BindMapping previousBindMapping);
+
+    /**
      * Called when the text changes validity.
      *
      * @param textInput

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java?rev=916382&r1=916381&r2=916382&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarButtonSkin.java Thu Feb 25 18:05:06 2010
@@ -291,4 +291,9 @@
             calendar.setMonth(date.month);
         }
     }
+
+    @Override
+    public void bindMappingChanged(CalendarButton calendarButton,
+        Calendar.BindMapping previousBindMapping) {
+    }
 }

Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarSkin.java?rev=916382&r1=916381&r2=916382&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarSkin.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/CalendarSkin.java Thu Feb 25 18:05:06 2010
@@ -41,4 +41,9 @@
         String previousSelectedDateKey) {
         // No-op
     }
+
+    @Override
+    public void bindMappingChanged(Calendar calendar, Calendar.BindMapping previousBindMapping) {
+        // No-op
+    }
 }