请问在运行时打开一个viewpart,如何指定他的位置?

pasband 2011-01-27 03:57:25
比如我有一个perspective,建了左右两个IFolderLayout,
我想在RCP程序运行时,在左边的IFolderLayout中打开一个view,
现在是这样写的:

IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
activePage.showView(XXXView.ID, "1", IWorkbenchPage.VIEW_CREATE);

这样每次都是在右侧打开,请问如何指定view打开的位置呢?

Eclipse本身的Show View好像是可以区别在哪里打开的,可是看了半天源码还是不明白怎么样实现的。。。
...全文
417 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
f_d_q 2011-07-25
  • 打赏
  • 举报
回复
IFolderLayout mainLayout = layout.createFolder("main", IPageLayout.LEFT,
new Float(0.7), editorArea);
忘了隐藏 2011-01-28
  • 打赏
  • 举报
回复
在perpective里就指定了,你不是建了IFolderLayout吗
比如
IFolderLayout topLeft = layout.createFolder("topLeft",
IPageLayout.LEFT, 0.25F, editorArea);
topLeft.addView(LicenceNavigatorView.ID)//View的id;
pasband 2011-01-28
  • 打赏
  • 举报
回复
可以了。指定一个placeholder,viewId符合的都会被添加到这里来,
由于我要添加多个同类的view,所以加了个":*",以匹配secondaryId

IFolderLayout left= layout.createFolder("left", IPageLayout.LEFT, 0.25F, editorArea);
left.addPlaceholder(XXXView.ID+":*");

pasband 2011-01-28
  • 打赏
  • 举报
回复
好像找到方法了:IFolderLayout.addPlaceholder()
还没验证,但应该不会错了,希望对后来者有帮助:)
pasband 2011-01-28
  • 打赏
  • 举报
回复
To 楼上:

你的代码是在RCP运行时就打开的view,
也就是Perspective初始的view,
我需要的功能是:程序启动时不显示这个view,启动后点击一个按钮,就打开一个view,点击N次,就打开N个,
可以用IWorkbenchPage.showView()实现,但是这个方法无法定位到哪个FolderLayout,

看了下好像可以在plugin.xml中定义这个view为stickyview来实现view的定位,但我试了下不知道为啥不成功
忘了隐藏 2011-01-28
  • 打赏
  • 举报
回复
RCP都需要设置一个默认的Perpective,设置好了当你运行RCP就会打开该Perpective的所有view,你说的数量不确定不知道什么意思
pasband 2011-01-28
  • 打赏
  • 举报
回复
To 4楼:

我希望在运行时打开,数量也不能确定,应该怎么做呢?
pasband 2011-01-27
  • 打赏
  • 举报
回复
To 2楼:

我也是这么想的,所以找来eclipse的代码看:ShowViewDialog.java

但是没看懂-_-
salever 2011-01-27
  • 打赏
  • 举报
回复
我觉得这个方法并不能指定在何处打开View,而View的打开位置应该在别的地方就已经指定了的,比如Navigator始终在透视图的左侧,而Ant会出现在右侧
  • 打赏
  • 举报
回复
建议看视频,视频讲解的很详细。
希望楼主早日解决问题。

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧