在Trac的官网上有有一篇安装指南,针对Trac0.11版本的。上面可以看到这时0.11的正式版还没有发布,我安装的是0.11b1版的。http://trac.edgewall.org/wiki/TracInstall#TracInstallationGuidefor0.11 一、Trac简介 Trac是一个轻量级的项目管理工具,是一个基于web的应用程序。Trac是用Python语言开发的,需要数据库( SQLite, PostgreSQL, MySQL 等).的支持才能运行。对于HTML渲染,在Trac 0.11版本之前用的是ClearSilver,以后推荐用的是Genshi 二、 ...
        虽然原来也在使用Subversion,但使用的不是http服务器,用的是把svnservice.exe安装成window服务的方式。原来的开发环 境配置一直不统一,这次花的功夫好好弄一下,想搭建一个全部基于开源的Apache+SVN+Trac的配置,希望能给自己不一样的感觉。本文先说 Apache和SVN的集成,下一篇再集成Trac。         安装过程还是有点复杂的,可能是我用的都是最新版本的缘故,网上的好多文章目前没有针对最新版 ...
2007-12-03

简单RCP框架源码分析

关键字: RCP框架
在我们新建一个RCP应用程序框架时,eclipse会为我们自动生成若干个类: 网上也有很多关于“Hello RCP”的分析说明,但都聚集在类功能分析,没有源代码的分析。下面着重分析一下其中的某些不易理解的类以及其中涉及到的其它类的源代码。 Application类: 是RCP应用程序的入口点,你可以把它想象成程序的控制器,类似于Model2架构中的控制器。它很简短,而且在不同的项目中变化不大;它所做的就是创建 一个工作台Workbench,同时将其于一个WorkbenchAdvisor联系起来。Workbench是RCP框架的一部分,一个RCP应用对 ...
选项板提供了用户选择模型元素,并提供相应的机制把模型和视图加入图形编辑器的能力。 1.选项板(PaletteRoot)的功能     GEF是一个图形编辑框架,它的主编辑区域是一个图形的视图(类似与JFace的Viewer),另外,用户还可以选择选项板上相应的模型,把选择的模型对应的视图加入到图形编辑区域进行编辑。     在GEF中,图形编辑器实现类的getPaletteRoot方法将返回一个PaletteRoot对象,用户可以在PaletteRoot中添加模型选 项入口项(ToolEntry)。例如,在选择板中加入一个连线模 ...
为了保证数据和展现的同步,必须要有一种消息通知机制,当模型被修改时通知相应的视图进行更新,下面将介绍如何实现这种消息机制。 1.模型同步的功能     模型是GEF中实体,当模型的属性被修改后,控制器会监听到模型属性改变的事件,然后通知视图进行更新,模型和视图之间没有直接的联系,如下图:     要通过事件的通知机制获得模型同步的步骤如下:     (1)模型中包含注册监听器的机制,本文范例是通过PropertyChangeSupport和PropertyChangeListener机制添 ...
为了提高代码的重用性,以及实现GEF编辑器的功能,GEF采用命令模式提供了对模型的操作方式。 1.命令(Commands)的功能     在EditPolicies中新建了命令,如果返回的命令不为空,GEF框架会执行命令,对模型进行相应的修改。     Command是GEF中的一个抽象类,主要实现了如下的几个方法:         (1)execute:这是命令的执行方法,当请求结束并获得Command后,GEF框架会负责执行此方法。  &nb ...
请求和编辑策略是GEF框架中减轻控制器的负担、减小代码耦合度而实现的一种解决方案。 1.请求和编辑策略(Request and EditPolicies)      请求和编辑策略对初学者来说是比较难理解的部分,但正是因为这种机制才使得GEF框架功能强大,而且非常灵活。     在EditPart中,可以通过设置不同的编辑策略(EditPolicies)来处理不同的请求,这样,一方面,可以把代码从EditPart中解放处 理,分别由不同的EditPolicies进行处理,另一方面,用户可以着力于自己的关注点,但由此 ...
2007-12-03

GEF原理及实现系列(四、控制器)

关键字: GEF控制器
控制器是GEF框架的核心,它负责模型和视图之间的通信。 1.控制器的功能 在GEF的MVC结构里,控制器是模型与视图之间的桥梁,也是整个GEF的核心,它不仅要监听模型的变化,当用户编辑视图时,还要把编辑结果反应到模型上。 在GEF中,控制器是由一组EditPart对象共同组成的,每一个模型对象都对应一个EditPart对象。应用程序中需要有一个EditPartFactory对象负责根据给定模型对象创建对应的EditPart对象,这个工厂类将在创建模型时被调用。 控制器是GEF中最复杂的一部分,GEF把控制器完成的工作又分成了几个部分,包括请求和编辑策略及引申出来的命令模式,如下图: ...
GEF视图通常利用Draw2d图形(IFigure)作为表现方式,用户可以通过Draw2d的功能实现图形的展示、布局及图形的编辑。 1.视图的功能     GEF的视图可以有很多种,GEF目前提供了图形(GraphicalViewer)和树状(TreeViewer)这两种,前者利用Draw2D图形 (IFigure)作为表现方式,多用于编辑区域,后者则多用于实现大纲展示。视图的任务同样繁重,除了模型的显示功能以外,还要提供编辑功能、回显 (Feedback)、工具提示(ToolTip)等等。     视图是模型图形方式的表现,它 ...
GEF的模型只与控制器打交道,而不知道任何与视图有关的东西。 1.模型的功能     在GEF框架中,模型(Model)是非常简单的一部分,用户可把模型理解成一个简单的可持久化的实体。但为了能让控制器知道模型的变化,应该把控制器作为事件监听者注册在模型中,当模型发生变化时,就触发相应的事件给控制器,后者负责通知各个视图进行更新。 2.模型的实现     典型的模型对象会包含PropertyChangeSupport类型的成员变量,用来触发事件,通知监听器即控制器。一般来说,模型会实现一个基类,用来封装事件机制,主要包括添加监听 ...
GEF(Graphical Editor Framework)是一个图形化编辑框架,它允许开发人员以图形化的方式展示和编辑模型,从而提升用户体验。 本系列介绍GEF中的几个基本概念,包括如下部分: GEF概述 模型(Model) 视图(View) 控制器(Control) 请求和编辑策略(Request and EditPolicies) 命令(commands) 模型同步 选项板(PaletteRoot) 1.GEF概述     GEF最早是Ecl ...