`
qq123zhz
  • 浏览: 524983 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
  模型验证;X,Y,height,width是否为数字,如果不是数字,则在状态栏弹出红色的警告! 在Height 属性框中输入了 :50s后,在状态栏下显示红色的“Not a number”。 具体的实现代码:                        代码在图片中 通过调用IPropertyDescriptor的setValidator方法,为它添加验证的功能,通过实现ICellEditorValidator 接口的isValid方法实现。  
基于Eclipse GEF关键技术的分析与研究(2007-03-31 16:54:28) 2.Draw2D技术 轻量级框架:轻量级框架[LightweightSystem类]把SWT和Draw2D 连接起来,它把鼠标事件和画图事件从SWT 转发给Draw2D的图形上。它是Draw2D的核心类。 LightweightSystem 主要包含三个组成部件: 1.根图形[The root figure]: 根图形是RootFigure类的实例,应用程序的根图形必须建立在它之上。它继承了一些SWT Canvas的图形环境,如颜色,字体等。 2.事件转发器[The event dispatche ...
String projectRoot = Platform.getInstanceLocation().getURL().getPath();   IFile file = (IFile) PlatformUI.getWorkbench()                    .getActiveWorkbenchWindow().getActivePage()                    .getActiveEditor().getEditorInput().getAdapter(IFile.class);IProject project = file.getProject() ...
我的实现代码是: IWorkbenchWindow window= getPlugin().getWorkbench().getActiveWorkbenchWindow(); window.getActivePage().openEditor(new REditorInput(), REditor.class.getName()); 可是每次双击的时候总是打开两个编辑器,不知道是什么问题。。。。 我的文件是通过addFileToProject()直接加上去的,且没有后缀名。。。 你打开的两个编辑器是否都是你自己创建的编辑器?如果是,检查你扩展editor是的设置,是否已经 ...
有时候一个视图(View)希望得到另外一个视图显示的内容,或者选择的内容。在Eclipse中,比较标准的做法是通过ISelectionProvider和ISelectionListener来完成的。不过因为视图往往是独立的,他们之间并不太方便进行直接的事件监听,而且往往一个视图需要对诸多试图进行选择事件的监听,因此在这种情况下对每一个视图的事件进行注册,比较繁琐,有时候也不可能(比如在需要被监听的试图尚未激活的情况下)。 比较典型的例子就是Eclipse本身所提供的PropertySheet和Outline这两个视图,他们都是对其它试图或者Editor中的选择进行监听,并更具选择的内容作相应的 ...
添加一个新的Menu到Workbench时,它的path应该是additions.表示添加到最后。 action are added, not to the menu itself, but to groups within the menu. 因此在添加一个Action到menu之前,首先要定义一些groupMarker或者seperator。 通常创建一个menu的时候,都还要额外添加一个名为additions的seperator来让别人扩展这个Menu
org.eclipse.swt.graphics包(package),包含了管理图形资源的类。只要实现了org.eclipse.swt.graphics.Drawable接口,就可在上面绘画,包括 org.eclipse.swt.widgets.Control 和 org.eclipse.swt.graphics.Image 。 org.eclipse.swt.graphics.GC封装了全部绘画API,包括如何绘制线条、图形、如何绘制文本、图像以及填充图形。 本篇将展示如何使用GC在图像上绘画, 控件的绘画事件(paintEvent)回调。画布(Canvas)控件,因为不同的绘画操作,拥有很多 ...
辅助网格 你可能用过一些这样的应用程序,画布里可以显示一个灰色的网格帮助定位你的图形元素,当被拖动的节点接近网格线条时会被"吸附"到网格上,这样可以很容易的把画布上的图形元素排列整齐,GEF 3.0里就提供了显示这种辅助网格的功能。 图3 辅助编辑网格 是否显示网格以及是否打开吸附功能是由GraphicalViewer的两个布尔类型的属性(property)值决定的,它们分别是 SnapToGrid.PROPERTY_GRID_VISIBLE和SnapToGrid.PROPERTY_GRID_ENABLED,这些属性是通过GriaphicalViewer.getProp ...
  第二部分:Router Router(连线路由器)是对连线进行布局的重要组件,本文介绍了路由器的基本概念和应用场景,剖析了一个连线路由器的接口并给出了一个简单实例。最后演示了如何把自定义的路由器应用到图形中,使得不同的连线可以有不同的路由器。 ConnectionRouter(连线路由器) 图形之间连线的路线,是由连线路由器来决定的。在Shapes Examples中,使用了最短路径路由器,这个路由器会帮我们绕开图形之间的障碍,选择一条最短路径进行连接,如图1所示: 图1. ShortestPathConnectionRouter
命令模式的结构如图: 在我们流程设计器中,实现复制粘贴功能,就是采用了命令模式,以剪切操作为例,当在编辑器中选中活动,在菜单中选择“剪切”,就会产生一个剪切命令(CutCommand对象)。 剪切操作所用到的类如下: 名称 说明
1.一般来说可以继承三种EditPart,分别是  org.eclipse.gef.editparts.AbstractGraphicalEditPart      用于一般图形  org.eclipse.gef.editparts.AbstractConnectionEditPart    用于连线  org.eclipse.gef.editparts.AbstractTreeEditPart             用于大纲视图   2.编辑域[EditDomain] :编辑域是一个起到管理作用的类,它绑定了一个编辑器、若干个查看器和若干个工具。因此它定义了真实的编辑器。编辑域还提 ...
 在GMF帮我们生成的应用程序里,画布(Canvas)的布局缺省是使用XYLayout的,这种布局适合UML类图、流程图等应用,但并不适合序列图或表格这类应用。而且目前GMF的.gmfgraph模型里没有提供为整个Canvas设置布局的地方,因此只能通过修改代码的方式实现。因为GMF Runtime是基于GEF的,即GMF生成的代码本质上也是一个GEF应用程序,所以根据以往编写GEF应用程序的经验,不难找到需要修改的地方。
/*********************************************************************************  * layer: · Layer是一透明的只能被增加到LayeredPane 的图形元素,LayeredPane 要负责管理它的layers。 · FreeFormLayer是一个能够向所有的4个方向扩展的Layer。 · ConnectionLay ...
protected void configureGraphicalViewer(); 这个函数告诉eclipse如何配置编辑器的主界面,在这个函数里我们应该编写创建主界面的代码,并设置EditPart的工厂,关于EditPart的概念,稍后详述,而EditPart的工厂类,主要作用是根据模型创建EditPart,这其中牵扯到GEF的框架以及各个部分的创建顺序(先创建模型,再创建EditPart、最后创建Figure,这些概念都在后面叙述)。 protected PaletteRoot getPaletteRoot(); 这个接口用来创建调色板。调色板的结构实际就是一个颗树,这里用来获得树根。 p ...
  刚才经过不懈努力终于解决了,供初学者及同样由此问题的朋友参考:IPath path = new Path(temp.getFilePath());IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("此处为项目名");String relativePath = path.toString().substring(project.getLocation().toString().length() + 1);IFile file = project.getFile(relativePa ...
Global site tag (gtag.js) - Google Analytics