Mithilfe des Java™-Beispielcodes kann ein benutzerdefinierter Editor erstellt werden, in dem unter Verwendung zweier Java-Klassen eine Werteliste angezeigt werden kann.
Die Klasse MyEditor steuert die Funktion des Editors. Die Klasse MyComposite steuert die Darstellung des Editors mithilfe des Standard Widget Toolkits (SWT).
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);
}
}