📄 simplesetuppanel.java
字号:
} }); m_NotesText.addFocusListener(new FocusAdapter() { public void focusLost(FocusEvent e) { m_Exp.setNotes(m_NotesText.getText()); } }); // Set up the GUI layout JPanel buttons = new JPanel(); GridBagLayout gb = new GridBagLayout(); GridBagConstraints constraints = new GridBagConstraints(); buttons.setBorder(BorderFactory.createEmptyBorder(10, 5, 10, 5)); buttons.setLayout(gb); constraints.gridx=0;constraints.gridy=0;constraints.weightx=5; constraints.fill = GridBagConstraints.HORIZONTAL; constraints.gridwidth=1;constraints.gridheight=1; constraints.insets = new Insets(0,2,0,2); buttons.add(m_OpenBut,constraints); constraints.gridx=1;constraints.gridy=0;constraints.weightx=5; constraints.gridwidth=1;constraints.gridheight=1; buttons.add(m_SaveBut,constraints); constraints.gridx=2;constraints.gridy=0;constraints.weightx=5; constraints.gridwidth=1;constraints.gridheight=1; buttons.add(m_NewBut,constraints); JPanel destName = new JPanel(); destName.setLayout(new BorderLayout(5, 5)); destName.add(m_ResultsDestinationPathLabel, BorderLayout.WEST); destName.add(m_ResultsDestinationPathTField, BorderLayout.CENTER); m_ResultsDestinationCBox.addItem(DEST_DATABASE_TEXT); m_ResultsDestinationCBox.addItem(DEST_ARFF_TEXT); m_ResultsDestinationCBox.addItem(DEST_CSV_TEXT); JPanel destInner = new JPanel(); destInner.setLayout(new BorderLayout(5, 5)); destInner.add(m_ResultsDestinationCBox, BorderLayout.WEST); destInner.add(destName, BorderLayout.CENTER); destInner.add(m_BrowseDestinationButton, BorderLayout.EAST); JPanel dest = new JPanel(); dest.setLayout(new BorderLayout()); dest.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createTitledBorder("Results Destination"), BorderFactory.createEmptyBorder(0, 5, 5, 5) )); dest.add(destInner, BorderLayout.NORTH); JPanel expParam = new JPanel(); expParam.setLayout(new BorderLayout(5, 5)); expParam.add(m_ExperimentParameterLabel, BorderLayout.WEST); expParam.add(m_ExperimentParameterTField, BorderLayout.CENTER); ButtonGroup typeBG = new ButtonGroup(); typeBG.add(m_ExpClassificationRBut); typeBG.add(m_ExpRegressionRBut); m_ExpClassificationRBut.setSelected(true); JPanel typeRButtons = new JPanel(); typeRButtons.setLayout(new GridLayout(1,0)); typeRButtons.add(m_ExpClassificationRBut); typeRButtons.add(m_ExpRegressionRBut); m_ExperimentTypeCBox.addItem(TYPE_CROSSVALIDATION_TEXT); m_ExperimentTypeCBox.addItem(TYPE_RANDOMSPLIT_TEXT); m_ExperimentTypeCBox.addItem(TYPE_FIXEDSPLIT_TEXT); JPanel typeInner = new JPanel(); typeInner.setLayout(new GridLayout(0,1)); typeInner.add(m_ExperimentTypeCBox); typeInner.add(expParam); typeInner.add(typeRButtons); JPanel type = new JPanel(); type.setLayout(new BorderLayout()); type.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createTitledBorder("Experiment Type"), BorderFactory.createEmptyBorder(0, 5, 5, 5) )); type.add(typeInner, BorderLayout.NORTH); ButtonGroup iterBG = new ButtonGroup(); iterBG.add(m_OrderDatasetsFirstRBut); iterBG.add(m_OrderAlgorithmsFirstRBut); m_OrderDatasetsFirstRBut.setSelected(true); JPanel numIter = new JPanel(); numIter.setLayout(new BorderLayout(5, 5)); numIter.add(new JLabel("Number of repetitions:"), BorderLayout.WEST); numIter.add(m_NumberOfRepetitionsTField, BorderLayout.CENTER); JPanel controlInner = new JPanel(); controlInner.setLayout(new GridLayout(0,1)); controlInner.add(numIter); controlInner.add(m_OrderDatasetsFirstRBut); controlInner.add(m_OrderAlgorithmsFirstRBut); JPanel control = new JPanel(); control.setLayout(new BorderLayout()); control.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createTitledBorder("Iteration Control"), BorderFactory.createEmptyBorder(0, 5, 5, 5) )); control.add(controlInner, BorderLayout.NORTH); JPanel type_control = new JPanel(); type_control.setLayout(new GridLayout(1,0)); type_control.add(type); type_control.add(control); JPanel notes = new JPanel(); notes.setLayout(new BorderLayout()); notes.setBorder(BorderFactory.createTitledBorder("Notes")); notes.add(new JScrollPane(m_NotesText), BorderLayout.CENTER); JPanel top1 = new JPanel(); top1.setLayout(new BorderLayout()); top1.add(dest, BorderLayout.NORTH); top1.add(type_control, BorderLayout.CENTER); JPanel top = new JPanel(); top.setLayout(new BorderLayout()); top.add(buttons, BorderLayout.NORTH); top.add(top1, BorderLayout.CENTER); JPanel datasets = new JPanel(); datasets.setLayout(new BorderLayout()); datasets.add(m_DatasetListPanel, BorderLayout.CENTER); JPanel algorithms = new JPanel(); algorithms.setLayout(new BorderLayout()); algorithms.add(m_AlgorithmListPanel, BorderLayout.CENTER); JPanel schemes = new JPanel(); schemes.setLayout(new GridLayout(1,0)); schemes.add(datasets); schemes.add(algorithms); setLayout(new BorderLayout()); add(top, BorderLayout.NORTH); add(schemes, BorderLayout.CENTER); add(notes, BorderLayout.SOUTH); } /** * Gets te users consent for converting the experiment to a simpler form. * * @return true if the user has given consent, false otherwise */ private boolean userWantsToConvert() { if (m_userHasBeenAskedAboutConversion) return true; m_userHasBeenAskedAboutConversion = true; return (JOptionPane.showConfirmDialog(this, "This experiment has settings that are too advanced\n" + "to be represented in the simple setup mode.\n" + "Do you want the experiment to be converted,\n" + "losing some of the advanced settings?\n", "Confirm conversion", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION); } /** * Sets the panel used to switch between simple and advanced modes. * * @param modePanel the panel */ public void setModePanel(SetupModePanel modePanel) { m_modePanel = modePanel; } /** * 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(false); } else if (exp.getResultListener() instanceof InstancesResultListener) { m_ResultsDestinationCBox.setSelectedItem(DEST_ARFF_TEXT); m_ResultsDestinationPathLabel.setText("Filename:"); m_destinationFilename = ((InstancesResultListener)exp.getResultListener()).getOutputFile().toString(); 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()).getOutputFile().toString(); 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 AveragingResultProducer) { AveragingResultProducer arp = (AveragingResultProducer) exp.getResultProducer(); if (arp.getResultProducer() instanceof CrossValidationResultProducer) { CrossValidationResultProducer cvrp = (CrossValidationResultProducer) arp.getResultProducer(); m_numFolds = cvrp.getNumFolds(); m_ExperimentParameterTField.setText("" + m_numFolds); if (arp.getExpectedResultsPerAverage() != m_numFolds) { // unknown experiment setup System.out.println("SimpleSetup incompatibility: cross-validation folds doesn't match expected number"); if (!userWantsToConvert()) { return false; } } 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 { // unknown experiment type System.out.println("SimpleSetup incompatibility: unrecognised resultProducer inside averagingProducer"); if (!userWantsToConvert()) { return false; } } } 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_NotesText.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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -