public void testColorEditor() {
final ParamProperties properties = new ParamProperties(Color.class);
properties.setLabel(LABEL_NAME);
properties.setPhysicalUnit(UNIT_NAME);
properties.setDefaultValue(Color.red);
final Parameter parameter = new Parameter(PARAM_NAME, properties);
ParamEditor editor = parameter.getEditor();
assertTrue(editor instanceof ColorEditor);
final ColorEditor colorEditor = (ColorEditor) editor;
final JComponent editorComponent = colorEditor.getEditorComponent();
assertEquals("theParamName.XEditor", editorComponent.getName());
assertEquals(JPanel.class.getName(), editorComponent.getClass().getSuperclass().getName());
final Component[] components = editorComponent.getComponents();
assertEquals(2, components.length);
assertEquals("theParamName.ColorDisplay", components[0].getName());
assertEquals("theParamName.ButtonPanel", components[1].getName());
assertEquals(org.esa.beam.framework.param.editors.ColorEditor.ColorDisplay.class.getName(),
components[0].getClass().getName());
assertEquals(JPanel.class.getName(), components[1].getClass().getName());
final JPanel buttonPanel = ((JPanel) components[1]);
assertEquals(1, buttonPanel.getComponentCount());
assertEquals(JButton.class.getName(), buttonPanel.getComponents()[0].getClass().getName());
assertEquals("theParamName.Button", ((JPanel) components[1]).getComponents()[0].getName());
assertEquals("theParamName.Label", colorEditor.getLabelComponent().getName());
assertEquals(LABEL_NAME + ": ", colorEditor.getLabelComponent().getText());
assertEquals("theParamName.Unit", colorEditor.getPhysUnitLabelComponent().getName());
assertEquals(" " + UNIT_NAME, colorEditor.getPhysUnitLabelComponent().getText());
}