IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Platform Discussion :

[RCP] Mise en place d'un éditeur


Sujet :

Eclipse Platform

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 53
    Points : 42
    Points
    42
    Par défaut [RCP] Mise en place d'un éditeur
    Bonjour,

    Je fais des recherches depuis ce matin mais impossible de trouver une réponse à ma demande.

    En fait j'ai créé un client RCP tout à fait basique, j'y ai ajouté une vue très simple et je voudrais maintenant y ajouter un éditeur (je fais des tests en vue d'une IHM importante).
    Je voudrais utiliser l'onglet "Extension" pour créer cet éditeur mais je ne trouve aucun tutoriel. Par contre pour le faire via les plug-ins "basiques" (non RCP) ca on trouve !

    Parce meme lorsque j'utilise le template qui crée automatiquement un Editeur XML je n'arrive pas à le lancer car j'ai l'erreur "Missing requested bundle..." pour divers plugins qui sont pourtant bien à leur place...

    Merci de votre aide !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 53
    Points : 42
    Points
    42
    Par défaut
    Je suis toujours bloqué sur ce problème, n'y a-t-il vraiment personne pour me donner un coup de main ?
    Je crois que j'ai tout essayé : SourceViewer, TextEditor, AbstractTextEditor, etc. et je n'arrive pas à afficher un fichier que je choisis (à travers une boite de dialogue OPEN) dans un éditeur.

    J'appelle la fonction openEditor() dans ma classe OpenFile mais ca n'affiche rien.

    Par contre si je crée un éditeur la j'ai plusieurs choix selon le type d'éditeur :
    - si l'éditeur extends EditorPart : on dirait que ca ouvre mais je n'ai pas le contenu de mon fichier à ouvrir dans l'éditeur,
    - si l'éditeur extends AbstractTextEditor (ou autres) : alors la ca me dit que la classe de l'éditeur ne peut pas être instanciée...

    Au secours...

  3. #3
    Membre averti Avatar de Jean-Philippe Shields
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2005
    Messages : 278
    Points : 330
    Points
    330
    Par défaut
    Ta question, en plus d'être complexe, est très vague... C'est pas facile de cerner un problème aussi gros qu'un éditeur de texte qui ne fonctionne pas!

    Je n'ai jamais utilisé d'éditeur de texte, mais j'ai déjà construit un éditeur graphique basé sur GEF et dérivant de EditorPart.

    Ma première question serait; quel EditorInput utilises-tu pour lancer ton éditeur? Moi j'avais utilisé IPathEditorInput. Ça te permet de différencier les éditeurs ouverts par un lien sur un fichier unique.

    Ma deuxième question serait; comment fais-tu ton appel à openEditor() dans ton action?

    Commençons par ça en on verra où ça nous conduit.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 53
    Points : 42
    Points
    42
    Par défaut
    Bonjour,

    Alors pour essayer d'être un peu plus précis :

    1/ Comme EditorInput j'utilise aussi IPathEditorInput et ca a l'air de fonctionner sauf que le contenu de mon fichier ne s'affiche pas sur l'éditeur.
    Sinon en faisant quelques recherches j'ai trouvé quelque chose appellé FileEditorInput qui semblerait tout à fait approprié mais je ne trouve rien expliquant vraiment comment cela fonctionne...

    2/ Comment j'appelle mon éditeur ? Comme ca :

    File file = queryFile(); // file est le fichier à ouvrir dans l'éditeur
    if (file != null) {
    IEditorInput input= createEditorInput(file); // c'est cette méthode qui utilise PathEditorInput
    String editorId= getEditorId(file);
    IWorkbenchPage page= fWindow.getActivePage();
    try {
    page.openEditor(input, editorId, true);
    } catch (PartInitException e) {
    e.printStackTrace();
    }

    Donc voila où j'en suis... Si encore j'arrivais à bien cerner EditorPart peut être qui ca le ferait mieux... En gros je ne sais pas trop comment avancer
    Sinon certains exemples parlent de la nécessité d'un Document Provider, mais ca reste très vague...

    Bref je galère un peu pour quelque chose qui parait relativement simple, ce n'est que la fondation d'un projet d'IHM assez conséquente !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 53
    Points : 42
    Points
    42
    Par défaut
    Tant que j'y suis une petite précision encore :

    Quand je crée mon éditeur j'utilise TextEditor et donc quand je veux ouvrir mon fichier dans l'éditeur il me met le message d'erreur suivant :

    Unable to create this part due to an internal error. Reason for the failure: The editor class could not be instantiated. This usually indicates that the editor's class name was mistyped in plugin.xml.

    Please help...

  6. #6
    Membre averti Avatar de Jean-Philippe Shields
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2005
    Messages : 278
    Points : 330
    Points
    330
    Par défaut
    Une chose m'intrigue dans ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String editorId= getEditorId(file);
    qui mène par la suite à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    page.openEditor(input, editorId, true);
    Moi j'utilise plutôt un id codé en dur dans mon éditeur pareil à celui de l'extension dans le plugin.xml. Voici l'exemple.

    Dans mon éditeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    /**
     * Public ID of the editor
     */
    public static final String EDITOR_ID =  PlayMaker.editor.gef.GEFPlayEditorPart";
    Dans mon action j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    page.openEditor(input, GEFPlayEditorPart.EDITOR_ID, true);
    le id est absoluement le même que celui que tu retrouves dans le champ class de l'extension org.eclipse.ui.editors dans le plugin.xml.

    Vérifie ce que te retourne ta fonction getEditorId(file) et compare le à ce qui se trouve dans le plugin.xml

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 53
    Points : 42
    Points
    42
    Par défaut
    Pour ca apparemment c'est ok, il me retourne le bon id !

  8. #8
    Membre averti Avatar de Jean-Philippe Shields
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2005
    Messages : 278
    Points : 330
    Points
    330
    Par défaut
    Donc ça veut dire que la classe de ton éditeur doit correctement être instanciée . Peux-tu me dire si les fonctions createControlPart(Composite parent) et init(IEditorSite site, IEditorInput input) sont bien appelées et si oui quel est le code que tu as développé dans ces fonctions.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 53
    Points : 42
    Points
    42
    Par défaut
    C'est justement dans ces méthodes que je ne sais pas trop quoi mettre !

    En gros j'ai juste mis quelque chose dans init() :

    blabla init(... input, ... site) {

    super.setInput(input);
    super.setSite(site);
    }

    En sachant que la classe de mon éditeur extends EditorPart (si j'extends une autre comme TextEditor j'ai un message d'erreur qui me dit que ma classe éditeur ne peut pas être instanciée...)

  10. #10
    Membre averti Avatar de Jean-Philippe Shields
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2005
    Messages : 278
    Points : 330
    Points
    330
    Par défaut
    Dans la fonction init tu peux toujours rajouter ceci (ce n'est pas ça qui va faire la différence cependant)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setPartName(input.getName());
    Si ça plante en dérivant d'une autre classe de base que EditorPart, reste avec celle là. Ça va nous permettre au moins de restreindre les problèmes. La ligne que je t'ai demandé d'ajouter va mettre le path du fichier comme titre dans l'onglet de l'éditeur. Tu devrai voir ex: C:/sdfsdfsdf si le fichier que tu as créer avec le open file dialog se nomme sdfsdfsdf.

    Dans ta classe PathEditorInput tu dois avoir la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public String getName() {
          return fPath.toString();
    }
    Laisse la fonction createPartControl vide. Dit moi le résultat.

Discussions similaires

  1. [AD]Mise en place de Active Directory
    Par guiguisi dans le forum Windows Serveur
    Réponses: 9
    Dernier message: 29/07/2004, 08h50
  2. [C#] Mise en place d'un site multilingue
    Par regbegpower dans le forum ASP.NET
    Réponses: 6
    Dernier message: 19/03/2004, 19h15
  3. mise en place serveur web intranet
    Par gui4593 dans le forum Installation
    Réponses: 7
    Dernier message: 01/01/2004, 18h18
  4. Mise en place d'index....??
    Par liv dans le forum Requêtes
    Réponses: 6
    Dernier message: 18/12/2003, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo