Eclipse Cadre de navigateur commun
Question
J'ai un navigateur commun éclipse (spécifique à notre projet) sur notre demande de rap. Donc, généralement lorsque l'utilisateur est une ressource dans le navigateur latéral gauche, elle est ouverte dans le navigateur latérale droite .now, supposons, si un fichier cliquez sur un fichier avec une extension, je souhaite ouvrir un message personnalisé ouvert et apparu dansdevant l'utilisateur sous la forme d'une boîte de dialogue. Comment puis-je atteindre ce
La solution
Vous pouvez également enregistrer un éditeur spécifique avec un lanceur associé:
<editor
id="com.foo.MyEditor"
launcher="com.foo.MyEditorLauncher"
default="true"
extensions="your_extension_here"
icon="any icon for your file"
name="Dialog editor">
</editor>
et implémentez le lanceur pour afficher la boîte de dialogue souhaitée:
public class MyEditorLauncher implements IEditorLauncher {
@Override
public void open(IPath path) {
Shell shell = Display.getDefault().getActiveShell();
MessageDialog.openInformation(shell, "Not Editable", "Can't open this element");
}
}
L'utilisateur sera toujours en mesure d'utiliser des éditeurs alternatifs, mais par défaut, ils obtiendront ce message.
Autres conseils
Vous voudrez enregistrer un éditeur via le point d'extension des éditeurs par rapport aux fichiers de cette extension.Le corps de cet éditeur peut être le message que vous voulez.
Essayez d'enregistrer une action d'action dans le navigateurContent avec l'activation appropriée (afin qu'elle soit appliquée aux fichiers qui vous intéressent).
Dans votre fournisseur d'action personnalisé (Extending CommonCactionProvider), vous pouvez vous abonner aux événements DoubleClick de la méthode init:
@Override
public void init(ICommonActionExtensionSite aSite) {
super.init(aSite);
IWorkbench workbench = MyPlugin.getDefault().getWorkbench();
doubleclick = new IDoubleClickListener() {
@Override
public void doubleClick(DoubleClickEvent event) {
// show Your Popup Here !!!
}
};
aSite.getStructuredViewer().addDoubleClickListener(doubleclick);
}