программно изменить цвет фона в затмении - PullRequest
3 голосов
/ 06 января 2010

У меня есть вопрос, связанный с разработкой плагина eclipse. Есть ли средства с помощью которого я могу программно изменить цвет фона в затмении. Я могу изменить цвет текста переднего плана, позвонив setTextColor (цвет, смещение, длина, controlRedraw) в ITextViewer но я не могу найти функцию, с помощью которой я могу изменить фон цвет текста. Если кто-то прошел через это, пожалуйста, поделитесь своими мыслями.

Спасибо Арав

Ответы [ 2 ]

2 голосов
/ 08 января 2010

Я не уверен, что это можно сделать легко, за исключением расширения вашей собственной версии текстового редактора, здесь вы предоставляете класс Configuration, который inturn принимает класс PresentationReconciler, который похож на класс Rule, который сообщает вам, если вам нужно поставить передний план или цвет фона

См. этот документ

PresentationReconciler

  • IPresentationDamager: определить грязную область при изменении текста
  • IPresentationRepairer: воссоздать презентацию для грязного региона
  • DefaultDamagerRepairer выполняет оба действия на основе сканера токенов
  • ITokenScanner: разобрать текст в поток токенов
  • RuleBasedScanner использует простые правила

Выписка из презентации

http://web.archive.org/web/20140715222227/http://img266.i_mageshack.us/img266/5465/setrules2.png

Из рецептов текстового редактора, рецепты сезона для вашего текстового редактора
Том Эйхер , IBM Eclipse Team

Здесь, нулевой цвет фона означает, принимает системный фон по умолчанию для этого виджета. (так вот: белый).
Но вы можете указать любой желаемый цвет, основываясь на разделении вашего документа и на применимых правилах.

1 голос
/ 26 августа 2010

Я знаю, что об этом спрашивали некоторое время назад, но если кто-то ищет другое решение, я подумал, что выложу следующее:

Поскольку вы можете использовать метод setTextColor, вы также должны использовать метод changeTextPresentation.

В случае с моим плагином у меня есть TextListener, который вызывает метод TextChanged, который я переписал. Я сделал следующее, чтобы добавить цвет фона, используя метод changeTextPresentation. При этом мне удалось получить зеленый фон с черным передним планом. Не то чтобы я хотел этого, конечно, но только для целей тестирования.

public void TextChanged(TextEvent event){
...
TextPresentation presentation = new TextPresentation();
TextAttribute attr = new TextAttribute(new ColorManager().getColor(MyConstants.BLACK),
      new ColorManager().getColor(MyConstants.GREEN), style);
presentation.addStyleRange(new StyleRange(startOffset, tokLength, attr.getForeground(),
      attr.getBackground());
sourceViewer.changeTextPresentation(presentation, true); //sourceViewer is a global variable passed to my TextListener class constructor.
}
...