Bonjour,

Je suis nouveau sur la plateforme RCP 4.
J'ai créé un popup menu via l'application model et je souhaiterais restreindre la visibilité de certaines parties selon l'endroit du clic.

Je pourrais faire un Listener et le faire en SWT mais je pense que ce sera plus propre et plus didactique avec des Core Expression.

Donc j'ai créé via mon plugin.xml une nouvelle définition et j'ai créé un nouveau SourceProvider mais cela ne fonctionne pas. De plus, comment peut-on changer proprement l’état du SourceProvider ?

La partie du plugin.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<extension
         point="org.eclipse.core.expressions.definitions">
      <definition
            id="com.itf.tvt.tool.datastore.gui.popupmenu">
         <with
               variable="com.itf.tvt.tool.datastore.gui.itemselection">
            <equals
                  value="true">
            </equals>
         </with>
      </definition>
   </extension>
   <extension
         point="org.eclipse.core.expressions.propertyTesters">
      <propertyTester
            class="test.rcp.PropertyTester1"
            id="test.rcp.propertyTester1"
            namespace="test.rcp.propertyTester1"
            properties="test.rcp.propertyTester1"
            type="test.rcp.PropertyTester1">
      </propertyTester>
   </extension>
   <extension
         point="org.eclipse.ui.services">
      <sourceProvider
            provider="com.itf.tvt.tool.datastore.gui.providers.PopUpMenuSourceProdivder">
         <variable
               name="com.itf.tvt.tool.datastore.gui.itemselection"
               priorityLevel="workbench">
         </variable>
      </sourceProvider>
   </extension>
Mon source provider
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package com.itf.tvt.tool.datastore.gui.providers;
 
import java.util.HashMap;
import java.util.Map;
 
import org.eclipse.ui.AbstractSourceProvider;
 
public class PopUpMenuSourceProdivder extends AbstractSourceProvider {
 
    public static final String SELECTION_ITEM_STATE = "com.itf.tvt.tool.datastore.gui.itemselection";
    private boolean state;
    @Override
    public void dispose() {
        // TODO Auto-generated method stub
 
    }
 
    @Override
    public Map getCurrentState() {
        Map<String,Object> map= new HashMap<String,Object>();
        map.put(SELECTION_ITEM_STATE, state);
        return map;
    }
 
    @Override
    public String[] getProvidedSourceNames() {
        return new String[]{SELECTION_ITEM_STATE}; 
    }
 
    public void setState(){
        state=!state;
    }
}
Quelqu'un saurait-il m'indiquer comment procéder ?

Merci d'avance pour vos réponses