📄 designerabstractnewactivitytool.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
namespace WorkflowDesigner.Designer
{
/// <summary>
/// 节点设计工具基类
/// </summary>
public abstract class DesignerAbstractNewActivityTool:DesignerTool
{
#region 字段
#endregion
#region 属性
#endregion
#region 构造函数
#endregion
#region 操作
#region 私有
#endregion
#region 保护
/// <summary>
/// 创建一个节点(可视化对象)
/// </summary>
/// <param name="x">鼠标所在位置的x轴坐标</param>
/// <param name="y">鼠标所在位置的y轴坐标</param>
/// <returns>返回创建的节点</returns>
protected abstract WfAbstractActivity CreateActivity(int x, int y);
/// <summary>
/// 得到本节点的名称
/// </summary>
/// <returns>返回本节点的名称</returns>
protected virtual String GetActivityNamePrefix()
{
return "活动";
}
/// <summary>
/// 生成新的节点名称(如果相同的节点,自动累加并将累加值加在节点名称后)
/// </summary>
/// <returns>返回新节点的名称</returns>
protected virtual String GenerateNewActivityName()
{
//存放判断名字是否存在
bool nameExist;
//存放新名字
String newName;
int i = 1;
do
{
newName = GetActivityNamePrefix() + i.ToString();
//如果有相同名字的节点
if (Ctrl.Document.GetActivityByName(newName) == null)
{
nameExist = false;
}
else
{
nameExist = true;
}
i++;
} while (nameExist);
return newName;
}
#endregion
#region 公用
/// <summary>
/// 当鼠标按下时
/// </summary>
/// <param name="x">鼠标点所在的位置x轴坐标</param>
/// <param name="y">鼠标点所在的位置y轴坐标</param>
public override void OnMouseDown(int x, int y)
{
//创建一个节点(可视化对象)
WfAbstractActivity abstractActivity = CreateActivity(x, y);
//设置节点所属工作文档
abstractActivity.Flow = Ctrl.Document;
//对齐节点位置
abstractActivity.AlignToGrid();
//设置节点的名称
abstractActivity.Name = GenerateNewActivityName();
//把该节点增加到可视化队列中去
Ctrl.Document.VisualObjectList.Add(abstractActivity);
//触发增加可视化对象的事件
Ctrl.FireVisualObjectAddEvent(abstractActivity);
//重新绘制
Ctrl.RedrawAll();
//如果没有按下ctrl键
if (!IsControlPressed())
{
//将“指针控件”设置为当前控件
Ctrl.CurrentTool = new DesignerSelector();
}
}
#endregion
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -