`
liugang594
  • 浏览: 981478 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

EditingSupport的应用

阅读更多

Eclipse3.3中提供了一个EditingSupport类,用于支持对TreeViewer或TableViewer等的编辑支持。

 

在之前,知道的人就会知道,要实现对树或表的编辑其实挺麻烦的,要设置好CellEditor,要定义好ColumnProperties,还要有一个CellModifier等等,而且几乎都是一列就只能有一个类型的CellEditor,而不能有异样。

 

3.3中提供这个EditingSupport使用起来更简单,而且编辑控件可以根据Cell的不同而有所不同。下面简单介绍一下使用方法。

 

创建一个TreeViewer或者是TableViewer的方式不变。不同的是创建Column方式现在要有所变化,例如:

 

	private void createTreeColumn(TreeViewer tv) {
		String[] titles = { "Name", "Parent", "Read_Only", "Hidden" };
		for (int index = 0; index < 4; index++) {
			TreeViewerColumn tvc = new TreeViewerColumn(tv, SWT.NONE, index);
			tvc.getColumn().setWidth(100);
			tvc.getColumn().setMoveable(true);
			tvc.getColumn().setResizable(true);
			tvc.getColumn().setText(titles[index]);
			tvc.setLabelProvider(new FileCellLabelProvider(index));
			tvc.setEditingSupport(new FileEditingSupport(tv, index));
		}
	}

 

要使用EditingSupport,我们需要使用ViewerColumn对象来创建Column,然后给这个ViewerColumn设置EditingSupport对象。

 

每个VieweColumn可以设置自己的、与众不同的CellLabelProvider,所以此时整个树或表的LabelProvider可以不设置。

 

最后就是实现自定义的EditingSupport。这里我给这个EditingSupport传入了column的index,这样到时可以知道具体是哪一列正在编辑。FileEditingSupport实现如下:

 

class FileEditingSupport extends EditingSupport {

	private int index;

	public FileEditingSupport(ColumnViewer viewer, int index) {
		super(viewer);
		this.index = index;
	}

	@Override
	protected boolean canEdit(Object element) {
		switch (index) {
		case 1:
			return false;

		default:
			break;
		}
		return true;
	}

	@Override
	protected CellEditor getCellEditor(Object element) {
		switch (index) {
		case 0:
			return new TextCellEditor((Composite) getViewer().getControl(),
					SWT.NONE);
		case 2:
		case 3:
			return new ComboBoxCellEditor((Composite) getViewer().getControl(),
					new String[] { "true", "false" }, SWT.NONE);

		default:
			break;
		}
		return null;
	}

	@Override
	protected Object getValue(Object element) {
		switch (index) {
		case 0:
			return ((File) element).getName();
		case 1:
			return ((File) element).getParent();
		case 2:
			return ((File) element).canWrite()?new Integer(0):new Integer(1);
		case 3:
			return ((File) element).isHidden()?new Integer(0):new Integer(1);

		default:
			break;
		}
		return null;
	}

	@Override
	protected void setValue(Object element, Object value) {

	}

}

 

这些方法理解起来不难,实现当然也很简单。这里看起来还是一整列只有一种编辑方式,不过可以很容易的改成根据不同对象的不同列实现不同的编辑方式,例如如果对象是一个File,实现可以选择父对象,如果是一个Folder,可以改名等等!

 

 

分享到:
评论

相关推荐

    JFace TableViewer的单元格逐个遍历的辅助类

    Since 3.3, an alternative API is available, see ViewerColumn.setEditingSupport(EditingSupport) for a more flexible way of editing values in a column viewer. 从3.3开始,tableViewer.setCellEditors...

    实训十三 DHCP服务器安装与设置.doc

    服务器

    1 (8).pptx

    商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板

    html网页版基于深度学习AI算法对古代织物图案风格鉴定识别-含逐行注释和说明文档-不含图片数据集

    本代码是基于python pytorch环境安装的cnn深度学习代码。 下载本代码后,有个环境安装的requirement.txt文本 运行环境推荐安装anaconda,然后再里面推荐安装python3.7或3.8的版本,pytorch推荐安装1.7.1或1.8.1版本。 首先是代码的整体介绍 总共是3个py文件,十分的简便 且代码里面的每一行都是含有中文注释的,小白也能看懂代码 然后是关于数据集的介绍。 本代码是不含数据集图片的,下载本代码后需要自行搜集图片放到对应的文件夹下即可 在数据集文件夹下是我们的各个类别,这个类别不是固定的,可自行创建文件夹增加分类数据集 需要我们往每个文件夹下搜集来图片放到对应文件夹下,每个对应的文件夹里面也有一张提示图,提示图片放的位置 然后我们需要将搜集来的图片,直接放到对应的文件夹下,就可以对代码进行训练了。 运行01数据集文本生成制作.py,是将数据集文件夹下的图片路径和对应的标签生成txt格式,划分了训练集和验证集 运行02深度学习模型训练.py,会自动读取txt文本内的内容进行训练 运行03html_server.py,生成网页的url了 打开

    合宙air001硬件spi驱动7针oled屏幕

    此为官方例程包

    财务会计英语常用单词TXT

    财务会计英语常用单词TXT

    基于Django的博客毕业设计,安装好环境后可以直接跑

    Django搭建个人博客教程 这是面向新人的Django搭建个人博客教程的项目代码。 教程为零基础的小白准备,目的是快速搭建一个博客网站。 基于该代码可以做基于Django的毕业设计。包括以下内容: 03 - 创建 APP 认识项目结构 / 注册 APP / 配置访问路径 04 - 编写 Model Django 模式简介 / 模型简介 编写 Model / Model 字段分解 数据迁移 05 - View 视图初探 第一个视图 网站后台概念 / 创建管理员 / 注册 app 检视数据库 06 - View 及 Template 改写视图函数 编写模板 / 错误分析 Debug 工具 07 - 使用Bootstrap改写模板 配置 Bootstrap 4 编写模板 / 模板继承 08 - 编写文章详情页面 详情页面视图 / 详情页面模板 优化网页入口 / 参数传递 09 - 使用Markdown书写文章 安装 Markdown 在视图中使用 Markdown / 模板渲染 代码高亮 / 故障排查 / 自定义样式 10 - 发布新文章 表单类 / 处理创建请求 / 获取

    变电站自动化系统中嵌入式Web服务器的设计与实现.doc

    服务器、电脑、

    浅谈优化SQLServer数据库服务器内存.doc

    服务器

    模板033.pptx

    商业计划书ppt模板

    用友通产品连接不到服务器的典型案例解析.doc

    服务器

    文艺高逼格41.pptx

    文艺风格ppt模板文艺风格ppt模板 文艺风格ppt模板 文艺风格ppt模板 文艺风格ppt模板 文艺风格ppt模板 文艺风格ppt模板 文艺风格ppt模板 文艺风格ppt模板 文艺风格ppt模板 文艺风格ppt模板 文艺风格ppt模板 文艺风格ppt模板 文艺风格ppt模板 文艺风格ppt模板

    Android ListView下拉刷新 Demo.zip

    Android ListView下拉刷新 Demo

    numpy-2.0.0-cp310-cp310-win32.whl

    该资源为numpy-2.0.0-cp310-cp310-win32.whl,欢迎下载使用哦!

    头歌java实训作业解答思路

    头歌java实训作业

    基于JAVA+Springboot框架旅游景区售票系统 毕业设计开题答辩PPT

    用户注册:填写手机账号和密码,注册新用户 登录功能:注册普通账号登录;登录后可以修改用户的基本信息,也可以退出。 关于我们:关于我们、联系我们、加入我们、法律声明 轮播广告:后台设置首页轮播广告图,可以连接到广告页面。 留言反馈:用户填写李哭咽的主题、联系人、电话、邮箱、留言内容;后台管理可以查看留言列表,可以删除留言。 景点中心:显示网站提供的所有景点信息;可以按景区的等级分类。 景点订票:在景点详情页面,点击“立即订购景点门票”,确认景点的信息和门票费用;填写预约的姓名、电话、备注,提交门票订单。 景点收藏:在景点详情页面,登录的用户,可以对当前景点进行收藏,收藏后的景点列表在用户中心可以查看,可以进行删除。 景点评论:在景点详情页面,登录的用户,可以填写评论内容,提交评论信息;提交的评论信息需要后盖管理员审核后可见。 我的景点购票订单:列出用户的所有预约订单信息,审核状态;没有审核或者审核拒绝的订单用户可以删除。 景点浏览、收藏、评论:列出用户浏览过的网站上的景点信息浏览记录;收藏过的景点信息列表,支持删除;评论过的信息列表和状态。 资讯浏览、收藏、评论:列出用户浏览过的网站上

    简历求职 (4).pptx

    简历ppt 模板

    1 (7).pptx

    商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板商务风ppt模板

    0066-工艺夹具-减速箱体零件工艺规程及铣尺寸159两侧面铣床夹具设计.zip

    0066-工艺夹具-减速箱体零件工艺规程及铣尺寸159两侧面铣床夹具设计.zip

    如何搭建个人服务器建立自己的网站.doc

    服务器、电脑、

Global site tag (gtag.js) - Google Analytics