package org.sigmah.client.ui.view.project.export;
/*
* #%L
* Sigmah
* %%
* Copyright (C) 2010 - 2016 URD
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #L%
*/
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.sigmah.client.i18n.I18N;
import org.sigmah.client.ui.presenter.project.export.ExportProjectsSettingPresenter;
import org.sigmah.client.ui.view.base.AbstractPopupView;
import org.sigmah.client.ui.widget.SimpleComboBoxData;
import org.sigmah.client.ui.widget.ToggleAnchor;
import org.sigmah.client.ui.widget.popup.PopupWidget;
import org.sigmah.shared.dto.ProjectModelDTO;
import org.sigmah.shared.dto.element.DefaultFlexibleElementDTO;
import org.sigmah.shared.dto.element.FlexibleElementDTO;
import org.sigmah.shared.dto.layout.LayoutGroupDTO;
import org.sigmah.shared.dto.referential.DefaultFlexibleElementType;
import org.sigmah.shared.dto.referential.ElementTypeEnum;
import com.extjs.gxt.ui.client.Style.Orientation;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.data.BaseModelData;
import com.extjs.gxt.ui.client.event.BaseEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.FieldEvent;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.Text;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.form.CheckBox;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.form.FormPanel;
import com.extjs.gxt.ui.client.widget.form.LabelField;
import com.extjs.gxt.ui.client.widget.form.Radio;
import com.extjs.gxt.ui.client.widget.form.RadioGroup;
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
import com.extjs.gxt.ui.client.widget.grid.Grid;
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.inject.Singleton;
/**
* @author Mehdi Benabdeslam (mehdi.benabdeslam@netapsys.fr)
*/
@Singleton
public class ExportProjectsSettingView extends AbstractPopupView<PopupWidget> implements ExportProjectsSettingPresenter.View {
private FormPanel panel;
private ListStore<FlexibleElementDTO> fieldsStore;
private ListStore<ProjectModelDTO> modelsStore;
private final Map<Integer, Boolean> fieldsMap;
private ListStore<SimpleComboBoxData> deleteScheduleStore;
private ComboBox<SimpleComboBoxData> deleteSchedulesBox;
private List<SimpleComboBoxData> autoExportSchedules;
private List<SimpleComboBoxData> autoDeleteSchedules;
private List<SimpleComboBoxData> autoExportMonthlySchedules;
private List<SimpleComboBoxData> autoExportWeeklySchedules;
public static Map<Integer, SimpleComboBoxData> exportScheduleMap;
public static Map<Integer, SimpleComboBoxData> deleteScheduleMap;
public static Map<Integer, SimpleComboBoxData> monthScheduleMap;
public static Map<Integer, SimpleComboBoxData> weekScheduleMap;
private Radio calcChoice;
private Radio excelChoice;
private Button saveButton;
private ListStore<SimpleComboBoxData> exportScheduleStore;
private ComboBox<SimpleComboBoxData> exportSchedulesBox;
private ListStore<SimpleComboBoxData> exportMonthlyScheduleStore;
private ComboBox<SimpleComboBoxData> exportMonthlySchedulesBox;
private ListStore<SimpleComboBoxData> exportWeeklyScheduleStore;
private ComboBox<SimpleComboBoxData> exportWeeklySchedulesBox;
public ExportProjectsSettingView() {
super(new PopupWidget(true), 550);
fieldsMap = new HashMap<Integer, Boolean>();
modelsStore = new ListStore<ProjectModelDTO>();
fieldsStore = new ListStore<FlexibleElementDTO>();
}
@Override
public void initialize() {
autoExportSchedules = new ArrayList<SimpleComboBoxData>();
for (Integer value : exportScheduleMap.keySet()) {
autoExportSchedules.add(exportScheduleMap.get(value));
}
autoDeleteSchedules = new ArrayList<SimpleComboBoxData>();
for (Integer value : deleteScheduleMap.keySet()) {
autoDeleteSchedules.add(deleteScheduleMap.get(value));
}
autoExportMonthlySchedules = new ArrayList<SimpleComboBoxData>();
for (Integer value : monthScheduleMap.keySet()) {
autoExportMonthlySchedules.add(monthScheduleMap.get(value));
}
autoExportWeeklySchedules = new ArrayList<SimpleComboBoxData>();
for (Integer value : weekScheduleMap.keySet()) {
autoExportWeeklySchedules.add(weekScheduleMap.get(value));
}
panel = new FormPanel();
panel.setHeaderVisible(false);
FormLayout layout = new FormLayout();
layout.setLabelWidth(150);
panel.setAutoWidth(true);
panel.setAutoHeight(true);
panel.setLayout(layout);
// file format
calcChoice = new Radio();
calcChoice.setBoxLabel(I18N.CONSTANTS.openDocumentSpreadsheet());
calcChoice.setValue(true);
calcChoice.setName("type");
excelChoice = new Radio();
excelChoice.setBoxLabel(I18N.CONSTANTS.msExcel());
excelChoice.setName("type");
RadioGroup radioGroup = new RadioGroup();
radioGroup.setOrientation(Orientation.VERTICAL);
radioGroup.setFieldLabel(I18N.CONSTANTS.chooseFileType());
radioGroup.add(calcChoice);
radioGroup.add(excelChoice);
panel.add(radioGroup);
// configure fields
// project model
Grid<ProjectModelDTO> pModelsGrid = getModelsGrid();
// flex elements
Grid<FlexibleElementDTO> elementsGrid = getElementsGrid();
FlexTable fieldsTable = new FlexTable();
LabelField fildsTableLabel = new LabelField(I18N.CONSTANTS.configureFieldsToExport() + " :");
fildsTableLabel.setWidth(150);
fieldsTable.setWidget(0, 0, fildsTableLabel);
fieldsTable.getFlexCellFormatter().setVerticalAlignment(0, 0, HasVerticalAlignment.ALIGN_TOP);
fieldsTable.setWidget(0, 1, pModelsGrid);
fieldsTable.setWidget(0, 2, elementsGrid);
fieldsTable.getFlexCellFormatter().setVerticalAlignment(0, 1, HasVerticalAlignment.ALIGN_TOP);
fieldsTable.getFlexCellFormatter().setVerticalAlignment(0, 2, HasVerticalAlignment.ALIGN_TOP);
panel.add(fieldsTable);
// auto export schedule
exportScheduleStore = new ListStore<SimpleComboBoxData>();
exportSchedulesBox = new ComboBox<SimpleComboBoxData>();
exportSchedulesBox.setFieldLabel(I18N.CONSTANTS.autoExportSchedule());
exportSchedulesBox.setStore(exportScheduleStore);
exportSchedulesBox.setDisplayField("label");
exportSchedulesBox.setValueField("value");
exportSchedulesBox.setEditable(false);
exportSchedulesBox.setTriggerAction(TriggerAction.ALL);
exportScheduleStore.add(autoExportSchedules);
exportScheduleStore.commitChanges();
exportSchedulesBox.setValue(exportScheduleMap.get(0));
panel.add(exportSchedulesBox);
// auto export monthly schedule
exportMonthlyScheduleStore = new ListStore<SimpleComboBoxData>();
exportMonthlySchedulesBox = new ComboBox<SimpleComboBoxData>();
exportMonthlySchedulesBox.setFieldLabel(I18N.CONSTANTS.dayInMonth());
exportMonthlySchedulesBox.setStore(exportMonthlyScheduleStore);
exportMonthlySchedulesBox.setDisplayField("label");
exportMonthlySchedulesBox.setValueField("value");
exportMonthlySchedulesBox.setEditable(false);
exportMonthlySchedulesBox.setTriggerAction(TriggerAction.ALL);
exportMonthlyScheduleStore.add(autoExportMonthlySchedules);
exportMonthlyScheduleStore.commitChanges();
exportMonthlySchedulesBox.setValue(monthScheduleMap.get(31));
exportMonthlySchedulesBox.hide();
panel.add(exportMonthlySchedulesBox);
// auto export Weekly schedule
exportWeeklyScheduleStore = new ListStore<SimpleComboBoxData>();
exportWeeklySchedulesBox = new ComboBox<SimpleComboBoxData>();
exportWeeklySchedulesBox.setFieldLabel(I18N.CONSTANTS.dayInWeek());
exportWeeklySchedulesBox.setStore(exportWeeklyScheduleStore);
exportWeeklySchedulesBox.setDisplayField("label");
exportWeeklySchedulesBox.setValueField("value");
exportWeeklySchedulesBox.setEditable(false);
exportWeeklySchedulesBox.setTriggerAction(TriggerAction.ALL);
exportWeeklyScheduleStore.add(autoExportWeeklySchedules);
exportWeeklyScheduleStore.commitChanges();
exportWeeklySchedulesBox.setValue(weekScheduleMap.get(61));
exportWeeklySchedulesBox.hide();
panel.add(exportWeeklySchedulesBox);
// auto delete schedule
deleteScheduleStore = new ListStore<SimpleComboBoxData>();
deleteSchedulesBox = new ComboBox<SimpleComboBoxData>();
deleteSchedulesBox.setFieldLabel(I18N.CONSTANTS.autoCleanupSchedule());
deleteSchedulesBox.setStore(deleteScheduleStore);
deleteSchedulesBox.setDisplayField("label");
deleteSchedulesBox.setValueField("value");
deleteSchedulesBox.setEditable(false);
deleteSchedulesBox.setTriggerAction(TriggerAction.ALL);
deleteScheduleStore.add(autoDeleteSchedules);
deleteScheduleStore.commitChanges();
deleteSchedulesBox.setValue(deleteScheduleMap.get(0));
panel.add(deleteSchedulesBox);
// Add onChange handler for exportSchedulesBox
exportSchedulesBox.addListener(Events.Select, new Listener<BaseEvent>() {
@Override
public void handleEvent(BaseEvent be) {
exportMonthlySchedulesBox.hide();
exportWeeklySchedulesBox.hide();
if (exportSchedulesBox.getValue().getValue() == 31) { // Case of Monthly Schedule
exportMonthlySchedulesBox.show();
} else if (exportSchedulesBox.getValue().getValue() == 61) { // Case of Weekly Schedule
exportWeeklySchedulesBox.show();
} else {
// Regular case of every N days
}
}
});
// onChange handler for exportSchedulesBox handled
// button
saveButton = new Button(I18N.CONSTANTS.saveExportConfiguration());
panel.getButtonBar().add(saveButton);
panel.setScrollMode(Scroll.AUTO);
initPopup(panel);
}
private Grid<ProjectModelDTO> getModelsGrid() {
List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
ColumnConfig column = new ColumnConfig("name", I18N.CONSTANTS.adminProjectModelsName(), 150);
column.setRenderer(new GridCellRenderer<ProjectModelDTO>() {
@Override
public Object render(final ProjectModelDTO model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<ProjectModelDTO> store,
Grid<ProjectModelDTO> grid) {
final ToggleAnchor anchor = new ToggleAnchor(model.getName());
anchor.setAnchorMode(true);
anchor.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
fieldsStore.removeAll();
fieldsStore.add(model.getGlobalExportElements());
fieldsStore.commitChanges();
}
});
return anchor;
}
});
configs.add(column);
ColumnModel cm = new ColumnModel(configs);
Grid<ProjectModelDTO> grid = new Grid<ProjectModelDTO>(modelsStore, cm);
grid.setStyleName("global-export-fields-table");
grid.setAutoHeight(true);
grid.setWidth(150);
grid.getView().setForceFit(true);
return grid;
}
private Grid<FlexibleElementDTO> getElementsGrid() {
List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
// checkbox
ColumnConfig column = new ColumnConfig("globallyExportable", I18N.CONSTANTS.export() + "?", 70);
column.setRenderer(new GridCellRenderer<FlexibleElementDTO>() {
@Override
public Object render(final FlexibleElementDTO model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<FlexibleElementDTO> store,
Grid<FlexibleElementDTO> grid) {
final CheckBox gExportable = createCheckBox("globallyExportable", null);
gExportable.setValue(model.getGloballyExportable());
gExportable.addListener(Events.OnClick, new Listener<FieldEvent>() {
@Override
public void handleEvent(FieldEvent be) {
fieldsMap.put(model.getId(), gExportable.getValue());
}
});
return gExportable;
}
});
configs.add(column);
// name
column = new ColumnConfig("label", I18N.CONSTANTS.adminFlexibleName(), 180);
column.setRenderer(new GridCellRenderer<FlexibleElementDTO>() {
@Override
public Object render(FlexibleElementDTO model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<FlexibleElementDTO> store,
Grid<FlexibleElementDTO> grid) {
String title = null;
if (ElementTypeEnum.DEFAULT.equals(model.getElementType())) {
title = DefaultFlexibleElementType.getName(((DefaultFlexibleElementDTO) model).getType());
} else {
title = model.getLabel();
}
final Text text = createGridText(title);
text.setTitle(title);
return text;
}
});
configs.add(column);
column = new ColumnConfig("container", I18N.CONSTANTS.adminFlexibleContainer(), 120);
column.setRenderer(new GridCellRenderer<FlexibleElementDTO>() {
@Override
public Object render(FlexibleElementDTO model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<FlexibleElementDTO> store,
Grid<FlexibleElementDTO> grid) {
BaseModelData container = model.getContainerModel();
return createGridText((String) container.get("name"));
}
});
configs.add(column);
column = new ColumnConfig("group", I18N.CONSTANTS.adminFlexibleGroup(), 200);
column.setRenderer(new GridCellRenderer<FlexibleElementDTO>() {
@Override
public Object render(final FlexibleElementDTO model, String property, ColumnData config, int rowIndex, int colIndex, ListStore<FlexibleElementDTO> store,
Grid<FlexibleElementDTO> grid) {
LayoutGroupDTO group = model.getGroup();
return createGridText((String) group.get("title"));
}
});
configs.add(column);
ColumnModel cm = new ColumnModel(configs);
Grid<FlexibleElementDTO> grid = new Grid<FlexibleElementDTO>(fieldsStore, cm);
grid.setStyleName("global-export-fields-table");
grid.setAutoHeight(true);
grid.setWidth(470);
grid.getView().setForceFit(true);
return grid;
}
@Override
public void clearFrom() {
this.modelsStore.removeAll();
this.fieldsStore.removeAll();
calcChoice.setValue(true);
exportSchedulesBox.clearSelections();
exportMonthlySchedulesBox.clearSelections();
exportWeeklySchedulesBox.clearSelections();
deleteSchedulesBox.clearSelections();
}
private Text createGridText(String content) {
final Text label = new Text(content);
label.addStyleName("label-small");
return label;
}
private CheckBox createCheckBox(String property, String label) {
CheckBox box = new CheckBox();
box.setName(property);
box.setBoxLabel(label);
return box;
}
@Override
public ListStore<FlexibleElementDTO> getFieldsStore() {
return fieldsStore;
}
@Override
public ListStore<ProjectModelDTO> getModelsStore() {
return modelsStore;
}
@Override
public Map<Integer, Boolean> getFieldsMap() {
return fieldsMap;
}
@Override
public List<SimpleComboBoxData> getAutoExportSchedules() {
return autoExportSchedules;
}
@Override
public List<SimpleComboBoxData> getAutoDeleteSchedules() {
return autoDeleteSchedules;
}
@Override
public List<SimpleComboBoxData> getAutoExportMonthlySchedules() {
return autoExportMonthlySchedules;
}
@Override
public List<SimpleComboBoxData> getAutoExportWeeklySchedules() {
return autoExportWeeklySchedules;
}
@Override
public ListStore<SimpleComboBoxData> getDeleteScheduleStore() {
return deleteScheduleStore;
}
@Override
public ComboBox<SimpleComboBoxData> getDeleteSchedulesBox() {
return deleteSchedulesBox;
}
@Override
public FormPanel getPanel() {
return panel;
}
@Override
public Radio getCalcChoice() {
return calcChoice;
}
@Override
public Radio getExcelChoice() {
return excelChoice;
}
@Override
public Button getSaveButton() {
return saveButton;
}
@Override
public ListStore<SimpleComboBoxData> getExportScheduleStore() {
return exportScheduleStore;
}
@Override
public ComboBox<SimpleComboBoxData> getExportSchedulesBox() {
return exportSchedulesBox;
}
@Override
public ListStore<SimpleComboBoxData> getExportMonthlyScheduleStore() {
return exportMonthlyScheduleStore;
}
@Override
public ComboBox<SimpleComboBoxData> getExportMonthlySchedulesBox() {
return exportMonthlySchedulesBox;
}
@Override
public ListStore<SimpleComboBoxData> getExportWeeklyScheduleStore() {
return exportWeeklyScheduleStore;
}
@Override
public ComboBox<SimpleComboBoxData> getExportWeeklySchedulesBox() {
return exportWeeklySchedulesBox;
}
static {
exportScheduleMap = new HashMap<Integer, SimpleComboBoxData>();
exportScheduleMap.put(0, new SimpleComboBoxData(0, I18N.CONSTANTS.notScheduled()));
exportScheduleMap.put(1, new SimpleComboBoxData(1, I18N.CONSTANTS.daily()));
exportScheduleMap.put(3, new SimpleComboBoxData(3, I18N.MESSAGES.everyXDays("3")));
exportScheduleMap.put(9, new SimpleComboBoxData(9, I18N.MESSAGES.everyXDays("9")));
exportScheduleMap.put(15, new SimpleComboBoxData(15, I18N.MESSAGES.everyXDays("15")));
exportScheduleMap.put(31, new SimpleComboBoxData(31, I18N.CONSTANTS.monthly())); // In this case take value from
// monthMap
exportScheduleMap.put(61, new SimpleComboBoxData(61, I18N.CONSTANTS.weekly())); // In this case take value from
// weekMap
// The number space of 31-58 is reserved for month dates in monthyExport settings.
// 31 represents the first day of the month, 32 the second day and so on
// Only 28 days as considered as they are common in every month of the year
monthScheduleMap = new HashMap<Integer, SimpleComboBoxData>();
monthScheduleMap.put(31, new SimpleComboBoxData(31, I18N.CONSTANTS.number_1()));
monthScheduleMap.put(32, new SimpleComboBoxData(32, I18N.CONSTANTS.number_2()));
monthScheduleMap.put(33, new SimpleComboBoxData(33, I18N.CONSTANTS.number_3()));
monthScheduleMap.put(34, new SimpleComboBoxData(34, I18N.CONSTANTS.number_4()));
monthScheduleMap.put(35, new SimpleComboBoxData(35, I18N.CONSTANTS.number_5()));
monthScheduleMap.put(36, new SimpleComboBoxData(36, I18N.CONSTANTS.number_6()));
monthScheduleMap.put(37, new SimpleComboBoxData(37, I18N.CONSTANTS.number_7()));
monthScheduleMap.put(38, new SimpleComboBoxData(38, I18N.CONSTANTS.number_8()));
monthScheduleMap.put(39, new SimpleComboBoxData(39, I18N.CONSTANTS.number_9()));
monthScheduleMap.put(40, new SimpleComboBoxData(40, I18N.CONSTANTS.number_10()));
monthScheduleMap.put(41, new SimpleComboBoxData(41, I18N.CONSTANTS.number_11()));
monthScheduleMap.put(42, new SimpleComboBoxData(42, I18N.CONSTANTS.number_12()));
monthScheduleMap.put(43, new SimpleComboBoxData(43, I18N.CONSTANTS.number_13()));
monthScheduleMap.put(44, new SimpleComboBoxData(44, I18N.CONSTANTS.number_14()));
monthScheduleMap.put(45, new SimpleComboBoxData(45, I18N.CONSTANTS.number_15()));
monthScheduleMap.put(46, new SimpleComboBoxData(46, I18N.CONSTANTS.number_16()));
monthScheduleMap.put(47, new SimpleComboBoxData(47, I18N.CONSTANTS.number_17()));
monthScheduleMap.put(48, new SimpleComboBoxData(48, I18N.CONSTANTS.number_18()));
monthScheduleMap.put(49, new SimpleComboBoxData(49, I18N.CONSTANTS.number_19()));
monthScheduleMap.put(50, new SimpleComboBoxData(50, I18N.CONSTANTS.number_20()));
monthScheduleMap.put(51, new SimpleComboBoxData(51, I18N.CONSTANTS.number_21()));
monthScheduleMap.put(52, new SimpleComboBoxData(52, I18N.CONSTANTS.number_22()));
monthScheduleMap.put(53, new SimpleComboBoxData(53, I18N.CONSTANTS.number_23()));
monthScheduleMap.put(54, new SimpleComboBoxData(54, I18N.CONSTANTS.number_24()));
monthScheduleMap.put(55, new SimpleComboBoxData(55, I18N.CONSTANTS.number_25()));
monthScheduleMap.put(56, new SimpleComboBoxData(56, I18N.CONSTANTS.number_26()));
monthScheduleMap.put(57, new SimpleComboBoxData(57, I18N.CONSTANTS.number_27()));
monthScheduleMap.put(58, new SimpleComboBoxData(58, I18N.CONSTANTS.number_28()));
// The number space 61-67 is reserved to denote weekly export schedule
// 61 represents sunday, 62 monday and so on
weekScheduleMap = new HashMap<Integer, SimpleComboBoxData>();
weekScheduleMap.put(61, new SimpleComboBoxData(61, I18N.CONSTANTS.dayName_1()));
weekScheduleMap.put(62, new SimpleComboBoxData(62, I18N.CONSTANTS.dayName_2()));
weekScheduleMap.put(63, new SimpleComboBoxData(63, I18N.CONSTANTS.dayName_3()));
weekScheduleMap.put(64, new SimpleComboBoxData(64, I18N.CONSTANTS.dayName_4()));
weekScheduleMap.put(65, new SimpleComboBoxData(65, I18N.CONSTANTS.dayName_5()));
weekScheduleMap.put(66, new SimpleComboBoxData(66, I18N.CONSTANTS.dayName_6()));
weekScheduleMap.put(67, new SimpleComboBoxData(67, I18N.CONSTANTS.dayName_7()));
deleteScheduleMap = new HashMap<Integer, SimpleComboBoxData>();
deleteScheduleMap.put(0, new SimpleComboBoxData(0, I18N.CONSTANTS.notScheduled()));
deleteScheduleMap.put(1, new SimpleComboBoxData(1, I18N.MESSAGES.olderThanXMonths("1")));
deleteScheduleMap.put(3, new SimpleComboBoxData(3, I18N.MESSAGES.olderThanXMonths("3")));
deleteScheduleMap.put(6, new SimpleComboBoxData(6, I18N.MESSAGES.olderThanXMonths("6")));
deleteScheduleMap.put(12, new SimpleComboBoxData(12, I18N.MESSAGES.olderThanXMonths("12")));
}
}