User-defined editor code example that uses one Java class
Use the example Java™ code to create a user-defined editor to display a text box, by using one Java class.
About this task
- The configureEditor() method is called automatically after the user-defined editor class is created. This method sets up the editor.
- The createControls() method is called to create
the user interface for the editor:
- The SWT toolkit object, Composite, is used for the user interface.
- A text box control is created and the SWT layout information for the text box is defined.
- A listener on the text box is defined, which calls the valueChanged() method of the PatternPropertyEditorSite object for the editor. This ensures that when the selected value in the text box is changed, change notifications are sent to any XPath expressions or editors that use the value of this parameter.
- The setValue() method sets the initial value for the text box. In this example, the code filters out blank values. The code also filters out values that start with <, to remove watermark values. This assumes watermark values are enclosed in angle brackets.
- The getValue() method reads the current value of the text box and returns the value to the pattern instance editor. The pattern instance editor uses this returned value as the value of the pattern parameter.
- The setEnabled() method enables or disables the text box control, depending on whether the pattern parameter is enabled or disabled. The parameter can be enabled or disabled by using an XPath expression; see Enabling pattern parameters. When the result of an XPath expression enables or disables the parameter, a boolean value is passed from the pattern instance editor to the setEnabled() method. If the parameter is enabled, the boolean value is true; if the parameter is disabled the boolean value is false.
package com.your.company.domain.MyPattern.code;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import com.ibm.broker.config.appdev.patterns.ui.*;
public class MyEditor extends BasePatternPropertyEditor {
private Text text;
@Override
public void configureEditor(PatternPropertyEditorSite site, boolean required, String configurationValues) {
super.configureEditor(site, required, configurationValues);
}
@Override
public void createControls(Object parent) {
Composite composite = (Composite) parent;
text = new Text(composite, SWT.BORDER);
GridData textLayoutData = new GridData(GridData.FILL_HORIZONTAL);
textLayoutData.horizontalIndent = 0;
text.setLayoutData(textLayoutData);
text.addListener(SWT.Modify, new Listener() {
@Override
public void handleEvent(Event event) {
PatternPropertyEditorSite site = getSite();
site.valueChanged();
}
});
}
@Override
public void setValue(String value) {
if (value != null) {
if (value.startsWith("<") == false) {
text.setText(value);
}
}
}
@Override
public String getValue() {
String value = text.getText();
if (value.length() > 0) {
return value;
}
return null;
}
@Override
public void setEnabled(boolean enabled) {
text.setEnabled(enabled);
}
}