快速业务通道

[Eclipse]GEF入门系列(九、增加易用性) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
nfigureGraphicalViewer() { super.configureGraphicalViewer(); ScalableFreeformRootEditPart root = new ScalableFreeformRootEditPart(); getGraphicalViewer().setRootEditPart(root); getGraphicalViewer().setEditPartFactory(new PartFactory()); action = new ZoomInAction(root.getZoomManager()); getActionRegistry().registerAction(action); getSite().getKeyBindingService().registerAction(action); action = new ZoomOutAction(root.getZoomManager()); getActionRegistry().registerAction(action); getSite().getKeyBindingService().registerAction(action); }

假设我们想把这两个命令添加到主工具条上,在DiagramActionBarContributor里应该做 两件事:在 buildActions()里构造对应的RetargetAction,然后在contributeToToolBar() 里添加它们到工具条(原理请参考前面关于菜单和工具条的 帖子):

protected void buildActions() { //其他命令 … //缩放命令 addRetargetAction(new ZoomInRetargetAction()); addRetargetAction(new ZoomOutRetargetAction()); } public void contributeToToolBar(IToolBarManager toolBarManager) { //工具条中的其他按钮 … //缩放按钮 toolBarManager.add(getAction(GEFActionConstants.ZOOM_IN)); toolBarManager.add(getAction(GEFActionConstants.ZOOM_OUT)); toolBarManager.add(new ZoomComboContributionItem(getPage())); }

请注意,在contributeToToolBar()方法里我们额外添加了一个 ZoomComboContributionItem 的实例,这个类也是GEF提供的,它的作用是显示一个缩放百分 比的下拉框,用户可以选择或输入想要的数值。为了让这个下拉框能与编辑器联系在一起, 我们要修改一下编辑器的getAdapter()方法,增加对它的支持:

public Object getAdapter(Class type) { … if (type == ZoomManager.class) return getGraphicalViewer().getProperty(ZoomManager.class.toString()); return super.getAdapter(type); }

[Eclipse]GEF入门系列(九、增加易用性)(3)

时间:2011-04-19 cnblogs bjzhanghao

现在,打开编辑器后主工具条中将出现下图所示的两个按钮和一个下拉框:

[Eclipse]GEF入门系列(九、增加易用性) - 编程入门网

图2 缩放工具条

有时候我们想让程序把用户当前的缩放值记录下来,以便下次打开时显示同样的比例。这 就须要在画布模型里增加一个zoom变量,在编辑器的初始化过程中增加下面的语句,其中 diagram是我们的画布实例:

ZoomManager manager = (ZoomManager) getGraphicalViewer().getProperty (ZoomManager.class.toString()); if (manager != null) manager.setZoom(diagram.getZoom());

在保存模型前得到当前的缩放比例放在画布模型里一起保存:

ZoomManager manager = (ZoomManager) getGraphicalViewer().getProperty (ZoomManager.class.toString()); if (manager != null) diagram.setZoom(manager.getZoom());

辅助网格

你可能用过一些这样的应用程序,画布里可以显示一个灰色的网格帮助定位你的图形元素 ,当被拖动的节点接近网格线条时会被"吸附"到网格上,这样可以很容易的把画布上的图形 元素排列整齐,GEF 3.0里就提供了显示这种辅助网格的功能。

[Eclipse]GEF入门系列(九、增加易用性) - 编程入门网

图3 辅助编辑网格

是否显示网格以及是否打开吸附功能是由GraphicalViewer的两个布尔类型的属性 (property)值决定的,它们分别是 SnapToGrid.PROPERTY_GRID_VISIBLE和 SnapToGrid.PROPERTY_GRID_ENABLED,这些属性是通过GriaphicalViewer.getProperty()和 setProperty()方法来操作的。GEF为我们提供了一个 ToggleGridAction用来同时切换它们的 值(保持这两个值同步确实符合一般使用习惯),

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号