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 :

Récupération nom classes


Sujet :

Eclipse Platform

  1. #1
    Membre régulier
    Femme Profil pro
    Etudiante en informatique
    Inscrit en
    Janvier 2013
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiante en informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 98
    Points : 95
    Points
    95
    Par défaut Récupération nom classes
    Bonjour à tous,

    Je fais un plugin sous Éclipse (Kepler) et une des fonctions de ce plugin est de proposer une auto-complétion avec le nom des classes du projet.

    Mon problème est que je ne trouve pas comment récupérer les fichiers/classes du projet afin de les ajouter à ma liste des mots proposés à l’auto-complétion.

    Quelqu'un saurait-il m'indiquer comment procéder ?

    Merci d'avance pour votre aide.

  2. #2
    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 : 39
    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,

    Il va te falloir ajouter des dépendances aux plug-ins: org.eclipse.core.resources et org.eclipse.jdt.core.
    Ensuite, tu pourras exécuter le code suivant qui te permettra de récupérer les classes présentes dans le projet "MyProject". C'est à adapter à ton cas bien entendu:
    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
    IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
    IProject myProject = root.getProject("MyProject");
    if (myProject != null) {
    	IJavaProject myJavaProject = JavaCore.create(myProject);
    	try {
    		List<String> classesNames = new ArrayList<String>();
    		ICompilationUnit[] compilationUnits;
    		String className;
    		IPath classPath;
    		// On parcourt l'ensemble des packages root.
    		for (IPackageFragmentRoot pkgRoot : myJavaProject.getPackageFragmentRoots()) {
    			if (!pkgRoot.isArchive()) {
    				// On parcourt les packages fils:
    				for (IJavaElement pkgElement : pkgRoot.getChildren()) {
    					if (pkgElement instanceof IPackageFragment) {
    						compilationUnits = ((IPackageFragment) pkgElement).getCompilationUnits();
    						if (compilationUnits != null) {
    							// On parcourt ensuite les ICompilationUnit
    							for (ICompilationUnit iUnit : compilationUnits) {
    								classPath = iUnit.getPath();
    								className = classPath.lastSegment();
    								// Ce code sert à récupérer le nom de la classe sans le ".java".
    								className = className.substring(0,
    										className.indexOf(classPath.getFileExtension()) - 1);
    								classesNames.add(className);
    							}
    						}
    					}
    				}
    			}
    		}
    	} catch (JavaModelException e) {
    		e.printStackTrace();
    	}
    }
    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  3. #3
    Membre régulier
    Femme Profil pro
    Etudiante en informatique
    Inscrit en
    Janvier 2013
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiante en informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 98
    Points : 95
    Points
    95
    Par défaut
    Merci, cela fonctionne parfaitement !
    Mais je ne connais pas le nom du projet, comment le récupérer ?

  4. #4
    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 : 39
    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
    Citation Envoyé par unapologetic Voir le message
    Mais je ne connais pas le nom du projet, comment le récupérer ?
    Là, il va falloir expliquer un peu plus le contexte. Parce que je peux pas deviner dans quel état tu te trouves...
    Ton auto-complétion est lancé à quel moment? L'utilisateur a effectué quelles actions?

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

  5. #5
    Membre régulier
    Femme Profil pro
    Etudiante en informatique
    Inscrit en
    Janvier 2013
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiante en informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 98
    Points : 95
    Points
    95
    Par défaut
    Bon alors je m'explique :

    Je créé un plugin éclipse sous forme d'éditeur
    Dans cet éditeur, lorsque l'utilisateur saisie des caractères, le plugin propose à l'utilisateur de l'auto-complétion
    Les propositions de l'auto-complétion représente la liste des classes du projet (actif) sur lequel l'utilisateur travaille.

    Je ne sais pas si je suis plus claire la...

  6. #6
    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 : 39
    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
    Donc, tu as la main sur ton IEditorInput, avec par exemple, l'emplacement du fichier Java qui est édité? Tu peux tout à fait utiliser cela pour obtenir le nom du projet. Sinon, il te faut savoir comment l'utilisateur ouvre ton éditeur et voir ce que tu peux récupérer à ce moment là...

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

  7. #7
    Membre régulier
    Femme Profil pro
    Etudiante en informatique
    Inscrit en
    Janvier 2013
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiante en informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 98
    Points : 95
    Points
    95
    Par défaut
    Bonjour,

    Merci de ta réponse. Alors j'ai longuement essayé avec IEditorPart, sauf que j'ai toujours la même erreur "Failed to create the part's controls" dès que j'utilise :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IWorkbench wb = PlatformUI.getWorkbench();
    IWorkbenchPage page = wb.getActiveWorkbenchWindow().getActivePage();
    String s = page.getActiveEditor().getTitle();

    :/

  8. #8
    Membre régulier
    Femme Profil pro
    Etudiante en informatique
    Inscrit en
    Janvier 2013
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiante en informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 98
    Points : 95
    Points
    95
    Par défaut
    Finalement j'ai réussi à faire ceci :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    IWorkbench wb = PlatformUI.getWorkbench();
    IWorkbenchPage page = wb.getActiveWorkbenchWindow().getActivePage();
    IEditorPart[] editor = page.getEditors();
    String chemin = editor[0].getTitleToolTip();
    String[] s = chemin.split("/");
    String projectName = s[0];

    Cela fonctionne mais je ne sais pas si il est correcte de faire comme ça :/

  9. #9
    Membre émérite
    Avatar de Mickael_Istria
    Homme Profil pro
    Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Inscrit en
    Juillet 2008
    Messages
    1 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Expert Eclipse IDE/RCP, pour Red Hat
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 469
    Points : 2 997
    Points
    2 997
    Par défaut
    Utiliser le tooltip ou le titre de l'editeur n'est pas une solution super fiable: imagine que cette convention change, ou que quelqu'un fait un editeur en surchargeant le tooltip, et bien ton code ne marchera plus.
    Il me semble necessaire de passer par l'EditorInput, comme le suggere Gueritarish, pour avoir quelque chose de plus robuste.
    Pour du HTML, CSS, JavaScript, TypeScript, JSon, Yaml, Node... dans Eclipse IDE, installe Eclipse Wild Web Developer
    Pour du Rust dans Eclipse IDE, installe Eclipse Corrosion
    Follow me on twitter

  10. #10
    Membre régulier
    Femme Profil pro
    Etudiante en informatique
    Inscrit en
    Janvier 2013
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiante en informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 98
    Points : 95
    Points
    95
    Par défaut
    D'accord, merci de la réponse
    Comment fait-on pour le récupérer ?

    Voici mon code :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class ListingClass {
     
    	// Récupération Nom du projet
    	IWorkbench wb = PlatformUI.getWorkbench();
    	IWorkbenchPage page = wb.getActiveWorkbenchWindow().getActivePage();
    	IEditorPart[] editor = page.getEditors();
    	String chemin = editor[0].getTitleToolTip();
    	String[] s = chemin.split("/");
    	String projectName = s[0];
    J'ai changé comme ça, est-ce correcte ?
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Récupération Nom du projet
    	IWorkbench wb = PlatformUI.getWorkbench();
    	IWorkbenchPage page = wb.getActiveWorkbenchWindow().getActivePage();
    	IEditorPart[] editor = page.getEditors();
    	String chemin = editor[0].getEditorInput().getToolTipText();
    	String[] s = chemin.split("/");
    	String projectName = s[0];

    Très honnêtement j'ai un gros doute !

  11. #11
    Rédacteur/Modérateur

    Avatar de alain.bernard
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Décembre 2011
    Messages
    749
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur aéronautique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 749
    Points : 5 219
    Points
    5 219
    Par défaut
    Salut,

    Arrêtes toi à :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    editor[0].getEditorInput()

    Cette méthode renvoie un objet de type IEditorInput. Que tu peux caster sans trop te casser les dents en FileEditorInput vu que tu édites un fichier qui de surcroît se trouve dans le workspace puisqu'il appartient à un projet. De cet objet tu pourras obtenir un objet de type IFile qui lui-même te permet d'accéder à ton projet :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    IWorkbenchPage page = wb.getActiveWorkbenchWindow().getActivePage();
    IEditorPart editor = page.getActiveEditor();
    IEditorInput rawInput = editor.getEditorInput();
    IFileEditorInput fileInput = (IFileEditorInput)rawInput;
    IProject theProject = fileInput.getFile().getProject();
    Note que j'ai utilisé getActiveEditor pour accéder à l'éditeur qui a le focus à l'instant t, c'est plus joli !

    Bon courage,
    Alain
    Pas de messages techniques par MP, les forums sont là pour ça.
    Rédacteur d'articles sur la plateforme Eclipse

    N'oubliez pas de consulter les FAQ Eclipse et les cours et tutoriels Eclipse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Question structure Récupération nom Classe Fille
    Par Echyzen dans le forum Symfony
    Réponses: 1
    Dernier message: 07/08/2014, 12h01
  2. Récupération nom d'un exe
    Par micatt dans le forum Delphi
    Réponses: 3
    Dernier message: 06/04/2007, 16h44
  3. [VBA-E] Récupération Nom de fichier
    Par trihanhcie dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 02/03/2007, 13h53
  4. récupération nom fichier
    Par kanabzh29 dans le forum MFC
    Réponses: 3
    Dernier message: 03/05/2006, 11h00
  5. Récupération nom champ dans liste et faire pointer dessus
    Par Michel Hubert dans le forum Contribuez
    Réponses: 10
    Dernier message: 14/04/2006, 10h22

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