| /** |
| * |
| * Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation |
| * |
| */ |
| package org.eclipse.osbp.xtext.table.common; |
| |
| import java.io.Serializable; |
| import java.text.DateFormat; |
| import java.text.SimpleDateFormat; |
| import java.util.Locale; |
| |
| import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService; |
| import org.tepi.filtertable.FilterDecorator; |
| import org.tepi.filtertable.numberfilter.NumberFilterPopupConfig; |
| |
| import com.vaadin.server.Resource; |
| import com.vaadin.shared.ui.datefield.Resolution; |
| |
| |
| @SuppressWarnings("serial") |
| public class TableFilterDecorator implements FilterDecorator, Serializable { |
| private String showAll = "show all"; |
| private String endDate = "end date"; |
| private String startDate = "start date"; |
| private String setFilter = "set filter"; |
| private String clearFilter = "clear filter"; |
| private String ltPrompt = "lesser than"; |
| private String gtPrompt = "greater than"; |
| private String eqPrompt = "equal to"; |
| private String okCaption = "ok"; |
| private String resetCaption = "reset"; |
| private String valueMarker = "[x]"; |
| |
| private Locale locale = null; |
| private int textChangeTimeout = 500; |
| private NumberFilterPopupConfig conf = new NumberFilterPopupConfig(); |
| private IDSLMetadataService dslMetadataService; |
| |
| public TableFilterDecorator(IDSLMetadataService dslMetadataService, Locale locale) { |
| this.dslMetadataService = dslMetadataService; |
| this.locale = locale; |
| } |
| |
| public void setTextChangeTimeout(int textChangeTimeout) { |
| this.textChangeTimeout = textChangeTimeout; |
| } |
| |
| public void setLocale(Locale locale) { |
| this.locale = locale; |
| conf.setEqPrompt(dslMetadataService.translate(locale.toLanguageTag(), eqPrompt)); |
| conf.setGtPrompt(dslMetadataService.translate(locale.toLanguageTag(), gtPrompt)); |
| conf.setLtPrompt(dslMetadataService.translate(locale.toLanguageTag(), ltPrompt)); |
| conf.setOkCaption(dslMetadataService.translate(locale.toLanguageTag(), okCaption)); |
| conf.setResetCaption(dslMetadataService.translate(locale.toLanguageTag(), resetCaption)); |
| conf.setValueMarker(dslMetadataService.translate(locale.toLanguageTag(), valueMarker)); |
| } |
| |
| @Override |
| public String getEnumFilterDisplayName(Object propertyId, Object value) { |
| // if ("state".equals(propertyId)) { |
| // State state = (State) value; |
| // switch (state) { |
| // case CREATED: |
| // return "Order has been created"; |
| // case PROCESSING: |
| // return "Order is being processed"; |
| // case PROCESSED: |
| // return "Order has been processed"; |
| // case FINISHED: |
| // return "Order is delivered"; |
| // } |
| // } |
| // returning null will output default value |
| return null; |
| } |
| |
| |
| @Override |
| public Resource getEnumFilterIcon(Object propertyId, Object value) { |
| // if ("state".equals(propertyId)) { |
| // State state = (State) value; |
| // switch (state) { |
| // case CREATED: |
| // return new ThemeResource("../runo/icons/16/document.png"); |
| // case PROCESSING: |
| // return new ThemeResource("../runo/icons/16/reload.png"); |
| // case PROCESSED: |
| // return new ThemeResource("../runo/icons/16/ok.png"); |
| // case FINISHED: |
| // return new ThemeResource("../runo/icons/16/globe.png"); |
| // } |
| // } |
| return null; |
| } |
| |
| |
| @Override |
| public String getBooleanFilterDisplayName(Object propertyId, boolean value) { |
| // if ("validated".equals(propertyId)) { |
| // return value ? "Validated" : "Not validated"; |
| // } |
| // returning null will output default value |
| return null; |
| } |
| |
| |
| @Override |
| public Resource getBooleanFilterIcon(Object propertyId, boolean value) { |
| // if ("validated".equals(propertyId)) { |
| // return value ? new ThemeResource("../runo/icons/16/ok.png") |
| // : new ThemeResource("../runo/icons/16/cancel.png"); |
| // } |
| return null; |
| } |
| |
| |
| @Override |
| public String getFromCaption() { |
| return dslMetadataService.translate(locale.toLanguageTag(), startDate); |
| } |
| |
| |
| @Override |
| public String getToCaption() { |
| return dslMetadataService.translate(locale.toLanguageTag(), endDate); |
| } |
| |
| |
| @Override |
| public String getSetCaption() { |
| return dslMetadataService.translate(locale.toLanguageTag(), setFilter); |
| } |
| |
| |
| @Override |
| public String getClearCaption() { |
| return dslMetadataService.translate(locale.toLanguageTag(), clearFilter); |
| } |
| |
| |
| @Override |
| public boolean isTextFilterImmediate(Object propertyId) { |
| // use text change events for all the text fields |
| return true; |
| } |
| |
| |
| @Override |
| public int getTextChangeTimeout(Object propertyId) { |
| // use the same timeout for all the text fields |
| return textChangeTimeout; |
| } |
| |
| |
| @Override |
| public String getAllItemsVisibleString() { |
| return dslMetadataService.translate(locale.toLanguageTag(), showAll); |
| } |
| |
| |
| @Override |
| public Resolution getDateFieldResolution(Object propertyId) { |
| return Resolution.DAY; |
| } |
| |
| |
| public DateFormat getDateFormat(Object propertyId) { |
| if (locale != null) { |
| return DateFormat.getDateInstance(DateFormat.SHORT, locale); |
| } |
| return DateFormat.getDateInstance(DateFormat.SHORT, new Locale("de", "DE")); |
| } |
| |
| |
| @Override |
| public boolean usePopupForNumericProperty(Object propertyId) { |
| return true; |
| } |
| |
| |
| @Override |
| public String getDateFormatPattern(Object propertyId) { |
| if (locale != null) { |
| DateFormat formatter = DateFormat.getDateInstance(DateFormat.SHORT, locale); |
| String localPattern = ((SimpleDateFormat)formatter).toPattern(); |
| return localPattern; |
| } |
| return null; |
| } |
| |
| |
| @Override |
| public Locale getLocale() { |
| return locale; |
| } |
| |
| |
| @Override |
| public NumberFilterPopupConfig getNumberFilterPopupConfig() { |
| return conf; |
| } |
| } |