программно изменить цвет фона в eclipse

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

спасибо арав


person Community    schedule 05.01.2010    source источник


Ответы (2)


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

См. этот документ< /а>

Согласование презентаций

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

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

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

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

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

person VonC    schedule 07.01.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.
}
person Paul Reisert    schedule 26.08.2010