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 :

[Plug-In] Création d'une arborescence de packages


Sujet :

Eclipse Platform

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [Plug-In] Création d'une arborescence de packages
    Bonjour,

    Je recherche désespérément un bon tutoriel pour créer un plugin Eclipse permettant de générer un projet Java, donc une arborescence de dossier/package ainsi que des classes Java (comme un projet Java classique), qui s’appuierait sur un framework que j'ai développé.

    Le plugin Eclipse devrait donc pouvoir interagir avec mon framework (fichier.jar) et les différentes méthodes qu'il permet d'utiliser.

    Quelqu'un aurait-il une bonne référence bibliographique pour que je puisse développer ce plugin ? Ou me mettre sur la voie ?

    Merci d'avance.

  2. #2
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    Déjà, il faut savoir créer un plugin Eclipse... Regarde les tutoriels sur notre site.

    Ensuite que veux-tu faire exactement, je ne comprends pas bien ?

    Si tu veux faire un "projet Java" mais ajouter des trucs au moment de la création, tu peux hériter du wizard standard qui créé des projets Java et surcharger la méthode "performFinish".

    Perso, j'ai fait un wizard qui dérive d'un autre wizard (projet UML) et qui créé une arborescence + des fichiers supplémentaires par rapport au wizard de base.
    Cette arborescence et ces fichiers sont embarqués dans le plugin lui-même et ce que fait mon performFinish, c'est appeler le performFinish du wizard de base et ensuite il recopie l'arborescence embarquée dans le plugin.

    Voici un extrait du code (l'arborescence embarquée est dans /ressources)
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    public boolean performFinish() {
        boolean ret = super.performFinish();
        if (ret) {
            try {
                WorkspaceModifyOperation op = new WorkspaceModifyOperation() {
                    protected void execute(IProgressMonitor monitor) {
                        createProject(monitor != null ? monitor
                                : new NullProgressMonitor());
                    }
                };
                getContainer().run(false, false, op);
            } catch (InvocationTargetException x) {
            } catch (InterruptedException x) {
            }
     
        }
        return ret;
    }
     
    private void createProject(IProgressMonitor monitor) {
        monitor.beginTask("Creating BDDF project...", 50);
        try {
            IPath projetAbsolutePath = getProjectLocationPath().makeAbsolute();
            File fdProject = projetAbsolutePath.toFile();
            while (!fdProject.exists()) {
                fdProject = fdProject;
            }
            IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
            try {
                createRessources(Platform.getBundle(
                        BDDFUMLProjectActivator.getDefault().PLUGIN_ID)
                        .findEntries("ressources/", "*", true), this
                        .getProjectLocationPath(), "ressources", root, monitor);
            } catch (CoreException e) {
                BDDFUMLProjectActivator.error("Cannot create project tree", e);
            }
        } finally {
            monitor.done();
        }
    }
     
    private void createRessources(Enumeration ressources, IPath projectRoot,
            String parentAsString, IWorkspaceRoot wks, IProgressMonitor monitor)
            throws CoreException {
     
        while (ressources.hasMoreElements()) {
            URL pathURL = (URL) ressources.nextElement();
            String pathString = pathURL.getFile();
            pathString = pathString.substring("ressources/".length());
            if (pathString.endsWith("/")) {
                IPath subPath = projectRoot.append(pathString);
                File fd = subPath.toFile();
                if (!fd.exists())
                    fd.mkdirs();
            } else {
                IPath subFile = projectRoot.append(pathString);
                InputStream stream = this.getClass().getResourceAsStream(
                        "/" + parentAsString + pathString);
     
                File fd = subFile.toFile();
                FileOutputStream fout;
     
                DataInputStream reader=null;
                DataOutputStream writer=null;
                try {
                    reader = new DataInputStream(stream);
                    fout = new FileOutputStream(fd);
                    writer = new DataOutputStream(fout);
                    int oread;
                    byte buffer[] = new byte[255];
                    while ((oread = reader.read(buffer, 0, 255)) != -1)
                        writer.write(buffer, 0, oread);
                    reader.close();
                    writer.close();
                } catch (FileNotFoundException e) {
                    BDDFUMLProjectActivator.debug(e.getMessage(), e);
                    try {
                        if (reader!=null)reader.close();
                        if (writer!=null)writer.close();
                    } catch (Exception ex) {
     
                    }
                }
                catch (IOException e) {
                    BDDFUMLProjectActivator.debug(e.getMessage(), e);
                }
            }
        }
    }

Discussions similaires

  1. Création d'une arborescence
    Par snyfir dans le forum Langage
    Réponses: 3
    Dernier message: 01/07/2008, 14h59
  2. création d'une arborescence pour lister un repertoire et ses sous-repertoires
    Par fadoua34090 dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 10/02/2008, 21h26
  3. Création d'une Arborescence
    Par xycoco dans le forum IHM
    Réponses: 0
    Dernier message: 24/10/2007, 14h37
  4. Création d'une arborescence pour sélection?
    Par Rheym dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/03/2007, 15h16
  5. Création d'une arborescence de dossiers
    Par guidzit dans le forum Access
    Réponses: 4
    Dernier message: 25/09/2006, 09h14

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