У меня есть таблица SWT, обернутая JFace TableViewer
.
Мои требования:
- Украсьте изображение столбца с помощью декораторов, как они определены в диспетчере декораторов верстака.
- Украсьте текст столбцов разными цветами
Я смог №1, расширив DecoratingLabelProvider
и внедрив ITableLabelProvider
. Я передал ему свой оригинальный TableLabelProvider
и менеджер декораторов верстака, и получил иконки с декораторами.
Затем я начал работать над номером 2. Я задал этот вопрос здесь, и мне сказали, что IStyleLabelProvider
(то, что я пытался использовать для цветного текста) несовместимо с ITableLabelProvider
. Поэтому я переключился на использование ColumnLabelProvider
, реализующего IStyledLabelProvider
.
Однако теперь я застрял. Эти 2 требования кажутся взаимоисключающими. Я не могу расширить одновременно ColumnLabelProvider
и DecoratingLabelProvider
. Когда я пытался просто перейти в диспетчере декораторов workbench к ColumnLabelProvider
вот так, но он вообще не украсил изображение. Я неправильно его передал, или это будет работать только в DecoratingLabelProvider
? Что еще я могу попробовать?
public Image getColumnImage(final Object element, final int columnIndex) {
if (columnIndex == MY_COLUMN_INDEX) {
final MyObject myObj = (MyObject) element;
final Image image = myObj .getImage();
Image newImage = null;
if(this.decorator != null) {
newImage = this.decorator.decorateImage(image, myObj );
}
return newImage == null ? image : newImage;
}
return null;
}