private void expTypeChanged() {

    if (m_Exp == null) return;

    // update parameter ui
    if (m_ExperimentTypeCBox.getSelectedItem() == TYPE_CROSSVALIDATION_TEXT) {
      m_ExperimentParameterLabel.setText("Number of folds:");
      m_ExperimentParameterTField.setText("" + m_numFolds);
    } else {
      m_ExperimentParameterLabel.setText("Train percentage:");
      m_ExperimentParameterTField.setText("" + m_trainPercent);
    }

    // update iteration ui
    if (m_ExperimentTypeCBox.getSelectedItem() == TYPE_FIXEDSPLIT_TEXT) {
      m_NumberOfRepetitionsTField.setEnabled(false);
      m_NumberOfRepetitionsTField.setText("1");
      m_Exp.setRunLower(1);
      m_Exp.setRunUpper(1);
    } else {
      m_NumberOfRepetitionsTField.setText("" + m_numRepetitions);
      m_NumberOfRepetitionsTField.setEnabled(true);
      m_Exp.setRunLower(1);
      m_Exp.setRunUpper(m_numRepetitions);
    }

    SplitEvaluator se = null;
    Classifier sec = null;
    if (m_ExpClassificationRBut.isSelected()) {
      se = new ClassifierSplitEvaluator();
      sec = ((ClassifierSplitEvaluator)se).getClassifier();
    } else {
      se = new RegressionSplitEvaluator();
      sec = ((RegressionSplitEvaluator)se).getClassifier();
    }
    
    // build new ResultProducer
    if (m_ExperimentTypeCBox.getSelectedItem() == TYPE_CROSSVALIDATION_TEXT) {
      CrossValidationResultProducer cvrp = new CrossValidationResultProducer();
      cvrp.setNumFolds(m_numFolds);
      cvrp.setSplitEvaluator(se);
      
      PropertyNode[] propertyPath = new PropertyNode[2];
      try {
	propertyPath[0] = new PropertyNode(se, new PropertyDescriptor("splitEvaluator",
								      CrossValidationResultProducer.class),
					   CrossValidationResultProducer.class);
	propertyPath[1] = new PropertyNode(sec, new PropertyDescriptor("classifier",
								       se.getClass()),
					   se.getClass());
      } catch (IntrospectionException e) {
	e.printStackTrace();
      }
      
      m_Exp.setResultProducer(cvrp);
      m_Exp.setPropertyPath(propertyPath);

    } else {
      RandomSplitResultProducer rsrp = new RandomSplitResultProducer();
      rsrp.setRandomizeData(m_ExperimentTypeCBox.getSelectedItem() == TYPE_RANDOMSPLIT_TEXT);
      rsrp.setTrainPercent(m_trainPercent);
      rsrp.setSplitEvaluator(se);

      PropertyNode[] propertyPath = new PropertyNode[2];
      try {
	propertyPath[0] = new PropertyNode(se, new PropertyDescriptor("splitEvaluator",
								      RandomSplitResultProducer.class),
					   RandomSplitResultProducer.class);
	propertyPath[1] = new PropertyNode(sec, new PropertyDescriptor("classifier",
								       se.getClass()),
					   se.getClass());
      } catch (IntrospectionException e) {
	e.printStackTrace();
      }

      m_Exp.setResultProducer(rsrp);
      m_Exp.setPropertyPath(propertyPath);

    }

    m_Exp.setUsePropertyIterator(true);
    m_Support.firePropertyChange("", null, null);
  }