Ответ 1
Во многих случаях записи таблицы меняются во время выполнения, чтобы отразить изменения в модели данных. Для добавления записи в модель данных требуется также изменить размер столбцов, но в моем случае вызов .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();
}
}
}