package net.codjo.segmentation.gui.exportParam;
import net.codjo.gui.toolkit.path.DirectoryPathField;
import net.codjo.gui.toolkit.util.ErrorDialog;
import net.codjo.gui.toolkit.waiting.WaitingPanel;
import net.codjo.segmentation.gui.ImportExportProgresListener;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
public class ExportParametersGui extends JInternalFrame implements ImportExportProgresListener {
private JButton exportButton;
private JButton cancelButton;
private JPanel mainPanel;
private JRadioButton classificationRadio;
private JRadioButton sleeveRadio;
private DirectoryPathField directoryPathField;
private WaitingPanel waitingPanel = new WaitingPanel();
public ExportParametersGui() {
super("Export de param�trage", true, true, true, true);
initNames();
initListeners();
directoryPathField.getDirectoryNameField().setEditable(true);
setContentPane(mainPanel);
setGlassPane(waitingPanel);
setPreferredSize(new Dimension(800, 150));
}
public void handleInform(String infoMessage) {
getWaitingPanel().stopAnimation();
}
public void handleInform(String[][] quarantine) {
;
}
public void handleError(String errorMessage) {
getWaitingPanel().stopAnimation();
ErrorDialog.show(this, errorMessage, errorMessage);
}
private void initNames() {
directoryPathField.setName("AxeFileName");
cancelButton.setName("cancelButton");
exportButton.setName("exportButton");
classificationRadio.setName("classificationRadio");
sleeveRadio.setName("sleeveRadio");
}
private void initListeners() {
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
dispose();
}
});
directoryPathField.getDirectoryNameField().getDocument()
.addDocumentListener(new ValidDirectoryListener());
}
public void setExportButtonListener(ActionListener listener) {
exportButton.addActionListener(listener);
}
public File getExportFile() {
return directoryPathField.getDirectory();
}
public boolean isClassificationSelected() {
return classificationRadio.isSelected();
}
public WaitingPanel getWaitingPanel() {
return waitingPanel;
}
private class ValidDirectoryListener implements DocumentListener {
public void insertUpdate(DocumentEvent event) {
setEnabledButton();
}
public void removeUpdate(DocumentEvent event) {
setEnabledButton();
}
public void changedUpdate(DocumentEvent event) {
setEnabledButton();
}
private void setEnabledButton() {
JTextField directoryField = directoryPathField.getDirectoryNameField();
File directory = directoryPathField.getDirectory();
if (directory == null) {
exportButton.setEnabled(false);
return;
}
File parentFile = directory.getParentFile();
if (parentFile == null) {
directoryField.setForeground(Color.red);
exportButton.setEnabled(false);
return;
}
boolean mustEnable = parentFile.isDirectory()
&& parentFile.exists()
&& directory.getName().endsWith(".txt");
directoryField.setForeground(mustEnable ? Color.black : Color.red);
exportButton.setEnabled(mustEnable);
}
}
}