Use the example Java™ code to create a user-defined editor to display a list of values by using two Java classes.
The MyEditor class controls the function of the editor. The MyComposite class controls the appearance of the editor by using the SWT toolkit.
package com.your.company.domain.MyPattern.code;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import com.ibm.broker.config.appdev.patterns.ui.BasePatternPropertyEditor;
import com.ibm.broker.config.appdev.patterns.ui.PatternPropertyEditorSite;
public class MyEditor extends BasePatternPropertyEditor {
private MyComposite composite;
private String configurationValues;
private String[] items;
@Override
public void configureEditor(PatternPropertyEditorSite site, boolean required, String configurationValues) {
super.configureEditor(site, required, configurationValues);
this.configurationValues = configurationValues;
this.items = configurationValues.split("\\,");
if (this.items == null) {
this.items = new String[] { };
}
}
@Override
public void createControls(Object parent) {
Composite parentComposite = (Composite) parent;
PatternPropertyEditorSite site = getSite();
composite = new MyComposite(parentComposite, SWT.NONE, items, site);
}
@Override
public String isValid() {
String selection = getValue();
if (selection != null) {
return null;
}
return "Nothing currently selected..!";
}
@Override
public void setValue(String value) {
composite.setValue(value);
}
@Override
public String getValue() {
return composite.getValue();
}
@Override
public void setEnabled(boolean enabled) {
composite.setEnabled(enabled);
}
}
package com.your.company.domain.MyPattern.code;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.List;
import com.ibm.broker.config.appdev.patterns.ui.PatternPropertyEditorSite;
public class MyComposite extends Composite {
private List list;
private PatternPropertyEditorSite site;
public MyComposite(Composite parent, int style, String[] items, final PatternPropertyEditorSite site) {
super(parent, SWT.NONE);
this.site = site;
GridLayout gridLayout = new GridLayout(1, false);
gridLayout.marginWidth = 1;
gridLayout.marginHeight = 1;
gridLayout.horizontalSpacing = 0;
gridLayout.verticalSpacing = 0;
setLayout(gridLayout);
setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
list = new List(this, SWT.BORDER);
list.setItems(items);
GridData listLayoutData = new GridData(GridData.FILL_HORIZONTAL);
listLayoutData.horizontalIndent = 0;
list.setLayoutData(listLayoutData);
list.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
site.valueChanged();
}
});
}
public void setValue(String value) {
if (value != null) {
list.setSelection(new String[] { value });
}
}
public String getValue() {
String[] selection = list.getSelection();
if (selection.length > 0) {
return selection[0];
}
return null;
}
public void setEnabled(boolean enabled) {
list.setEnabled(enabled);
}
}