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 :

Plugin qui s'inspire d'Eclipse


Sujet :

Eclipse Platform

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 24
    Points
    24
    Par défaut Plugin qui s'inspire d'Eclipse
    Bonjour,

    J'aimerais développer un outil qui permette de faire les "Organize imports" sur toutes les classes d'un projet.

    Pour cela j'ai pensé à la solution de créer un plugin qui contient les bons plugins d'Eclipse.

    Je ne veux pas qu'il soit greffé dans l'interface d'Eclipse mais j'aimerais que l'opération puisse être appelée via des méthodes d'une classe principale.

    Je connais les classes des plugins d'Eclipse à utiliser mais je ne connais pas quelles sont les classes que je dois créer dans mon projet de plugin pour permettre ceci, mis à part:
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    public class Activator extends Plugin
    Une aide quelconque serait la bienvenue.

  2. #2
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Points : 17 036
    Points
    17 036
    Par défaut
    Bonjour,

    Tu veux refaire ce qui existe déjà ou j'ai pas tout compris ?
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Non je veux utiliser ce qui est fait par le plugin JDT d'Eclipse. Eclipse permet de le faire sur un fichier ouvert par l'éditeur de code, moi j'aimerais le faire sur tous les fichiers d'un projet sans passer par l'interface graphique.

  4. #4
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

    Informations forums :
    Inscription : Janvier 2005
    Messages : 7 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Bonjour,

    Eclipse permet de faire des organize imports sur tout un projet déjà...

  5. #5
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Points : 17 036
    Points
    17 036
    Par défaut
    Citation Envoyé par kilmos Voir le message
    Eclipse permet de le faire sur un fichier ouvert par l'éditeur de code
    Je confirme ce que dit BiM et cela se fait via l'arborescence (en vue package je pense)
    Citation Envoyé par kilmos Voir le message
    moi j'aimerais le faire sur tous les fichiers d'un projet sans passer par l'interface graphique.
    Dans quel but précis ?
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    En fait je travaille sur du code généré(avec des outils comme Acceléo, Xdoclets, ...). Mais comme pour toujours, la génération de code ne résout pas tous les problèmes. Par exemple, il y'a trop de warnings concernant les imports. J'aimerais automatiser la tache d'organisation des imports après la génération de code(avec un script ant par exemple). J'aimerai ne pas avoir recours à Eclipse systématiquement, d'autant qu'ils y'a beaucoup de lignes e code générées.

  7. #7
    Rédacteur/Modérateur
    Avatar de Laurent.B
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    3 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 3 468
    Points : 17 036
    Points
    17 036
    Par défaut
    Ah ben là du coup on comprend mieux ton besoin...

    En ce qui me concerne, ce n'est pas ma partie donc je laisse d'autres te répondre

    Par contre, le résultat m'aurait intéressé il y a quelques temps car j'étais exactement dans le même cas que toi. Sauf peut-être que moi, je ne pouvais même pas m'amuser à tripatouiller les sources n'importe où car la génération n'était pas du "one shot", donc trop complexe à gérer.
    Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
    Gardons toujours à l'esprit que le forum constitue une base documentaire, dont l'utilité et la qualité dépendent du soin apporté à nos questions et nos réponses. Soyons polis, précis (dans le titre et dans le corps des questions), concis, constructifs et faisons de notre mieux pour respecter la langue française et sa grammaire. Merci pour nous (les modérateurs) mais aussi et surtout, merci pour vous.
    Problème solutionné => je vais au bas de la page et je clique sur le bouton (qui suite à mise à jour du forum, a légèrement changé d'aspect).

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 24
    Points
    24
    Par défaut début de résultat
    Ca fait un bail, mais je suis revenu dessus. J'ai développé un plugin pour les besoins de cette tache. Ce plugin utlise des points d'extension suivants:


    Jusque là, tout marche avec la configuration d'une application Eclipse(menu run->Run configurations-> Eclipse application) . Donc à l'exécution, un nouveau Eclipse est lancé et si l'utilisateur appuie sur le menu de la commande, tous les imports de toutes les sources de son projet sélectionne sont organisés.

    Mon seul souci maintenant est d'automatiser toutes ces actions de l'utilisateur soit par une configuration d'une application Eclipse soit en créant un product. Dans les deux cas je ne trouve pas de manière de cacher l'interface graphique de l'application Eclipse qui est lancée. Quelqu'un aurait-il une idée pour faire cela.

  9. #9
    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,

    Dans tes recherches sur notre ami sache que le mode d'Eclipse que tu recherches, c'est le mode headless (ça peut toujours aider...). Sinon, je suis tombé sur cet article qui peut t'aider (surtout pour la partie "automatisation des tests"). À adapter à ton problème... Mais je pense que ça doit pouvoir se faire.

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

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 24
    Points
    24
    Par défaut jouer sur les étapes de création du workbench
    Merci Gueritarish.
    Le lien que tu m'as indiqué facilite bien les tests automatiques et le build. Mon problème est que l'action (la classe OrganizeImortsActions) dont j'ai besoin fait partie du package org.eclipse.jdt.ui.actions . J'ai regardé dans le code source du plugin org.eclipse.jdt.ui et il est impératif d'avoir le workbench lancé pour exécuter cette commande. L'idée que je suis en train d'explorer, meme si cela parait surréaliste est d'agir sur le processus de création du workbench. Je m'explique: je crée une eclipse application comme indiqué dans cet article qui explique qu'il y a une phase(preStartup) appelée après initialisation de la fenêtre et avant ouverture de celle-ci. C'est ici que je compte créer la commande l'exécuter et fermer l'application aussitot après. Mais ceci me conduit vers plusieurs erreurs de runtime. Voici une sortie de l'erreur:
    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
    java.lang.NoClassDefFoundError: org/eclipse/jdt/ui/actions/OrganizeImportsAction
    at pluginrcp.ApplicationWorkbenchAdvisor.postStartup(ApplicationWorkbenchAdvisor.java:54)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2322)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:490)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at pluginrcp.Application.start(Application.java:38)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
    Si quelqu'un a une autre suggestion je suis preneur.

  11. #11
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 24
    Points
    24
    Par défaut code source
    J'ai oublié d'ajouter le bout de code en question. Il se trouve dans la classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ApplicationWorkbenchAdvisor extends WorkbenchAdvisor
    .La méthode postStartup:
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    @Override
    	public void postStartup() {
    		super.postStartup();
    		System.out.println("Avant startup");
    		try {// La commande qui permet d'organiser
    			final IHandlerService handlerService = (IHandlerService) PlatformUI
    					.getWorkbench().getService(IHandlerService.class);
    			IHandler handler = new AbstractHandler() {
     
    				public Object execute(ExecutionEvent event)
    						throws ExecutionException {
    					// Get the root of the workspace
    					IWorkspace workspace = ResourcesPlugin.getWorkspace();
    					IWorkspaceRoot root = workspace.getRoot();
     
    					// Obtention du projet concerné
    					IProject project = root.getProject("organisation");
    					IJavaProject javaProject = JavaCore.create(project);
    					try {
    						// Suppose que les sources à patcher sont dans un projet
    						project.open(null /* IProgressMonitor */);
     
    						// L'objet qui permet d'organiser les imports
    						OrganizeImportsAction oiA = new OrganizeImportsAction(
    								HandlerUtil.getActiveSite(event));
    						// Tous les packages du projet
    						IPackageFragment[] lesPackagesFragments = javaProject
    								.getPackageFragments();
    						for (IPackageFragment mypackage : lesPackagesFragments) {
    							oiA.runOnMultiple(mypackage.getCompilationUnits());
    						}
     
    					} catch (JavaModelException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					} catch (OperationCanceledException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					} catch (CoreException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
     
    					return null;
    				}
    			};
    			// IHandler handler = new OrganizeHandler();
     
    			handlerService
    					.activateHandler("pluginRCP.organizeCommand", handler);
    			handlerService.executeCommand("pluginRCP.organizeCommand", null);
     
    		} catch (ExecutionException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (NotDefinedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (NotEnabledException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (NotHandledException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}

  12. #12
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 24
    Points
    24
    Par défaut debut de solution
    J'ai changé d'approche: j'ai créé une application eclipse RCP "headless", et j'ai ajouté le code de la méthode execute du handler dans le corps de la méthode start de mon nouveau Application. De cette manière le lancement de l'application marche avec succés. Mon problème est maintenant comment faire pour exporter le product créé. J'ai suivi la méthode expliquée dans l'aide en ligne d'Eclipse; l'export ne produit pas d'erreur mais l'exécution provoque l'exception suivante:
    !SESSION 2009-10-23 10:49:47.945 -----------------------------------------------
    eclipse.buildId=unknown
    java.version=1.5.0_12
    java.vendor=Sun Microsystems Inc.
    BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=fr_FR
    Command-line arguments: -os win32 -ws win32 -arch x86

    !ENTRY org.eclipse.osgi 4 0 2009-10-23 10:49:48.916
    !MESSAGE Application error
    !STACK 1
    org.eclipse.core.runtime.CoreException: Plug-in "headlessRCP" was unable to instantiate class "headlessrcp.Application".
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.throwException(RegistryStrategyOSGI.java:180)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
    at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:867)
    at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
    at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:51)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:188)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
    Caused by: java.lang.NoClassDefFoundError: metier/OrganiseurImportsOperation$IChooseImportQuery
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2357)
    at java.lang.Class.getConstructor0(Class.java:2671)
    at java.lang.Class.newInstance0(Class.java:321)
    at java.lang.Class.newInstance(Class.java:303)
    at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:170)
    ... 15 more

    !ENTRY org.eclipse.osgi 2 0 2009-10-23 10:49:48.947
    !MESSAGE The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
    !SUBENTRY 1 org.eclipse.osgi 2 0 2009-10-23 10:49:48.947
    !MESSAGE Bundle initial@reference:file:plugins/org.e...90114-1205.jar/ [51] was not resolved.
    !SUBENTRY 2 org.eclipse.jdt.compiler.apt 2 0 2009-10-23 10:49:48.947
    !MESSAGE Missing imported package org.eclipse.jdt.internal.compiler.tool_0.0.0.
    !SUBENTRY 1 org.eclipse.osgi 2 0 2009-10-23 10:49:48.947
    !MESSAGE Bundle initial@reference:file:plugins/org.e...v_894_R34x.jar/ [52] was not resolved.
    !SUBENTRY 2 org.eclipse.jdt.compiler.tool 2 0 2009-10-23 10:49:48.947
    !MESSAGE Missing Constraint: Bundle-RequiredExecutionEnvironment: JavaSE-1.6
    Je précise que la même application exécutée dans eclipse avec le meme product marche sans exception. Quelqun aurait-il une idée de provenance de cette erreur?

  13. #13
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 26
    Points : 24
    Points
    24
    Par défaut bon lanceur non utilisé
    En fait le product exporté marche bien. Seulement je m'étais trompé sur le classpath du lanceur org.eclipse.equinox.launcher.Main . J'utilisais le classpath du plugin org.eclipse.equinox.launcher_1.0.101.R34x_v20081125.jar qui se trouve dans le dossier d'install d'eclipse: du coup il ne trouva pas la bonne application à lancer. Il suffisait d'utiliser le lanceur org.eclipse.equinox.launcher.Main qui se trouve dans le dossier plugins du dossier exporté.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    En fait, je suis également dans le même cas que toi. Je suis donc preneur de ta solution.
    Il y a-t-il un endroit où on peut télécharger ou voir ce que tu as fait ?

    Merci d'avance

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

Discussions similaires

  1. [plugin][VE] visual editor pour eclipse
    Par fptv7514 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/08/2005, 14h00
  2. [Plugin][VE]Developpement VE Sous Eclipse
    Par hm_nomade74 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 10/08/2005, 12h34
  3. [Plugin][VE]Visual editor pour Eclipse
    Par vijeo dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 08/06/2005, 09h04
  4. [Plugin][VE]Swing VE avec eclipse
    Par Fry dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 03/03/2005, 16h03
  5. [Q] que faire quand un plugin n'apparait pas dans eclipse
    Par zolive dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 30/08/2004, 23h38

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