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/19 01:46:20 UTC
svn commit: r911660 - in /pivot/trunk: core/src/org/apache/pivot/collections/
core/src/org/apache/pivot/serialization/
web-server/src/org/apache/pivot/web/server/
wtk-terra/src/org/apache/pivot/wtk/skin/terra/
wtk/src/org/apache/pivot/wtk/ wtk/src/org/...
Author: gbrown
Date: Fri Feb 19 00:46:19 2010
New Revision: 911660
URL: http://svn.apache.org/viewvc?rev=911660&view=rev
Log:
Fix minor bug in HashMap; add support for optionally aligning checkbox and radio button content to baseline; add support for immutable structures to JSONSerializer; scroll menu items to visible when they become active; handle Dictionary values in Component#load(Object) and Component#store(Object).
Modified:
pivot/trunk/core/src/org/apache/pivot/collections/HashMap.java
pivot/trunk/core/src/org/apache/pivot/serialization/JSONSerializer.java
pivot/trunk/web-server/src/org/apache/pivot/web/server/QueryServlet.java
pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCheckboxSkin.java
pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuPopupSkin.java
pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraRadioButtonSkin.java
pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java
pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuItemSkin.java
Modified: pivot/trunk/core/src/org/apache/pivot/collections/HashMap.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/collections/HashMap.java?rev=911660&r1=911659&r2=911660&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/collections/HashMap.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/collections/HashMap.java Fri Feb 19 00:46:19 2010
@@ -357,6 +357,8 @@
}
if (previousBuckets != null) {
+ count = 0;
+
for (LinkedList<Pair<K, V>> bucket : previousBuckets) {
if (bucket != null) {
for (Pair<K, V> entry : bucket) {
Modified: pivot/trunk/core/src/org/apache/pivot/serialization/JSONSerializer.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/serialization/JSONSerializer.java?rev=911660&r1=911659&r2=911660&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/serialization/JSONSerializer.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/serialization/JSONSerializer.java Fri Feb 19 00:46:19 2010
@@ -37,6 +37,8 @@
import org.apache.pivot.collections.List;
import org.apache.pivot.collections.Map;
import org.apache.pivot.collections.Sequence;
+import org.apache.pivot.collections.immutable.ImmutableList;
+import org.apache.pivot.collections.immutable.ImmutableMap;
/**
@@ -44,7 +46,8 @@
* and writes data to a JavaScript Object Notation (JSON) file.
*/
public class JSONSerializer implements Serializer<Object> {
- private Charset charset = null;
+ private Charset charset;
+ private boolean immutable;
private int c = -1;
private boolean alwaysDelimitMapKeys = false;
@@ -55,22 +58,44 @@
public static final int BUFFER_SIZE = 2048;
public JSONSerializer() {
- this(Charset.forName(DEFAULT_CHARSET_NAME));
+ this(Charset.forName(DEFAULT_CHARSET_NAME), false);
}
public JSONSerializer(Charset charset) {
+ this(charset, false);
+ }
+
+ public JSONSerializer(boolean immutable) {
+ this(Charset.forName(DEFAULT_CHARSET_NAME), immutable);
+ }
+
+ public JSONSerializer(Charset charset, boolean immutable) {
if (charset == null) {
throw new IllegalArgumentException("charset is null.");
}
this.charset = charset;
+ this.immutable = immutable;
}
+ /**
+ * Returns the character set used to encode/decode the JSON data.
+ */
public Charset getCharset() {
return charset;
}
/**
+ * Returns the serializer's immutable flag.
+ *
+ * @return
+ * If <tt>true</tt>, all list and map values will be wrapped in an immutable equivalent.
+ */
+ public boolean isImmutable() {
+ return immutable;
+ }
+
+ /**
* Reads data from a JSON stream.
*
* @param inputStream
@@ -386,6 +411,10 @@
// Move to the next character after ']'
c = reader.read();
+ if (immutable) {
+ list = new ImmutableList<Object>(list);
+ }
+
return list;
}
@@ -461,6 +490,10 @@
// Move to the first character after '}'
c = reader.read();
+ if (immutable) {
+ map = new ImmutableMap<String, Object>(map);
+ }
+
return map;
}
Modified: pivot/trunk/web-server/src/org/apache/pivot/web/server/QueryServlet.java
URL: http://svn.apache.org/viewvc/pivot/trunk/web-server/src/org/apache/pivot/web/server/QueryServlet.java?rev=911660&r1=911659&r2=911660&view=diff
==============================================================================
--- pivot/trunk/web-server/src/org/apache/pivot/web/server/QueryServlet.java (original)
+++ pivot/trunk/web-server/src/org/apache/pivot/web/server/QueryServlet.java Fri Feb 19 00:46:19 2010
@@ -299,6 +299,12 @@
// Process the request
super.service(request, response);
+ } catch (IOException exception) {
+ System.err.println(exception);
+ throw exception;
+ } catch (RuntimeException exception) {
+ System.err.println(exception);
+ throw exception;
} finally {
// Clean up any allocated resources
dispose();
Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCheckboxSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCheckboxSkin.java?rev=911660&r1=911659&r2=911660&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCheckboxSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCheckboxSkin.java Fri Feb 19 00:46:19 2010
@@ -45,6 +45,7 @@
private Color color;
private Color disabledColor;
private int spacing;
+ private boolean alignToBaseline;
private Color buttonColor;
private Color buttonBorderColor;
@@ -62,6 +63,7 @@
color = theme.getColor(1);
disabledColor = theme.getColor(7);
spacing = 3;
+ alignToBaseline = true;
buttonColor = theme.getColor(4);
buttonBorderColor = theme.getColor(7);
@@ -154,9 +156,17 @@
int width = getWidth();
int height = getHeight();
+ int baseline = alignToBaseline ? getBaseline(width, height) : -1;
+
// Paint the button
Graphics2D buttonGraphics = (Graphics2D)graphics.create();
- paintButton(buttonGraphics, checkbox, height);
+ if (baseline == -1) {
+ buttonGraphics.translate(0, (height - CHECKBOX_SIZE) / 2);
+ } else {
+ buttonGraphics.translate(0, (baseline - CHECKBOX_SIZE + 3));
+ }
+
+ paintButton(buttonGraphics, checkbox.isEnabled(), checkbox.getState());
buttonGraphics.dispose();
// Paint the content
@@ -187,12 +197,12 @@
}
}
- private void paintButton(Graphics2D graphics, Checkbox checkbox, int height) {
+ private void paintButton(Graphics2D graphics, boolean enabled, Button.State state) {
Paint buttonPaint;
Color buttonBorderColor;
Color buttonSelectionColor;
- if (checkbox.isEnabled()) {
+ if (enabled) {
buttonPaint = new GradientPaint(CHECKBOX_SIZE / 2, 0, TerraTheme.darken(buttonColor),
CHECKBOX_SIZE / 2, CHECKBOX_SIZE, buttonColor);
buttonBorderColor = this.buttonBorderColor;
@@ -203,9 +213,6 @@
buttonSelectionColor = disabledButtonSelectionColor;
}
- // Center the button vertically
- graphics.translate(0, (height - CHECKBOX_SIZE) / 2);
-
// Paint the background
graphics.setPaint(buttonPaint);
graphics.fillRect(0, 0, CHECKBOX_SIZE, CHECKBOX_SIZE);
@@ -218,13 +225,10 @@
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
- Button.State state = checkbox.getState();
-
if (state == Button.State.SELECTED) {
graphics.setColor(buttonSelectionColor);
graphics.setStroke(new BasicStroke(2.5f));
-
// Draw a checkmark
int n = CHECKMARK_SIZE / 2;
int m = CHECKMARK_SIZE / 4;
@@ -343,4 +347,13 @@
setSpacing(spacing.intValue());
}
+
+ public boolean getAlignToBaseline() {
+ return alignToBaseline;
+ }
+
+ public void setAlignToBaseline(boolean alignToBaseline) {
+ this.alignToBaseline = alignToBaseline;
+ repaintComponent();
+ }
}
Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuPopupSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuPopupSkin.java?rev=911660&r1=911659&r2=911660&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuPopupSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraMenuPopupSkin.java Fri Feb 19 00:46:19 2010
@@ -210,6 +210,8 @@
menu.requestFocus();
}
+ panorama.setScrollTop(0);
+
if (menuPopup.isContextMenu()) {
ApplicationContext.queueCallback(new RepositionCallback());
}
Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraRadioButtonSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraRadioButtonSkin.java?rev=911660&r1=911659&r2=911660&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraRadioButtonSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraRadioButtonSkin.java Fri Feb 19 00:46:19 2010
@@ -45,6 +45,7 @@
private Color color;
private Color disabledColor;
private int spacing;
+ private boolean alignToBaseline;
private Color buttonColor;
private Color buttonBorderColor;
@@ -62,6 +63,7 @@
color = theme.getColor(1);
disabledColor = theme.getColor(7);
spacing = 3;
+ alignToBaseline = true;
buttonColor = theme.getColor(4);
buttonBorderColor = theme.getColor(7);
@@ -140,9 +142,17 @@
int width = getWidth();
int height = getHeight();
+ int baseline = alignToBaseline ? getBaseline(width, height) : -1;
+
// Paint the button
Graphics2D buttonGraphics = (Graphics2D)graphics.create();
- paintButton(buttonGraphics, radioButton, height);
+ if (baseline == -1) {
+ graphics.translate(0, (height - BUTTON_DIAMETER) / 2);
+ } else {
+ buttonGraphics.translate(0, (baseline - BUTTON_DIAMETER + 3));
+ }
+
+ paintButton(buttonGraphics, radioButton.isEnabled(), radioButton.isSelected());
buttonGraphics.dispose();
// Paint the content
@@ -173,7 +183,7 @@
}
}
- private void paintButton(Graphics2D graphics, RadioButton radioButton, int height) {
+ private void paintButton(Graphics2D graphics, boolean enabled, boolean selected) {
Paint buttonPaint;
Color buttonBorderColor = null;
Color buttonSelectionColor = null;
@@ -181,7 +191,7 @@
Ellipse2D buttonBackgroundCircle = new Ellipse2D.Double(1, 1,
BUTTON_DIAMETER - 3, BUTTON_DIAMETER - 3);
- if (radioButton.isEnabled()) {
+ if (enabled) {
buttonPaint = new RadialGradientPaint((float)buttonBackgroundCircle.getCenterX(),
(float)buttonBackgroundCircle.getCenterY(),
(float)buttonBackgroundCircle.getWidth() * 2 / 3,
@@ -198,9 +208,6 @@
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
- // Center the button vertically
- graphics.translate(0, (height - BUTTON_DIAMETER) / 2);
-
// Paint the border
graphics.setColor(buttonBorderColor);
graphics.fillOval(0, 0, BUTTON_DIAMETER - 1, BUTTON_DIAMETER - 1);
@@ -210,7 +217,7 @@
graphics.fill(buttonBackgroundCircle);
// Paint the selection
- if (radioButton.isSelected()) {
+ if (selected) {
Ellipse2D buttonSelectionCircle = new Ellipse2D.Double((BUTTON_DIAMETER
- (BUTTON_SELECTION_DIAMETER - 1)) / 2,
(BUTTON_DIAMETER - (BUTTON_SELECTION_DIAMETER - 1)) / 2,
@@ -310,4 +317,13 @@
setSpacing(spacing.intValue());
}
+
+ public boolean getAlignToBaseline() {
+ return alignToBaseline;
+ }
+
+ public void setAlignToBaseline(boolean alignToBaseline) {
+ this.alignToBaseline = alignToBaseline;
+ repaintComponent();
+ }
}
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java?rev=911660&r1=911659&r2=911660&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/Component.java Fri Feb 19 00:46:19 2010
@@ -2362,12 +2362,14 @@
/**
* Copies bound values from the bind context to the component by converting
- * the given context to a bean dictionary.
+ * the given context to a bean dictionary, if necessary.
*
* @param context
*/
+ @SuppressWarnings("unchecked")
public final void load(Object context) {
- load(new BeanDictionary(context));
+ load((context instanceof Dictionary<?, ?>) ?
+ (Dictionary<String, ?>)context : new BeanDictionary(context));
}
/**
@@ -2382,12 +2384,14 @@
/**
* Copies bound values from the component to the bind context by converting
- * the given context to a bean dictionary.
+ * the given context to a bean dictionary, if necessary.
*
* @param context
*/
+ @SuppressWarnings("unchecked")
public final void store(Object context) {
- store(new BeanDictionary(context));
+ store((context instanceof Dictionary<?, ?>) ?
+ (Dictionary<String, ?>)context : new BeanDictionary(context));
}
/**
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuItemSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuItemSkin.java?rev=911660&r1=911659&r2=911660&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuItemSkin.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/MenuItemSkin.java Fri Feb 19 00:46:19 2010
@@ -183,7 +183,9 @@
@Override
public void activeChanged(Menu.Item menuItem) {
- if (!menuItem.isActive()) {
+ if (menuItem.isActive()) {
+ menuItem.scrollAreaToVisible(0, 0, menuItem.getWidth(), menuItem.getHeight());
+ } else {
menuPopup.close(true);
}