public DataTypeCombo(Composite parent, int style, DataTypeRegistry registry) {
   super(parent, style);
   this.registry = registry;
   setLayout(new FillLayout());
   dataTypeCombo = new ComboViewer(this, SWT.READ_ONLY);
   dataTypeCombo.setLabelProvider(
       new LabelProvider() {
         public String getText(Object element) {
           return ((DataTypeRegistry.IDataTypeInfo) element).getName();
         }
       });
   dataTypeCombo.add(registry.getDataTypes().toArray(new DataTypeRegistry.IDataTypeInfo[0]));
 }
 public void setDataType(DataType dataType) {
   if (dataType == null) {
     dataTypeCombo.setSelection(null);
   } else {
     // TODO : check what happens if dataType not in combo
     try {
       dataTypeCombo.setSelection(
           new StructuredSelection(registry.getDataTypeInfo(dataType.getClass())));
     } catch (IllegalArgumentException e) {
       // "DataTypeInfo not found in registry: " + dataType.getClass()
       DroolsEclipsePlugin.log(e);
     }
   }
 }
 public void setDataType(DataType type) {
   ((Composite) editor).dispose();
   if (type == null) {
     editor = new EmptyEditor(this);
   } else {
     Class editorClass = null;
     try {
       editorClass = registry.getDataTypeInfo(type.getClass()).getValueEditorClass();
       editor =
           (Editor)
               editorClass
                   .getConstructor(new Class[] {Composite.class})
                   .newInstance(new Object[] {this});
     } catch (IllegalArgumentException e) {
       // "Could not find data type info for type " + type.getClass()
       DroolsEclipsePlugin.log(e);
       editor = new EmptyEditor(this);
     } catch (InstantiationException e) {
       // "Could not create editor for editor " + editorClass
       DroolsEclipsePlugin.log(e);
       editor = new EmptyEditor(this);
     } catch (NoSuchMethodException e) {
       // "Could not create editor for editor " + editorClass
       DroolsEclipsePlugin.log(e);
       editor = new EmptyEditor(this);
     } catch (InvocationTargetException e) {
       // "Could not create editor for editor " + editorClass
       DroolsEclipsePlugin.log(e);
       editor = new EmptyEditor(this);
     } catch (IllegalAccessException e) {
       // "Could not create editor for editor " + editorClass
       DroolsEclipsePlugin.log(e);
       editor = new EmptyEditor(this);
     }
     editor.setDataType(type);
     layout();
   }
 }