2014-02-21 2 views
2

Я создаю плагин eclipse с настраиваемым редактором. Я реализовал функцию зависания текста, в которой пользователь наводил на какой-то текст, тогда текст будет показан на подсказке, например javadocs.Как изменить цвет фона при зависании в редакторе Eclipse

Теперь я хочу изменить цвет фона этого парящего текста в редакторе. Как я могу это реализовать? Я попробовал код. Но я не работал.

Color blueColor = new Color(PlatformUI.getWorkbench().getDisplay(),0,0,255); 
textViewer.setTextColor(blueColor, startRegion, finalStr.length(), false); 

Здесь finalStr - это строка, которую я получу, когда надвигаюсь на какой-либо текст. Я хочу изменить цвет фона и переднего плана finalStr.

+0

Использует ли ваш редактор 'IPresentationRepairer' или это просто текст? –

+0

Это простой текст. – Napster

+0

Кажется, что я работаю для быстрого теста. Является ли 'startRegion' допустимым смещением? –

ответ

0

Я решил свой вопрос. Выше код не работал для меня, потому что я обращался к нему за пределами потока SWT. Поэтому я должен создать новый поток и написать код в этом потоке. Ниже приведен код, который я использовал, чтобы заставить его работать.

new Thread(new Runnable() { 
@SuppressWarnings("static-access") 
public void run() { 
    try {Thread.sleep(10); } catch (Exception e) { } 
    PlatformUI.getWorkbench().getDisplay().getDefault().asyncExec(new Runnable() { 
    public void run() { 
      textViewer.invalidateTextPresentation(); 
      Color lightColor = PlatformUI.getWorkbench().getDisplay().getSystemColor(SWT.COLOR_GRAY); 
      Color blueColor=new Color(PlatformUI.getWorkbench().getDisplay(),0,0,255); 
      TextPresentation presentation = new TextPresentation(); 
      TextAttribute attr = new TextAttribute(blueColor,lightColor , 0); 
      presentation.addStyleRange(new StyleRange(startRegion, finalStr.length(), attr.getForeground(),attr.getBackground())); 
      textViewer.changeTextPresentation(presentation, true); 
    } 
    }); 
    } 
}).start(); 
Смежные вопросы