2009-09-29 9 views
6

Wiem, że SWT ma klasę Link, aby utworzyć HTML w stylu href jako widżety, ale ja próbowałem znaleźć sposób na sprawienie, aby określony tekst w formancie StyledText pojawił się i działał jako łącze.Czy łącza stylów HTML można dodać do SWT StyledText?

Czuję, że Eclipse robi to w edytorze kodu, jeśli przytrzymasz kontrolkę i najedziesz kursorem na nazwę metody, ale wiem, że edytor Eclipse java jest znacznie bardziej skomplikowany niż formant StyleedText.

Odpowiedz

7

Od jface 3.5, istnieje specjalny styl dla linków:

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

To sprawia, że ​​o wiele bardziej proste do zidentyfikowania linku i można przechowywać URL w stylu. Jeśli chodzi o automatyczne znajdowanie linków, po prostu szukaj wzoru http://[^ ] (puste są niedozwolone w linkach) w liniach, które otrzymujesz i dodaj styl.

2

Trzeba dodać LineStyleListener do widgetu 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; 
    } 
} 

Javadoc dla LineStyleListener daje trochę więcej informacji.

Aby dodać zachowanie kliknięcia, potrzebujesz więcej logiki: Mogę również wkleić kod, którego użyjemy do automatycznego dodawania kliknięć linków klikalnych w stylu HTML w widgecie StyledText, jeśli mogłoby to pomóc.

+0

Dzięki! Byłbym zainteresowany wyświetleniem kodu, którego używasz do automatycznego dodawania linków, ale jest to pomocne. – thehiatus

Powiązane problemy