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

swt CheckboxTreeViewer 全选 反选 级联选中子节点

2014-07-15 17:28 330 查看
treeViewer.addCheckStateListener(new ICheckStateListener() {

@Override
public void checkStateChanged(CheckStateChangedEvent event) {
// TODO Auto-generated method stub
if (event.getChecked()) {
CheckboxTreeViewer viewer = (CheckboxTreeViewer) event.getSource();
//选中:设置下级菜单选中
viewer.setSubtreeChecked(event.getElement(), true);
//选中:如果是子集菜单,且同级菜单全是选中的时候设置parent选中
//同样如果此时parent所在的同级菜单全选中做相应的迭代处理
//TODO:获取所有选中的项,比较绝对路径

} else {
CheckboxTreeViewer viewer = (CheckboxTreeViewer) event.getSource();
//不选中:下级目录菜单全不选中
viewer.setSubtreeChecked(event.getElement(), false);
//			                    //不选中:如果父级菜单是选中不能设置为选中
//			                    Layer parent = file.getParentFile();
//			                    //这里需要注意如果是顶级菜单不再迭代设置,否则将会空指针
//			                    if (parent.exists() && !parent.getAbsolutePath().equals(projectRoot)) {
//			                        setParentUnchecked(viewer, file.getParentFile());
//			                }
}
}
}
});
/**
* 全部选中
*/

protected void selectall() {
treeViewer.expandAll();
TreeItem[] items = treeViewer.getTree().getItems();
if (items != null && items.length > 0) {
for (int i = 0; i < items.length; i++) {
items[i].setChecked(true);
TreeItem[] itemssub = items[i].getItems();
if(itemssub!=null &&itemssub.length >0){
for(int j = 0 ; j < itemssub.length ; j++){
itemssub[j].setChecked(true);
TreeItem[] itemssubsub = tree.getItem(i).getItem(j).getItems();
if(itemssubsub != null && itemssubsub.length>0){
for(int x = 0 ; x < itemssubsub.length ; x++){
itemssubsub[x].setChecked(true);
TreeItem[] itemssubsubsub = tree.getItem(i).getItem(j).getItem(x).getItems();
if(itemssubsubsub != null && itemssubsubsub.length>0){
for(int y = 0 ; y < itemssubsubsub.length ; y++){
itemssubsubsub[y].setChecked(true);
}
}
}
}
}
}
}
}
}
/**
* 反选
*/
protected void  reverseSelection(){
TreeItem[] items = treeViewer.getTree().getItems();
if (items != null && items.length > 0) {
for (int i = 0; i < items.length; i++) {
if (items[i].getChecked()) {
items[i].setChecked(false);
} else {
items[i].setChecked(true);
}
TreeItem[] itemssub = items[i].getItems();
if(itemssub!=null &&itemssub.length >0){
for(int j = 0 ; j < itemssub.length ; j++){
if (itemssub[j].getChecked()) {
itemssub[j].setChecked(false);
} else {
itemssub[j].setChecked(true);
}
TreeItem[] itemssubsub = tree.getItem(i).getItem(j).getItems();
if(itemssubsub != null && itemssubsub.length>0){
for(int x = 0 ; x < itemssubsub.length ; x++){
if (itemssubsub[x].getChecked()) {
itemssubsub[x].setChecked(false);
} else {
itemssubsub[x].setChecked(true);
}
TreeItem[] itemssubsubsub = tree.getItem(i).getItem(j).getItem(x).getItems();
if(itemssubsubsub != null && itemssubsubsub.length>0){
for(int y = 0 ; y < itemssubsubsub.length ; y++){
if (itemssubsubsub[y].getChecked()) {
itemssubsubsub[y].setChecked(false);
} else {
itemssubsubsub[y].setChecked(true);
}
}
}
}
}
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息