RCP客户端实现保存不同用户的界面状态

在一个多用户的系统中,每个用户都有自己的喜好例如,视图的位置、大小、以及显隐状态,都要对 其进行保存,我们可以在工作台初始化的方法进行设置:

Java代码

@Override
  public void initialize(IWorkbenchConfigurer configurer)
  {
  super.initialize(configurer);
  configurer.setSaveAndRestore(true);
  }

但是保存的都是最后一个用户登录以后设置的界面,这样之前用户保存的状态就被覆盖了,

本来想研究一下Eclipse是如何获取到这些信息并且保存的,但是时间紧迫,急于实现效果,

所以出此下策,把自己的想法实践了一下,目的达到了,但是似乎有些山寨,拿来和大家分享一下吧 ,望请高手指教!

设计思路:

当Application的start方法运行的时候,这里是我们写登录的代码,在用户登成功,用户名便获取到 ,我们以用户名加上"_workbench.xml"作为该用户的配置文件名称,用一个File对象判断其是否存在,如 果存在将它读入到内存中,然后不管默认的 workbench.xml是否存在都将其覆盖, ApplicationWorkbenchAdvisor被创建的时候,才会去加载用户的配置文件,用户的配置顺理成章的被工 程所加载,说道这里前提是先保存用户的配置文件。

Java代码

int returnCode = PlatformUI.createAndRunWorkbench(display, new  ApplicationWorkbenchAdvisor());

这段代码是start方法中默认的一行代码,在中行代码结束时,也就是工程关闭时候,具体的说是 workbench.xml文件已经被改写完毕的时候,我们将内容读取到内存中,根据当前登录的用户名加 上"_workbench.xml"做为新的配置文件,将默认配置文件中的数据写入到该文件中进行保存,然后将默认 的配置文件删除(如果不删除也可以,后果是当一个从来没有登录过系统的用户来说,第一次登录的时候 ,享用的是上一次用户配置的界面)。

时间: 2024-09-14 17:23:00

RCP客户端实现保存不同用户的界面状态的相关文章

c1flexgrid-C1FlexGrid 用户在界面编辑grid的单元格之后点击保存按钮但编辑的值并未保存。

问题描述 C1FlexGrid 用户在界面编辑grid的单元格之后点击保存按钮但编辑的值并未保存. 求解! C1FlexGrid界面修改单元格值后直接点击保存按钮,该值没有被保存进来-- 这个问题有谁遇到过? 请问怎样解决?或者是编辑后该值被存储在某个地方,怎样获取?请大牛们进来看看,多多指点! 解决方案 这个问题解决了,呵呵-- 希望可以帮到其他的友友~ 方法:点击保存时,在保存中添加代码:将焦点赋给该grid,问题解决~

手机客户端的两种主要的界面布局与设计方式

本文主要讨论手机手机客户端的两种主要的界面布局与设计方式,对于手机设计师来说,此类文章比较少见,当然其中对于用于体验与可用性的实现依然很普遍. 手机产品设计与传统的桌面和web产品设计相比,最显著的约束是设计空间的急剧缩小.打个比方,这就像从一个100平米的房子搬到5平米的单间,东西没少一样,可以施展的空间却小了几十倍.更重要的是,在这样一个小空间里,你不能把东西胡乱摆放,要依旧保持它们的清晰.合理.简洁.美观.借用<用户体验的要素>中的名词,这涉及到"框架层"的设计问题,

分享一个jQuery的自动客户端本地保存插件Sisyphus.js

  今天我们介绍一个新的插件 - Sisyphus.js,这个插件是由Alexander Kaupanin开发的一个类似Gmail客户端草稿保存的jQuery插件,帮助你的用户在客户端保存未写完的草稿. 我们需要解决什么样的问题呢? 但凡使用过互联网的用户,都会有如下的惨痛教训: 洋洋洒洒的写了一篇几百的文章,正准备保存发布的时候,发现浏览器崩溃了,或者是你刚准备评论一篇不错的文章,可正准备递交的时候,你PC死机了.又或是你正准备发布时,不小心按错了快捷键F5或者后退键? 是不是你也曾为以上情况

简洁易用的用户UI界面设计的9个基本原则

设计真正伟大的用户界面没有什么伟大的奥秘可言,做到保持简单易用就可以.'保持简单易用'意味着不要让用户分心.好的UI让用户达成目标后,相应的培训和维护费用便降低,同时获得更开心.满足和高效率的用户. 当你面对一个全新的界面设计时,别忘了上面的最基本的原则. 下面细化介绍界面设计的9个原则:(原来有10个的但是十牌认为可以精简为9个") 1. 了解你的用户"关注用户:如果在关注竞争对手还是用户之间选择,答案总是后者.工作总是首先从用户开始."--Jeff Bezos 了解用户,

Winform开发框架之权限管理系统改进经验总结(2)用户选择界面的设计

在上篇总结随笔<Winform开发框架之权限管理系统改进的经验总结(1)-TreeListLookupEdit控件 的使用>介绍了权限管理模块的用户管理部分,其中主要介绍了其中的用户所属公司.所属部门.直属 经理(人员列表)的几级数据级联的展示,通过引入TreeListLookupEdit控件,能增强用户的体验效果 .本篇继续介绍权限系统模块中的一些闪光点,介绍组织机构管理里面选择用户的界面设计和实现,用 户选择在很多场合会用到,如组织机构的用户选择,角色里面的用户选择,或者流程里面的用户选择

Win8系统如何进入用户账户界面管理账户

  有的用户的Win8系统创建了N个账户,但实际使用却不需要那么多.如何对这些账户进行管理呢?这就需要进入Win8系统的用户账户界面,具体操作请看下文. 操作步骤 1.打开Win8控制面板,以大图标方式查看. 2.拉动滚动条到底部,点击用户账户. 3.用户账户界面就打开了. 如果Win8系统中出现了HomeGroupUser$账户,并不能简单地通过用户账户界面就删除它

com组件-利用微软的COM组件mstscax.dll实现远程桌面,在连接空密码的账户时,会出现用户选择界面。

问题描述 利用微软的COM组件mstscax.dll实现远程桌面,在连接空密码的账户时,会出现用户选择界面. 利用微软的COM组件mstscax.dll实现远程桌面,在连接空密码的账户时,会出现用户选择界面,需要点击用户头像才可以进入用户,如何实现直接连接而不需要进行选择. 解决方案 请参考:http://blog.csdn.net/chaozi2008/article/details/8591109

python学习-求用Python写个小函数:让用户在界面输入一个数字,然后返回输出这个数字加1的结果

问题描述 求用Python写个小函数:让用户在界面输入一个数字,然后返回输出这个数字加1的结果 求用Python写个函数:让用户在界面输入一个数字,然后返回输出这个数字加1的结果,小白刚学Python,求指点,谢谢! 解决方案 不好意思: return x+1 不需要,只能在函数内使用 可以像下面这么写: x = int(input("x = ")) print("Output is:",x+1) 解决方案二: 写一个函数输入4个数字然后输出每个字符之间加一个空格

界面划窗口设计-matlab与vs混合编程中,用户操作界面怎么设计,而且界面上的输入如何与matlab对应的值相对应??

问题描述 matlab与vs混合编程中,用户操作界面怎么设计,而且界面上的输入如何与matlab对应的值相对应?? matlab与vs混合编程中,用户操作界面怎么设计,而且界面上的输入如何与matlab对应的值相对应?? 解决方案 你界面用matlab做的还是用winform做的?