private TaskGroupPredicate createPredicate() {
        List<FilterPair> listFilters = (List<FilterPair>) bdFilters
                .getSelectedElements();
        Date startDate = filterStartDate.getValue();
        Date finishDate = filterFinishDate.getValue();
        Boolean includeOrderElements = checkIncludeOrderElements.isChecked();

        if (startDate == null && finishDate == null) {
            TaskGroupPredicate predicate = model
                    .getDefaultPredicate(includeOrderElements);
            //show filter dates calculated by default on screen
            if (model.getFilterStartDate() != null
                    && !FilterUtils.hasProjectsStartDateChanged()) {
                filterStartDate.setValue(model.getFilterStartDate());
            }
            if (model.getFilterFinishDate() != null
                    && !FilterUtils.hasProjectsEndDateChanged()) {
                filterFinishDate.setValue(model.getFilterFinishDate());
            }
            predicate.setFilters(listFilters);
            return predicate;
        }
        return new TaskGroupPredicate(listFilters, startDate, finishDate,
                includeOrderElements);
    }