diff options
author | Carolyn MacLeod <carolyn> | 2008-03-11 20:14:57 +0000 |
---|---|---|
committer | Carolyn MacLeod <carolyn> | 2008-03-11 20:14:57 +0000 |
commit | 75b697cefdfa964a7ca6f3a975c246c7ed48d218 (patch) | |
tree | 2a14c5480991dd435f8ed473482ce565fef760e1 /bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java | |
parent | b000eddcd9513961ff5fe8c8232c68cdd2a1a403 (diff) | |
download | eclipse.platform.swt-75b697cefdfa964a7ca6f3a975c246c7ed48d218.tar.gz eclipse.platform.swt-75b697cefdfa964a7ca6f3a975c246c7ed48d218.tar.xz eclipse.platform.swt-75b697cefdfa964a7ca6f3a975c246c7ed48d218.zip |
more efficient implementation for 220068 - DateTime must have setValue/getValue and setText/getText
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java index 21b9308c1f..9a99532e93 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java @@ -501,6 +501,12 @@ boolean isValid(int fieldName, int value) { return value >= min && value <= max; } +boolean isValid(int year, int month, int day) { + Calendar valid = Calendar.getInstance(); + valid.set(year, month, day); + return valid.get(Calendar.YEAR) == year && valid.get(Calendar.MONTH) == month && valid.get(Calendar.DAY_OF_MONTH) == day; +} + void incrementField(int amount) { int fieldName = fieldNames[currentField]; int value = calendar.get(fieldName); @@ -845,10 +851,19 @@ void setTextField(int fieldName, int value, boolean commit, boolean adjust) { */ public void setDate (int year, int month, int day) { checkWidget (); - setYear (year); - setDay (1); - setMonth (month); - setDay (day); + if (!isValid(year, month, day)) return; + if ((style & SWT.CALENDAR) != 0) { + this.year = year; + this.month = month; + this.day = day; + OS.gtk_calendar_select_month(handle, month, year); + OS.gtk_calendar_select_day(handle, day); + } else { + calendar.set(Calendar.YEAR, year); + calendar.set(Calendar.MONTH, month); + calendar.set(Calendar.DAY_OF_MONTH, day); + updateControl(); + } } /** @@ -989,9 +1004,19 @@ public void setSeconds (int seconds) { */ public void setTime (int hours, int minutes, int seconds) { checkWidget (); - setHours (hours); - setMinutes (minutes); - setSeconds (seconds); + if (!isValid(Calendar.HOUR_OF_DAY, hours)) return; + if (!isValid(Calendar.MINUTE, minutes)) return; + if (!isValid(Calendar.SECOND, seconds)) return; + if ((style & SWT.CALENDAR) != 0) { + this.hours = hours; + this.minutes = minutes; + this.seconds = seconds; + } else { + calendar.set(Calendar.HOUR_OF_DAY, hours); + calendar.set(Calendar.MINUTE, minutes); + calendar.set(Calendar.SECOND, seconds); + updateControl(); + } } /** |