You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by rw...@apache.org on 2017/12/11 18:27:07 UTC

svn commit: r1817805 - in /pivot/trunk: core/src/org/apache/pivot/beans/BXMLSerializer.java wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarSkin.java

Author: rwhitcomb
Date: Mon Dec 11 18:27:07 2017
New Revision: 1817805

URL: http://svn.apache.org/viewvc?rev=1817805&view=rev
Log:
PIVOT-978, PIVOT-999: The change to TerraCalendarSkin to use NumericSpinnerData
with the proper date range results in a potentially infinite loop resetting the
year value, because the "index" is no longer the year value (the "item" is).
So, we need to change all the year spinner interactions to use the selected
ITEM instead of the INDEX.

Also correct a calculation error in the TerraCalendarButtonSkin painting code
that was chopping off the right side of the date display, caused by the changes
around padding widths.

Add a diagnostic message to one of the exceptions in BXMLSerializer so we
could actually track down this problem.

Modified:
    pivot/trunk/core/src/org/apache/pivot/beans/BXMLSerializer.java
    pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java
    pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarSkin.java

Modified: pivot/trunk/core/src/org/apache/pivot/beans/BXMLSerializer.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/beans/BXMLSerializer.java?rev=1817805&r1=1817804&r2=1817805&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/beans/BXMLSerializer.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/beans/BXMLSerializer.java Mon Dec 11 18:27:07 2017
@@ -845,7 +845,7 @@ public class BXMLSerializer implements S
                         Class<?> type = Class.forName(className, true, classLoader);
                         value = newTypedObject(type);
                     } catch (Throwable exception) {
-                        throw new SerializationException(exception);
+                        throw new SerializationException("Error creating a new '" + className + "' object", exception);
                     }
                 }
             } else {

Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java?rev=1817805&r1=1817804&r2=1817805&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarButtonSkin.java Mon Dec 11 18:27:07 2017
@@ -292,7 +292,7 @@ public class TerraCalendarButtonSkin ext
         Button.DataRenderer dataRenderer = calendarButton.getDataRenderer();
         dataRenderer.render(calendarButton.getButtonData(), calendarButton, false);
         dataRenderer.setSize(
-            Math.max(contentBounds.width - paddingWidth() + 1, 0),
+            Math.max(contentBounds.width - (paddingWidth() - TRIGGER_WIDTH) + 1, 0),
             Math.max(contentBounds.height - paddingHeight() + 1, 0));
 
         Graphics2D contentGraphics = (Graphics2D) graphics.create();
@@ -337,7 +337,7 @@ public class TerraCalendarButtonSkin ext
         triggerGraphics.setPaint(color);
 
         Bounds triggerBounds = new Bounds(Math.max(width - (padding.right + TRIGGER_WIDTH), 0), 0,
-            TRIGGER_WIDTH, Math.max(height - (padding.top - padding.bottom), 0));
+            TRIGGER_WIDTH, Math.max(height - padding.getHeight(), 0));
         int tx = triggerBounds.x + (triggerBounds.width - triggerIconShape.getBounds().width) / 2;
         int ty = triggerBounds.y + (triggerBounds.height - triggerIconShape.getBounds().height) / 2;
         triggerGraphics.translate(tx, ty);

Modified: pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarSkin.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarSkin.java?rev=1817805&r1=1817804&r2=1817805&view=diff
==============================================================================
--- pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarSkin.java (original)
+++ pivot/trunk/wtk-terra/src/org/apache/pivot/wtk/skin/terra/TerraCalendarSkin.java Mon Dec 11 18:27:07 2017
@@ -505,7 +505,7 @@ public class TerraCalendarSkin extends C
                     // result of the user toggling the date button (as opposed
                     // to changing the month or year), clear the selection
                     if (selectedDate == null
-                        || (selectedDate.year == yearSpinner.getSelectedIndex()
+                        || (selectedDate.year == ((Integer)yearSpinner.getSelectedItem()).intValue()
                         && selectedDate.month == monthSpinner.getSelectedIndex())) {
                         calendar.setSelectedDate((CalendarDate) null);
                     }
@@ -546,7 +546,7 @@ public class TerraCalendarSkin extends C
         Calendar calendar = (Calendar) component;
         calendar.add(calendarTablePane);
 
-        yearSpinner.setSelectedIndex(calendar.getYear());
+        yearSpinner.setSelectedItem(Integer.valueOf(calendar.getYear()));
         monthSpinner.setSelectedIndex(calendar.getMonth());
         updateLabels();
         updateCalendar();
@@ -622,7 +622,7 @@ public class TerraCalendarSkin extends C
         Filter<CalendarDate> disabledDateFilter = calendar.getDisabledDateFilter();
 
         monthSpinner.setSelectedIndex(month);
-        yearSpinner.setSelectedIndex(year);
+        yearSpinner.setSelectedItem(Integer.valueOf(year));
 
         // Determine the first and last days of the month
         Locale locale = calendar.getLocale();
@@ -883,7 +883,7 @@ public class TerraCalendarSkin extends C
     // Calendar events
     @Override
     public void yearChanged(Calendar calendar, int previousYear) {
-        yearSpinner.setSelectedIndex(calendar.getYear());
+        yearSpinner.setSelectedItem(Integer.valueOf(calendar.getYear()));
         updateCalendar();
     }