📄 simplesetuppanel.java
字号:
/**
* Sets the experiment to configure.
*
* @param exp a value of type 'Experiment'
* @return true if experiment could be configured, false otherwise
*/
public boolean setExperiment(Experiment exp) {
m_userHasBeenAskedAboutConversion = false;
m_Exp = null; // hold off until we are sure we want conversion
m_SaveBut.setEnabled(true);
if (exp.getResultListener() instanceof DatabaseResultListener) {
m_ResultsDestinationCBox.setSelectedItem(DEST_DATABASE_TEXT);
m_ResultsDestinationPathLabel.setText("URL:");
m_destinationDatabaseURL = ((DatabaseResultListener)exp.getResultListener()).getDatabaseURL();
m_ResultsDestinationPathTField.setText(m_destinationDatabaseURL);
m_BrowseDestinationButton.setEnabled(true);
} else if (exp.getResultListener() instanceof InstancesResultListener) {
m_ResultsDestinationCBox.setSelectedItem(DEST_ARFF_TEXT);
m_ResultsDestinationPathLabel.setText("Filename:");
m_destinationFilename = ((InstancesResultListener)exp.getResultListener()).outputFileName();
m_ResultsDestinationPathTField.setText(m_destinationFilename);
m_BrowseDestinationButton.setEnabled(true);
} else if (exp.getResultListener() instanceof CSVResultListener) {
m_ResultsDestinationCBox.setSelectedItem(DEST_CSV_TEXT);
m_ResultsDestinationPathLabel.setText("Filename:");
m_destinationFilename = ((CSVResultListener)exp.getResultListener()).outputFileName();
m_ResultsDestinationPathTField.setText(m_destinationFilename);
m_BrowseDestinationButton.setEnabled(true);
} else {
// unrecognised result listener
System.out.println("SimpleSetup incompatibility: unrecognised result destination");
if (userWantsToConvert()) {
m_ResultsDestinationCBox.setSelectedItem(DEST_ARFF_TEXT);
m_ResultsDestinationPathLabel.setText("Filename:");
m_destinationFilename = "";
m_ResultsDestinationPathTField.setText(m_destinationFilename);
m_BrowseDestinationButton.setEnabled(true);
} else {
return false;
}
}
m_ResultsDestinationCBox.setEnabled(true);
m_ResultsDestinationPathLabel.setEnabled(true);
m_ResultsDestinationPathTField.setEnabled(true);
if (exp.getResultProducer() instanceof CrossValidationResultProducer) {
CrossValidationResultProducer cvrp = (CrossValidationResultProducer) exp.getResultProducer();
m_numFolds = cvrp.getNumFolds();
m_ExperimentParameterTField.setText("" + m_numFolds);
if (cvrp.getSplitEvaluator() instanceof ClassifierSplitEvaluator) {
m_ExpClassificationRBut.setSelected(true);
m_ExpRegressionRBut.setSelected(false);
} else if (cvrp.getSplitEvaluator() instanceof RegressionSplitEvaluator) {
m_ExpClassificationRBut.setSelected(false);
m_ExpRegressionRBut.setSelected(true);
} else {
// unknown split evaluator
System.out.println("SimpleSetup incompatibility: unrecognised split evaluator");
if (userWantsToConvert()) {
m_ExpClassificationRBut.setSelected(true);
m_ExpRegressionRBut.setSelected(false);
} else {
return false;
}
}
m_ExperimentTypeCBox.setSelectedItem(TYPE_CROSSVALIDATION_TEXT);
} else if (exp.getResultProducer() instanceof RandomSplitResultProducer) {
RandomSplitResultProducer rsrp = (RandomSplitResultProducer) exp.getResultProducer();
if (rsrp.getRandomizeData()) {
m_ExperimentTypeCBox.setSelectedItem(TYPE_RANDOMSPLIT_TEXT);
} else {
m_ExperimentTypeCBox.setSelectedItem(TYPE_FIXEDSPLIT_TEXT);
}
if (rsrp.getSplitEvaluator() instanceof ClassifierSplitEvaluator) {
m_ExpClassificationRBut.setSelected(true);
m_ExpRegressionRBut.setSelected(false);
} else if (rsrp.getSplitEvaluator() instanceof RegressionSplitEvaluator) {
m_ExpClassificationRBut.setSelected(false);
m_ExpRegressionRBut.setSelected(true);
} else {
// unknown split evaluator
System.out.println("SimpleSetup incompatibility: unrecognised split evaluator");
if (userWantsToConvert()) {
m_ExpClassificationRBut.setSelected(true);
m_ExpRegressionRBut.setSelected(false);
} else {
return false;
}
}
m_trainPercent = rsrp.getTrainPercent();
m_ExperimentParameterTField.setText("" + m_trainPercent);
} else {
// unknown experiment type
System.out.println("SimpleSetup incompatibility: unrecognised resultProducer");
if (userWantsToConvert()) {
m_ExperimentTypeCBox.setSelectedItem(TYPE_CROSSVALIDATION_TEXT);
m_ExpClassificationRBut.setSelected(true);
m_ExpRegressionRBut.setSelected(false);
} else {
return false;
}
}
m_ExperimentTypeCBox.setEnabled(true);
m_ExperimentParameterLabel.setEnabled(true);
m_ExperimentParameterTField.setEnabled(true);
m_ExpClassificationRBut.setEnabled(true);
m_ExpRegressionRBut.setEnabled(true);
if (exp.getRunLower() == 1) {
m_numRepetitions = exp.getRunUpper();
m_NumberOfRepetitionsTField.setText("" + m_numRepetitions);
} else {
// unsupported iterations
System.out.println("SimpleSetup incompatibility: runLower is not 1");
if (userWantsToConvert()) {
exp.setRunLower(1);
if (m_ExperimentTypeCBox.getSelectedItem() == TYPE_FIXEDSPLIT_TEXT) {
exp.setRunUpper(1);
m_NumberOfRepetitionsTField.setEnabled(false);
m_NumberOfRepetitionsTField.setText("1");
} else {
exp.setRunUpper(10);
m_numRepetitions = 10;
m_NumberOfRepetitionsTField.setText("" + m_numRepetitions);
}
} else {
return false;
}
}
m_NumberOfRepetitionsTField.setEnabled(true);
m_OrderDatasetsFirstRBut.setSelected(exp.getAdvanceDataSetFirst());
m_OrderAlgorithmsFirstRBut.setSelected(!exp.getAdvanceDataSetFirst());
m_OrderDatasetsFirstRBut.setEnabled(true);
m_OrderAlgorithmsFirstRBut.setEnabled(true);
m_NotesText.setText(exp.getNotes());
m_NotesButton.setEnabled(true);
if (!exp.getUsePropertyIterator() || !(exp.getPropertyArray() instanceof Classifier[])) {
// unknown property iteration
System.out.println("SimpleSetup incompatibility: unrecognised property iteration");
if (userWantsToConvert()) {
exp.setPropertyArray(new Classifier[0]);
exp.setUsePropertyIterator(true);
} else {
return false;
}
}
m_DatasetListPanel.setExperiment(exp);
m_AlgorithmListPanel.setExperiment(exp);
m_Exp = exp;
expTypeChanged(); // recreate experiment
m_Support.firePropertyChange("", null, null);
return true;
}
/**
* Gets the currently configured experiment.
*
* @return the currently configured experiment.
*/
public Experiment getExperiment() {
return m_Exp;
}
/**
* Prompts the user to select an experiment file and loads it.
*/
private void openExperiment() {
int returnVal = m_FileChooser.showOpenDialog(this);
if (returnVal != JFileChooser.APPROVE_OPTION) {
return;
}
File expFile = m_FileChooser.getSelectedFile();
// add extension if necessary
if (m_FileChooser.getFileFilter() == m_ExpFilter) {
if (!expFile.getName().toLowerCase().endsWith(Experiment.FILE_EXTENSION))
expFile = new File(expFile.getParent(), expFile.getName() + Experiment.FILE_EXTENSION);
}
else if (m_FileChooser.getFileFilter() == m_KOMLFilter) {
if (!expFile.getName().toLowerCase().endsWith(KOML.FILE_EXTENSION))
expFile = new File(expFile.getParent(), expFile.getName() + KOML.FILE_EXTENSION);
}
else if (m_FileChooser.getFileFilter() == m_XMLFilter) {
if (!expFile.getName().toLowerCase().endsWith(".xml"))
expFile = new File(expFile.getParent(), expFile.getName() + ".xml");
}
try {
Experiment exp;
// KOML?
if ( (KOML.isPresent()) && (expFile.getAbsolutePath().toLowerCase().endsWith(KOML.FILE_EXTENSION)) ) {
exp = (Experiment) KOML.read(expFile.getAbsolutePath());
}
else
// XML?
if (expFile.getAbsolutePath().toLowerCase().endsWith(".xml")) {
XMLExperiment xml = new XMLExperiment();
exp = (Experiment) xml.read(expFile);
}
// binary
else {
FileInputStream fi = new FileInputStream(expFile);
ObjectInputStream oi = new ObjectInputStream(
new BufferedInputStream(fi));
exp = (Experiment)oi.readObject();
oi.close();
}
if (!setExperiment(exp)) {
if (m_modePanel != null) m_modePanel.switchToAdvanced(exp);
}
System.err.println("Opened experiment:\n" + exp);
} catch (Exception ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(this, "Couldn't open experiment file:\n"
+ expFile
+ "\nReason:\n" + ex.getMessage(),
"Open Experiment",
JOptionPane.ERROR_MESSAGE);
// Pop up error dialog
}
}
/**
* Prompts the user for a filename to save the experiment to, then saves
* the experiment.
*/
private void saveExperiment() {
int returnVal = m_FileChooser.showSaveDialog(this);
if (returnVal != JFileChooser.APPROVE_OPTION) {
return;
}
File expFile = m_FileChooser.getSelectedFile();
// add extension if necessary
if (m_FileChooser.getFileFilter() == m_ExpFilter) {
if (!expFile.getName().toLowerCase().endsWith(Experiment.FILE_EXTENSION))
expFile = new File(expFile.getParent(), expFile.getName() + Experiment.FILE_EXTENSION);
}
else if (m_FileChooser.getFileFilter() == m_KOMLFilter) {
if (!expFile.getName().toLowerCase().endsWith(KOML.FILE_EXTENSION))
expFile = new File(expFile.getParent(), expFile.getName() + KOML.FILE_EXTENSION);
}
else if (m_FileChooser.getFileFilter() == m_XMLFilter) {
if (!expFile.getName().toLowerCase().endsWith(".xml"))
expFile = new File(expFile.getParent(), expFile.getName() + ".xml");
}
try {
// KOML?
if ( (KOML.isPresent()) && (expFile.getAbsolutePath().toLowerCase().endsWith(KOML.FILE_EXTENSION)) ) {
KOML.write(expFile.getAbsolutePath(), m_Exp);
}
else
// XML?
if (expFile.getAbsolutePath().toLowerCase().endsWith(".xml")) {
XMLExperiment xml = new XMLExperiment();
xml.write(expFile, m_Exp);
}
// binary
else {
FileOutputStream fo = new FileOutputStream(expFile);
ObjectOutputStream oo = new ObjectOutputStream(
new BufferedOutputStream(fo));
oo.writeObject(m_Exp);
oo.close();
}
System.err.println("Saved experiment:\n" + m_Exp);
} catch (Exception ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(this, "Couldn't save experiment file:\n"
+ expFile
+ "\nReason:\n" + ex.getMessage(),
"Save Experiment",
JOptionPane.ERROR_MESSAGE);
}
}
/**
* Adds a PropertyChangeListener who will be notified of value changes.
*
* @param l a value of type 'PropertyChangeListener'
*/
public void addPropertyChangeListener(PropertyChangeListener l) {
m_Support.addPropertyChangeListener(l);
}
/**
* Removes a PropertyChangeListener.
*
* @param l a value of type 'PropertyChangeListener'
*/
public void removePropertyChangeListener(PropertyChangeListener l) {
m_Support.removePropertyChangeListener(l);
}
/**
* Responds to a change in the destination type.
*/
private void destinationTypeChanged() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -