2017-10-16 9 views
0

Eclipse 4 n'a aucune notion d'éditeur, seulement des parties. Alors, comment recevons-nous le fichier pour nos parties "éditeur"? Je parle d'un équivalent e4 de la méthode IEditorPart.init, et le IEditorInput qu'il reçoit.Développement d'un plugin Eclipse - partie e4 avec entrée: instancier l'entrée

Je suis tombé sur this example par Tom Schindl. Il est capable d'injecter l'entrée dans le constructeur de la pièce. Pour que l'objet d'entrée soit disponible pour l'injection, il doit être instancié dans le IEclipseContext d'une manière ou d'une autre. This article fait référence à l'exemple de Schindl et conduit à considérer l'approche suivante: Intercepter les commandes "Ouvrir un fichier" de la plateforme Eclipse, créer une instance d'entrée pour la partie "éditeur" et la placer dans le contexte (IEcpliseContext.set(class, value)) et ouvrez la pièce avec le EPartService.

Donc la question est: est-ce la bonne approche pour créer un «éditeur» e4? Et est-ce possible de l'implémenter?

Répondre

0

Il est plus facile de placer les données d'entrée dans les données transitoires de la pièce car il est difficile d'obtenir les données injectées au bon endroit.

Pour quelque chose qui se comporte comme un éditeur, vous utiliserez probablement un descripteur de pièce afin de pouvoir créer plusieurs parties à partir du descripteur unique.

vous créez la pièce en utilisant quelque chose comme:

@Inject 
EPartService partService; 

// Create from part descriptor 

MPart part = partService.createPart("part descriptor id"); 

// Set input in transient data 

part.getTransientData().put("inputKey", inputData); 

// Add to part stack 

MPartStack partStack = ... stack you want to use 

partStack.getChildren().add(part); 

// Show 

partService.showPart(part, PartState.ACTIVATE); 

Dans votre code partie, vous obtenez les données transitoires en injectant le MPart. Par exemple dans la construction:

@Inject 
public MyClass(MPart myPart) 
{ 
    Object input = part.getTransientData().get("inputKey"); 

    .... 
} 
+0

Merci! Comment accéder aux données transitoires depuis l'intérieur de la pièce? Et où puis-je mettre votre code proposé? Je souhaite ouvrir la pièce en réponse à l'ouverture d'un fichier avec l'extension de fichier correspondante. – TAsk

+0

Ajout du code pour accéder aux données transitoires dans la pièce. –

+0

Je vois, merci. Se sent bizarre d'injecter une pièce dans une pièce! Mais, pour la deuxième partie de ma question: puisque dans e4 le point d'extension de l'éditeur n'est pas utilisé, comment pouvons-nous associer la pièce à une extension de fichier, et nous assurer qu'elle s'ouvre? – TAsk