SWT的CheckBoxTreeView的上级菜单与下级菜单的选中的实现
是不是很神奇?
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();
                    //不选中:下级目录菜单全不选中
                    Layer file = (Layer) event.getElement();
                    viewer.setSubtreeChecked(file, false);
//                    //不选中:如果父级菜单是选中不能设置为选中
//                    Layer parent = file.getParentFile();
//                    //这里需要注意如果是顶级菜单不再迭代设置,否则将会空指针
//                    if (parent.exists() && !parent.getAbsolutePath().equals(projectRoot)) {
//                        setParentUnchecked(viewer, file.getParentFile());
//                }
                }
            }
        });
效果如下:
当选中上级菜单则下级菜单会自动选中:

当取消了上级菜单的选中状态,下级菜单会自动取消;

SWT的CheckBoxTreeView的上级菜单与下级菜单的选中的实现的更多相关文章
- C# winform ListView 的右键菜单的下级菜单的选项视情况禁用方法
		ListView 和右键菜单例如以下图: 要实现功能是: 1.用户状态为[活动]时,改动用户状态为[活动]禁用,反之则反. 2.而且仅仅实用户状态为[非活动]时,[删除学员用户]才是可用状态. 功能非 ... 
- java查询几个菜单下的所有下级菜单
		需求: 假如有几个一级菜单,一级菜单下面有几个二级菜单,二级菜单下又还有三级菜单.现在要求一级菜单里面的几个设置为无效,将不显示在前端.现在需要的是查询出一级菜单下面所有的菜单,包括二级,三级菜单 原 ... 
- DIY福音:Firefox菜单及右键菜单ID大全
		每一个折腾Firefox的Diyer都是上辈子折翼的天使,致自己! 打磨Firefox界面的时候最多的就隐藏一些平常根本用不上的一些菜单,常规的做法就是安装DOM Inspector扩展右键查找大法寻 ... 
- ASP.NET MVC动态生成网站菜单及子菜单
		在开发ASP.NET MVC网站时,Insus.NET想实现动态产生网站的主菜单及子菜单. 你需要在网站管理后台管理此2张表(Menu,SubMenu)的信息,添加,删除,编辑,更新等. Sequen ... 
- Force.com微信开发系列(四)申请Access Token及自定义菜单之创建菜单
		在微信接口开发中,许多服务的使用都离不开Access Token,Access Token相当于打开这些服务的钥匙,正常情况下会在7200秒内失效,重复获取将导致上次获取的Token失效,本文将首先介 ... 
- Cocos2d-JS中的精灵菜单和图片菜单
		精灵菜单的菜单项类是cc.MenuItemSprite,图片菜单的菜单项类是cc.MenuItemImage.由于cc.MenuItemImage继承于cc.MenuItemSprite,所以图片菜单 ... 
- 实例介绍Cocos2d-x精灵菜单和图片菜单
		精灵菜单类是MenuItemSprite,图片菜单类是MenuItemImage.由于MenuItemImage继承于MenuItemSprite,所以图片菜单也属于精灵菜单.为什么叫精灵菜单呢?那是 ... 
- Android 自定义View修炼-Android 实现自定义的卫星式菜单(弧形菜单)View
		一.总述 Android 实现卫星式菜单也叫弧形菜单的主要要做的工作如下:1.动画的处理2.自定义ViewGroup来实现卫星式菜单View (1)自定义属性 a. 在attrs.xml中 ... 
- <Win32_16>来看看标准菜单和右键菜单的玩法
		日常应用中,菜单主要分为两种:(1) 标准菜单(处于应用程序菜单栏处的菜单) (2)右键快捷菜单 几乎你所见过或使用过的软件中,都有它俩儿 为应用程序添加它们的基本步骤: (1)用代码或者IDE ... 
随机推荐
- Servlet过滤器——创建过滤器
			1.概述 介绍如何创建一个过滤器,并使用过滤器在打开页面的同时输出信息,此功能是由过滤器处理完成的. 2.技术要点 Serlvet过滤器实现了Filter接口,在Filter接口中定义了以下几个方法: ... 
- HDU 4870 Rating (2014 多校联合第一场 J)(概率)
			题意: 一个人有两个TC的账号,一开始两个账号rating都是0,然后每次它会选择里面rating较小的一个账号去打比赛,每次比赛有p的概率+1分,有1-p的概率-2分,当然如果本身是<=2分的 ... 
- Hacker News网站的文章排名算法工作原理
			In this post I'll try to explain how Hacker News ranking algorithm works and how you can reuse it in ... 
- c/c++  动态申请数组
			new和delete运算符用于动态分配和撤销内存的运算符 new使用方法: 1. 开辟单变量地址空间 1)new int; //开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.in ... 
- Android:Drag and Drop的应用
			最近看了下Drag and Drop部分的原文,觉得很有意思就像自己试着做一下,说实在的原文真的是不好读啊,要感谢那些为我们发表译文的大神们, 真的是不容易,原文中给了例子,但是只有后面零星的代码,真 ... 
- java.text.MessageFormat格式化字符串时的小技巧
			java.text.MessageFormat格式化字符串时的小技巧 public static void main(String[] args) throws InterruptedExceptio ... 
- Ogre嵌入MFC傻瓜全然教程(三)
			经过前两两篇博文的解说.我们已经完毕了渲染工作,但仅仅是渲染而没有交互性,本篇博文我们就来加上事件的处理方法. 首先我们须要为项目加入一个帧监听类:CMyFrameListener,为了直观,在这直接 ... 
- 带着项目学PHP第九讲 - 如何给ecshop的wap版本首页和商品页添加商品图片
			ecshop的wap版本自身不带图片, 所以看起来光秃秃的,非常不讨人喜欢, 网络上关于wap的模板就不像pc版那么多,容易找到, 而且能找到的都是要花钱买的, 虽然这个小小的改动不能替代找个合适的模 ... 
- 简单的RPC java实现
			RPC的名声大噪之时是在2003年,那一个“冲击波”病毒(Blaster Worm virus)袭卷全球的一年.而“冲击波”正是用着RPC这把刀来敲开了远程电脑的大门.当然RPC 有更多正面的应用,比 ... 
- centos 安装 redis3.2.0 集群
			这里创建6个redis节点,其中三个为主节点,三个为从节点. redis和端口对应关系: 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 从: 127.0.0 ... 
