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 :

Développement de plug-in sous Eclipse CDT


Sujet :

Eclipse Platform

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : juin 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut Développement de plug-in sous Eclipse CDT
    Bonjour,

    Je suis nouveau sous Eclipse CDT et je développe un plugin pour générer un Template Project C++.

    A ce niveau mon projet est bien généré avec la classe de base qu'il faut.

    A présent, je souhaiterais pouvoir créer des templates fichiers (par exemple avoir accès au File > New > FileFromTemplate) et choisir le fichier voulu.

    Quelqu'un saurait-il m'indiquer comment faire ?

    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : mai 2009
    Messages : 196
    Points : 358
    Points
    358

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : juin 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par mvvvv Voir le message
    Oui j'ai déjà créé mon wizard, lequel me permet de générer mon projet.

    Je veux, une fois mon projet ouvert, pouvoir créer des templates fichier (Code).

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    Alors il n'y a plus qu'à le référencer :

    http://help.eclipse.org/indigo/index...ewWizards.html

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : juin 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par mvvvv Voir le message
    Alors il n'y a plus qu'à le référencer :

    http://help.eclipse.org/indigo/index...ewWizards.html
    Merci mvvv,

    Finalement j'ai crée un popup menu qui me permet de générer le template fichier.
    Mon souci est que le fichier n'est pas généré. J'ai utilisé la méthode "copy fichier" fournie http://java.developpez.com/faq/java/...ngage_fichiers .
    Mais cela ne résout pas. On m'a suggéré d'utiliser les objets de IFile au lieu de File.
    Je suppose que le problème est que au moment de l'exécution de mon Eclipse ne trouve pas mon fichier à copier qui se trouve dans le même répertoire que celui de ma classe Action.

    Quelqu'un saurait-il m'indiquer comment faire ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    Déjà bien s'assurer que le fichier n'a pas été créé malgré tout (il peut arriver que le "project explorer" ne se mette pas à jour) utiliser pour cela l'explorateur de fichier du systême.

    Il ne s'agit plus de la création d'un projet mais d'un fichier C ?

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : juin 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par mvvvv Voir le message
    Déjà bien s'assurer que le fichier n'a pas été créé malgré tout (il peut arriver que le "project explorer" ne se mette pas à jour) utiliser pour cela l'explorateur de fichier du systême.

    Il ne s'agit plus de la création d'un projet mais d'un fichier C ?
    Je suis sur que le fichier n'a pas été crée.
    Car l'explorateur de fichier du système ne le trouve pas.

    A ce niveau je chercher à créer un fichier.

    A+

  8. #8
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Pour copier des fichiers dans un projet Eclipse, il te faut plutôt passer par l'API du plug-in org.eclipse.core.resources (il te faut donc ajouter une dépendance dans le MANIFEST.MF). Le code qui fait la magie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("MyProject");
    IFile file = project.getFile(new Path("src").append("test").append("MyClass.java"));
    try
    {
    	final IPath destinationPath = project.getFullPath().append(new Path("src").append("test").append("MyCopyClass.java"));
    	file.copy(destinationPath, true, new NullProgressMonitor());
    	final IFile copiedFile = project.getFile(destinationPath);
    	copiedFile.refreshLocal(0, new NullProgressMonitor());
    } catch (final CoreException iException)
    {
    	iException.printStackTrace();
    }
    Avec les imports qui vont bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import org.eclipse.core.resources.IFile;
    import org.eclipse.core.resources.IProject;
    import org.eclipse.core.resources.ResourcesPlugin;
    import org.eclipse.core.runtime.CoreException;
    import org.eclipse.core.runtime.IPath;
    import org.eclipse.core.runtime.NullProgressMonitor;
    import org.eclipse.core.runtime.Path;
    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : juin 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par chendoye Voir le message
    Je suis sur que le fichier n'a pas été crée.
    Car l'explorateur de fichier du système ne le trouve pas.

    A ce niveau je chercher à créer un fichier.

    A+
    Déjà je parviens à créer le fichier dans le mon projet en local.
    Mais je veux le rendre générique (Tout utilisateur qui installe mon plugin pourra le créer s'il le désire).
    Quel est syntaxe de chemin dois-je utiliser?

  10. #10
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : juin 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Gueritarish Voir le message
    Salut,

    Pour copier des fichiers dans un projet Eclipse, il te faut plutôt passer par l'API du plug-in org.eclipse.core.resources (il te faut donc ajouter une dépendance dans le MANIFEST.MF). Le code qui fait la magie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("MyProject");
    IFile file = project.getFile(new Path("src").append("test").append("MyClass.java"));
    try
    {
    	final IPath destinationPath = project.getFullPath().append(new Path("src").append("test").append("MyCopyClass.java"));
    	file.copy(destinationPath, true, new NullProgressMonitor());
    	final IFile copiedFile = project.getFile(destinationPath);
    	copiedFile.refreshLocal(0, new NullProgressMonitor());
    } catch (final CoreException iException)
    {
    	iException.printStackTrace();
    }
    Avec les imports qui vont bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import org.eclipse.core.resources.IFile;
    import org.eclipse.core.resources.IProject;
    import org.eclipse.core.resources.ResourcesPlugin;
    import org.eclipse.core.runtime.CoreException;
    import org.eclipse.core.runtime.IPath;
    import org.eclipse.core.runtime.NullProgressMonitor;
    import org.eclipse.core.runtime.Path;
    Voilà, à+
    Gueritarish
    J'ai testé le code suivant:

    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
     
    public void copy() throws IOException{
     
    	IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("Exemple");
     
    	IFile file = project.getFile(new Path("Test.cpp"));
    	try
    	{
    		final IPath destinationPath = project.getFullPath().append(new Path("include").append("Toto.cpp"));
    		file.copy(destinationPath, true, new NullProgressMonitor());
    		final IFile copiedFile = project.getFile(destinationPath);
    		copiedFile.refreshLocal(0, new NullProgressMonitor());
    	} catch (final CoreException iException)
    	{
    		iException.printStackTrace();
    	}
    }
    j'ai l'erreur suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Resource '/Exemple/Test.cpp' does not exist.
    Pourtant Test.cpp existe belle et bien.
    A+

  11. #11
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Est-ce qu'il est bien à la racine du projet? Ça me paraît étonnant, non?
    Là, il va chercher directement à la racine. Il faut que tu indiques un Path qui corresponde.
    Pas de questions technique par MP, les forums sont là pour ça.

  12. #12
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : juin 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Gueritarish Voir le message
    Est-ce qu'il est bien à la racine du projet? Ça me paraît étonnant, non?
    Là, il va chercher directement à la racine. Il faut que tu indiques un Path qui corresponde.
    Il est bien dans la racine du projet.
    Voici son path : (/Exemple/Test.cpp).

  13. #13
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Ça me paraît louche... Il faudrait que tu essayes avec la méthode getFile(String). Mais je redoute le même résultat. Il te donne ce message à quel niveau? Quand tu essayes de faire une copie?
    Essayes de passer en débug et de voir ce que tu peux obtenir de ton projet.

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  14. #14
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : juin 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Gueritarish Voir le message
    Ça me paraît louche... Il faudrait que tu essayes avec la méthode getFile(String). Mais je redoute le même résultat. Il te donne ce message à quel niveau? Quand tu essayes de faire une copie?
    Essayes de passer en débug et de voir ce que tu peux obtenir de ton projet.

    Voilà, à+
    Gueritarish
    il me donne le message au niveau de la copie.
    La méthode getFile(String) me donne le même message.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    mai 2009
    Messages
    196
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : mai 2009
    Messages : 196
    Points : 358
    Points
    358
    Par défaut
    N'est ce pas normal sachant que l'emplacement du workspace est un élément qui est demandé à chaque premier lancement d'une "nouvelle instance" d'éclipse. Normalement il devrait afficher la boite de dialogue lors de la première exécution. Il y a le workspace de dev et le workspace d'exécution.

  16. #16
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    On parle bien entendu du workspace d'exécution là. Il n'y a pas de choix à effectuer.
    Au lancement d'Eclipse, le développeur choisit son workspace de développement (notamment avec le projet contenant les plug-ins Eclipse dans ce cas-ci). Puis, pour tester les plug-ins, il lance une nouvelle instance d'Eclipse dans un nouveau workspace (choisit au préalable, il s'appelle généralement runtime-<Nom conf de lancement>). Donc, il faut que ton projet "Exemple" soit présent dans le workspace d'exécution et non celui de lancement !
    La différence est de taille puisque ResourcesPlugin.getWorkspace() va récupérer le workspace d'exécution.

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  17. #17
    Candidat au Club
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    juin 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : juin 2012
    Messages : 13
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Gueritarish Voir le message
    On parle bien entendu du workspace d'exécution là. Il n'y a pas de choix à effectuer.
    Au lancement d'Eclipse, le développeur choisit son workspace de développement (notamment avec le projet contenant les plug-ins Eclipse dans ce cas-ci). Puis, pour tester les plug-ins, il lance une nouvelle instance d'Eclipse dans un nouveau workspace (choisit au préalable, il s'appelle généralement runtime-<Nom conf de lancement>). Donc, il faut que ton projet "Exemple" soit présent dans le workspace d'exécution et non celui de lancement !
    La différence est de taille puisque ResourcesPlugin.getWorkspace() va récupérer le workspace d'exécution.

    Voilà, à+
    Gueritarish
    Au fait mon projet Exemple contient mon plugin. Donc je ne peux pas le mettre dans le workspace d'exécution.
    Mon cas d'utilisation est le suivant:
    1)je lance mon plugin
    2)Dans l'instance d'éclipse je crée un projet (par exemple cpp)
    3) dans ce projet je dois pouvoir générer des templates de fichier au besoin.

    les 2 premiers points sont résolus il me reste le troisième. Sachant que les fichiers sources(que je dois copier sont placé dans le dossier contenant le plugin <workspace de lancement>).

    voilà A+

  18. #18
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Pour le troisième point, voici une solution. Il te faut savoir que ton plug-in (Bundle) est accessible depuis l'environnement d'exécution. Tu as aussi accès au système de fichier local (il te faut ajouter une dépendance sur le plug-in org.eclipse.core.filesystem). Il te faut donc faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    final Bundle bundle = Platform.getBundle("MyBundle");
    final URL fileURL = bundle.getEntry("/src/my/package/TemplateFile.cpp");
     
    final IProject destinationProject = ResourcesPlugin.getWorkspace().getRoot().getProject("MyDestProject");
     
    final IFileSystem localFileSystem = EFS.getLocalFileSystem();
    final IFileStore store =
      localFileSystem.getStore(destinationProject.getLocation().append(
          new Path("src").append("NewFile.cpp")));
    try {
      localFileSystem.getStore(FileLocator.toFileURL(fileURL).toURI()).copy(store, EFS.OVERWRITE, new NullProgressMonitor());
    } catch (final URISyntaxException iException) {
      iException.printStackTrace();
    }
    Ce code va:
    • prendre ton bundle contenant tes templates (MyBundle)
    • pointer sur le fichier de template voulu ("/" est la racine du bundle)
    • trouver le projet de destination dans le workspace d'exécution (ici MyDestProject)
    • créer un chemin (et un store) vers le nouveau fichier copié
    • effectuer la copie.
    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

Discussions similaires

  1. Développer une application Java sous Eclipse
    Par Noviice dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 10/01/2013, 13h13
  2. Amélioration d'un plug-in sous Eclipse
    Par fzh2014 dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 12/07/2012, 11h29
  3. Développer une application web sous Eclipse avec applet JSP
    Par bard123 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 05/04/2008, 22h40
  4. creation de plug-in sous eclipse
    Par henpower dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 27/02/2008, 10h41
  5. installer un plug in sous eclipse
    Par swibina dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/06/2007, 12h24

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