2009-09-29 14 views
6

Sé que SWT tiene una clase de enlace para crear enlaces de estilo href HTML como widgets, pero no estaba tratando de encontrar la manera de hacer que cierto texto en un control StyledText aparezca y funcione como un enlace.¿Se pueden agregar enlaces de estilo HTML a SWT StyledText?

Siento que Eclipse hace esto en su editor de código si mantiene presionado el control y pasa el mouse sobre el nombre de un método, pero sé que el editor Eclipse java es mucho más complicado que un control StyledText.

Respuesta

7

Desde JFace 3.5, hay un estilo especial para los enlaces:

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

Esto hace que sea mucho más fácil de identificar un enlace y se puede almacenar la dirección URL en el estilo. En cuanto a la búsqueda automática de enlaces, simplemente busque el patrón http://[^ ] (los espacios en blanco no están permitidos en los enlaces) en las líneas que obtiene y agregue el estilo.

2

es necesario agregar un LineStyleListener al 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; 
    } 
} 

el Javadoc para LineStyleListener le dará alguna información más.

Para agregar el comportamiento de los clics, necesita algo más de lógica: también podría pegar algún código que usemos para agregar automáticamente las URL de enlaces clicables de estilo HTML en un widget StyledText si eso ayuda.

+0

Gracias! Me interesaría ver el código que usa para agregar enlaces automáticamente, pero esto es útil. – thehiatus

Cuestiones relacionadas