summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java
diff options
context:
space:
mode:
authorCarolyn MacLeod <carolyn>2008-03-11 20:14:57 +0000
committerCarolyn MacLeod <carolyn>2008-03-11 20:14:57 +0000
commit75b697cefdfa964a7ca6f3a975c246c7ed48d218 (patch)
tree2a14c5480991dd435f8ed473482ce565fef760e1 /bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/DateTime.java
parentb000eddcd9513961ff5fe8c8232c68cdd2a1a403 (diff)
downloadeclipse.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.java39
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();
+ }
}
/**