From 0437421147987d998e0ad86294e88bd0c7fab7bc Mon Sep 17 00:00:00 2001 From: Teemu Peltola Date: Tue, 29 Jan 2019 10:24:59 +0200 Subject: [PATCH] Add support for time zone for date filters. --- filteringtable-addon/pom.xml | 4 ++-- .../filtertable/FilterFieldGenerator.java | 11 ++++++++++ .../org/tepi/filtertable/FilterTable.java | 20 +++++++++++++++++++ .../datefilter/DateFilterPopup.java | 17 ++++++++++++++++ pom.xml | 4 ++-- 5 files changed, 52 insertions(+), 4 deletions(-) diff --git a/filteringtable-addon/pom.xml b/filteringtable-addon/pom.xml index eb2d878..4c64a82 100644 --- a/filteringtable-addon/pom.xml +++ b/filteringtable-addon/pom.xml @@ -5,7 +5,7 @@ org.tepi.filtertable filteringtable jar - 1.0.1.v8 + 1.0.2.v8 FilteringTable @@ -147,4 +147,4 @@ - \ No newline at end of file + diff --git a/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterFieldGenerator.java b/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterFieldGenerator.java index 5dad4af..633b438 100644 --- a/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterFieldGenerator.java +++ b/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterFieldGenerator.java @@ -12,6 +12,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.TimeZone; import org.tepi.filtertable.datefilter.DateFilterPopup; import org.tepi.filtertable.datefilter.DateInterval; @@ -59,6 +60,7 @@ class FilterFieldGenerator implements Serializable { private final ValueChangeListener listener = initializeListener(); private boolean runFiltersOnDemand; + private TimeZone timeZone; FilterFieldGenerator(IFilterTable owner) { this.owner = owner; @@ -468,6 +470,7 @@ private AbstractField createBooleanField(Object propertyId) { private DateFilterPopup createDateField(Object propertyId) { DateFilterPopup dateFilterPopup = new DateFilterPopup(owner.getFilterDecorator(), propertyId); + dateFilterPopup.setTimeZone(timeZone); dates.put(dateFilterPopup, propertyId); return dateFilterPopup; } @@ -641,4 +644,12 @@ void setFilterOnDemandMode(boolean filterOnDemand) { initializeFilterFields(); } } + + public TimeZone getTimeZone() { + return timeZone; + } + + public void setTimeZone(TimeZone timeZone) { + this.timeZone = timeZone; + } } diff --git a/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterTable.java b/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterTable.java index 95ad707..37151ac 100644 --- a/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterTable.java +++ b/filteringtable-addon/src/main/java/org/tepi/filtertable/FilterTable.java @@ -6,6 +6,7 @@ import java.util.Iterator; import java.util.Map; import java.util.Set; +import java.util.TimeZone; import org.tepi.filtertable.FilterFieldGenerator.IFilterTable; import org.tepi.filtertable.client.ui.FilterTableConnector; @@ -54,6 +55,8 @@ public class FilterTable extends Table implements IFilterTable { /* Fields from Table accessed via reflection */ private KeyMapper _columnIdMap; private HashSet _visibleComponents; + /* Timezone for date filters */ + private TimeZone timeZone; /** * Creates a new empty FilterTable @@ -510,4 +513,21 @@ public String getColumnHeaderStylename(Object propertyId) { } return columnHeaderStylenames.get(propertyId); } + + /** + * Get TimeZone, used for Date filters + * @return TimeZone of FilterTable + */ + public TimeZone getTimeZone() { + return timeZone; + } + + /** + * Set TimeZone, used for Date filters + * @param timeZone TimeZone of FilterTable + */ + public void setTimeZone(TimeZone timeZone) { + this.timeZone = timeZone; + generator.setTimeZone(timeZone); + } } \ No newline at end of file diff --git a/filteringtable-addon/src/main/java/org/tepi/filtertable/datefilter/DateFilterPopup.java b/filteringtable-addon/src/main/java/org/tepi/filtertable/datefilter/DateFilterPopup.java index cec439a..5142507 100644 --- a/filteringtable-addon/src/main/java/org/tepi/filtertable/datefilter/DateFilterPopup.java +++ b/filteringtable-addon/src/main/java/org/tepi/filtertable/datefilter/DateFilterPopup.java @@ -5,6 +5,7 @@ import java.util.Calendar; import java.util.Date; import java.util.Locale; +import java.util.TimeZone; import org.tepi.filtertable.FilterDecorator; import org.vaadin.hene.popupbutton.PopupButton; @@ -40,6 +41,7 @@ public class DateFilterPopup extends CustomField { protected Button set, clear; private final Object propertyId; private String dateFormatPattern; + private TimeZone timeZone; private static final String DEFAULT_FROM_CAPTION = "From"; private static final String DEFAULT_TO_CAPTION = "To"; @@ -182,6 +184,9 @@ private void updateCaption(boolean nullTheCaption) { } } else { SimpleDateFormat sdf = new SimpleDateFormat(dateFormatPattern); + if (timeZone != null) { + sdf.setTimeZone(timeZone); + } content.setCaption((fromField.getValue() == null ? "" : sdf.format(fromField.getValue())) + " - " + (toField.getValue() == null ? "" : sdf.format(toField.getValue()))); } @@ -279,4 +284,16 @@ public void setReadOnly(boolean readOnly) { fromField.setEnabled(!readOnly); toField.setEnabled(!readOnly); } + + public TimeZone getTimeZone() { + return timeZone; + } + + public void setTimeZone(TimeZone timeZone) { + this.timeZone = timeZone; + if (timeZone != null) { + fromField.setTimeZone(timeZone); + toField.setTimeZone(timeZone); + } + } } \ No newline at end of file diff --git a/pom.xml b/pom.xml index ef5cee2..f1dbd55 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.tepi.filteringtable filteringtable-root pom - 1.0.1.v8 + 1.0.2.v8 FilteringTable Add-on Root Project @@ -17,4 +17,4 @@ filteringtable-demo - \ No newline at end of file +