Author: gbrown
Date: Thu Apr 22 13:02:52 2010
New Revision: 936821

URL: http://svn.apache.org/viewvc?rev=936821&view=rev
Log:
Add "year" and "month" properties to CalendarButton.

Modified:
    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/skin/CalendarButtonSkin.java

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=936821&r1=936820&r2=936821&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarButton.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarButton.java Thu Apr 22 
13:02:52 2010
@@ -32,10 +32,23 @@ import org.apache.pivot.wtk.content.Cale
  * is hidden until the user pushes the button.
  */
 public class CalendarButton extends Button {
-    private static class CalendarButtonListenerList
-        extends ListenerList<CalendarButtonListener>
+    private static class CalendarButtonListenerList extends 
ListenerList<CalendarButtonListener>
         implements CalendarButtonListener {
         @Override
+        public void yearChanged(CalendarButton calendarButton, int 
previousYear) {
+            for (CalendarButtonListener listener : this) {
+                listener.yearChanged(calendarButton, previousYear);
+            }
+        }
+
+        @Override
+        public void monthChanged(CalendarButton calendarButton, int 
previousMonth) {
+            for (CalendarButtonListener listener : this) { 
+                listener.monthChanged(calendarButton, previousMonth);
+            }
+        }
+
+        @Override
         public void localeChanged(CalendarButton calendarButton, Locale 
previousLocale) {
             for (CalendarButtonListener listener : this) {
                 listener.localeChanged(calendarButton, previousLocale);
@@ -91,6 +104,9 @@ public class CalendarButton extends Butt
         }
     }
 
+    private int year;
+    private int month;
+    
     private CalendarDate selectedDate = null;
     private Locale locale = Locale.getDefault();
     private Filter<CalendarDate> disabledDateFilter = null;
@@ -113,12 +129,17 @@ public class CalendarButton extends Butt
     private static final Button.DataRenderer DEFAULT_DATA_RENDERER = new 
CalendarButtonDataRenderer();
 
     public CalendarButton() {
-        this(null);
+        this(new CalendarDate());
     }
 
-    public CalendarButton(Object buttonData) {
-        super(buttonData);
+    private CalendarButton(CalendarDate calendarDate) {
+        this(calendarDate.year, calendarDate.month);
+    }
 
+    public CalendarButton(int year, int month) {
+        this.year = year;
+        this.month = month;
+        
         setDataRenderer(DEFAULT_DATA_RENDERER);
         installThemeSkin(CalendarButton.class);
 
@@ -135,6 +156,44 @@ public class CalendarButton extends Butt
     }
 
     /**
+     * Gets the year to which this calendar button is currently set.
+     */
+    public int getYear() {
+        return year;
+    }
+
+    /**
+     * Sets this calendar's year.
+     */
+    public void setYear(int year) {
+        int previousYear = this.year;
+
+        if (previousYear != year) {
+            this.year = year;
+            calendarButtonListeners.yearChanged(this, previousYear);
+        }
+    }
+
+    /**
+     * Gets the month to which this calendar button is currently set.
+     */
+    public int getMonth() {
+        return month;
+    }
+
+    /**
+     * Sets this calendar's month.
+     */
+    public void setMonth(int month) {
+        int previousMonth = this.month;
+
+        if (previousMonth != month) {
+            this.month = month;
+            calendarButtonListeners.monthChanged(this, previousMonth);
+        }
+    }
+
+    /**
      * Returns the currently selected date.
      *
      * @return

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=936821&r1=936820&r2=936821&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarButtonListener.java 
(original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/CalendarButtonListener.java Thu 
Apr 22 13:02:52 2010
@@ -30,6 +30,14 @@ public interface CalendarButtonListener 
      */
     public static class Adapter implements CalendarButtonListener {
         @Override
+        public void yearChanged(CalendarButton calendarButton, int 
previousYear) {
+        }
+
+        @Override
+        public void monthChanged(CalendarButton calendarButton, int 
previousMonth) {
+        }
+        
+        @Override
         public void localeChanged(CalendarButton calendarButton, Locale 
previousLocale) {
         }
 
@@ -40,6 +48,22 @@ public interface CalendarButtonListener 
     }
 
     /**
+     * Called when a calendar button's year value has changed.
+     *
+     * @param calendarButton
+     * @param previousYear
+     */
+    public void yearChanged(CalendarButton calendarButton, int previousYear);
+
+    /**
+     * Called when a calendar button's month value has changed.
+     *
+     * @param calendarButton
+     * @param previousMonth
+     */
+    public void monthChanged(CalendarButton calendarButton, int previousMonth);
+
+    /**
      * Called when a calendar button's locale has changed.
      *
      * @param calendarButton

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=936821&r1=936820&r2=936821&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 
Apr 22 13:02:52 2010
@@ -24,6 +24,7 @@ import org.apache.pivot.wtk.Calendar;
 import org.apache.pivot.wtk.CalendarButton;
 import org.apache.pivot.wtk.CalendarButtonListener;
 import org.apache.pivot.wtk.CalendarButtonSelectionListener;
+import org.apache.pivot.wtk.CalendarListener;
 import org.apache.pivot.wtk.Component;
 import org.apache.pivot.wtk.ComponentKeyListener;
 import org.apache.pivot.wtk.ComponentMouseButtonListener;
@@ -144,6 +145,19 @@ public abstract class CalendarButtonSkin
 
     public CalendarButtonSkin() {
         calendar = new Calendar();
+        calendar.getCalendarListeners().add(new CalendarListener.Adapter() {   
         
+            @Override
+            public void yearChanged(Calendar calendar, int previousYear) {
+                CalendarButton calendarButton = (CalendarButton)getComponent();
+                calendarButton.setYear(calendar.getYear());
+            }
+            
+            @Override
+            public void monthChanged(Calendar calendar, int previousMonth) {
+                CalendarButton calendarButton = (CalendarButton)getComponent();
+                calendarButton.setMonth(calendar.getMonth());
+            }
+        });
 
         calendarPopup = new Window();
         
calendarPopup.getComponentMouseButtonListeners().add(calendarPopupMouseButtonListener);
@@ -260,6 +274,16 @@ public abstract class CalendarButtonSkin
 
     // Calendar button events
     @Override
+    public void yearChanged(CalendarButton calendarButton, int previousYear) {
+        calendar.setYear(calendarButton.getYear());
+    }
+
+    @Override
+    public void monthChanged(CalendarButton calendarButton, int previousMonth) 
{
+        calendar.setMonth(calendarButton.getMonth());
+    }
+
+    @Override
     public void localeChanged(CalendarButton calendarButton, Locale 
previousLocale) {
         calendar.setLocale(calendarButton.getLocale());
     }


Reply via email to