eclipse中的一些元素如图所示:
透视图?
透视图 是一系列Views和Editors等元素的 可视化容器。透视图 定义了 Workbench Page 中 Window action bars(menu and toolbar) 的初始化内容 和 包含的视图(views)与它们的布局方式。
WorkbenchWindow是书本的话,Perspective就是其中的一页,并且同一时刻只显示一页。一个Perspective所包含的Views,Editors等元素不与其它Perspective共享。
透视图与其它元素的关系如下:
扩展eclipse现有的perspective
eclipse包含有多种类型perspective
一个扩展perspective的代码示例:
12 4 165 6 7 8 11 15
In the example above, an action set, view shortcut, new wizard shortcut, and perspective shortcut are contributed to the initial contents of the Resource Perspective. In addition, the Package Explorer view is stacked on the Resource Navigator and the Type Hierarchy View is added beside the Resource Navigator.
自定义一个Perspective
参考学习:
1.create a plug-in
15 6 107 8 9 11 1312
2.Add a perspective extension to the plugin.xml file
12 6 7
3.Define a perspective class(org.eclipse.ui.articles.perspective.TestPerspective.TestPerspective in this case) for the extension within the plug-in.
这里的TestPerspective 必须实现org.eclipse.ui.IPerspectiveFactory接口。TestPerspective 会实现IPerspectiveFactory中的createInitialLayout(IPageLayout layout)方法:
1 public void createInitialLayout(IPageLayout layout) { 2 defineActions(layout); 3 defineLayout(layout); 4 } 5 6 public void defineActions(IPageLayout layout) { 7 // Add "new wizards". 8 layout.addNewWizardShortcut("org.eclipse.ui.wizards.new.folder"); 9 layout.addNewWizardShortcut("org.eclipse.ui.wizards.new.file");10 11 // Add "show views".12 layout.addShowViewShortcut(IPageLayout.ID_RES_NAV);13 layout.addShowViewShortcut(IPageLayout.ID_BOOKMARKS);14 layout.addShowViewShortcut(IPageLayout.ID_OUTLINE);15 layout.addShowViewShortcut(IPageLayout.ID_PROP_SHEET);16 layout.addShowViewShortcut(IPageLayout.ID_TASK_LIST);17 }18 19 public void defineLayout(IPageLayout layout) {20 // Editors are placed for free.21 String editorArea = layout.getEditorArea();22 23 // Place navigator and outline to left of24 // editor area.25 IFolderLayout left =26 layout.createFolder("left", IPageLayout.LEFT, (float) 0.26, editorArea);27 left.addView(IPageLayout.ID_RES_NAV);28 left.addView(IPageLayout.ID_OUTLINE);29 }
对于 line 25,一个Folder是好几个views的栈集(stacks),也就是views以标签的形式集成在一个folder下。
新Perspective的效果如下:我们可以在Perspective > Open中打开Test perspective,这个过程是这样实现的:
----------------------------------------------------------------------------------------------
1.一个IWorkbenchPage对象被创建,参数是id = "org.eclipse.ui.articles.perspective.Test";
2.利用这个id, 找到IWorkbench中注册的对应该id的perspective的具体描述,返回IPerspectiveDescriptor类。所有注册信息包含在IPerspectiveRegistry里,并调用findPerspectiveWithid方法查找。
3.从IPerspectiveDescriptor中得到相应的perspective class(org.eclipse.ui.articles.perspective.TestPerspective.TestPerspective in this case) ,创建一个实例。
4.该类中的createInitialLayout方法将被调用。
5.IWorkbenchPage被激活。Perspective将在用户UI中呈现。