提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:吴园园|2020-03-17 16:32:11.367|阅读 372 次
概述:本文介绍了GoJS一些常用指令。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
GoJS是一款功能强大,快速且轻量级的流程图控件,可帮助你在JavaScript 和HTML5 Canvas程序中创建流程图,且极大地简化您的JavaScript / Canvas 程序。
指令
诸如Delete或Paste或Undo之类的命令由CommandHandler类实现。
键盘事件(例如鼠标和触摸事件)总是转到Diagram.currentTool。当用户未执行某些手势时,当前工具与Diagram.defaultTool相同,后者通常为Diagram.toolManager。该ToolManager由他们委托给处理键盘事件Diagram.commandHandler。
基本上,该图处理键盘事件,创建一个描述它的InputEvent,然后调用ToolManager.doKeyDown。依次调用CommandHandler.doKeyDown。按键事件发生的顺序相同。
请注意,键盘命令的处理取决于图表获得焦点,然后获得键盘事件。请勿使用任何样式,例如
canvas :focus { display:none; }键盘命令绑定
该CommandHandler实现了键盘输入以下命令绑定:
在Mac上,Command键用作修饰符,而不是Control键。
当前,没有诸如CommandHandler.collapseSubGraph, CommandHandler.collapseTree,CommandHandler.expandSubGraph或CommandHandler.expandTree之类的命令的键盘绑定。
如果要使箭头键具有不同的行为,请考虑使用CommandHandler: DrawCommandHandler扩展的示例类,该示例类实现了使箭头键移动选择或更改选择的选项。
该DrawCommandHandler扩展还演示了对“ 复制”和“ 粘贴”命令的自定义,以自动移动粘贴副本的位置。
命令处理程序
CommandHandler类实现了成对的方法:用于执行命令的方法和在执行命令时为true的谓词。 例如,对于“复制”命令,有一个CommandHandler.copySelection方法和一个CommandHandler.canCopySelection方法。
键盘事件处理始终首先调用“ can ...”谓词。 仅当返回true时,它才实际调用该方法来执行命令。
您可以设置许多属性来影响CommandHandler的标准行为。 例如,如果要允许用户将所选零件与CommandHandler.groupSelection一起分组,则需要将CommandHandler.archetypeGroupData设置为组节点数据对象:
diagram.commandHandler.archetypeGroupData = { key: "Group", isGroup: true, color: "blue" };该数据对象被CommandHandler.groupSelection复制并作为新的组数据对象添加到模型中。
如果要添加自己的键盘绑定,则可以重写CommandHandler.doKeyDown方法。 例如,为了支持使用“ T”键来折叠或展开当前选定的组:
myDiagram.commandHandler.doKeyDown = function() { var e = myDiagram.lastInput; var cmd = myDiagram.commandHandler; if (e.key === "T") { // could also check for e.control or e.shift if (cmd.canCollapseSubGraph()) { cmd.collapseSubGraph(); } else if (cmd.canExpandSubGraph()) { cmd.expandSubGraph(); } } else { // call base method with no arguments go.CommandHandler.prototype.doKeyDown.call(cmd); } };不要忘记调用基本方法以处理您的方法无法处理的所有键。
请注意,调用基本方法涉及获取基类的原型方法。 如果基本方法接受参数,请确保将参数传递给对基本方法的调用。
更新命令界面
通常在图之外具有调用命令的HTML元素。 您可以使用CommandHandler的“ can ...”谓词来启用或禁用将调用该命令的UI。
// allow the group command to execute diagram.commandHandler.archetypeGroupData = { key: "Group", isGroup: true, color: "blue" }; // modify the default group template to allow ungrouping diagram.groupTemplate.ungroupable = true; var nodeDataArray = [ { key: "Alpha" }, { key: "Beta" }, { key: "Delta", group: "Epsilon" }, { key: "Gamma", group: "Epsilon" }, { key: "Epsilon", isGroup: true } ]; var linkDataArray = [ { from: "Alpha", to: "Beta" }, { from: "Beta", to: "Beta" }, { from: "Gamma", to: "Delta" }, { from: "Delta", to: "Alpha" } ]; diagram.model = new go.GraphLinksModel(nodeDataArray, linkDataArray); // enable or disable a particular button function enable(name, ok) { var button = document.getElementById(name); if (button) button.disabled = !ok; } // enable or disable all command buttons function enableAll() { var cmdhnd = diagram.commandHandler; enable("SelectAll", cmdhnd.canSelectAll()); enable("Cut", cmdhnd.canCutSelection()); enable("Copy", cmdhnd.canCopySelection()); enable("Paste", cmdhnd.canPasteSelection()); enable("Delete", cmdhnd.canDeleteSelection()); enable("Group", cmdhnd.canGroupSelection()); enable("Ungroup", cmdhnd.canUngroupSelection()); enable("Undo", cmdhnd.canUndo()); enable("Redo", cmdhnd.canRedo()); } // notice whenever the selection may have changed diagram.addDiagramListener("ChangedSelection", function(e) { enableAll(); }); // notice when the Paste command may need to be reenabled diagram.addDiagramListener("ClipboardChanged", function(e) { enableAll(); }); // notice whenever a transaction or undo/redo has occurred diagram.addModelChangedListener(function(e) { if (e.isTransactionFinished) enableAll(); }); // perform initial enablements after everything has settled down setTimeout(enableAll, 1); myDiagram = diagram; // make the diagram accessible to button onclick handlers
<input id="SelectAll" type="button" onclick="myDiagram.commandHandler.selectAll()" value="Select All" />每当更改选择或发生事务或撤消或重做时,都会调用enableAll函数以更新每个按钮的“ disabled”属性。
辅助功能
由于GoJS基于HTML Canvas元素,因此使屏幕阅读器或其他可访问性设备可访问的应用程序是在GoJS之外生成后备内容的问题,就像您将生成与任何HTML Canvas应用程序分开的后备内容一样。
尽管可以通过键盘命令或默认的上下文菜单访问CommandHandler的许多预定义功能,但并非全部都能使用,并且Tools的功能主要取决于鼠标或触摸事件。我们建议您为希望用户在没有指针设备的情况下访问的那些工具实施特定于应用程序的替代机制。
更多CommandHandler覆盖示例
停止执行撤消/重做操作CTRL + Z / CTRL + Y,但仍允许以编程方式调用CommandHandler.undo和CommandHandler.redo:
====================================================
想要购买GoJS正版授权的朋友可以
有关产品的最新消息和最新资讯,欢迎扫描关注下方微信公众号
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢