【Java开源代码栏目提醒】:网学会员为广大网友收集整理了,TreeViewerContentProvider.java,希望对大家有所帮助!
package cn.com.chengang.jface.treeviewer;
import java.util.List;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
//内容器。由它决定哪些对象记录应该输出在TreeViewer里显示
public class TreeViewerContentProvider implements ITreeContentProvider {
// 由此方法决定树的“第一级”结点显示哪些对象。inputElement是用tv.setInput()方法输入的那个对象。
// Object[]一个数组,数组中一个元素就是一个结点
public Object[] getElements(Object inputElement) {
if (inputElement instanceof List) {
List input = (List) inputElement;
return input.toArray();
}
return new Object[0]; // 空数组
}
// 判断参数element结点是否有子结点。
// 返回true表示element有子结点,则其前面会显示有“+”号图标。
public boolean hasChildren(Object element) {
ITreeEntry entry = (ITreeEntry) element;
List list = entry.getChildren();
return !(list == null || list.isEmpty()); // 判断list是否有子
}
// 当界面中单击某结点时,由此方法决定被单击结点应该显示哪些子结点。
// parentElement就是被单击的结点对象。返回的数组就是应显示的子结点
public Object[] getChildren(Object parentElement) {
ITreeEntry entry = (ITreeEntry) parentElement;
List list = entry.getChildren();
// 虽然通过界面单击方式,有子的结点才会执行到此方法,但仍然要做非空判断,因为在调用TreeViewer的某些方法时其内部会附带调用此方法。
if (list == null)
return new Object[0];
return list.toArray();
}
// --------------以下方法无用,空实现----------------
public Object getParent(Object element) {
return null;
}
public void dispose() {}
public void inputChanged(Viewer v, Object oldInput, Object newInput) {}
}