protected void propagateClassifier()
	{
		switch (mappingChoice.getSelectedIndex())
		{
			case RAYTRACE: // raytrace rendering.
			case VIEWSPACE: // viewspace.
				classificationChoice.setEnabled(true);
				if (classificationChoice.getSelectedIndex() == VJClassifiers.ISOSURFACE)
					classificationChoice.select(VJClassifiers.LEVOYNOINDEX);
				break;
			case ISOSURFACE: // isosurface.
				classificationChoice.setEnabled(false);
				classificationChoice.select(VJClassifiers.ISOSURFACE);
				break;
		}
		VJClassifier c = VJClassifiers.getClassifier(classificationChoice.getSelectedIndex());
		if (c instanceof VJClassifier)
		{
			// Does classifier support indexing?
			if (indexChoice instanceof Choice)
				indexChoice.setEnabled(c.doesIndex());
			if (c instanceof VJClassifierIsosurface)
			{
				thresholdField.setEnabled(true);
				widthField.setEnabled(false);
				((VJClassifierIsosurface) c).setThreshold((float) getFloatField(thresholdField));
			}
			else if (c instanceof VJClassifierValue)
			{
				thresholdField.setEnabled(true);
				widthField.setEnabled(false);
				((VJClassifierValue) c).setThreshold((float) getFloatField(thresholdField));
			}
			else if (c instanceof VJClassifierLevoy)
			{
				thresholdField.setEnabled(true);
				widthField.setEnabled(true);
				((VJClassifierLevoy) c).setThreshold((float) getFloatField(thresholdField));
				((VJClassifierLevoy) c).setWidth((float) getFloatField(widthField));
			}
			lutChoice.setEnabled(c.hasLUT());
			classifierTextArea.setText(c.toLongString());
		}
		classifier = null;
		v = null;
	}