RCP:如何保存TaskList及如何获取TaskList
如果我们在Eclipse RCP程序中添加TaskList View,用来管理Task或者TODO项,如下代码:
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("org.eclipse.ui.views.TaskList");
我们发现,创建的Task,在重启之后无法保存,而在Eclipse IDE中却不会有这个问题. 在阅读org.eclipse.ui.internal.views.markers.TasksView的代码后,我发现TasksView在程序退出时,只负责保存TasksView的布局信息。那么,需要怎么保存添加的Task呢?
如何保存TaskList
原来Task的本质是Marker,并不是保存在TasksView中,而是和Resource相关联,保存在IResource对象中。在RCP程序中,保存Marker需要调用IWorkspace的save方法,可以在preShutdown中调用,如下代码:
@Overridepublic boolean preShutdown() {/* Save workspace before closing the application */final MultiStatus status = new MultiStatus("com.voxana.vuidesigner.diagram", 0, "Saving Workspace....",null);IRunnableWithProgress runnable = new IRunnableWithProgress() {@Overridepublic void run(final IProgressMonitor monitor) {try {IWorkspace ws = ResourcesPlugin.getWorkspace();status.merge(ws.save(true, monitor));} catch (CoreException e) {status.merge(e.getStatus());}}};try {new ProgressMonitorDialog(null).run(false, false, runnable);} catch (InvocationTargetException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}if (!status.isOK()) {ErrorDialog.openError(Display.getDefault().getActiveShell(),"Error...", "Error while saving workspace", status);return true;}return true;}
获取TaskList
如前面所说,Task(Marker的其中一种类型)是和Resource关联,保存在IResource中的。我们可以通过以下代码来获取所有Task:
IResource root = ResourcesPlugin.getWorkspace().getRoot();
String TypeId = "org.eclipse.core.resources.taskmarker";
IMarker[] markers = resource.findMarkers(TypeId, true, IResource.DEPTH_INFINITE);
其中,第一个参数TypeId指定要获取的Marker类型;第二个参数指定是否搜索子节点的Marker;第三个参数指定搜索的深度。
在获取了IMarker后,即可通过getAttribute或者getAttributes方法来获取参数
参考
https://gama-platform.googlecode.com/svn-history/r4005/branches/GAMA_CURRENT/msi.gama.application/src/msi/gama/gui/swt/ApplicationWorkbenchAdvisor.java
http://www.eclipse.org/forums/index.php/t/106705/
http://wiki.eclipse.org/FAQ_How_and_when_do_I_save_the_workspace%3F
org.eclipse.ui.internal.views.markers.MarkerContentGenerator class internalGatherMarkers method
转载于:https://www.cnblogs.com/Binhua-Liu/p/3318950.html
RCP:如何保存TaskList及如何获取TaskList相关推荐
- 青龙脚本 禁用重复任务无法获取tasklist
如上图 在运行中 日志提示无法获取tasklist debug后发现代码块与156-167行有关 发现错误原因为无法找到auth文件 将地址修改为绝对地址即可解决 即在158行将'/ql/data/. ...
- tasklist 结束进程_Windows ----tasklist/taskkill
作用: 结束一个或多个任务或进程.可以根据进程 ID 或图像名来结束进程. 语法格式: TASKLIST [/S system [/U username [/P [password]]]] [/M [ ...
- LuckySheet设置单元格格式为千分符保存至后台再获取时格式失效
问题: LuckySheet设置单元格格式为千分符保存至后台再获取时格式失效 描述: 在使用LuckySheet开发报表功能模块的时候,需要在单元格内显示带千分符的数字,因此,在报表设置阶段,通过Lu ...
- Archicad二次开发——MessageBox、USstring转字符、打开保存文件的对话框获取选择的地址、获取文件信息
先吐槽一句,Archicad的二次开发实在太不友好(我技术太菜). 1.MessageBox MessageBox(NULL, "message","title" ...
- C#操作office进行Excel图表创建,保存本地,word获取
1,新建C#控制台应用程序(Excel创建图表) using System; using System.Collections.Generic; using System.Linq; using Sy ...
- android 保存联系人,保存android联系后获取联系人ID
我通过此代码保存联系人 ArrayList ops = new ArrayList(); ... int rawContactInsertIndex = ops.size(); ops.add(Con ...
- python爬取豆瓣电影top250并保存为xlsx_python 爬虫获取豆瓣电影排行榜前250并写入excel...
豆瓣电影排行榜前250 分为10页,第一页的url为https://movie.douban.com/top250,但实际上应该是https://movie.douban.com/top250?sta ...
- android开发data/data/文件包/files下的保存,删除,获取文件
一. files 1. Context.getFilesDir(),该方法返回/data/data/youPackageName/files的File对象. 2. Context.openFileIn ...
- python下载图片并保存_Python从URL获取图片、读取图片格式并保存到本地
前言 从网络上下载图片的时候,我们不一定能从URL中获取图片格式. 所以,从图片本身获取图片格式,是比较通用而且方便的方法了. 但是,PIL一般都是从文件读取图片数据,那么如何从requests.co ...
- tasklist命令参数应用详细图解
一 操作实例 不带参数: /svc参数: /SVC 显示每个进程中的服务信息,当/fo参数设置为table时有效. 列出调用了某个dll的进程: 列出系统中正在运行的非"SYSTEM&quo ...
最新文章
- 调研机构称明年全球数据中心基础设施支出将增长6%
- 电子白板技术_电子白板种类介绍及产品功能概述
- Angular应用的入口
- 用node.js读写文件
- 计算机的网络默认下拉列表出不来,网页下拉菜单打不开,怎么解决?
- # Please enter the commit message for your changes. Lines starting # with ‘#‘ will be ignored
- 第二代支付系统专题之报文篇(二)大额支付报文完整版(含二代新增功能业务说明)...
- JS 大陆香港台湾手机格式校验
- 服务器如何开启电脑的虚拟化技术,win7怎么打开vt虚拟化技术|win7在bios开启vt虚化的方法...
- vue的nxut框架生命周期触发两遍的问题
- 掌握这些方法论后我工资涨了一倍!
- Java反射之Filed(类中的属性对象)
- Device Self-test
- Youtube2016推荐召回算法细节及最终实现(离线服务)——完整版
- Android 之Google认证GMS详细解剖
- 发烧后的咽喉肿痛自我治疗
- sql 条件查询以及模糊查询
- Spring框架核心思想
- python web server 知乎_“知乎网”技术方案初探
- Xcode 14.0编译iOS项目出错 ‘sprintf‘ is deprecated