La classe MonEditeur étend la classe Editeur BasePatternPropertyEditor . Une instance de la classe MonEditeur est créée automatiquement lorsque l'utilisateur de canevas ouvre l'éditeur d'instance de modèle.
- La méthode ConfigureEditor () est appelée automatiquement après la création de la classe MonEditeur . Cette méthode lit la chaîne de valeurs de configuration pour l'éditeur défini par l'utilisateur et stocke chacune des valeurs séparées par des virgules.
- La méthode CreateControls () est appelée pour créer l'interface utilisateur de l'éditeur. Les contrôles sont définis dans la classe Moncomposite .
- La méthode IsValid () est appelée automatiquement après l'appel de la méthode ValueChanged () . Dans cet exemple, IsValid () vérifie la valeur en cours du paramètre de modèle et renvoie un message d'erreur si aucune valeur n'est sélectionnée. Le message d'erreur s'affiche pour l'utilisateur de pattern dans l'éditeur d'instance de modèle. Si la valeur du paramètre est valide, la méthode renvoie
null
.
- Les méthodes SetValue (), GetValue ()et SetEnabled () sont définies dans la classe Moncomposite :
- La méthode SetValue () définit la valeur initiale dans l'éditeur défini par l'utilisateur.
- La méthode GetValue () renvoie la valeur actuelle du paramètre de modèle à l'éditeur d'instance de modèle.
- La méthode SetEnabled () est appelée lorsque le paramètre de modèle est activé ou désactivé par une expression XPath.
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);
}
}
La classe Moncomposite crée les commandes de l'interface utilisateur pour l'éditeur défini par l'utilisateur. La classe Moncomposite étend la classe Composite du toolkit SWT.
- L'agencement des contrôles est défini et un nouveau contrôle de liste est créé.
- La méthode ValueChanged () est utilisée dans un programme d'écoute sur le contrôle de liste. Cela garantit que lorsque la valeur sélectionnée dans la liste est modifiée, les notifications de modification sont envoyées à toutes les expressions XPath ou éditeurs qui utilisent la valeur de ce paramètre.
- Les méthodes SetValue (), GetValue ()et SetEnabled () sont définies dans la classe Moncomposite , mais sont appelées à partir de la classe MonEditeur :
- La méthode SetValue () utilise la valeur du paramètre de modèle et met à jour le contrôle de liste pour afficher la valeur sélectionnée.
- La méthode GetValue () extrait la valeur actuellement sélectionnée du contrôle de liste et, si elle n'est pas à blanc, la renvoie à MonEditeur.
- La méthode SetEnabled () utilise la valeur booléenne transmise pour activer ou désactiver le contrôle de liste.
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);
}
}