package cz.nkp.differ.gui.tabs;
import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Layout;
import com.vaadin.ui.Panel;
import com.vaadin.ui.Table;
import com.vaadin.ui.VerticalLayout;
import cz.nkp.differ.DifferApplication;
import cz.nkp.differ.compare.io.CompareComponent;
import cz.nkp.differ.compare.io.ImageFileAnalysisContainer;
import cz.nkp.differ.compare.io.SerializableImageProcessorResult;
import cz.nkp.differ.compare.io.SerializableImageProcessorResults;
import cz.nkp.differ.gui.windows.MainDifferWindow;
import cz.nkp.differ.io.ResultManager;
import cz.nkp.differ.model.Result;
/**
*
* @author xrosecky
*/
public class ResultManagerTab extends HorizontalLayout {
private MainDifferWindow mainWindow;
private Table resultTable;
private BeanItemContainer<Result> resultContainer = null;
private Button showButton;
private Button reloadButton;
private ResultManager resultManager;
private Layout customViewWrapper;
private Button customLayoutBackButton;
private ResultManagerTab this_internal = this;
public ResultManagerTab(MainDifferWindow window) {
this.mainWindow = window;
resultManager = DifferApplication.getResultManager();
this.setDefaultView();
}
public void setDefaultView() {
HorizontalLayout mainLayout = new HorizontalLayout();
this.addComponent(mainLayout);
resultContainer = new BeanItemContainer<Result>(Result.class, resultManager.getResults());
resultTable = new Table("results", resultContainer);
resultTable.setSelectable(true);
resultTable.setImmediate(true);
resultTable.setMultiSelect(false);
mainLayout.addComponent(resultTable);
VerticalLayout buttonPanelRoot = new VerticalLayout();
Panel panel = new Panel();
panel.addComponent(buttonPanelRoot);
mainLayout.addComponent(panel);
showButton = new Button();
showButton.setCaption("show");
showButton.addListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
if (resultTable.getValue() != null) {
Result result = (Result) resultTable.getValue();
if (result != null) {
try {
HorizontalLayout layout = new HorizontalLayout();
SerializableImageProcessorResults resultsToShow = resultManager.getResult(result);
CompareComponent compareComponent = new CompareComponent();
compareComponent.setApplication(DifferApplication.getCurrentApplication());
for (SerializableImageProcessorResult resultToShow : resultsToShow.getResults()) {
ImageFileAnalysisContainer ifac = new ImageFileAnalysisContainer(resultToShow, compareComponent);
layout.addComponent(ifac.getComponent());
}
this_internal.setCustomView(layout);
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
}
}
});
panel.addComponent(showButton);
reloadButton = new Button();
reloadButton.setCaption("reload");
reloadButton.addListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
this_internal.removeAllComponents();
this_internal.setDefaultView();
}
});
panel.addComponent(reloadButton);
this.setSizeUndefined();
}
public void setCustomView(Layout layout) {
if (customViewWrapper == null) {
customViewWrapper = new VerticalLayout();
customLayoutBackButton = new Button("Back");
customLayoutBackButton.addListener(customViewWrapperBackButtonListener);
}
customViewWrapper.removeAllComponents();
customViewWrapper.addComponent(customLayoutBackButton);
customViewWrapper.addComponent(layout);
customViewWrapper.setSizeUndefined();
this.removeAllComponents();
this.addComponent(customViewWrapper);
this.setSizeUndefined();
}
private Button.ClickListener customViewWrapperBackButtonListener = new Button.ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
this_internal.removeAllComponents();
this_internal.setDefaultView();
}
};
}