2016-02-08 3 views
0

У меня есть проблема с установкой начального ввода для 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, который должен использоваться для установки данных по умолчанию?

ответ

0

Ну, уже поздно, возможно, слишком поздно.

Я установил опцию как входной сигнал, который не будет работать, потому что ViewContentProvider ожидает ModelObject, а не Optional<ModelObject>.

Изменение viewer.setInput(data) до viewer.setInput(data.get()) делает трюк.

+0

, конечно, ваш контент-провайдер ожидает, что ваши данные будут правы. – SomeDude

+0

Конечно, он делает и, конечно, не бросает, когда вы передаете что-то еще ... – jasper