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

  1. #1
    Membre du Club
    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
    Points : 55
    Points
    55
    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 du Club
    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
    Points : 55
    Points
    55
    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 : 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,

    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
    Pas de questions technique par MP, les forums sont là pour ça.

  4. #4
    Membre du Club
    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
    Points : 55
    Points
    55
    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