draw.io二次开发(4)事件捕获

本篇阐述对drawio中如何捕获并处理事件。
在这里插入图片描述

绘制一个曲线箭头,可以看到上图中红框部分1.可以通过下拉框选择箭头的起止端形状,2.可以通过复选框选择是否产生草稿线条,3.可以双击曲线添加文字。

1. 起止端形状选择下拉框

在grapheditor/Format.js文件大约第5178行lineStart,以及大约第5244行lineEnd。以lineEnd为例,不想要的全部注释掉就行了。我只保留了开放箭头。

var lineEnd = this.editorUi.toolbar.addMenuFunctionInContainer(stylePanel2, 'geSprite-endclassic', mxResources.get('lineend'), false, mxUtils.bind(this, function(menu)
{
	...
	if (ss.style.shape == 'connector' || ss.style.shape == 'filledEdge' || ss.style.shape == 'wire')
	{
		// Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_CLASSIC, 1], null, null, false, Format.classicFilledMarkerImage.src), 'scaleX(-1)');
		// Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_CLASSIC_THIN, 1], null, null, false, Format.classicThinFilledMarkerImage.src), 'scaleX(-1)');
		Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_OPEN, 0], null, null, false, Format.openFilledMarkerImage.src), 'scaleX(-1)');
		// Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_OPEN_THIN, 0], null, null, false, Format.openThinFilledMarkerImage.src), 'scaleX(-1)');
		//Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], ['openAsync', 0], null, null, false, Format.openAsyncFilledMarkerImage.src), 'scaleX(-1)');
		...
	}
	...
}

同时,为了使得将曲线尾端形状从默认的经典箭头改为开放箭头,可以在SideBar-EventGraph.js(这是我的自定义面板,详见前一篇 传送门)中进行修改,如下图。
在这里插入图片描述

2. 草稿线条复选框

事件监听器设置在grapheditor/Format.js文件大约第5830行:

var listener = mxUtils.bind(this, function(sender, evt, force)
{
	...
	addOption(mxResources.get('sketch'), 'sketch', 0, function(cells, enabled)
	{
		...
		alert("sketch");
		...
	}
}

这样,每当点击复选框时,就会弹出alert信息,接下来就可以按照自己的设计进行翻修改了。

3. 双击曲线编辑文字

在grapheditor/graph.js文件中大约9932行,addText函数。

Graph.prototype.addText = function(x, y, state)
{
	alert('addText');
	...
}

在grapheditor/graph.js文件中大约9847行,在函数insertTextForEvent中被调用。

alert("invoke addText");
cell = this.addText(pt.x, pt.y, state);

这样,每当双击绘制好的曲线时,就会弹出alert信息,接下来就可以按照自己的设计进行翻修改了。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皓月如我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值