2009-09-29 14 views
6

Je sais que SWT a une classe Link pour créer des liens de style href HTML comme widgets, mais j'ai essayé de trouver un moyen de faire apparaître un texte dans un contrôle StyledText et de fonctionner comme un lien. J'ai l'impression qu'Eclipse le fait dans son éditeur de code si vous maintenez le contrôle et passez la souris sur un nom de méthode, mais je sais que l'éditeur java Eclipse est beaucoup plus compliqué qu'un contrôle StyledText.Des liens HTML peuvent-ils être ajoutés à SWT StyledText?

Répondre

7

Depuis JFace 3.5, il y a un style particulier pour les liens:

styleRange.underlineStyle = SWT.UNDERLINE_LINK; 
styleRange.data = "http://www.google.com/"; 

Cela le rend beaucoup plus simple d'identifier un lien et vous pouvez stocker l'URL dans le style. Comme pour trouver automatiquement des liens, il suffit de chercher le modèle http://[^ ] (les espaces ne sont pas autorisés dans les liens) dans les lignes que vous obtenez et ajouter le style.

2

Vous devez ajouter un LineStyleListener au widget StyledText:

textField.addLineStyleListener (...); 

... 

public void lineGetStyle (LineStyleEvent e) 
{ 
    // alloc a set of styles for the requested line 
    e.styles = new StyleRange [...]; 

    for (int i = 0; i < e.styles.length; i++) 
    { 
    StyleRange styleRange = new StyleRange(); 

    styleRange.start = ...; 
    styleRange.length = ...; 
    styleRange.underline = true; 
    styleRange.foreground = <URL colour>; 

    e.styles [i] = styleRange; 
    } 
} 

Le javadoc pour LineStyleListener vous donner plus d'informations. Pour ajouter le comportement de clic, vous avez besoin de plus de logique: Je pourrais également coller du code que nous utilisons pour ajouter automatiquement des URL de liens cliquables de style HTML dans un widget StyledText si cela pouvait aider.

+0

Merci! Je serais intéressé de voir le code que vous utilisez pour ajouter automatiquement des liens, mais cela est utile. – thehiatus

Questions connexes