Example usage for com.vaadin.v7.ui PopupDateField PopupDateField

List of usage examples for com.vaadin.v7.ui PopupDateField PopupDateField

Introduction

In this page you can find the example usage for com.vaadin.v7.ui PopupDateField PopupDateField.

Prototype

public PopupDateField() 

Source Link

Usage

From source file:de.symeda.sormas.ui.utils.EpiWeekAndDateFilterComponent.java

License:Open Source License

public EpiWeekAndDateFilterComponent(Button applyButton, boolean fillAutomatically, boolean showCaption,
        String infoText, Class<E> dateType, String dateTypePrompt, Enum<E> defaultDateType) {
    setSpacing(true);/*from  ww w.  j a  va2  s .c  o m*/

    Calendar c = Calendar.getInstance();
    c.setTime(new Date());

    dateFilterOptionFilter = new ComboBox();
    dateTypeSelector = new ComboBox();
    weekFromFilter = new ComboBox();
    weekToFilter = new ComboBox();
    dateFromFilter = new PopupDateField();
    dateToFilter = new PopupDateField();

    // Date filter options
    dateFilterOptionFilter.setWidth(200, Unit.PIXELS);
    dateFilterOptionFilter.addItems((Object[]) DateFilterOption.values());
    dateFilterOptionFilter.setNullSelectionAllowed(false);
    dateFilterOptionFilter.select(DateFilterOption.EPI_WEEK);
    if (showCaption) {
        CssStyles.style(dateFilterOptionFilter, CssStyles.FORCE_CAPTION);
    }

    dateFilterOptionFilter.addValueChangeListener(e -> {
        if (e.getProperty().getValue() == DateFilterOption.DATE) {
            int newIndex = getComponentIndex(weekFromFilter);
            removeComponent(weekFromFilter);
            removeComponent(weekToFilter);
            addComponent(dateFromFilter, newIndex);
            addComponent(dateToFilter, newIndex + 1);

            if (fillAutomatically) {
                dateFromFilter.setValue(DateHelper.subtractDays(c.getTime(), 7));
            }
            if (fillAutomatically) {
                dateToFilter.setValue(c.getTime());
            }
        } else {
            int newIndex = getComponentIndex(dateFromFilter);
            removeComponent(dateFromFilter);
            removeComponent(dateToFilter);
            addComponent(weekFromFilter, newIndex);
            addComponent(weekToFilter, newIndex + 1);

            if (fillAutomatically) {
                weekFromFilter.setValue(DateHelper.getEpiWeek(c.getTime()));
            }
            if (fillAutomatically) {
                weekToFilter.setValue(DateHelper.getEpiWeek(c.getTime()));
            }
        }
    });
    addComponent(dateFilterOptionFilter);

    // New case date type selector
    if (dateType != null) {
        dateTypeSelector.setWidth(200, Unit.PIXELS);
        dateTypeSelector.addItems((Object[]) dateType.getEnumConstants());
        if (dateTypePrompt != null) {
            dateTypeSelector.setInputPrompt(dateTypePrompt);
        }
        if (defaultDateType != null) {
            dateTypeSelector.select(defaultDateType);
        }
        if (showCaption) {
            CssStyles.style(dateTypeSelector, CssStyles.FORCE_CAPTION);
        }
        addComponent(dateTypeSelector);

        if (!StringUtils.isEmpty(infoText)) {
            Label infoLabel = new Label(VaadinIcons.INFO_CIRCLE.getHtml(), ContentMode.HTML);
            infoLabel.setSizeUndefined();
            infoLabel.setDescription(infoText);
            CssStyles.style(infoLabel, CssStyles.LABEL_XLARGE, CssStyles.LABEL_SECONDARY);
            addComponent(infoLabel);
        }
    }

    // Epi week filter
    List<EpiWeek> epiWeekList = DateHelper.createEpiWeekList(c.get(Calendar.YEAR),
            c.get(Calendar.WEEK_OF_YEAR));

    weekFromFilter.setWidth(200, Unit.PIXELS);
    for (EpiWeek week : epiWeekList) {
        weekFromFilter.addItem(week);
    }
    weekFromFilter.setNullSelectionAllowed(false);
    if (fillAutomatically) {
        weekFromFilter.setValue(DateHelper.getEpiWeek(c.getTime()));
    }
    if (showCaption) {
        weekFromFilter.setCaption(I18nProperties.getCaption(Captions.epiWeekFrom));
    }
    if (applyButton != null) {
        weekFromFilter.addValueChangeListener(e -> {
            applyButton.addStyleName(ValoTheme.BUTTON_PRIMARY);
        });
    }
    addComponent(weekFromFilter);

    weekToFilter.setWidth(200, Unit.PIXELS);
    for (EpiWeek week : epiWeekList) {
        weekToFilter.addItem(week);
    }
    weekToFilter.setNullSelectionAllowed(false);
    if (fillAutomatically) {
        weekToFilter.setValue(DateHelper.getEpiWeek(c.getTime()));
    }
    if (showCaption) {
        weekToFilter.setCaption(I18nProperties.getCaption(Captions.epiWeekTo));
    }
    if (applyButton != null) {
        weekToFilter.addValueChangeListener(e -> {
            applyButton.addStyleName(ValoTheme.BUTTON_PRIMARY);
        });
    }
    addComponent(weekToFilter);

    // Date filter
    dateFromFilter.setWidth(200, Unit.PIXELS);
    if (showCaption) {
        dateFromFilter.setCaption(I18nProperties.getCaption(Captions.from));
    }
    if (applyButton != null) {
        dateFromFilter.addValueChangeListener(e -> {
            applyButton.addStyleName(ValoTheme.BUTTON_PRIMARY);
        });
    }

    dateToFilter.setWidth(200, Unit.PIXELS);
    if (showCaption) {
        dateToFilter.setCaption(I18nProperties.getCaption(Captions.to));
    }
    if (applyButton != null) {
        dateToFilter.addValueChangeListener(e -> {
            applyButton.addStyleName(ValoTheme.BUTTON_PRIMARY);
        });
    }
}