`
liugang594
  • 浏览: 989721 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
三、断点的管理 要支持调试,断点的支持是不可少的。Eclipse里,断点通常是显示在Editor的左边的ruler上。可以通过双击增加和删除。断点类需要自己提供,一般每个断点都会含有一个对应的Marker,用来记录这个断点,这样在Editor下次再打开的时候断点还能存在。   断点的追加、删除等等操作,都是通过断点管理器来实现的。可以通过以下方式得到断点管理器: DebugPlugin.getDefault().getBreakpointManager();  四、事件交互 调试时的事件交互一般是通过Socket连接来完成,而且一般有两个连接:一个是发送命令用的Socket;另一个是接收事件用的 ...
提供一个可视化的调试器对于调试程序是很有益处的。Eclipse里的java调试器做的已经非常完美了。 只要努力,我们也能得到一个那么完美(理论上)的UI调试器。在Eclipse里,定义了很多针对调试器的扩展点供我们扩展,让我们可以轻松的利用Eclipse已有的机制来实现自己的UI调试器,例如:运行堆栈的显示、变量值的显示、追加和删除断点,以及单步跟踪等等。 但是首先我们需要清楚两件事: 1、Eclipse并没有提供任何针对调试器的默认实现。 2、Eclipse本身并不支持调试,这需要语言工具或引擎的支持。 Eclipse只是提供了一个共通的UI界面来操作和显示结果。这点我们是需要首先
在Eclipse的EMF里提供了一个根据模板生成代码的机制:JET。EMF就是使用JET来生成代码的。JET可以根据定制的生成模板生成最终的文本(代码)。这一节大致讲一下怎么使用JET来生成代码。 一、原理JET的原理很简单:通过一个定义 ...
  OK,我们已经有了一个初步可运行的Navigator了,现在它看起来已经比较丰富了。不过我们在xml文件下的任意结点上点右键时,都没有菜单显示。另外假如我们有一个新的wizard,我们也想像java的package explorer视图一样显示在new菜单的那一层。那我们应该怎么做呢?这一节就来介绍这部分的实现。  实际上,从上面的介绍里,很多人可能都已经知道了怎么完成这些事情。不过这里还是写一个完整的介绍过程。  先说一下我们的目标:在IResource对象的new菜单里,加上java project wizard。在xml文件的
这一节和下一节我们都将来关注另一个扩展点: org.eclipse.ui.navigator.navigatorContent 首先我们先增加一个扩展声明,然后看看它支持什么东西: 图六 可以看到在这个扩展点下可以定义四个子元素。其中:       actionProvider:用来定义可以action的。
所谓的Navigator,可以简单的理解为Eclipse中的资源导航视图,例如:   Project Explorer视图  
ShortCuts的增加 我们要运行java的时候,我们在java文件上点右键,就有一个“run as”菜单,可以到里面选择java的运行方式;在“debug as”菜单里可以选择调试方式。所以我们也想有一个这个怎么办? 这里就要用到另一个扩展点:org.eclipse.debug.ui.launchShortcuts。这是和UI相关的,所以放到我们的UI插件里。我的实现如下:   <extension point="org.eclipse.debug.ui.launchShortcuts"> <short ...
定义TabGroup 上面我们定义完了一个type。一般来说我们双击就可以产生一个configuration。但是现在我们双击,会出现一个异常: 图四   很明白的意思:我们没有定义Tab Group。简单的说,我们要生成一个configuration,对应 ...
基础   首先我们需要明白两个概念:   LaunchConfigurationType 字面上解就是一种运行类型。比如说java类型、Ant类型或者是C++类型。不同的类型就不同的运行方式。 LaunchConfiguration 具体的某个要运行的对象的一个配置。比如说一个java类要运行就得知道类路劲、信赖库、Main类等;一个Eclipse插件要运行,就得配置有插件领事信息等等;或者是一个A
附件是一个属性页使用的小文章。还附有代码。有兴趣的可以浏浏!
到目前为止,其实我们已经有了一个虽然简单,但还算完整的应用。不过总是有点单调。 这一节我们给我们的Editor加一点其他的东西。严格来说已经不属性GEF的范围了。 一、增加属性页的支持       在Eclipse里要支持属性页,你选择的对象必须是实现了ISelectionProvider接口。幸好,在GEF里,所有的选择都返回的是一个EditPart,而这些EditPart已经默认实现了这个接口,所以我们就省了很多事了。       要想在属性页里显示内容,除了对象实现ISelectionProvider接口以外,我们还需要实现一个IPropertySource接口,用来提供属性页要显 ...

GEF理解系列八

    博客分类:
  • GEF
这一节,我们继续来看一下连接线。 一、带箭头的连接线 带箭头本身其实通常来说都不是模型需要的,只是为了看起来方便而已。呵呵。这里我们就做这样的假设。所以要实现一个带箭头的连接线,只要让连线figure加一个箭头就可以了。 之前我们建了一个抽象的连接模型,但是一直只有一个子类。这里它终于又要派上用场了。 我们再建一个连接线模型:ArrowConnectionModel,让它也继承AbstractConnectionModel。这就够了,模型就建好了。然后我们再建一个ArrowConnectionEditPart,继承AbstractConnectionModelEditPart,这就是Ar ...

GEF理解系列七(2)

    博客分类:
  • GEF
二、放置EditManager 在GEF的EditPart里,有一个方法可以用来处理此事:performRequest(); 那我们就把我们的EditManager放在这吧。如下:
到现在为止,我们已经完成了很多工作了:图形的缩放,移动;增加,删除;连线的增加删除,重定向。 不过我们还没有办法修改我们HelloWorld上的文字。这一节我们就来实现对文字的修改。 一、直接编辑的支持 要想支持编辑功能。显示我们也需要安装Policy,写command。那好,我们先做好这部分工作。 EditPolicy里有一个直接编辑Policy:DirectEditPolicy。我们写一个子类继承这个Policy,然后显然应该把它安放在HelloWorldEditPart上。OK,先完成这些。 在HelloWorldEditPart里安装Policy: installEditP ...

GEF理解系列六(2)

    博客分类:
  • GEF
三、删除结点时删除连接线 刚才我们已经完成了删除结点的操作。不过它有一个问题:结点是被删除了,可连在它上面的连接线还存在。这是一个很可笑しい的结果。所以这里我们要修改一下,删除结点时,把它上面的连接线也一并删除。 这个操作要关注的地方只有一个,就是删除结点命令。 之前我们说过,一个连接线要想被显示出来的条件。这里我们可以借助这个条件来实现连接线的删除:让连接线脱离源的目标。所以删除结点时要想把连接线一并删除,我们就要在删除结点时先得到结点的所有连接线,然后让这些连接线脱离源和目标。修改删除结点命令如下: public class DeleteHelloWorldCommand ...
Global site tag (gtag.js) - Google Analytics