Exemple de code d'éditeur défini par l'utilisateur qui utilise deux classes Java

Utilisez l'exemple de code Java™ pour créer un éditeur défini par l'utilisateur pour afficher une liste de valeurs à l'aide de deux classes Java.

A propos de cette tâche

L'exemple de code suivant vous montre comment utiliser deux classes Java pour afficher une liste de valeurs à un utilisateur de pattern.

La classe MyEditor contrôle la fonction de l'éditeur. La classe MyComposite contrôle l'apparence de l'éditeur à l'aide du toolkit SWT.

L'exemple suppose que les étapes suivantes sont terminées:
  • Les valeurs affichées dans la liste de l'éditeur défini par l'utilisateur sont entrées en tant que valeurs de configuration dans la fenêtre Configurer l'éditeur défini par l'utilisateur . Les valeurs doivent être entrées en tant que chaîne séparée par des virgules, par exemple, Apple, Orange, Pear, Lemon. Pour plus d'informations sur la saisie des valeurs de configuration, voir Configuration d'un éditeur défini par l'utilisateur.
  • La classe MonEditeur est entrée dans la fenêtre Configurer l'éditeur défini par l'utilisateur , dans la zone Nom de classe . Pour plus d'informations sur la spécification du nom de classe pour votre code d'éditeur défini par l'utilisateur, voir Configuration d'un éditeur défini par l'utilisateur.
Classe MyEditor
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.
  1. 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.
  2. 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 .
  3. 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 renvoienull.
  4. Les méthodes SetValue (), GetValue ()et SetEnabled () sont définies dans la classe Moncomposite :
    1. La méthode SetValue () définit la valeur initiale dans l'éditeur défini par l'utilisateur.
    2. La méthode GetValue () renvoie la valeur actuelle du paramètre de modèle à l'éditeur d'instance de modèle.
    3. 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);
   }
}
Classe MyComposite
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.
  1. L'agencement des contrôles est défini et un nouveau contrôle de liste est créé.
  2. 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.
  3. Les méthodes SetValue (), GetValue ()et SetEnabled () sont définies dans la classe Moncomposite , mais sont appelées à partir de la classe MonEditeur :
    1. 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.
    2. 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.
    3. 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);
   }
}