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 :

[ImportWizard] Vérifier la nature du projet lors d'un import


Sujet :

Eclipse Platform

  1. #1
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut [ImportWizard] Vérifier la nature du projet lors d'un import
    Bonjour à tous !

    J'ai un plugin qui permet de créer un nouveau projet, lui associe une nature, et qui dans un autre temps permet d'importer des fichiers. Tout cela fonctionne.

    Mon import de fichiers se fait en 2 pages : une pour sélectionner le fichier source (n'importe où dans l'ordinateur), l'autre pour définir le fichier cible. Cette deuxième page hérite de WizardNewFileCreationPage et donc permet à l'utilisateur de ne sélectionner qu'un répertoire du Workspace. J'aimerai pouvoir vérifier que le projet dans lequel il a sélectionné son répertoire soit bien d'une certaine nature, sinon je lui proposerai d'ajouter la nature au projet.

    A partir d'un IProjet, je sais récupérer les natures mais dans mon WizardNewFileCreationPage, je ne trouve pas d'astuce pour le faire, pourtant je suis bien dans mon workspace (physiquement) donc ça devrait être faisable.

    Est-ce que quelqu'un sait faire cela ?

    D'avance, merci de vos réponses.

    Antoine
    "Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire." Voltaire

  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,

    C'est un peu une technique de sioux, mais bon, si quelqu'un a mieux, qu'il n'hésite pas
    Tu surcharges la méthode handleEvent(Event event) de ton WizardNewFileCreationPage pour ajouter ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (event.type = SWT.Selection && event.widget instanceof ContainerSelectionGroup) {
        IPath fullPath = ((ContainerSelectionGroup) event.widget).getContainerFullPath();
        // On remonte au nom du projet:
        String projectName = fullPath.uptoSegment(1).lastSegment();
        // Comme on a le nom du projet, on peut récupérer facilement le IProject:
        IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
    }
    setPageComplete(validatePage());
    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  3. #3
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut
    Ben écoute Gueritarish l'idée me paraît pas mal, je sais pas d'où tu sors ces idées mais ça sens l'expérience

    Bon par contre faut que je trouve une astuce a mon avis similaire mais que je fouille dans l'API de Widget pour récupérer le projet car ContainerSelectionGroup n'est pas accessible :
    Discouraged access: The type ContainerSelectionGroup is not accessible due to restriction on required library C:\***\plugins\org.eclipse.ui.ide_3.6.1.M20100825-0800.jar
    Bon mais j'ai pas le temps aujourd'hui, je reposte lundi si je trouve !

    Merci à ton cerveau Gueritarish !

    Antoine
    "Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire." Voltaire

  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
    Pas là peine de te casser la tête, je me suis un peu emballé
    Comme tu hérites de WizardNewFileCreationPage, il te suffit de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (event.type = SWT.Selection) {
        IPath fullPath = getContainerFullPath();
        // On remonte au nom du projet:
        String projectName = fullPath.uptoSegment(1).lastSegment();
        // Comme on a le nom du projet, on peut récupérer facilement le IProject:
        IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
    }
    setPageComplete(validatePage());
    Comme ça tu ne touches pas au code interne d'Eclipse et tout est pour le mieux

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

  5. #5
    Membre habitué Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Points : 128
    Points
    128
    Par défaut
    Héhé on a eu la même idée !!

    Finalement avec ta méthode, j'ai compris le truc, du coup je n'ai même pas surchargé handleEvent(), j'ai mis ce code dans le validatePage() directement puisqu'il est aussi appelé à chaque modif de la page !

    Je ne savais pas qu'on pouvais "retrouver" le projet comme cela ! Ca me servira plus d'une fois ça

    Merci beaucoup pour ton aide !

    Antoine
    "Je ne suis pas d'accord avec ce que vous dites, mais je me battrai jusqu'à la mort pour que vous ayez le droit de le dire." Voltaire

  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
    Bah pour le coup, le fait de le mettre dans le handleEvent() et de ne prendre que les évènements de sélection te fait gagner en temps d'exécution (après, ça doit pas être énorme... mais ça peut être intéressant si tu as beaucoup de projets dans ton workspace), puisque le validatePage() est appelé pour tout les évènements...

    Sinon, pense au bouton
    Pas de questions technique par MP, les forums sont là pour ça.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/01/2012, 06h48
  2. Fermer tous les projets lors de l'extinction d'Eclipse
    Par KristoV dans le forum Eclipse
    Réponses: 4
    Dernier message: 21/07/2009, 08h18
  3. Réponses: 0
    Dernier message: 01/06/2009, 17h02
  4. Réponses: 3
    Dernier message: 27/12/2008, 19h18
  5. Probleme lors de l'import d'un projet J2EE
    Par kodo dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 22/06/2007, 09h53

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