2010-12-06 3 views
0

J'ai un IProject qui est également un IJavaProject. J'ai besoin de trouver tous les autres projets dans l'espace de travail qui se réfèrent à cet IProject.Obtenir toutes les références IProject dépendantes pour un IProject donné

Une façon simple et inefficace de calculer cela est de parcourir tous les projets dans l'espace de travail et de garder une trace des références au projet en cours. Quelque chose comme ceci:

IProject currentProject = ...; 

IProject[] allProjects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); 
List<IProject> interestingProjects = ...; 
for (IProject project : allProjects) { 
    if (refersToCurrentProject(project)) { 
    interestingProjects.add(project); 
    } 
} 
doSomething(interestingProjects); 

Remarque- Je n'ai pas compilé ce code et je l'ai écrit de la mémoire, donc exactement, peut ne pas fonctionner je ne cherche à donner une idée de ce que je veux faire.

Une autre possibilité est de calculer les dépendances une seule fois, puis de mettre à jour les dépendances via un IResourceChangedListener. Mais, c'est aussi compliqué et j'ai besoin d'écrire ma propre logique (sujette aux erreurs) pour cela.

Toutes les suggestions seraient appréciées.

Répondre

1

Je sais qu'il existe une option de menu contextuel pour fermer des projets non liés lorsque vous cliquez avec le bouton droit sur un projet particulier. Avez-vous regardé cela?

+0

Merci pour le pointeur. Il semble que le CloseUnrelatedProjectsAction utilise IProject.getReferencedProjects(). Ce n'est pas exactement ce que je veux puisque tous les projets dans l'espace de travail doivent être visités. –

+0

En regardant cela, j'ai remarqué qu'il existe une méthode IProject.getReferencingProjects(). Le JavaDoc décrit exactement le comportement que je cherche. Cependant, la mise en œuvre est un peu naïve et recherche dans tous les projets de l'espace de travail. Je commence à penser qu'il n'y a pas de réponse simple à cela. –

+0

En fin de compte, c'est ainsi que je m'applique. Merci pour la suggestion originale. Je ne suis pas particulièrement satisfait des résultats, mais je ne pense pas que je puisse faire beaucoup mieux sans gérer l'État moi-même. –

Questions connexes