Bonjour,

Je suis novice en Eclipse 4 et j'essaye de construire une application 100% e4. J'arrive à faire pas mal de choses, mais là je bloque:

J'ai un modèle EMF, je génère les classes de mon modèle, .edit et .editor.
Dans mon application j'ai un Explorer et quand je sélectionne un objet dans l'arbre de celui-ci, je sais le représenter graphiquement (métier).
Par contre je n'arrive pas à le mettre dans une fenêtre "PropertyPage". J'avoue que j'ai du mal à comprendre le code généré dans .editor:


La part Property avec deux colonnes "Property" et "Value" se crée bien mais rien ne se passe quand je clique sur un objet de mon explorateur, bien que je passe dans:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
myProperty.handleEntrySelection(ExplorerPart.getTreeViewer().getSelection());
avec la bon objet.

Voici le code:
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package galera3D.parts.explorer;
 
import galera.supports.provider.SupportsItemProviderAdapterFactory;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Vector;
 
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import javax.inject.Named;
 
import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.e4.ui.di.Focus;
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.emf.common.command.BasicCommandStack;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.views.properties.IPropertySourceProvider;
import org.eclipse.ui.views.properties.PropertySheetPage;
 
public class PropertiesEditorPart {
 
    ExtendedPropertySheetPage myProperty;
    private AdapterFactoryEditingDomain editingDomain; 
    ComposedAdapterFactory adapterFactory;
    List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>();
 
    @PostConstruct
    public void createComposite(Composite parent) {
        ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
 
        adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
        adapterFactory.addAdapterFactory(new SupportsItemProviderAdapterFactory());
        adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
 
        // Create the command stack that will notify this editor as commands are executed.
        //
        BasicCommandStack commandStack = new BasicCommandStack();
 
 
        // Create the editing domain with a special command stack.
        //
        editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
        parent.setLayout(new FillLayout());
        myProperty = new ExtendedPropertySheetPage(editingDomain){
            @Override
            public void setSelectionToViewer(List<?> selection) {
                PropertiesEditorPart.this.setFocus();
            }
 
            @Override
            public void setActionBars(IActionBars actionBars) {
 
            }
            @Override
            public void handleEntrySelection(ISelection selection)
            {
                super.handleEntrySelection(selection);
                objectsToSelect.clear();
                if (!selection.isEmpty() && selection instanceof IStructuredSelection)    {
                    IStructuredSelection structuredSelection = (IStructuredSelection)selection;
 
                    if (structuredSelection.size() == 1)
                    {
                        Vector<ISelection> v = new Vector<ISelection>();
                        v.add(selection);
                        setSelectionToViewer(v);
                        Object object = structuredSelection.getFirstElement();
                        addObjectToSelect(object);
                    }
                }
                locateValueAction.setEnabled(!objectsToSelect.isEmpty());
            }
 
        };
 
        {}
        IPropertySourceProvider provider = new AdapterFactoryContentProvider(adapterFactory);
        myProperty.setPropertySourceProvider(provider);
        myProperty.createControl(parent);
        myProperty.getSite().setSelectionProvider(ExplorerPart.getTreeViewer());
 
    }
 
 
    @Focus
    public boolean setFocus() {
        if(myProperty != null) return myProperty.getControl().setFocus();
        return false;
    }
 
    @Inject
    public void receiveSelection(@Optional @Named(IServiceConstants.ACTIVE_SELECTION) Object o) {
        if(o != null) {
            if(myProperty != null) {
                myProperty.handleEntrySelection(ExplorerPart.getTreeViewer().getSelection());
            }
        }
        setFocus();
    }
}
Quelqu'un saurait-il m'indiquer comment procéder ?

Merci d'avance pour votre aide.