如果我们在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相关推荐

  1. 青龙脚本 禁用重复任务无法获取tasklist

    如上图 在运行中 日志提示无法获取tasklist debug后发现代码块与156-167行有关 发现错误原因为无法找到auth文件 将地址修改为绝对地址即可解决 即在158行将'/ql/data/. ...

  2. tasklist 结束进程_Windows ----tasklist/taskkill

    作用: 结束一个或多个任务或进程.可以根据进程 ID 或图像名来结束进程. 语法格式: TASKLIST [/S system [/U username [/P [password]]]] [/M [ ...

  3. LuckySheet设置单元格格式为千分符保存至后台再获取时格式失效

    问题: LuckySheet设置单元格格式为千分符保存至后台再获取时格式失效 描述: 在使用LuckySheet开发报表功能模块的时候,需要在单元格内显示带千分符的数字,因此,在报表设置阶段,通过Lu ...

  4. Archicad二次开发——MessageBox、USstring转字符、打开保存文件的对话框获取选择的地址、获取文件信息

    先吐槽一句,Archicad的二次开发实在太不友好(我技术太菜). 1.MessageBox MessageBox(NULL, "message","title" ...

  5. C#操作office进行Excel图表创建,保存本地,word获取

    1,新建C#控制台应用程序(Excel创建图表) using System; using System.Collections.Generic; using System.Linq; using Sy ...

  6. android 保存联系人,保存android联系后获取联系人ID

    我通过此代码保存联系人 ArrayList ops = new ArrayList(); ... int rawContactInsertIndex = ops.size(); ops.add(Con ...

  7. python爬取豆瓣电影top250并保存为xlsx_python 爬虫获取豆瓣电影排行榜前250并写入excel...

    豆瓣电影排行榜前250 分为10页,第一页的url为https://movie.douban.com/top250,但实际上应该是https://movie.douban.com/top250?sta ...

  8. android开发data/data/文件包/files下的保存,删除,获取文件

    一. files 1. Context.getFilesDir(),该方法返回/data/data/youPackageName/files的File对象. 2. Context.openFileIn ...

  9. python下载图片并保存_Python从URL获取图片、读取图片格式并保存到本地

    前言 从网络上下载图片的时候,我们不一定能从URL中获取图片格式. 所以,从图片本身获取图片格式,是比较通用而且方便的方法了. 但是,PIL一般都是从文件读取图片数据,那么如何从requests.co ...

  10. tasklist命令参数应用详细图解

    一 操作实例 不带参数: /svc参数: /SVC 显示每个进程中的服务信息,当/fo参数设置为table时有效. 列出调用了某个dll的进程: 列出系统中正在运行的非"SYSTEM&quo ...

最新文章

  1. 调研机构称明年全球数据中心基础设施支出将增长6%
  2. 电子白板技术_电子白板种类介绍及产品功能概述
  3. Angular应用的入口
  4. 用node.js读写文件
  5. 计算机的网络默认下拉列表出不来,网页下拉菜单打不开,怎么解决?
  6. # Please enter the commit message for your changes. Lines starting # with ‘#‘ will be ignored
  7. 第二代支付系统专题之报文篇(二)大额支付报文完整版(含二代新增功能业务说明)...
  8. JS 大陆香港台湾手机格式校验
  9. 服务器如何开启电脑的虚拟化技术,win7怎么打开vt虚拟化技术|win7在bios开启vt虚化的方法...
  10. vue的nxut框架生命周期触发两遍的问题
  11. 掌握这些方法论后我工资涨了一倍!
  12. Java反射之Filed(类中的属性对象)
  13. Device Self-test
  14. Youtube2016推荐召回算法细节及最终实现(离线服务)——完整版
  15. Android 之Google认证GMS详细解剖
  16. 发烧后的咽喉肿痛自我治疗
  17. sql 条件查询以及模糊查询
  18. Spring框架核心思想
  19. python web server 知乎_“知乎网”技术方案初探
  20. Xcode 14.0编译iOS项目出错 ‘sprintf‘ is deprecated

热门文章

  1. 分布式文件存储FastDFS之客户端API实现文件上传下载
  2. POI动态下载Excel模板案例
  3. Eclipse调试远程服务器
  4. c# 循环com,分别对串口写入与读取,获取需要的串口信息
  5. [洛谷P3613]睡觉困难综合征
  6. border-radius的8个属性值_画半圆、叶子等
  7. 1.4-shell中特殊符号
  8. multiple多图选择,借助FormData通过ajax实现上传
  9. 机器学习Normal Equation的推导(不要求矩阵求导)
  10. [2018.07.31 T1] 第一题