当我们需要显示一个视图时,一般是通过调用IWorkbenchWindow中的getActivePage().showView方法, 但我们有一个问题,就是一般在透视图中,可能由多个部分构成,那么,这个showView到底是要显示在哪里呢?所以我们需要先解决这个问题.
要解决在哪里进行显示,需要在透视图中进行设置,用到的是IFolderLayout中的addPlaceholder方法,示例代码如下:
IFolderLayout folder =layout.createFolder("messages", IPageLayout.BOTTOM, 0.5f,NavigationView.ID);
folder.addPlaceholder(View.ID+ ":*");
这样,当我们调用showView时,就会按这指定的View.ID,将其显示在folder在整个透视图中所占的位置了.
如果我们想在同一个地方允许多个不同的视图进行停靠的话,则继续通过addPlaceholder方法进行设置就行了,示例代码如下:
IFolderLayout folder =layout.createFolder("messages", IPageLayout.BOTTOM, 0.5f,NavigationView.ID);
folder.addPlaceholder(View.ID+ ":*");
folder.addView(View.ID);
folder.addPlaceholder(ViewPart1.ID+ ":*");
Perspective中addPlaceholder的作用表示预留一个视图空间,该方法添加的视图不会显示在界面上,但是当通过操作打开该设定的
视图时,将会在该设定的位置打开,而不是随意打开该视图。简单的说就是为指定的视图预留
一个空间,一旦视图打开就在该空间显示。
只是占个位,以便于同样的视图ID的查找用。
另外,如果允许多个相同的视图进行停靠的话,则需要将对应的视图中的allowMultiple设置为true即可.
转自:http://blog.csdn.net/qiuhong101/article/details/7427835