package net.codjo.segmentation.gui.importParam; import net.codjo.agent.AgentContainer; import net.codjo.agent.UserId; import net.codjo.gui.toolkit.util.ErrorDialog; import net.codjo.mad.gui.framework.GuiContext; import net.codjo.mad.gui.request.Preference; import static net.codjo.mad.gui.request.PreferenceFactory.getPreference; 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.importParam.agent.ImportInitiatorAgent; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.SwingUtilities; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; public class ImportParametersLogic { private ImportParametersGui gui; private final GuiContext guiContext; private final AgentContainer agentContainer; private final UserId userId; public ImportParametersLogic(GuiContext guiContext, AgentContainer agentContainer, UserId userId) { this.guiContext = guiContext; this.agentContainer = agentContainer; this.userId = userId; Preference classification = getPreference("ImportClassificationParameters"); Preference sleeve = getPreference("ImportSleeveParameters"); gui = new ImportParametersGui(guiContext, classification, sleeve); gui.setImportButtonListener(new ImportListener()); gui.setValidFileListener(new ValidFileListener()); } public ImportParametersGui getGui() { return gui; } private class ImportListener implements ActionListener { @SuppressWarnings({"InnerClassTooDeeplyNested"}) public void actionPerformed(ActionEvent event) { SwingUtilities.invokeLater(new Runnable() { public void run() { requestFileImport(); } }); } private void requestFileImport() { try { gui.getWaitingPanel().startAnimation(); File file = gui.getImportFilePathField().getFile(); AbstractImportExportInitiatorAgent.TreatmentType type = CLASSIFICATION_STRUCTURE; if (gui.isClassificationSelected()) { type = CLASSIFICATION; } ImportInitiatorAgent agent = new ImportInitiatorAgent(file, type, userId); agent.addTreatmentProgressListener(gui); agentContainer.acceptNewAgent("import-initiator", agent).start(); } catch (Exception exception) { gui.getWaitingPanel().stopAnimation(); ErrorDialog.show(guiContext.getDesktopPane(), exception.getLocalizedMessage(), exception); } } } private class ValidFileListener implements DocumentListener { public void insertUpdate(DocumentEvent event) { setEnabledButton(); } public void removeUpdate(DocumentEvent event) { setEnabledButton(); } public void changedUpdate(DocumentEvent event) { setEnabledButton(); } private void setEnabledButton() { gui.setEnabledImportButton(gui.getImportFilePathField().isValid()); } } }