package com.constellio.app.modules.robots.ui.components.criteria;
import static com.constellio.app.ui.i18n.i18n.$;
import com.constellio.app.modules.robots.ui.pages.AddEditRobotPresenter;
import com.constellio.app.ui.entities.UserVO;
import com.constellio.app.ui.framework.components.RecordDisplayFactory;
import com.constellio.app.ui.framework.components.SearchResultDetailedTable;
import com.constellio.app.ui.framework.containers.SearchResultContainer;
import com.constellio.app.ui.framework.containers.SearchResultVOLazyContainer;
import com.constellio.app.ui.pages.search.AdvancedSearchCriteriaComponent;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.themes.ValoTheme;
public class SearchResultTableComponent extends CustomComponent {
private AddEditRobotPresenter presenter;
private AdvancedSearchCriteriaComponent component;
private VerticalLayout mainLayout;
private VerticalLayout verticalLayoutTable;
private UserVO currentUserVO;
public SearchResultTableComponent(AddEditRobotPresenter presenter, AdvancedSearchCriteriaComponent component,
UserVO currentUserVO) {
this.presenter = presenter;
this.component = component;
this.currentUserVO = currentUserVO;
buildComponent(presenter);
}
private void buildComponent(final AddEditRobotPresenter presenter) {
mainLayout = new VerticalLayout();
mainLayout.setSpacing(true);
mainLayout.setWidth("100%");
Button testCriterion = new Button($("SearchResultTableComponent.testButtonCaption"));
testCriterion.addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
if (presenter.getSchemaFilter() != null && component.getSearchCriteria() != null && !component.getSearchCriteria()
.isEmpty()) {
buildResultTable();
}
}
});
testCriterion.addStyleName(ValoTheme.BUTTON_ICON_ALIGN_RIGHT);
verticalLayoutTable = new VerticalLayout();
mainLayout.addComponents(testCriterion, verticalLayoutTable);
mainLayout.setComponentAlignment(testCriterion, Alignment.TOP_RIGHT);
setCompositionRoot(mainLayout);
}
private void buildResultTable() {
verticalLayoutTable.removeAllComponents();
SearchResultDetailedTable newTable = new SearchResultDetailedTable(buildResultContainer(), false);
newTable.setWidth("100%");
verticalLayoutTable.addComponents(newTable, newTable.createControls());
}
private SearchResultContainer buildResultContainer() {
RecordDisplayFactory displayFactory = new RecordDisplayFactory(currentUserVO);
SearchResultVOLazyContainer results = new SearchResultVOLazyContainer(
presenter.getSearchResults(component.getSearchCriteria()));
return new SearchResultContainer(results, displayFactory);
}
}