У меня есть проблема с установкой начального ввода для ContainerCheckedTreeViewer в Eclipse ViewPart. Я устанавливаю начальный ввод внутри метода createPartControl
, но содержимое не отображается/отображается. Это только проблема при создании представления (например, запуск Eclispe/открытие представления в первый раз). Установка входа (например, с помощью oberservable) после полного инициализации представления и дерева отображается правильно.Установить начальный вход для ContainerCheckedTreeViewer
Это моя часть createPartControl
метод, который не работает, и метод update
, который работает.
private ContainerCheckedTreeViewer viewer;
//...
@Override
public void createPartControl(Composite parent) {
//Optional<ModelObject> data = null;
//Setting data
//...
contentProvider = new ViewContentProvider(viewer);
viewer = new ContainerCheckedTreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
viewer.setContentProvider(contentProvider);
viewer.setLabelProvider(new DefaultEObjectLabelProvider());
viewer.addCheckStateListener(this);
viewer.setSorter(null);
if(data.isPresent()){
viewer.setInput(data); //This is actually called, breakpoint is hit, data looks ok
}
viewer.expandAll();
//doing other stuff
}
@Override
public void update(Observable o, Object arg) {
if (arg instanceof ModelObject){
viewer.setInput(arg); //This works...
}
}
ли я что-то пропустил или есть какой-то другой метод в начале жизненного цикла ViewPart, который должен использоваться для установки данных по умолчанию?
, конечно, ваш контент-провайдер ожидает, что ваши данные будут правы. – SomeDude
Конечно, он делает и, конечно, не бросает, когда вы передаете что-то еще ... – jasper