您的位置:首页 > 编程语言 > PHP开发

TreeViewer应用实例(ITreeContentProvider与LabelProvider的使用)

2017-06-26 21:05 441 查看
代码案例如下:

1、TreeViewer

TreeViewer matchPathTreeViewer = new TreeViewer(sashForm_3, SWT.BORDER);
matchPathTreeViewer.setLabelProvider(new MatchPathLabelProvider());
matchPathTreeViewer.setContentProvider(new MatchPathTreeContentProvider());
MatchTree matchTree = item.getmTree();
matchPathTreeViewer.setInput(matchTree);


2、ITreeContentProvider

private class MatchPathTreeContentProvider implements ITreeContentProvider {

//关闭窗口:会先后执行inputChanged和dispose方法。
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

}

public void dispose() {

}

// getElements方法决定树的“第一级”结点显示哪些对象。
//inputElement为输入的那个MatchTree对象。
//Object[]是一个数组,数组中一个元素就是一个结点。
public Object[] getElements(Object inputElement) {

if (inputElement instanceof MatchTree) {

MatchTree input = (MatchTree) inputElement;
return input.getChildren().toArray();

}

return new Object[0]; // 空数组

}

// 在界面中单击某结点时,getChildren方法决定被单击结点应该显示哪些子结点。
// parentElement就是被单击的结点对象。返回的数组就是应显示的子结点。
public Object[] getChildren(Object parentElement) {

if (parentElement instanceof MatchTree) {

return ((MatchTree) parentElement).getChildren().toArray();

}

return new Object[0];

}

// 判断参数element结点是否有子结点。
// 返回true表示element有子结点,则其前面会显示有“+”号图标
public boolean hasChildren(Object element) {

if (element instanceof MatchTree){

return ((MatchTree) element).getChildren().size() > 0;

}

return false;

}

//取得element的父结点。该案例中未使用。
@Override
public Object getParent(Object element) {
// TODO Auto-generated method stub

return null;

}

}


3、LabelProvider

private class MatchPathLabelProvider extends LabelProvider {

//设置结点的图标
public Image getImage(Object element) {

if (element instanceof MatchTree){

String type = ((MatchTree) element).getData().getType();

switch(type){

case "rule":

return ruleIcon;

case "literal":

return literalIcon;

default:

break;

}

}

return super.getImage(element);

}

//输出节点内容
public String getText(Object element) {

if (element instanceof MatchTree) {

return ((MatchTree) element).getData().getInfo();

}

return element.toString();

}

}


4、案例展示结果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐