透视图扩展 Perspective Extensions

eclipse中的一些元素如图所示:

透视图?

透视图 是一系列Views和Editors等元素的 可视化容器。透视图 定义了  Workbench Page 中 Window action bars(menu and toolbar) 的初始化内容 和  包含的视图(views)与它们的布局方式。

WorkbenchWindow是书本的话,Perspective就是其中的一页,并且同一时刻只显示一页。一个Perspective所包含的Views,Editors等元素不与其它Perspective共享

透视图与其它元素的关系如下:

class relationship

扩展eclipse现有的perspective

eclipse包含有多种类型perspective

perspectives

一个扩展perspective的代码示例:

 1 <extension point="org.eclipse.ui.perspectiveExtensions"> 
 2         <perspectiveExtension 
 3             targetID="org.eclipse.ui.resourcePerspective"> 
 4             <actionSet id="org.eclipse.jdt.ui.JavaActionSet"/> 
 5             <viewShortcut id="org.eclipse.jdt.ui.PackageExplorer"/> 
 6             <newWizardShortcut id="org.eclipse.jdt.ui.wizards.NewProjectCreationWizard"/> 
 7             <perspectiveShortcut id="org.eclipse.jdt.ui.JavaPerspective"/> 
 8             <view id="org.eclipse.jdt.ui.PackageExplorer" 
 9                 relative="org.eclipse.ui.views.ResourceNavigator" 
10                 relationship="stack"/> 
11             <view id="org.eclipse.jdt.ui.TypeHierarchy" 
12                 relative="org.eclipse.ui.views.ResourceNavigator" 
13                 relationship="left" 
14                 ratio="0.50"/> 
15         </perspectiveExtension> 
16 </extension> 

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

 参考学习:http://www.eclipse.org/articles/using-perspectives/PerspectiveArticle.html

 1.create a plug-in

 1 <plugin
 2    id="org.eclipse.ui.articles.perspective"
 3    name="Perspective Article Plugin"
 4    version="1.0.0">
 5 <requires>
 6    <import plugin="org.eclipse.core.runtime"/>
 7    <import plugin="org.eclipse.core.resources"/>
 8    <import plugin="org.eclipse.ui"/>
 9 </requires>
10 <runtime>
11    <library name="perspective.jar"/>
12 </runtime>
13 </plugin>

2.Add a perspective extension to the plugin.xml file

1 <extension point="org.eclipse.ui.perspectives">
2    <perspective
3          name="Test"
4          class="org.eclipse.ui.articles.perspective.TestPerspective"
5          id="org.eclipse.ui.articles.perspective.Test">
6    </perspective>
7 </extension>

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 of
24         // 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的效果如下:

newPerspective

我们可以在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中呈现。

转载于:https://www.cnblogs.com/JosephLiao/p/4194151.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值