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(); } }