2010-05-18 9 views
2

J'ai un éditeur graphique personnalisé dans une application Eclipse RCP.Comment intégrer un ISelectionProvider personnalisé avec des expressions Eclipse enabledWhen?

Il définit une coutume ISelectionProvider dans le createPartControl (..) Méthode:

@Override 
public void createPartControl(Composite parent) { 
    // [snip] 
    getSite().setSelectionProvider((ISelectionProvider)model.getSelection()); 
} 

J'ai deux ViewParts écoute des changements de sélection via le ISelectionService. Ils sont notifiés lorsque la sélection dans EditorPart change. Jusqu'ici tout va bien.

Maintenant, j'ai ajouté un gestionnaire en utilisant le code XML suivant:

<handlerclass="my.custom.Handler" commandId="org.eclipse.ui.edit.delete"> 
    <enabledWhen> 
     <count value="+"/> 
    </enabledWhen> 
</handler> 

Si la sélection dans la EditPart contient> 0 éléments, cela devrait permettre au gestionnaire my.custom.Handler, mais ce n'est pas le cas.

Il est toutefois activé si la sélection fournie par les fournisseurs de sélection intégrés change en élément> 0 (c'est-à-dire ceux fournis par les visionneuses JFace).

Une indication sur la façon d'intégrer une implémentation personnalisée de ISelectionProvider avec la structure d'expression utilisée dans la déclaration du gestionnaire?

+0

Pourriez-vous poster votre implémentation de ISelectionProvider? C'est à dire. la classe qui est retournée à 'model.getSelection() ' Je suspecte que le problème soit dans votre implémentation de ISelectionProvider. –

Répondre