ScrollBar problem in TreeViewer [message #1690774] |
Tue, 31 March 2015 08:15 |
Olga Penskaya Messages: 1 Registered: March 2015 |
Junior Member |
|
|
Hello all,
I have a strange problem with vertical scrollbar in TreeViewer.
I created a simple RAP application with two views :
- first with treeviewer
- second with comboviewer
When I create this treeviewer, I select a random element from the tree. Element is selected but scroll is still in top position and selected element is not visible (see attachment 1).
Below code for treeviewer creation:
viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
viewer.setContentProvider(new TreeContentProvider());
viewer.setLabelProvider(new TreeLabelProvider());
viewer.setInput(UtilContent.getInstance().getElements());
Object root = UtilContent.getInstance().getElements().get(24);
Object group = ((RootElement) root).getChildren().get(45);
Object child = ((GroupElement) group).getChildren().get(70);
viewer.setExpandedElements(new Object[]{root, group, child});
viewer.setSelection(new StructuredSelection(child), true);
Besides, If I select same element from comboviewer, scrolling works (see attachment 2).
Below code for tree item selection through comboviewer:
comboViewer.addPostSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
TreeViewer viewer = UtilContent.getInstance().getViewer();
if (viewer != null) {
AbstractChildElement elem = (AbstractChildElement) ((StructuredSelection) event.getSelection()).getFirstElement();
Object[] path = getPath(elem.getName());
viewer.setExpandedElements(path);
viewer.setSelection(new StructuredSelection(elem), true);
}
}
});
private Object[] getPath(String name) {
List<Object> path = new ArrayList<>();
for (Object element : UtilContent.getInstance().getElements()) {
for (Object groupElem : ((RootElement)element).getChildren()) {
for (Object childElem : ((GroupElement)groupElem).getChildren()) {
if (name.equals(((AbstractChildElement)childElem).getName())) {
path.add(element);
path.add(groupElem);
path.add(childElem);
break;
}
}
}
}
return path.toArray();
}
I use rap 2.3.0. Maybe I do something wrong?
|
|
|
|
Powered by
FUDForum. Page generated in 0.01627 seconds