我在一个视图中有一个TreeViewer,并且需要获取选定项的父项(如果它存在)。似乎什么都不起作用,谷歌也没有给出答案。
mBacktestTree.addDoubleClickListener(new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent event) {
IWorkbenchPage page = getSite().getPage();
TreeViewer tree = (TreeViewer) event.getSource();
Object selectObject = ((IStructuredSelection) tree.getSelection()).getFirstElement();
// now how can I get the parent of selectObject?发布于 2009-05-30 08:24:16
您可以从ITreeSelection获取父对象。例如。
public class DirectoryView extends ViewPart
{
public void createPartControl(Composite parent)
{
TreeViewer treeViewer = new TreeViewer(parent);
treeViewer.setContentProvider(new DirectoryProvider());
treeViewer.setInput(new File(System.getProperty("user.home")));
treeViewer.addDoubleClickListener(new IDoubleClickListener()
{
public void doubleClick(DoubleClickEvent event)
{
ITreeSelection selection = ((ITreeSelection)event.getSelection());
System.out.println(selection.getPaths()[0].getParentPath().getLastSegment());
}
});
}
class DirectoryProvider implements ITreeContentProvider
{
public Object[] getChildren(Object parentElement)
{
File[] folders = ((File) parentElement).listFiles();
return folders == null ? new File[0] : folders;
}
public Object getParent(Object element)
{
return ((File) element).getParent();
}
public boolean hasChildren(Object element)
{
return getChildren(element).length >0;
}
public Object[] getElements(Object inputElement)
{
return getChildren(inputElement);
}
public void dispose()
{
// ignore
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
{
// ignore
}
}
public void setFocus()
{
// ignore
}
}发布于 2009-08-28 14:12:05
您还可以从树内容提供商那里获取父级:
mBacktestTree.addDoubleClickListener(new IDoubleClickListener() {
public void doubleClick(DoubleClickEvent event) {
IWorkbenchPage page = getSite().getPage();
TreeViewer tree = (TreeViewer) event.getSource();
Object selectObject = ((IStructuredSelection)tree.getSelection()).getFirstElement();
ITreeContentProvider tcp =tree.getContentProvider();
Object parent = tcp.getParent(selectObject);https://stackoverflow.com/questions/928429
复制相似问题