/// <summary> /// 创建修改枚举选项窗口 /// </summary> /// <param name="form">AddEnumForm、EditEnumForm</param> /// <param name="enumItem">枚举项</param> public EditEnumItemForm(Form form, CustomEnum customEnum, EnumItem enumItem) { m_Form = form; m_CustomEnum = customEnum; m_EnumItem = enumItem; InitializeComponent(); }
/// <summary> /// 检验枚举类型 /// </summary> /// <returns></returns> public VerifyInfo VerifyEnumType() { //校验EnumType是否为空 for (int i = 0; i < m_Enums.Count; i++) { CustomEnum customEnum = m_Enums[i]; if (string.IsNullOrEmpty(customEnum.EnumType)) { return(new VerifyInfo("存在空的EnumType")); } } //检验EnumType是否相同 for (int i = 0; i < m_Enums.Count; i++) { CustomEnum classType_i = m_Enums[i]; if (classType_i != null) { for (int ii = i + 1; ii < m_Enums.Count; ii++) { CustomEnum classtType_ii = m_Enums[ii]; if (classType_i.EnumType == classtType_ii.EnumType) { return(new VerifyInfo(string.Format("存在相同EnumType:{0}", classType_i.EnumType))); } } } } return(VerifyInfo.DefaultVerifyInfo); }
private void Delete() { if (listView1.SelectedIndices.Count == 1) { int selectIdx = listView1.SelectedIndices[0]; ListViewItem selectedItem = listView1.Items[selectIdx]; CustomEnum customEnum = selectedItem.Tag as CustomEnum; if (MessageBox.Show(string.Format("确定删除枚举类型{0}吗?", customEnum.EnumType), "提示", MessageBoxButtons.OKCancel) == DialogResult.OK) { listView1.Items.RemoveAt(selectIdx); m_NodeClasses.RemoveEnum(customEnum); MainForm.Instance.ShowInfo(string.Format("删除枚举类型{0} 时间:{1}", customEnum.EnumType, DateTime.Now)); if (listView1.Items.Count > selectIdx) listView1.Items[selectIdx].Selected = true; } } else if (listView1.SelectedIndices.Count == 0) { MainForm.Instance.ShowInfo("请选择一条记录进行删除"); } else { MainForm.Instance.ShowInfo("无法一次删除多个记录"); } }
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { m_NodeTemplate = MainForm.Instance.NodeTemplate; if (m_NodeTemplate != null) { if (m_NodeTemplate.Enums.Count == 0) { MainForm.Instance.ShowMessage("没有任何枚举,请先注册枚举"); } else { m_EnumTypeList.Clear(); for (int i = 0; i < m_NodeTemplate.Enums.Count; i++) { CustomEnum customEnum = m_NodeTemplate.Enums[i]; if (customEnum == null) { continue; } m_EnumTypeList.Add(customEnum.EnumType); } return(new StandardValuesCollection(m_EnumTypeList)); } } return(base.GetStandardValues(context)); }
private void Paste() { try { EnumListContent content = (EnumListContent)XmlUtility.StringToObject<EnumListContent>(Clipboard.GetText()); for (int i = 0; i < content.DataList.Count; i++) { CustomEnum customEnum = content.DataList[i]; string enumType = customEnum.EnumType; do { enumType += "_New"; } while (m_NodeClasses.ExistEnumType(enumType)); customEnum.EnumType = enumType; m_NodeClasses.AddEnum(customEnum); } Exec("Refresh"); MainForm.Instance.ShowInfo("您粘贴了" + content.DataList.Count + "个枚举!!!"); } catch (Exception ex) { MainForm.Instance.ShowInfo("无法进行粘贴,错误信息:" + ex.Message); MainForm.Instance.ShowMessage("无法进行粘贴,错误信息:" + ex.Message, "警告"); } }
private string m_OldContent;//用于检测对象有没有被改变了 public EditEnumForm(EnumForm enumForm, CustomEnum customEnum) { m_EnumForm = enumForm; m_CustomEnum = customEnum; m_OldContent = XmlUtility.ObjectToString(m_CustomEnum); m_EditCustomEnum = XmlUtility.StringToObject <CustomEnum>(m_OldContent); InitializeComponent(); }
public bool RemoveEnum(CustomEnum customEnum) { if (customEnum == null) { return(false); } return(m_Enums.Remove(customEnum)); }
//添加枚举 public void AddEnum(CustomEnum customEnum) { if (customEnum == null) return; Exec("Refresh"); ListViewItem listViewItem = GetListViewItem(customEnum); listViewItem.Selected = true; }
public EnumItem GetEnumItemByIndex(int index) { CustomEnum customEnum = MainForm.Instance.NodeTemplate.FindEnum(m_EnumType); if (index >= 0 && index < customEnum.Enums.Count) { return(customEnum.Enums[index]); } return(null); }
private void Edit() { if (listView1.SelectedIndices.Count == 1) { int selectIdx = listView1.SelectedIndices[0]; ListViewItem selectedItem = listView1.Items[selectIdx]; CustomEnum customEnum = selectedItem.Tag as CustomEnum; EditEnumForm editEnumForm = new EditEnumForm(this, customEnum); editEnumForm.ShowDialog(); } }
private void Swap(bool up) { if (listView1.SelectedIndices.Count > 1) { MainForm.Instance.ShowInfo("请选择一条记录进行交换"); MainForm.Instance.ShowMessage("请选择一条记录进行交换", "警告"); return; } int selectIdx = listView1.SelectedIndices[0]; if (up) { //第一个不能往上交换 if (selectIdx == 0) { return; } int preIdx = selectIdx - 1; CustomEnum preEnum = m_NodeTemplate.Enums[preIdx]; CustomEnum selectedEnum = m_NodeTemplate.Enums[selectIdx]; m_NodeTemplate.Enums[preIdx] = selectedEnum; m_NodeTemplate.Enums[selectIdx] = preEnum; selectIdx = preIdx; } else { //最后一个不能往下交换 if (selectIdx == listView1.Items.Count - 1) { return; } int nextIdx = selectIdx + 1; CustomEnum preEnum = m_NodeTemplate.Enums[nextIdx]; CustomEnum selectedEnum = m_NodeTemplate.Enums[selectIdx]; m_NodeTemplate.Enums[nextIdx] = selectedEnum; m_NodeTemplate.Enums[selectIdx] = preEnum; selectIdx = nextIdx; } Exec("Refresh"); MainForm.Instance.ShowInfo("交换成功 时间:" + DateTime.Now); listView1.Items[selectIdx].Selected = true; }
public EnumFieldDesigner() { if (MainForm.Instance.NodeTemplate == null) { return; } if (MainForm.Instance.NodeTemplate.Enums.Count > 0) { CustomEnum customEnum = MainForm.Instance.NodeTemplate.Enums[0]; EnumType = customEnum.EnumType; } }
public EnumDefaultValue() { if (MainForm.Instance.NodeClasses == null) { return; } if (MainForm.Instance.NodeClasses.Enums.Count > 0) { CustomEnum customEnum = MainForm.Instance.NodeClasses.Enums[0]; EnumType = customEnum.EnumType; } }
//更新枚举内容 public void UpdateEnum(CustomEnum customEnum) { if (customEnum == null) { return; } Exec("Refresh"); ListViewItem listViewItem = GetListViewItem(customEnum); if (listViewItem != null) { listViewItem.Selected = true; } }
/// <summary> /// 更新美剧内容 /// </summary> /// <param name="customEnum"></param> public void UpdateEnum(CustomEnum customEnum) { if (customEnum == null) { return; } if (customEnum == this) { return; } m_EnumType = customEnum.EnumType; m_Describe = customEnum.Describe; m_Enums.Clear(); m_Enums.AddRange(customEnum.Enums); }
/// <summary> /// 通过EnumType查找枚举配置 /// </summary> /// <param name="enumType"></param> /// <returns></returns> public CustomEnum FindEnum(string enumType) { if (string.IsNullOrEmpty(enumType)) { return(null); } for (int i = 0; i < m_Enums.Count; i++) { CustomEnum customEnum = m_Enums[i]; if (customEnum != null && customEnum.EnumType == enumType) { return(customEnum); } } return(null); }
/// <summary> /// 移除未定义的枚举字段 /// </summary> public void RemoveUnDefineEnumField() { for (int i = m_Fields.Count - 1; i >= 0; i--) { NodeField field = m_Fields[i]; if (field.FieldType == FieldType.EnumField) { EnumDefaultValue enumDeaultValue = field.DefaultValue as EnumDefaultValue; if (enumDeaultValue != null) { CustomEnum customEnum = MainForm.Instance.NodeClasses.FindEnum(enumDeaultValue.EnumType); if (customEnum == null) { m_Fields.RemoveAt(i); } } } } }
private void BindEnum() { if (m_NodeClasses == null) return; listView1.Items.Clear(); for (int i = 0; i < m_NodeClasses.Enums.Count; i++) { CustomEnum customEnum = m_NodeClasses.Enums[i]; ListViewItem listViewItem = listView1.Items.Add(customEnum.EnumType); listViewItem.Tag = customEnum; string content = string.Empty; for (int j = 0; j < customEnum.Enums.Count; j++) { EnumItem enumItem = customEnum.Enums[j]; content += string.Format("{0} = {1} {2}", enumItem.EnumStr, enumItem.EnumValue, j < customEnum.Enums.Count - 1 ? "," : string.Empty); } listViewItem.SubItems.Add(content); listViewItem.SubItems.Add(customEnum.Describe); } }
/// <summary> /// 校验枚举数据 /// </summary> /// <returns></returns> public VerifyInfo VerifyEnum() { //校验枚举类型 VerifyInfo verifyEnumType = VerifyEnumType(); if (verifyEnumType.HasError) { return(verifyEnumType); } for (int i = 0; i < m_Enums.Count; i++) { CustomEnum customEnum = m_Enums[i]; VerifyInfo verifyEnum = customEnum.VerifyEnum(); if (verifyEnum.HasError) { return(verifyEnum); } } return(VerifyInfo.DefaultVerifyInfo); }
public bool ExistEnumType(string enumType) { if (string.IsNullOrEmpty(enumType)) { throw new System.Exception("NodeClasses.ExistEnumType() 枚举类型为空"); } for (int i = 0; i < m_Enums.Count; i++) { CustomEnum tempEnum = m_Enums[i]; if (tempEnum == null) { continue; } if (tempEnum.EnumType == enumType) { return(true); } } return(false); }
public bool AddEnum(CustomEnum customEnum) { if (customEnum == null) { return(false); } if (string.IsNullOrEmpty(customEnum.EnumType)) { MainForm.Instance.ShowMessage("枚举类型为空!!!!"); return(false); } if (ExistEnumType(customEnum.EnumType)) { MainForm.Instance.ShowMessage(string.Format("已存在枚举:{0},请换个枚举类型", customEnum.EnumType)); return(false); } m_Enums.Add(customEnum); return(true); }
/// <summary> /// 是否存在无效枚举类型 /// </summary> /// <returns></returns> public VerifyInfo VerifyEnum() { //校验枚举类型 //检测字段是否重复 for (int i = 0; i < m_Fields.Count; i++) { NodeField field = m_Fields[i]; if (field.FieldType == FieldType.EnumField) { EnumDefaultValue enumDeaultValue = field.DefaultValue as EnumDefaultValue; if (enumDeaultValue != null) { if (string.IsNullOrEmpty(enumDeaultValue.EnumType)) { return(new VerifyInfo(string.Format("节点类型[{0}]的字段[{1}]的枚举类型为空", this.ClassType, field.FieldName))); } CustomEnum customEnum = MainForm.Instance.NodeClasses.FindEnum(enumDeaultValue.EnumType); if (customEnum == null) { return(new VerifyInfo(string.Format("节点类型[{0}]的字段[{1}]的枚举类型[{2}]不存在", this.ClassType, field.FieldName, enumDeaultValue.EnumType))); } else { EnumItem enumItem = customEnum.FindEnum(enumDeaultValue.DefaultValue); if (enumItem == null) { return(new VerifyInfo(string.Format("节点类型[{0}]的字段[{1}]的枚举类型[{2}]不存在选项[{3}]", this.ClassType, field.FieldName, customEnum.EnumType, enumDeaultValue.DefaultValue))); } } } } } return(VerifyInfo.DefaultVerifyInfo); }
/// <summary> /// 是否存在无效枚举类型 /// </summary> /// <returns></returns> public VerifyInfo VerifyEnum() { //校验枚举类型 //检测字段是否重复 for (int i = 0; i < m_Fields.Count; i++) { FieldDesigner field = m_Fields[i]; if (field.FieldType == FieldType.EnumField) { EnumFieldDesigner enumFieldDesigner = field.Field as EnumFieldDesigner; if (enumFieldDesigner != null) { if (string.IsNullOrEmpty(enumFieldDesigner.EnumType)) { return(new VerifyInfo(string.Format("行为树[{0}]的字段[{1}]的枚举类型为空", m_TreeID, field.FieldName))); } CustomEnum customEnum = MainForm.Instance.NodeTemplate.FindEnum(enumFieldDesigner.EnumType); if (customEnum == null) { return(new VerifyInfo(string.Format("行为树[{0}]的字段[{1}]的枚举类型[{2}]不存在", m_TreeID, field.FieldName, enumFieldDesigner.EnumType))); } else { EnumItem enumItem = customEnum.FindEnum(enumFieldDesigner.Value); if (enumItem == null) { return(new VerifyInfo(string.Format("行为树[{0}]的字段[{1}]的枚举类型[{2}]\n不存在选项[{3}]", m_TreeID, field.FieldName, customEnum.EnumType, enumFieldDesigner.Value))); } } } } } return(VerifyInfo.DefaultVerifyInfo); }
/// <summary> /// 创建添加枚举项窗口 /// </summary> /// <param name="form">由哪个窗口触发,(AddEnumForm、EditEnumForm)</param> /// <param name="customEnum"></param> public AddEnumItemForm(Form form, CustomEnum customEnum) { m_Form = form; m_CustomEnum = customEnum; InitializeComponent(); }
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { m_EnumStr = null; if (context.Instance is EnumDefaultValue) { EnumDefaultValue enumDeaultValue = context.Instance as EnumDefaultValue; if (enumDeaultValue != null) { m_EnumStr = enumDeaultValue.DefaultValue; if (string.IsNullOrEmpty(enumDeaultValue.EnumType)) { MainForm.Instance.ShowMessage("请先选择枚举类型"); } else { m_CustomEnum = MainForm.Instance.NodeTemplate.FindEnum(enumDeaultValue.EnumType); if (m_CustomEnum == null) { MainForm.Instance.ShowMessage(string.Format("不存在枚举类型:{0},请先注册", enumDeaultValue.EnumType)); } } } } else if (context.Instance is EnumFieldDesigner) { EnumFieldDesigner enumFieldDesigner = context.Instance as EnumFieldDesigner; if (enumFieldDesigner != null) { m_EnumStr = enumFieldDesigner.Value; if (string.IsNullOrEmpty(enumFieldDesigner.EnumType)) { MainForm.Instance.ShowMessage("请先选择枚举类型"); } else { m_CustomEnum = MainForm.Instance.NodeTemplate.FindEnum(enumFieldDesigner.EnumType); if (m_CustomEnum == null) { MainForm.Instance.ShowMessage(string.Format("不存在枚举类型:{0},请先注册", enumFieldDesigner.EnumType)); } } } } if (m_CustomEnum != null) { //绑定 m_EnumItemList.Clear(); if (m_CustomEnum.Enums.Count > 0) { int selectedIndex = 0; for (int i = 0; i < m_CustomEnum.Enums.Count; i++) { EnumItem enumItem = m_CustomEnum.Enums[i]; m_EnumItemList.Add(enumItem.EnumStr); if (m_EnumStr == enumItem.EnumStr) { selectedIndex = i; } } } return(new StandardValuesCollection(m_EnumItemList)); } return(base.GetStandardValues(context)); }
public void ResetEnums() { m_Enums.Clear(); CustomEnum SUCCESS_POLICY = new CustomEnum(); SUCCESS_POLICY.EnumType = "SUCCESS_POLICY"; SUCCESS_POLICY.AddEnumItem(new EnumItem() { EnumStr = "SUCCEED_ON_ONE", EnumValue = 1, Describe = "当某一个节点返回成功时退出;" }); SUCCESS_POLICY.AddEnumItem(new EnumItem() { EnumStr = "SUCCEED_ON_ALL", EnumValue = 2, Describe = "当全部节点都返回成功时退出" }); AddEnum(SUCCESS_POLICY); CustomEnum FAILURE_POLICY = new CustomEnum(); FAILURE_POLICY.EnumType = "FAILURE_POLICY"; FAILURE_POLICY.AddEnumItem(new EnumItem() { EnumStr = "FAIL_ON_ONE", EnumValue = 1, Describe = "当某一个节点返回失败时退出;" }); FAILURE_POLICY.AddEnumItem(new EnumItem() { EnumStr = "FAIL_ON_ALL", EnumValue = 2, Describe = "当全部节点都返回失败时退出" }); AddEnum(FAILURE_POLICY); CustomEnum ParameterType = new CustomEnum(); ParameterType.EnumType = "ParameterType"; ParameterType.AddEnumItem(new EnumItem() { EnumStr = "Agent", EnumValue = 1, Describe = "在Agent定义的参数" }); ParameterType.AddEnumItem(new EnumItem() { EnumStr = "Global", EnumValue = 2, Describe = "全局定义的参数" }); AddEnum(ParameterType); CustomEnum CompareType = new CustomEnum(); CompareType.EnumType = "CompareType"; CompareType.AddEnumItem(new EnumItem() { EnumStr = "Less", EnumValue = 1, Describe = "<" }); CompareType.AddEnumItem(new EnumItem() { EnumStr = "Greater", EnumValue = 2, Describe = ">" }); CompareType.AddEnumItem(new EnumItem() { EnumStr = "LEqual", EnumValue = 3, Describe = "<=" }); CompareType.AddEnumItem(new EnumItem() { EnumStr = "GEqual", EnumValue = 4, Describe = ">=" }); CompareType.AddEnumItem(new EnumItem() { EnumStr = "Equal", EnumValue = 5, Describe = "==" }); CompareType.AddEnumItem(new EnumItem() { EnumStr = "NotEqual", EnumValue = 6, Describe = "!=" }); AddEnum(CompareType); }