`
Jameslyy
  • 浏览: 408982 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

插件开发—— 通过插件扩展工作台

阅读更多

        现在,你应该对工作台的操作和怎样使用视图和编辑器展示信息非常熟悉了,如果不熟悉的话,阅读下面关于工作台的快速指南。在此之后的各个章节将会从API 的角度关注工作台用户界面,展示插件如何向平台UI 添加新的功能。

 

1. 工作台快速指南

        工作台是导航插件提供的各种功能的场所,通过工作台,我们可以导航资源,并且可以查看和便捷这些资源的内容和属性。当打开工作台展示一组项目时,效果如下图所示:

 

工作台就是一个呈现各种可视化部件的窗口,这些部件可以分为两个主要分类:视图和编辑器:

 

  • 编辑器(Editor) 让用户可以在工作台进行编辑,编辑器是以文档为中心的,就像一个文件系统编辑器一样。类似于文件系统编辑器,它们遵循 打开-保存-关闭 的生命周期。和系统编辑器不一样的是,这些编辑器和工作台联系紧密。
  • 视图(View) 展示用户在工作台中使用到的一些对象的信息。当用户选择工作台中不同对象时,视图会改变显示的内容。视图通常通为活动编辑器中的内容提供相关信息来支持编辑器。
视图
工作台提供了一些标准的视图,帮助用户导航或者查看所需要的内容,例如,项目浏览器可以帮助用户导航工作区和选择资源。

 
编辑器
编辑器帮助用户打开、编辑和保存对象,工作台为文本资源提供了一个标准编辑器:
更多的插件,例如Java 代码编辑器或者HTML编辑器,可以由插件提供。 

2. 工作台背后的工作机制
        工作台为创建复杂用户界面提供了很多类和接口,但是并不需要理解所有的这些类和接口就能实现一些简单的功能,我们先看一下工作台用户界面中的一些概念和隐藏在背后的对应结构。

        在后面的讨论中,当使用“工作台”这个术语时,是指工作台窗口(IWorkbenchWindow)。工作台窗口是一个工作台中的顶级窗口,是包含菜单栏、工具栏、状态栏、快捷栏和页面的窗口。通常不需要对工作台窗口对象编程,仅需要知道工作台个概念就可以了。

注:可以打开多个工作台窗口,但是,每个工作台窗口都是一个自包含的由编辑器和视图组成的整体,所以我们只能同时注于一个单一的工作台窗口。

从用户的角度来看,工作台包含一些视图和编辑器,还有其他一些类用于实现工作台窗口。

页面(Pages)
         在工作台窗口中可以看到一个包含几个部分的页面(IWorkbenchPage),页面是分组所包含的不同部分的一种实现机制。通常不需要对页面编程,但是将会在编程和调试上下文环境中看到它。

透视图(Perspectives)
        透视图自工作台页面中提供了一个附加层,透视图定义了一个视图的集合、视图的布局和适用于给定用户任务的动作(action)。用户完成多个任务时可以在不同透视图之间进行切换。从视图的实现角度看,用户的活动透视图控制那些视图显示到工作台页面上以及它们的位置和大小,编辑器不受透视图变化的影响。

视图和编辑器(Views and Editors)
        视图和编辑器涉及到插件编程的具体细节,在向工作台添加一个可视化组件是,必须决定是否需要实现一个视图或者编辑器,如何确定呢?
  • 视图通常用来导航层级数据,打开一个编辑器,或者显示活动编辑器的属性信息,例如,项目导航器视图用来导航工作区的层级,属性和大纲视图显示活动编辑器中的一个对象的信息,视图中作出测任何修改(例如修改一个属性值)都会被立即保存。
  • 编辑器通常用来编辑或者浏览一个文档或者输入对象,在编辑器中做出的修改遵循 打开-保存-关闭 模式,就像一个外部的文件系统编辑器一样。平台中的文本编辑器和Java 编辑器都是工作台中编辑器的例子。
无论是哪一种情况,都要根据一个通用的过程创建所需要的视图和编辑器。
  • 实现createPartControl 方法,创建表示可视化组件的SWT 小部件,确定使用哪些小部件,回收在视图或编辑器中显示的UI 资源。
  • 当视图或编辑器获得焦点时,将会收到一个setFocus 通知,可以用来设置小部件获得焦点。
  • 当视图或编辑器关闭时,将会收到一个dispose 消息,表示视图或编辑器被销毁了,这时,在createPartControl  方法中创建的控件已经被销毁了,但是不许销毁任何在视图或编辑器中创建的图片资源(例如鼠标指针、图片或字体)。
在整个生命周期中,将会从工作台页面触发事件,通知相关的部件,视图和编辑器被打开、激活、失去激活状态和关闭。

下面是一个例子,展示了工作台视图和编辑器的优雅之处。它们仅仅是小部件容器,可以根据需要实现简单或者复杂的功能。
   package org.eclipse.examples.helloworld;

   import org.eclipse.swt.widgets.Composite;
   import org.eclipse.swt.widgets.Label;
   import org.eclipse.swt.SWT;
   import org.eclipse.ui.part.ViewPart;

   public class HelloWorldView extends ViewPart {
      Label label;
      public HelloWorldView() {
      }
      public void createPartControl(Composite parent) {
         label = new Label(parent, SWT.WRAP);
         label.setText("Hello World");
      }
      public void setFocus() {
         // set focus to my widget.  For a label, this doesn't
         // make much sense, but for more complex sets of widgets
         // you would decide which one gets the focus.
      }
   }
         请注意,dispose() 方法不是必须要实现的,因为我们除了在 createPartControl(parent) 方法创建了一个标签(Label),没有做任何事情。如果我们创建了任何UI 资源,例如图片或者字体,就应该在dispose() 方法中销毁它们。由于我们扩展了ViewPart 类,就继承了dispose() 方法的空的实现。

  • 大小: 15.2 KB
  • 大小: 3.4 KB
  • 大小: 3 KB
  • 大小: 23.1 KB
分享到:
评论

相关推荐

    chrome插件开发 - tab页面切换插件

    Chrome插件开发是一个充满创新和实用性的领域,它允许开发者为全球最大的网络浏览器之一——Google Chrome,添加自定义功能和增强用户体验。在这个“chrome插件开发 - tab页面切换插件”项目中,我们关注的焦点是...

    ASP论坛网站实例开发源码——问友友情链接插件实例开发.rar

    ASP论坛网站实例开发源码——问友友情链接插件实例开发是一个针对Discuz! 6.1版本的插件,主要用于论坛社区中实现友链管理功能。这个插件由ASP编程语言编写,它允许管理员轻松地添加、编辑和管理论坛的友情链接,...

    ASP论坛网站实例开发源码——Discuz!论坛录音回复插件(用麦克风回帖)实例开发.rar

    的扩展能力,通过二次开发实现的特色功能。 录音回复插件的核心功能在于实现麦克风录音和音频数据的上传。在用户端,它需要调用浏览器的Web Audio API或者Flash插件来获取麦克风输入的声音信号,并将其转换成数字...

    RPC插件——3DsMax2012_x64

    1. **分布式渲染**:RPC插件可以将渲染任务分解并分布到多台计算机上,每台机器处理一部分工作,显著加快渲染速度,尤其对于需要快速完成高分辨率或复杂效果的项目。 2. **实时协作**:团队成员可以在不同的地点...

    EMLOG插件——使文章发布时间与当前时间同步

    本知识点将深入探讨如何使用"EMLOG插件——使文章发布时间与当前时间同步"这一功能,以便帮助EMLOG用户更好地管理和展示他们的博客内容。 在EMLOG中,文章的发布时间通常是在创建或编辑文章时设定的,它反映了文章...

    C#开发 3dsmax 插件 内置控件

    开发者通过创建插件可以扩展其功能,满足特定需求。 描述中提到的"在3dsmax利用VS平台开发内置控件"意味着开发过程是在Visual Studio(VS)集成开发环境中进行的。Visual Studio是微软提供的一个强大的开发工具,...

    Eclipse插件开发之入门和进阶

    2. 动态插件加载:通过OSGi服务,可以在运行时动态地安装、卸载和更新插件,增强了软件的可维护性和可扩展性。 3. 视图和编辑器:Eclipse插件可以创建自定义视图(View)和编辑器(Editor)。视图用于显示信息,编辑...

    GitHub优秀插件——Gitako.zip

    Gitako是一款专为GitHub设计的优秀插件,它极大地提升了用户在浏览代码仓库时的体验。这款插件的核心功能是提供一个直观的侧边栏,显示仓库中的文件目录结构,让用户能够更方便地跳转到目标文件。Gitako支持多种...

    云应用开发 ——Google App Engine & Google Web Toolkit入门指南

    ### 云应用开发 ——Google App Engine & Google Web Toolkit入门指南 #### 第1章 应该了解下 ##### 1.1 云基本知识 云计算是一种通过互联网提供按需计算资源和服务的方式,包括网络、服务器、存储、应用程序和...

    Eclipse插件开发学习笔记(ch11-12)

    本篇将基于"《Eclipse插件开发学习笔记》(ch11-12)"的内容,深入讲解Eclipse插件开发中的两个关键概念——视图(Views)和操作(Actions)。 **第11章 操作(Actions)** 在Eclipse插件开发中,操作(Actions)是...

    论坛FTP——BBSFTP插件 FOR Discuz7.0.rar

    总的来说,"论坛FTP——BBSFTP插件 FOR Discuz7.0"是一个提升论坛互动性的工具,它利用经济激励机制(金币系统)来驱动用户参与,并通过FTP服务为用户提供有价值资源的下载渠道。在适当环境中,它可以有效增加论坛的...

    搜狗浏览器划词搜索插件.rar

    这款搜狗浏览器划词搜索插件的工作原理是,通过监听用户的鼠标操作,当检测到用户选中了文字,就会调用"quicksearch.js"中的函数,对选中的文字进行处理,然后利用manifest.xml中声明的权限,打开一个新的浏览器窗口...

    ASP论坛网站实例开发源码——仿Chinaren(PHPWind4.3.2)论坛最新商业版实例开发.rar

    通过分析源码,我们可以深入理解论坛系统背后的架构和工作原理,这对于提升自身在论坛开发领域的技能至关重要。 在解压后的文件“[论坛社区]仿Chinaren(PHPWind4.3.2)论坛最新商业版_chinaren_phpwind_gbk_4.3.2”...

    ASP论坛网站实例开发源码——phpBB 3.0 Beta2 汉化版实例开发.zip

    6. **插件和扩展**:phpBB支持插件系统,允许添加额外的功能,如用户积分系统、广告管理、SEO优化等。 7. **帮助文档**:提供关于安装、升级、管理及使用论坛的指南,对于开发者和管理员来说非常有用。 通过学习和...

    织梦banner轮播图插件

    "织梦banner轮播图插件"是一款专为织梦内容管理系统(DedeCMS)设计的扩展组件,旨在帮助用户轻松实现网站首页的动态轮播图功能。这款插件允许用户自定义创建多个轮播图分类,每个分类下可以添加多张图片,同时支持...

    帝国CMS移动端多端同步生成插件

    本插件——“帝国CMS移动端多端同步生成插件”,是针对帝国CMS系统设计的一款扩展工具,旨在实现网站内容在不同终端上的快速同步更新,确保用户无论在PC端还是移动端都能获取到最新的信息。 此插件主要解决的问题...

    ASP论坛网站实例开发源码——Punbb v1.2.20 多国语言版实例开发.rar

    ASP论坛网站实例开发源码——Punbb v1.2.20 多国语言版是一个基于ASP(Active Server Pages)技术的开源论坛系统。Punbb是一个轻量级、高效且易于使用的论坛软件,其设计目标是提供一个简洁、快速的讨论平台,尤其...

    基于Eclipse插件的简易代码生成工具 毕业设计 论文

    开发者需要熟悉Eclipse插件开发模型,包括插件的生命周期管理、事件监听机制以及与Eclipse工作台的交互。 在设计阶段,我们需要明确代码生成工具的目标,比如支持哪些编程语言,可以生成哪些类型的代码片段,以及...

    PHP实例开发源码—emlog新浪图床上传插件.zip

    本文将深入探讨PHP实例开发中的一个具体应用——emlog新浪图床上传插件。Emlog是一款基于PHP和MySQL的个人博客系统,具有轻量级、易用性和可扩展性等特点,而新浪图床则是通过新浪提供的图片存储服务,为用户提供...

Global site tag (gtag.js) - Google Analytics