package net.codjo.segmentation.gui.exportParam;
import net.codjo.agent.AgentContainer;
import net.codjo.agent.ContainerFailureException;
import net.codjo.agent.UserId;
import net.codjo.gui.toolkit.util.ErrorDialog;
import net.codjo.mad.gui.framework.GuiContext;
import net.codjo.segmentation.gui.AbstractImportExportInitiatorAgent;
import static net.codjo.segmentation.gui.AbstractImportExportInitiatorAgent.TreatmentType.CLASSIFICATION;
import static net.codjo.segmentation.gui.AbstractImportExportInitiatorAgent.TreatmentType.CLASSIFICATION_STRUCTURE;
import net.codjo.segmentation.gui.exportParam.agent.ExportInitiatorAgent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.SwingUtilities;
/**
*
*/
public class ExportParametersLogic {
private ExportParametersGui gui;
private final GuiContext guiContext;
private final AgentContainer agentContainer;
private final UserId userId;
public ExportParametersLogic(GuiContext guiContext, AgentContainer agentContainer, UserId userId) {
this.guiContext = guiContext;
this.agentContainer = agentContainer;
this.userId = userId;
gui = new ExportParametersGui();
gui.setExportButtonListener(new ExportListener());
}
public ExportParametersGui getGui() {
return gui;
}
private class ExportListener implements ActionListener {
@SuppressWarnings({"InnerClassTooDeeplyNested"})
public void actionPerformed(ActionEvent event) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
gui.getWaitingPanel().startAnimation();
requestFileExport();
}
});
}
private void requestFileExport() {
try {
File file = gui.getExportFile();
AbstractImportExportInitiatorAgent.TreatmentType type = CLASSIFICATION_STRUCTURE;
if (gui.isClassificationSelected()) {
type = CLASSIFICATION;
}
ExportInitiatorAgent agent = new ExportInitiatorAgent(file, type, userId);
agent.addTreatmentProgressListener(gui);
agentContainer.acceptNewAgent("export-initiator", agent).start();
}
catch (ContainerFailureException exception) {
gui.getWaitingPanel().stopAnimation();
ErrorDialog.show(guiContext.getDesktopPane(), exception.getLocalizedMessage(), exception);
}
}
}
}