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); } } } } } } } } } }
相关文章推荐
- rcp checkboxTreeViewer 级联勾选
- 学习使用TreeView 控件的TreeNode 对象来获取选中了CheckBox的节点!
- jQuery EasyUI CheckBoxTree的级联选中
- SWT/Jface TreeViewer 获取展开节点元素集合
- Extjs4 treePanel + checkbox 级联选中
- SWT/jface 之 CheckBoxTreeViewer 选择父节点时 子节点全部选中。选择子节点时,父节点选中,并且是Grayed 样式(实心)
- jQuery EasyUI CheckBoxTree的级联选中
- CheckboxTreeviewer选中状态问题
- 使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
- ext4 treePanel 设计节点级联选中
- ExtJs Treepanel节点checkbox的半选中状态复选框效果
- SWT/Jface TreeViewer 如何刷新后,展开原来的节点
- JQuery EasyUi Tree获取所有checkbox选中节点的id和内容
- easyUi Tree的CheckBox级联选中问题
- jQuery EasyUI CheckBoxTree的级联选中
- DEV treeList 获取 ListcheckBox选中节点内容
- (转)SWT的CheckBoxTreeViewer的相关用法
- (转)SWT的CheckBoxTreeViewer的相关用法
- ext4 treePanel 设计节点级联选中
- jQuery EasyUI CheckBoxTree的级联选中