随笔分类 - Eclipse
Where did Eclipse come from?
Eclipse started out as proprietary technology, led by IBM’s subsidiary, Object Technology International (OTI). IBM wanted to reduce the large number of incompatible development environments being offered to its customers and to increase the reuse of the common components in those environments. By using the same common framework, development teams could leverage one another’s components, integrate to a high degree, and allow developers to roam among projects. ...
摘要:我写的SWT程序里用到layout的地方95%以上是GridLayout,今天才发现原来从eclipse 3.2开始就有了这两个方便使的类:GridLayoutFactory和GridDataFactory。
阅读全文
摘要:缺省条件下,EMF不会为每个对象维护一个唯一的id,这在一些情况下不太方便,例如要在web环境下编辑一个EMF模型实例,通常需要在URL里传递对象的id以便确定目标。其实EMF的XMIResource维护了一个id与对象的映射表,并且会为每个新创建的对象自动赋值。
阅读全文
摘要:一个为开发人员提供方便的小工具
阅读全文
摘要:Eclipse的插件体系结构让我们可以灵活定义插件,组装成可插拔的软件系统,OSGi的Declarative Services(DS)有着和Eclipse扩展点类似的思想(见很详细的一篇对比文章),很自然的想到,如果把DS应用在Web应用程序上,我们将能够通过定义自己的“扩展点”,打造SOA的Web应用程序。
阅读全文
摘要:本文介绍在Eclipse里如何配置一个简单的基于Eclipse Equinox OSGi实现的Web应用程序,在它的基础上可以构造更加复杂的应用,本文使用的是Eclipse 3.3.1版本,如果你的Eclipse版本在3.2.0或以上应该都可以。
阅读全文
摘要:在实际项目应用里,如果需要用户手动输入比较复杂的文本内容时可以考虑利用内容助理(Content Assistant)功能减轻用户负担,同时减低出错的机会。Jface的SourceViewer支持内容助理,这篇帖子里介绍一下如何实现自动完成(Auto Completion)功能,即向用户提示接下来可能输入的内容。
阅读全文
摘要:GMF里的contributionItemProvider扩展点的功能与org.eclipse.ui.editorActions类似,即为指定 editor增加Action,但用contributionItemProvider还可以为view添加Action,以及实现添加 popupMenu等多种功能,相当于eclipse提供的多种与Action有关的扩展点的集合。现以为editor增加Action为例介绍一下如何使用contributionItemProvider。
阅读全文
摘要:假设在ecore模型里定义了两个类:产品(Product)和制造商(Manufacturer),Product通过名为manufacturer的多对一引用与Manufacturer建立关系。在应用程序里,有一些表格(TableViewer)需要在显示产品信息的同时,还要显示制造商相关信息,如制造商名称。缺省条件下,因为这些表格里每一行是一个Product实例,表格的文字更新由 AdapterFactoryLabelProvider通过ProductItemProvider实现,所以在制造商名称被改变的时候产品表格无法得到更新。
阅读全文
摘要:通常理解stateMask的作用是标志事件发生时是否有Shift、Ctrl等键同时按下,但SWT里绝大多数Control都不支持这个标志,无论按下什么键,事件对象里的stateMask都是0。
阅读全文
摘要:以前在Eclipse 3.2里做的一个EMF应用程序,到3.3里发现一些TreeViewer里标签显示的格式不对,例如原来显示“Condition true”的,在3.3下可能显示“1”。调试了一下发现这些TreeViewer在为每个节点获得标签时,若相应的XXXItemProvider实现了ITableItemLableProvider时,会调用 getColumnText()而不是getText()来得到文本内容。
阅读全文
摘要:通过org.eclipse.gmf.runtime.diagram.ui.editpolicyProviders扩展点可以给GMF应用里的 editpart增加所需要的editpolicy,通过editpolicy返回的command,就可以自由的控制editpart的行为。顺便说一句,GMF Runtime之所以提供这许多扩展点,是为了允许通过其他插件工程对GMF生成的应用进行各种定制。
阅读全文
摘要:GMF能根据.gmftool里定义的工具项生成一个缺省的palette,同时GMF Runtimeh还提供了org.eclipse.gmf.runtime.diagram.ui.paletteProviders扩展点,如果缺省 palette里的工具项不能满足需要,利用这个扩展点可以添加我们需要的其他工具。
阅读全文
摘要:利用org.eclipse.draw2d.SWTGraphics类和org.eclipse.swt.graphics.ImageLoader类可以实现把画布导出到图片文件的功能,原理是在内存里创建一个空白的Image,然后把Diagram画到它上面,最后保存到指定文件和格式。
阅读全文
摘要:很多Eclipse应用程序在提供一个Editor的同时还提供一些View,这些View监视Editor的Selection,提供一些上下文相关的信息。Eclipse自带的PropertySheet(属性视图)就是这样一个例子,Outline(大纲视图)也是如此,从功能上看,不妨把这类用途的视图称为“广义的属性视图”。
阅读全文
摘要:GEF已经为我们提供了很多种类的Request,如CreateRequest、CreateConnectionRequest和SelectionRequest等等。实现一个典型的图形化应用程序,例如UML类图编辑器,这些预定义的Request基本够用了。然而很多需求不太符合约定俗成的使用习惯,因此实现起来更多依赖开发人员的编码,而不是开发框架带来的便利。在这种情况下,我们也许要借助自定义Request来实现。
阅读全文
摘要:Eclipse的Wizard是由一系列WizardPage组成的。缺省情况下,WizardDialog在初始化的时候就会调用每个 WizardPage的createControl()方法来布局这些WizardPage,这是为了方便决定WizardDialog窗口的大小。但如果某个WizardPage里的控件是需要动态生成的,例如,用户在Page1里输入一个整数n,Page2里要根据这个整数生成n个文本框,由于 Page2的createControl()只有一次被调用的机会,并且在得到n之前就被WizardDialog调用过了,集中布局的方式就为生成 Page2的界面带来了困难。
阅读全文
摘要:一旦熟练使用EMF后,有新项目我总是习惯于先使用工具构造出数据模型,然后让EMF帮我生成java代码。当模型需要修改时,也是用工具修改模型本身,然后让EMF把改动更新到java代码,从而保证模型与代码的同步。最近的一个基于struts的Web项目里我试验了脱离Eclipse运行环境使用 EMF,发现比想象中的要更容易,以下是一些经验总结。
阅读全文
摘要:要准确的计算文字在画布上占据的空间,可以利用org.eclipse.swt.graphics.GC的stringExtent()方法
阅读全文
摘要:在viewer里过滤掉一些不需要的元素的一个方法
阅读全文