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 :

implementation d'un content assist


Sujet :

Eclipse Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Points : 11
    Points
    11
    Par défaut implementation d'un content assist
    Bonjour je voudrai savoir ou est ce que je peux trouver un tutorial sur l'implementation d'un content assist sous eclipse dans un SWT.MULTI , si vous avez des idées je vous serez reconaissant
    a bientot

  2. #2
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour,
    ou est ce que je peux trouver un tutorial sur l'implementation d'un content assist sous eclipse
    Dans le help d'eclipse

    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
     
    //Tu crées ton text
    Text text = new Text(parent, SWT.MULTI | SWT.BORDER);
    //Les charactères qui déclenchent l'autocomplétion
    char[] autoActivationCharacters = new char[] { '#', '(' };
    //La combinaison de touches qui déclenche l'autocomplétion
    KeyStroke keyStroke = null;
    try {
    	keyStroke = KeyStroke.getInstance("Ctrl+Space");
    } catch (ParseException e) {
    	e.printStackTrace();
    }
    //La vraie chose !
    ContentProposalAdapter adapter = new ContentProposalAdapter(text,
    		new TextContentAdapter(), new SimpleContentProposalProvider(
    				new String[] { "Propostion 1", "Propostion 2",
    						"Propostion 3" }), keyStroke,
    		autoActivationCharacters);
    Pour des trucs plus puissants (dépendants par exemple du contenu initial du text), tu dois implémenter toi même ton propre IContentProposalProvider.
    Par exemple:

    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
     
    class ContentProposal implements IContentProposal {
    	private int cursorPosition;
    	private String content;
    	private String label;
     
    	public ContentProposal(String label, String content, int cursorPosition) {
    		this.content = content;
    		this.cursorPosition = cursorPosition;
    		this.label = label;
    	}
     
    	@Override
    	public String getContent() {
    		return content;
    	}
     
    	@Override
    	public int getCursorPosition() {
    		return cursorPosition;
    	}
     
    	@Override
    	public String getDescription() {
    		return label;
    	}
     
    	@Override
    	public String getLabel() {
    		return label;
    	}
    }
     
    class DictionaryContentProposalProvider implements IContentProposalProvider {
    	private String[] dictionary = { "select", "imprimante", "imprimer",
    			"selectonemenu", "selectonemenu", "savestate", "uiinput",
    			"treeView", "requette", "comment designer une requette",
    			"interface requette", "composant requette",
    			"#{..} is not allowed in template text body", "applets",
    			"RadioButtonGroup", "jsf fonction paramètres", "dialogue", "boite",
    			"constant", "constants", "convertir double en numerique",
    			"convertir double en entier", "Messages.properties", ".properties",
    			"properties", "Messages.properties", "findbyexample", "aligner",
    			"top", "binding", "lien jsf", "message", "mail", "faces context",
    			"post", "request"
     
    	};
     
    	@Override
    	public IContentProposal[] getProposals(final String contents,
    			final int position) {
    		List<IContentProposal> res = new ArrayList<IContentProposal>();
    		for (String s : dictionary) {
    			if (s.startsWith(contents)) {
    				String prop = s.substring(contents.length());
    				res.add(new ContentProposal(s, prop, prop.length()));
    			}
    		}
    		return res.toArray(new IContentProposal[0]);
    	}
    };

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    merci
    je voudrai savoir est ce que c'est possible au lieu de fabriquer un string[] qui comporte proposition1 et proposition 2 de se référer à une javadoc spécifique qui comporte des methodes et des classes que l'utilisateur pourra utiliser dans son auto-completion

  4. #4
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bah sur le papier, c'est faisable, d'aillerus, JDT le fait.
    Ce serait peut être intéressant de voir ce que JDT fait pour ça et de le réutiliser/s'en inspirer.

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    excusez moi djo.mos je suis un peu nouveau dans ce monde pourriez vous m'indiquer que dois rechercher , un tutoriel sera le bienvenue merci

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    en fait j'essaie depuis tout a l'heure a faire marcher ta solution poussée mais j'arrive pas a l'instancier , comment puis je l'utiliser?

  7. #7
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //La vraie chose !
    ContentProposalAdapter adapter = new ContentProposalAdapter(text,
    		new TextContentAdapter(), new DictionaryContentProposalProvider(), keyStroke,
    		autoActivationCharacters);

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    merci djo.mos pour la reponse ca a l'air de bien marcher mais le probleme est que dans mon texte je peux appeller le assist pas mal de fois , et ton exemple ne marche qu'une seule fois , tu as une idée pour rendre l'assistant valable a 'importe quel endroit du text?

  9. #9
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Euh ... comment ça sa marche qu'une seule fois ? J'ai pas ce problème ici

  10. #10
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    voila c simple dans mon SWT.MULTI
    je fais ctrl+space ca marche et ca me donne la valeur dont j'ai besoin apres je tappe un espace et je refais ctrl+space rien ne s'affiche
    c pour ca que je vous ai dit que ca ne marche qu'une seule fois je ne sais pas pourquoi moi aussi

  11. #11
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    bonsoir en fait j'ai trouvé le probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (String s : dictionary) {
    			if (s.startsWith(contents)) {
    dans ce bout de code le contents sera celui du permier mot+le debut du deuxieme mot donc il va jamais le trouver et donc il n'y aura pas d'autocomplete la deuxieme fois , t'as une idée comment corriger ca?

Discussions similaires

  1. [XText] Perte du content assist
    Par bpy1401 dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 23/09/2014, 09h41
  2. Problème affichage doc (content assist)
    Par niuxe dans le forum Eclipse PHP
    Réponses: 0
    Dernier message: 15/07/2012, 17h35
  3. Content Assist vide
    Par Minimus dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 08/03/2011, 12h52
  4. Problème avec le "Content Assist"
    Par Schoubi dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 26/06/2009, 15h46
  5. Plus de "Content Assist" !
    Par Baptiste Wicht dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 13/09/2007, 22h27

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