blob: e9d30b1bdc02f0d2eec4cf13d3d2c344f88f2522 [file] [log] [blame]
/**
*
* 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;
}
}