热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Eclipse插件开发之新手入门_MySQL

现在在Internet上已经可以见到不少的Eclipse插件开发的入门文章,这里我写本文的目的主要是将我自己的体会和最开始的学习告诉给大家。同时也希望本文能使用最为简单的方法来让大家了解开发Eclipse插件的基
Eclipse

  现在在Internet上已经可以见到不少的Eclipse插件开发的入门文章,这里我写本文的目的主要是将我自己的体会和最开始的学习告诉给大家。 同时也希望本文能使用最为简单的方法来让大家了解开发Eclipse插件的基础。需要注意的是,要学习Eclipse的插件开发,你需要:

  会使用Eclipse来开发Java应用程序

  了解插件这个词的概念

  了解一些XML的知识 本文是一个入门的文章,只是向大家说明开发一个插件的简单步骤,同时了解在开发插件时涉及到的技术面会有哪些。

  Eclipse SDK概述

  我们通常使用的Eclipse也就是我们这里所说的Eclipse SDK,这个SDK中包括了很多的内容,如下图所示:




  运行时核心(Eclipse Platform) - SDK必须一个Eclipse Platform,它自身不具有任何对最终用户有意义的功能, 它是一个加载所有插件的基础平台。也就是Eclipse的运行时最小集合了。

  Java 开发工具(JDT) - 我们所有的有关Java的开发部分都是由这个插件来完成了,它形成了对于Java最为基础的编辑、 编译、运行、调试、发布的环境。

  插件开发者环境(PDE) - 开发插件的插件,我们如果要开发插件哪么我们就会发现所有的工作环境都是由它来提供的。 它提供了用来自动创建、处理、调试和部署插件的工具。

  我们将来要开发的插件都是由平台来加载和运行,而PDE则是开发插件的开发环境,JDT则是开发插件时的Java代码的开发环境。

  创建插件项目

  设置引用项目

  开发插件时需要大量的外部库,这些外部库主要是现有的Eclipse中各个插件所提供的库。 为了开发方便,我们先将这些外部库由一个项目统一引用。

  从资源透视图中,使用文件>导入...>外部插件和段。
  在下一步中选择抽取源归档并在项目中创建源文件夹。
  到显示称为选择的屏幕,选择 org.eclipse.ui,然后单击完成按钮。

  创建项目

  在Eclipse需要创建一个空的插件项目,为了让我们更好的理解插件中各个文件的来源,我们从一个空白的插件项目开始:

  1) 打开新建项目...向导(文件>新建>项目...)并从插件开发类别中选择插件项目。

  2) 将com.huangdong.examples.helloworld用作项目的名称。缺省情况下,向导还会将com.huangdong.examples.helloworld设置为标识。

  3) 最终,确保在插件代码生成器页面上选择了创建空白插件项目。

  4) 当询问您是否想切换到“插件开发”透视图时,回答是。

  5) 选择com.huangdong.examples.helloWorld项目并打开属性对话框。

  6) 在Java构建路径属性中,选择项目选项卡,并选择项目org.eclipse.ui。这些包含了项目需要的导入类。

  7) 重建项目。
   创建一个插件内容

  创建一个新的小视图

  下面我们为该项目加入一个很简单的视图:

  1) 在项目的src目录下创建包com.huangdong.examples.helloworld。

  2) 在此包中创建称为HelloWorldView的新类其超类为org.eclipse.ui.part.ViewPart。

  在HelloWorldView中加入以下代码:

  package com.huangdong.examples.helloworld;

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

  public class HelloWorldView extends ViewPart {

  Label label;

  public void createPartControl(Composite parent) {
  label = new Label(parent, SWT.WRAP);
  label.setText("Hello World");
  }

  public void setFocus() {}
  }

  我们为该类定义了一个变量lable,在createPartControl方法中初始化并设置了一个显示的字符串。

  护展扩展点

  让Eclipse添加这个视图,需要扩展org.eclipse.ui.views扩展点。所有的这些需要在plugin.xml中进行描述。该清单文件描述插件,包括插件的代码所在的位置以及正在添加的扩展。

  将以下内容复制到plugin.xml中:

  <?xml version="1.0" encoding="UTF-8"?>
  <plugin id="com.huangdong.examples.helloworld"
  name="com.huangdong.examples.helloworld"
  version="1.0.0"
  provider-name="HuangDong">

  <runtime>
  <library name="helloworld.jar"/>
  </runtime>
  <requires>
  <import plugin="org.eclipse.ui"/>
  </requires>

  <extension point="org.eclipse.ui.views">
  <category
  name="Hello"
  id="com.huangdong.examples.helloworld.hello">
  </category>
  <view
  name="Hello Greetings"
  category="com.huangdong.examples.helloworld.hello"
  class="com.huangdong.examples.helloworld.HelloWorldView"
  id="com.huangdong.examples.helloworld.helloworldview">
  </view>
  </extension>

  </plugin>


  在plugin域中定义了插件的名称、标识和版本。 同时在runtime域中定义了插件代码将打包于helloworld.jar文件中。 在requires域中定义了该插件所要使用的依赖插件,由于我们要使用SWT API和工作台所以列示了org.eclipse.ui。 最后,在extension中说明了要们要扩展org.eclipse.ui.views扩展点。 首先我们在category中定义了视图的类别,在工作台的显示视图对话框中,可以使用类别来将相关的视图集中在一起。我们定义的类别名为“Hello”。 同时也定义了我们的视图,名为“Hello Greetings”,这个视图将会显示在“显示视图”对话框和视图的标题栏中,这里我们还通过class标识来说明了实现这个视图的最终类。

  通过plugin.xml的定义,Eclipse才会真正的找到插件可以做的行为,以及这些行为最终实现的具体Java类。

  在插件清单文件中使用了许多标识。 个别扩展点通常会定义需要标识的配置参数(例如,以上用于视图扩展点的类别标识)。 我们还要定义插件标识。通常,应该对所有标识都使用 Java 包名前缀,以便确保所有已安装的插件都是唯一的。

  在前缀后面使用的特定名称完全由您自己决定。 然而,如果插件标识前缀刚好与其中一个包的名称相同,则应该避免在该包中使用类名。 否则,将很难分辨您正在查看标识名还是类名。

  还应该避免对不同的扩展配置参数使用相同的标识。 在上述清单中,已经使用了公共标识前缀(com.huangdong.examples.helloworld),但是,我们的所有标识都是唯一的。 此命名方法可以帮助我们阅读文件并了解哪些标识是相关的。

  运行和测试插件

  运行插件是一件很简单的事,这些在PDE中给我们提供了很好的支持。 只需要在菜单中选择运行>运行为>运行时工作台,在运行时会弹出一个重复插件的提示框,可以按确定跳过,不必在意。 这样会启动一个已经安装好插件的Eclipse。

  启动后在菜单中选择窗口>显示视图>其它,在显示视图对话框中会有一个分类为Hello,点开Hello分类会看到Hello Greetings,选择后点确定按钮。在最下面的视图中可以见到以下界面:



  到这里,如果你看到了这个图,哪么恭喜你,你的第一个Eclipse插件成功运行了。


推荐阅读
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
  • Struts2+Sring+Hibernate简单配置
    2019独角兽企业重金招聘Python工程师标准Struts2SpringHibernate搭建全解!Struts2SpringHibernate是J2EE的最 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了一款名为TimeSelector的Android日期时间选择器,采用了Material Design风格,可以在Android Studio中通过gradle添加依赖来使用,也可以在Eclipse中下载源码使用。文章详细介绍了TimeSelector的构造方法和参数说明,以及如何使用回调函数来处理选取时间后的操作。同时还提供了示例代码和可选的起始时间和结束时间设置。 ... [详细]
author-avatar
LC--Vincent
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有