Verwenden Sie den Java™-Beispielcode, um einen
benutzerdefinierten Editor zum Anzeigen eines Textfeldes unter Verwendung einer einzigen
Java-Klasse zu erstellen.
Der folgende Beispielcode zeigt, wie mithilfe einer einzigen
Java-Klasse einem Benutzer eines Musters ein
benutzerdefinierter Editor mit einem Textfeld angezeigt wird. Die Klasse
MyEditor erweitert die Klasse
BasePatternPropertyEditor und wird in der Konfiguration des benutzerdefinierten Editors als Klasse für den benutzerdefinierten Editor angegeben. Informationen hierzu finden Sie im Abschnitt
Benutzerdefinierten Editor konfigurieren. Wenn der Musterbenutzer den Musterinstanzeditor öffnet, wird automatisch eine Instanz der Klasse
MyEditor erstellt.
- Die Methode configureEditor() wird automatisch aufgerufen, nachdem die Klasse für den benutzerdefinierten Editor erstellt wurde. Mit dieser Methode wird der Editor
konfiguriert.
- Die Methode createControls() wird aufgerufen, um die Benutzerschnittstelle
für den Editor zu erstellen:
- Für die Benutzerschnittstelle wird das SWT-Objekt (SWT = Standard Widget Toolkit) Composite verwendet.
- Es wird ein Textfeld erstellt und es werden die SWT-Layoutinformationen für das Textfeld
definiert.
- Für das Textfeld wird ein Empfangsprogramm definiert, welches die Methode valueChanged() des Objekts
'PatternPropertyEditorSite' für den Editor aufruft. Auf diese Weise wird sichergestellt, dass bei einer Änderung des ausgewählten Werts im Textfeld an alle XPath-Ausdrücke bzw. Editoren, die den Wert dieses Parameters verwenden, Änderungsbenachrichtigungen gesendet werden.
- Die Methode setValue() legt den Anfangswert für das Textfeld fest. In diesem Beispiel filtert der Code Leerwerte heraus.
Außerdem werden mit < beginnende Werte herausgefiltert, um Wasserzeichen zu entfernen. Dies setzt voraus, dass Wasserzeichen in spitze Klammern gesetzt sind.
- Die Methode getValue() liest den aktuellen Wert des Textfelds und gibt den Wert an den Musterinstanzeditor zurück.
Der Musterinstanzeditor verwendet diesen zurückgegebenen Wert als Wert des Musterparameters.
- Die Methode setEnabled() aktiviert bzw. inaktiviert das Textfeld, je nachdem, ob der Musterparameter aktiviert oder inaktiviert ist. Der Parameter kann mithilfe eines XPath-Ausdrucks aktiviert bzw. inaktiviert werden (siehe Abschnitt
Musterparameter aktivieren). Ist der Parameter aufgrund eines XPath-Ausdrucks aktiviert bzw. inaktiviert, wird vom Musterinstanzeditor ein boolescher Wert an die Methode setEnabled() übergeben.
Bei aktiviertem Parameter lautet der boolesche Wert true, bei inaktiviertem Parameter 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);
}
}