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
+ }
}