Во многих случаях записи таблицы изменяются во время выполнения для отражения изменений в модели данных. Добавление записи в модель данных также требует изменения размера столбцов, но в моем случае вызов .pack () после модификации модели не решает полностью проблему. В частности, с украшениями размер последней записи никогда не изменяется. Это швы должны быть из-за обновления просмотра асинхронной таблицы. Это разрезало мою проблему:
public class LabelDecoratorProvider extends DecoratingStyledCellLabelProvider {
public LabelDecoratorProvider(IStyledLabelProvider labelProvider,
ILabelDecorator decorator, IDecorationContext decorationContext) {
super(labelProvider, decorator, decorationContext);
}
@Override
public void update(ViewerCell cell) {
super.update(cell);
if (TableViewer.class.isInstance(getViewer())) {
TableViewer tableViewer = ((TableViewer)getViewer());
Table table = tableViewer.getTable();
for (int i = 0, n = table.getColumnCount(); i < n; i++)
table.getColumn(i).pack();
}
}
}