RCP客户端实现保存不同用户的界面状态
2009-12-21 00:00:00 来源:WEB开发网在一个多用户的系统中,每个用户都有自己的喜好例如,视图的位置、大小、以及显隐状态,都要对其进行保存,我们可以在工作台初始化的方法进行设置:
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"做为新的配置文件,将默认配置文件中的数据写入到该文件中进行保存,然后将默认的配置文件删除(如果不删除也可以,后果是当一个从来没有登录过系统的用户来说,第一次登录的时候,享用的是上一次用户配置的界面)。
更多精彩
赞助商链接