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 Java Discussion :

Trouver les fichiers sources correspondant aux fonctionnalités sur Eclipse


Sujet :

Eclipse Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Par défaut Trouver les fichiers sources correspondant aux fonctionnalités sur Eclipse
    Bonjour,

    J'ai un code Java généré non indenté et mal formaté. Je cherche à créer un programme Java qui permette d'indenter et de faire de façon automatique ce que fait la commande Source > Format.

    J'aimerais également avoir le code Java de cette fonctionnalité d'Eclipse. J'ai essayé de trouver sur http://dev.eclipse.org/viewcvs/viewvc.cgi/ mais il y a tellement de répertoires et ça m'a pris beaucoup de temps sans que je n'aboutisse à quelque chose.

    Merci d'avance pour vos réponses.

  2. #2
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Par défaut
    J'ai pu trouver la solution pour le deuxième point. La classe Java qui implémente la fonction permettant de formater le code Java est dans le package org.eclipse.jdt.core.formatter

  3. #3
    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 : 41
    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
    Par défaut
    Salut,

    Tu peux regarder les sources Eclipse dans le repository Git. Mais si tu ne sais pas dans quel plug-in regarder, tu n'es pas plus avancé...
    Il faut savoir que, même si cette fonctionnalité est reprise de JFace, dans JDT (le plug-in Eclipse pour développer en Java), elle n'est utile que sur un SourceViewer (un éditeur Java en l'occurrence). Donc difficilement portable à un IDocument qui serait utilisé dans une application Java seule.
    Après, si tu tiens à le faire en stand-alone:
    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
    IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("MyProject");
    IFile file = project.getFile(new Path("src/my/packages/MyClass.java"));
    InputStream is = file.getContents();
    InputStreamReader reader = new InputStreamReader(is);
    BufferedReader buff = new BufferedReader(reader);
    StringBuilder builder = new StringBuilder();
    String line;
    while ((line = buff.readLine()) != null)
    {
    	if (builder.length() > 0)
    	{
    		builder.append("\r\n");
    	}
    	builder.append(line);
    }
    is.close();
    final IDocument document = new Document(builder.toString());
    IFormattingContext context = null;
    DocumentRewriteSession rewriteSession = null;
     
    IDocumentExtension4 extension = (IDocumentExtension4) document;
    DocumentRewriteSessionType type = DocumentRewriteSessionType.SEQUENTIAL;
    rewriteSession = extension.startRewriteSession(type);
     
    final MultiPassContentFormatter fContentFormatter = new MultiPassContentFormatter(IDocumentExtension3.DEFAULT_PARTITIONING,
    		IDocument.DEFAULT_CONTENT_TYPE);
    fContentFormatter.setMasterStrategy(new ContextBasedFormattingStrategy() {
     
     
    	@Override
    	public void format()
    	{
    		final TextEdit edit = CodeFormatterUtil.reformat(CodeFormatter.K_COMPILATION_UNIT | CodeFormatter.F_INCLUDE_COMMENTS, document.get(),
    				0, document.getLength(), 0, TextUtilities.getDefaultLineDelimiter(document), getPreferences());
    		if (edit != null)
    		{
    			try
    			{
    				edit.apply(document);
    			} catch (MalformedTreeException e)
    			{
    				e.printStackTrace();
    			} catch (BadLocationException e)
    			{
    				e.printStackTrace();
    			}
    		}
    	}
    });
    try
    {
    	final String rememberedContents = document.get();
     
    	try
    	{
    		if (fContentFormatter instanceof IContentFormatterExtension)
    		{
    			final IContentFormatterExtension extensionFormatter = (IContentFormatterExtension) fContentFormatter;
    			context = new FormattingContext();
    			context.setProperty(FormattingContextProperties.CONTEXT_DOCUMENT, Boolean.TRUE);
    			extensionFormatter.format(document, context);
    		} else
    		{
    			IRegion r = new Region(0, document.getLength());
    			fContentFormatter.format(document, r);
    		}
     
    		StringInputStream sourceStream = new StringInputStream(document.get());
    		file.setContents(sourceStream, IFile.FORCE, new NullProgressMonitor());
    		sourceStream.close();
    	} catch (RuntimeException x)
    	{
    		document.set(rememberedContents);
    		throw x;
    	}
    } finally
    {
    	extension.stopRewriteSession(rewriteSession);
    	if (context != null)
    		context.dispose();
    }
    Il te faudra, au minimum une dépendance vers JFace, JDT et org.eclipse.text.

    Voilà, à+
    Gueritarish

  4. #4
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Par défaut
    Merci pour ta réponse mais je n'ai rien compris de ce que tu as écrit.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/12/2014, 22h14
  2. Réponses: 3
    Dernier message: 12/01/2012, 08h46
  3. Réponses: 5
    Dernier message: 06/03/2009, 14h07
  4. [#include]A mettre sur tous les fichiers sources ?
    Par nodogeid dans le forum Débuter
    Réponses: 2
    Dernier message: 24/03/2008, 23h35
  5. Effacer les fichiers sources (*.cs) sur le serveur
    Par caglis dans le forum ASP.NET
    Réponses: 9
    Dernier message: 24/01/2007, 11h46

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