Pergunta

Eu sei SWT tem uma classe Link para criar HTML de links de estilo href como widgets, mas eu foste tentando encontrar uma maneira de ter certeza de texto em um controle StyledText aparecem e funcionam como um link.

Eu me sinto como Eclipse faz isso em seu editor de código se você mantenha o controle e passar o mouse sobre um nome de método, mas eu sei o editor java Eclipse é muito mais complicado do que um controle StyledText.

Foi útil?

Solução

Desde JFace 3.5, há um estilo especial para links:

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

Isso torna muito mais simples para identificar um link e você pode armazenar o URL no estilo. Como para encontrar automaticamente links, basta olhar para o http://[^ ] padrão (espaços em branco não são permitidos em links) nas linhas que você começa e adicionar o estilo.

Outras dicas

Você precisa adicionar um LineStyleListener ao StyledText Widget:

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;
  }
}

O javadoc para LineStyleListener vai lhe dar mais algumas informações.

Para adicionar o comportamento do botão, você precisa de mais alguma lógica:. Eu podia também colar algum código que usamos para adicionar automaticamente ao estilo HTML links clicáveis ??URL de um StyledText Widget se isso iria ajudar

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top