OpenOffice_org中新功能IntelligentGroup的设计开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第27卷第8期 计算机应用与软件
Vol 127No .82010年8月 Computer App licati ons and Soft w are Aug .2010
O penO ff i 中新功能In telligen t Gr oup 的设计开发
梁伟科
(中国科学院研究生院 北京100049)
收稿日期:2010-01-22。
梁伟科,硕士生,主研领域:多媒体网络通信。
摘 要 简要介绍了开源办公软件Open Office .org,然后为它开发了一个新功能I ntelligent Gr oup,并给出了架构图,还对其设计思
想以及部分实现代码进行了阐述。
关键词 I ntelligent Gr oup 布局 图形 算法
D ES I GN ING AND D EVELO P ING N
E W FUNCT I O N O
F INTELL I GENT GRO UP
IN O PENO FF ICE.O RG
L iang W eike
(Graduate U niversity of Chinese A cade m y of Sciences,B eijing 100049,China )
Abstract I n this paper we briefly intr oduce the open s ource office s oft w are Open Office .org,then devel op a ne w functi on na med I ntelligent Gr oup,and give its fra me diagram.Moreover,the idea of design and part of its i m p le menting codes are als o expounded .Keywords I ntelligent Gr oup Layout Graphics A lgorithm
1 O penO ff i ce .org 介绍
OpenOffice .org 是一套跨平台的办公软件,能在W indows 、L inux 、M ac OS X (X11)和Solaris 等操作系统上执行。
它能够兼
容微软的办公软件。
Open Office .org 是自由软件,任何人都可以免费下载、使用以及推广它。
Open Office .org 的主要模块有:文本文档、电子表格、演示文稿、公式、绘图和数据库。
OpenOffice .org 不仅是六大组件的组合,而且与同类产品不同的是,该套件不是独立软件模块形式创建的,从一开始,它就被设计成一个完整的办公软件包。
· 所有的包有类似的外观,易于使用,如“样式”等“一次学会到处使用”的工具。
Open Office .org 保持与电脑类似的外观———一旦改变您的桌面,Open Office .org 也会相应改变。
· 组件间的相同工具用法相同———例如,W riter 里面使用的绘图工具在I m p ress 和D raw 里面您也能用到。
· 不必知道哪个应用程序用于创建哪个特殊文件———使用“文件”就可以“打开”任何Open Office .org 文件,正确的应用程序将会运行。
· 所有的包共享一个拼写检查工具,如果您改变一个组件包里面的“选项”,在其他组件包里也会同时改变。
· 所有组件间资料可以轻松转移。
· 所有的组件文件可储存为Open Docu ment 格式(新的办公文档国际标准),这种基于X ML 的格式相比同类产品的格式,磁盘存储更合理,任何兼容Open Docu ment 标准的软件均可以访问您的数据。
· 使用安装程序,所有组件可以一次性安装。
· 所有发布的版本都基于相同的开放许可证———没有隐性费用。
2 新功能I n telli gen t Group
虽然使用插图有助于更好地理解和记忆并使操作易于应用,
但是人们通过目前的Open Office .org 程序创建的大部分内容还是文字。
创建具有设计师水准的插图很困难,尤其是非专业设计人员或者聘请专业设计人员过于昂贵时。
如果使用的是早期版本的Open Office .org,则可能要花费大量时间进行以下操作而无法专注于内容:使各形状大小相同并完全对齐;使文字正确显示;手动设置形状的格式使其与文档的总体样式相匹配。
通过使用I n 2telligent Gr oup 图形新增功能,只需轻点几下鼠标即可创建具有设计师水准的插图。
Open Office .org 中的I ntelligent Gr oup 功能相当于微软办公软件Office 2007中的S mart A rt 功能。
2.1 I n telli gen t Group 的U
I
图1 任务窗格 图2 文本窗格
第8期
梁伟科:Open Office .org 中新功能I ntelligent Gr oup 的设计开发157
图3 向导对话框
2.1.1 任务窗格(如图1所示)
I ntelligent Gr oup 的入口集成到了任务窗格里,用户可以在
这里通过点击小图标选择适合的图形。
2.1.2 “插入”菜单在“插入”菜单里也为I ntelligent Gr oup 新设置了一项,当点击后可弹出向导对话框(如图3所示)。
用户也可以在这里选择中意的图形来插入到文档中。
2.1.3 图形布局
当前一共实现了5个图形布局,分别是组合列表布局(Gr ouped L ist Layout )如图4所示、图片特征列表布局(Picture Accent L ist Layout )如图5所示、简单域布局(Si m p le Field Lay 2out )如图6所示、树形布局(Tree Layout )如图7所示、基础圆形布局(Base Circle Layout )如图8所示。
图4
组合列表布局
图5
图片特征列表布局
图6
简单域布局
图
7 树形布局
图8 基础圆形布局
2.1.4 文本窗格(如图2所示)
文本窗格是编辑区,可看作是用户编写文本的助手。
文本
以大纲的格式进行组织,以项目符号标示。
文本的级别对应图形的级别。
也就是说,文本的级别与它匹配的图形的级别一致。
改变文本的级别也就同时改变了它对应图形的级别。
在文本与图形一一对应时,增加或者减少文本的条目数,也就增加或者减少了图形的个数。
2.2 I n telli gen t Group 的架构
(如图9所示)
图9 架构图
2.2.1 控制器(Contr oller )
控制器在V ie wShell 里创建,用来执行分派过来的Sl ot I D 命令。
在控制器内部,收到Sl ot I D 命令后,提取命令参数,部署I ntelligent Gr oup,准备在视图上呈现用户选择的布局图形。
158
计算机应用与软件2010年
2.2.2 I ntelligent Gr oup
它是位于控制器之下的绘制布局图形的组织者和实施者。
2.2.3 模型(Model)
模型是I ntelligent Gr oup的数据中心,或者也可以看作是图形仓库。
模型提供接口方法以便能够访问到其中的图形。
2.2.4 布局管理器(Layout M anager)
布局管理器负责创建指定的布局和算法,并返回给I ntelli2 gent Gr oup。
2.2.5 布局者(Layouter)
它来准备所有需要的图形,命令算法来放置每一个图形(实际上是计算出每一个图形的位置和大小),并设置和更新图形里的字符串。
2.2.6 选择管理器(Selecti on Manager)
选择管理器继承自L istener,接收每一次选择事件。
当选中一个图形时,选择管理器收到事件,询问I ntelligent Gr oup选中的图形是否属于I ntelligent Gr oup.如果是,那么调用边框和文本窗格显示出来。
2.2.7 边框(Fra me)
边框是一个矩形,包围在图形组周围。
用户可以通过拖动它来进行缩放和移动。
在边框缩放和移动的同时,其内部的图形组也随之缩放和移动。
2.3 设 计
2.3.1 三个容器
要实现I ntelligent Gr oup,需要有三个容器。
I ntelligent Gr oup容器 在一篇文档里,当一个布局被选中时一个I ntelligentGr oup对象将创建。
这意味着在一个文档里很可能有很多个I ntelligentGr oup对象。
I ntelligentGr oup容器就是用来盛放这些对象的指针。
图形容器 每一个I ntelligentGr oup对象都有一个图形容器,它是模型的私有成员。
它装有的是图形对象的引用。
文本容器 每一个I ntelligentGr oup对象也有一个文本容器。
它来盛放显示在图形里的文本。
2.3.2 两个迭代器
图形迭代器 它指向图形容器里的图形。
通过它可以访问每一个图形,也可以得到每一个图形。
文本迭代器 它指向文本窗格里的文本。
通过它可以访问每一条字符串,同时也能获得每一条字符串。
类I ntelligentGr oup里的方法UpdateText()将使用这两个迭代器来更新每一个图形里的文本。
这两个迭代器是互相匹配的,一一对应的。
2.4 详细设计
伴随着每一个图形布局的选中,都会有一些类的实例将会创建。
这些类包括:I ntelligentGr oup,I ntelligentGr oup Model,I n2 telligentGr oupLayouter,A lgorith m(具体的算法类),Layout(具体的布局类)。
目前实现完成的具体算法类有:Field Layout A lgorith m,Tree2 Layout A lgorith m,Horizontal L ist L ayout A lgorith m,Vertical L ist L ay2 out A lgorith m.
目前实现完成的具体布局类有:Gr ouped L ist L ayout,Picture2 Accent L ist L ayout,Tree Layout.
任何一个呈现在视图上的图形布局都是由算法类和布局类共同组合作用的结果。
2.4.1 布局思想
整个布局其实是分两步走。
第一步由算法类来完成,它需要用到图形组的边界框。
因此,算法不需要了解任何布局类或者单个图形的信息,比如位置、大小等。
算法类只负责确定小图形组的位置和大小。
第二步是由布局类来完成。
它与算法类正好相反。
它一次只处理一个小图形组。
当算法类确定完每一个小图形组的位置和大小后,它的任务是确定小图形组中每一个图形的大小和位置。
2.4.2 具体实现
第一级布局 算法类A通过模型M得到图形组的数量N。
N=M.GetShapeGr oupCount();A从布局对象L得到每两个图形组之间的间距。
Gap=L.GetGap(Gr oupBounding Box);接着确定图形组的宽度或者高度,当为水平排列列表时宽度W= (Gr oupBounding Box.W idth2(N21)3Gap)/N,H=Gr oupBounding2 Box.Height;当为垂直排列列表时高度H=(Gr oupBounding Box. Height2(N21)3Gap)/N,W=Gr oupBounding Box.W idth;
算法A放置小图形组的边界框。
在水平列表的例子里,每一个小边界框一个接一个水平摆开,每两个之间预留已经算好的间隔,以避免叠加和重合。
第二级布局 布局类的对象从算法得到边框信息后,开始为内部的每一个图形计算位置和大小。
例如布局类Gr ouped2 L ist L ayout,部分代码如下所示:
void Gr oup ledL ist L ayout::PlaceShape(
unsigned int nShapeGr oup I ndex,
Rectangle aBounding Box,
unsigned int nScale)
{
//从模型里得到小图形组的图形数目
unsigned int nCount=mpModel2>GetGr oupShapeCount(nShape2 Gr oup I ndex);
if(nCount>0)
{
//默认的图形之间的间距为图形组边框高度的三十分之一
int nGap=a Bounding Box.Height/30;
//默认的可用区域高度为图形组边框高度的十分之九
int nAvailableHeight=0.93a Bounding Box.Height;
//计算得到每一个图形的高度
int nShapeHeight=(nAvailableHeight+nGap)/nCount–nCap;
//起始图形的纵坐标偏移量
int nY=0.053a Bounding Box.Height;
for(int n I ndex=1;n I ndex<=nCount;n I ndex++)
{
Shape Descri p t or ashapedesc;
//为图形的坐标赋值
ashapedesc.Default L ocati on=Point(a Bounding Box.X+0.13 aBounding Box.W idth,
a Bounding Box.Y+nY);
//为图形的大小赋值
ashapedesc.DefaultSize=Size(0.83a Bounding Box.W idth, nShapeHeight);
//计算下一个图形纵坐标的偏移量
nY+=nShapeHeight+nGap;
//设置图形的大小和坐标
mpModel2>SetSizeLocati on(nShapeGr oup I ndex+n I ndex,asha2 pedesc);(下转第187页)
第8期
王林:采用职责链模式实现多语言系统的程序设计187
言系统的主要设计框架就算完成了。
系统的类设计图如图7
所示。
图7 多语言系统类设计图
在本实例中,系统在初始化时,首先Muti L anguage Manager 类会根据I N I 文件中保存的默认语言从资源文件中读取相应的
译文。
然后遍历系统的界面控件,调用App lyRes ources 方法对控件发送翻译请求,在职责链的传递过程中,完成对相应对象控件的翻译。
当所有界面控件遍历完成后。
系统的翻译工作亦完成。
3 总 结
支持多语言界面,已经成为流行软件的标准。
在设计阶段的早期就考虑到国际化支持,并不会花费太多时间和精力,一
个设计良好的多语言资源管理和实现模型可以减少后期的测试和维护的成本。
这种多语言显示界面的实现方法使界面显示信息和源程序进行分离,当增加一种新的显示语言时,只需要翻译对应界面信息的资源文件信息而不需要修改源程序。
这样减少了当添加显示语言而带来的系统测试,从而减少了工作量,使软件开发周期缩短。
还可以同时发布不同语言版本的应用程序或者缩小不同语言版本程序的发布时间。
至于资源文件的选择并没有限制,可以使用当前流行的x m l 文件,也可以采用文本文件,甚至数据库也可以。
本文介绍的是设计多语言系统的一种模式和方法,具体采用哪种编程语言、哪种资源文件并没有限制。
利用这种职责链的设计方法,我们可以在很多编程语言和平台上实现多语言程序系统。
参考文献
[1]姜湘岗,章小莉.实现软件多语言用户界面方法之分析[J ].北京
电子科技学院学报,2006(02):15218.
[2]张剑达,张全伙.多语言用户界面的实现技术分析[J ].华侨大学
学报自然科学版,2007(01).
[3]王锋,魏晓丽,江开耀.基于X ML 的C#多语言界面实现[J ].计算
机工程与设计,2008(15):407324078.
[4]张文萍,郭庆平,袁春明,等.Java 平台上利用X ML 实现W eb 系统
页面的多语言方案[J ].计算机与现代化,2003(03):66267.
[5]司国东 环境下的一种多语言界面解决方案[J ].农业网络
信息,2007(02):35236.[6]张菲菲,薛贺,李建良.多语言W eb 网站的设计与实现[J ].微电子
学与计算机,2008(05):43250.
(上接第158页) }
}}
与算法不同的是,根据布局预定义的规则不同,内部的图形可能会出现重合,比如,有一个主图形处于显示的最底层用来做背景或充当整体的含义,其它附属图形位于上层用于表示附属或者包含关系。
当用户拖动外围边框时,所有图形将不得不更新,图形的大小随之按比例缩放或者位置随之移动。
3 总 结
虽然目前设计开发的新功能I ntelligent Gr oup 还处于雏形阶段,但是已经具备了基本的功能要点。
用户利用它可以容易地创建流程图、组织关系图、层次结构图、循环图等等。
利用文本窗格,用户可以动态地增减文本和图形,或者改变图形、文本的层级,从而实现用直观的图形来表达呈现用户的内容。
今后将开发更多的图新布局,丰富图形布局的种类,减少用户设计整齐划一图形组的步骤。
同时还将研究文档格式,使Open Office .org 能够兼容微软Office 2007的文档,兼容S mart A rt 。
参 考 文 献
[1]Sun M icr osyste m s,I nc .OpenOffice .org Devel oper ’s Guide[R ].[2]Ja mes R.Tr ott,A llan Shall o way .Design Patterns Ex p lained:A Ne w Per 2
s pective on Object 2O riented Design[M ].Addis m 2W eseey,2001.[3]ScottMeyers .“Effective C ++[M ].Addis m 2W eseey,1998.
(上接第177页)
6 结 论
经AVL 树优化管理后的F AT 文件系统在保证其兼容性的前提下,有效地减小了磁盘的寻道时间和旋转延迟,较大地提高了文件操作的实时性。
同时该优化策略还有效地减少了磁盘碎片的数量,增强了系统的稳定性。
尤其对那些实时性能要求较高的嵌入式应用有着实际的借鉴和指导作用。
参考文献
[1]W illia m Stallings,著.Operating Syste m s —I nternals and Design Princi 2
p les (Fifth Editi on )[M ].陈渝,译.北京:电子工业出版社,2006:1262127.
[2]N iranjan T,Chiuh T,Schl oss G .I m p lementati on and evaluati on of a
multi m edia file syste m [A ].I n:Bob W erner ed .I EEE I nternati onal Conference on Multi m edia Computing and System s ’97[C ].Pr oceed 2ings of I EEE I nternati onal Conference on Multi m edia Computing and Syste m s .1997:2692276.
[3]刘可嘉,梁阿磊.实现实时F AT 文件系统的一种简单方法[J ].计
算机工程与应用,2008,44(16):70272.
[4]Donald E .Knuth,著.The A rt of Computer Pr ogra mm ing[M ].苏运霖,
译.北京:国防工业出版社,2002:4312432.。