using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.IO; using System.Xml; using System.Windows.Forms; using Mesnac.Equips.SetConfig.DataConfig; using Mesnac.Equips.BaseInfo; using Mesnac.Equips.SetConfig; namespace Mesnac.Equips.SetConfig { public partial class DataConfigForm : Mesnac.PlugIn.View.DefaultViewContent { private ConfigEquipFactory configEquipFactory = null; public DataConfigForm(string configFile, string prjectName) { configEquipFactory = new ConfigEquipFactory(configFile, prjectName); configEquipFactory.OnCurrentEquipChange += myCurrentEquipChange; configEquipFactory.OnCurrentGroupChange += myCurrentGroupChange; configEquipFactory.OnCurrentDataChange += myCurrentDataChange; InitializeComponent(); } public void InitializeConfigInfo() { configEquipFactory.ReadConfig(); ShowEquip(); } private void DataConfigForm_Shown(object sender, EventArgs e) { } #region BaseEquip private void ShowEquip() { myCurrentChange(); this.listView1.Items.Clear(); this.listView2.Items.Clear(); this.listView3.Items.Clear(); int index = 0; foreach (BaseEquip equip in configEquipFactory.AllEquips.Values) { index++; ListViewItem item = this.listView1.Items.Add(equip.Name.ToString()); item.SubItems.Add(index.ToString()); item.SubItems.Add(equip.Name); item.SubItems.Add(equip.Project); item.SubItems.Add(equip.Main.Brand); item.SubItems.Add(equip.Main.Model); //item.SubItems.Add(equip.Main.ConnType.IP); if (equip.Main.ConnType is Mesnac.Equips.Connection.Default.ConnType) { var type = equip.Main.ConnType as Mesnac.Equips.Connection.Default.ConnType; item.SubItems.Add(type.IP); } else { item.SubItems.Add(""); } } if (configEquipFactory.CurrentEquip == null) { if (this.listView1.Items.Count > 0) { this.listView1.Items[0].Selected = true; } } else { for (int i = 0; i < this.listView1.Items.Count; i++) { if (this.listView1.Items[i].Text == configEquipFactory.CurrentEquip.Name) { this.listView1.Items[i].Selected = true; } } } } private void listView1_SelectedIndexChanged(object sender, EventArgs e) { if (listView1.SelectedItems.Count == 0) { return; } string ss = listView1.SelectedItems[0].Text; foreach (ConfigEquip equip in configEquipFactory.AllEquips.Values) { if (ss.Trim() == equip.Name.Trim()) { configEquipFactory.CurrentEquip = equip; ShowGroup(); return; } } } private void toolStripMenuItem7_Click(object sender, EventArgs e) { NewEquipForm form = new NewEquipForm(configEquipFactory, true); if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK) { ShowEquip(); } } #region 右键菜单事件 private void toolStripMenuItem8_Click(object sender, EventArgs e) { if (configEquipFactory == null || configEquipFactory.CurrentEquip == null) { MessageBox.Show("请选择需要修改的设备!"); return; } NewEquipForm form = new NewEquipForm(configEquipFactory, false); if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK) { ShowEquip(); } } private void toolStripMenuItem9_Click(object sender, EventArgs e) { if (configEquipFactory == null || configEquipFactory.CurrentEquip == null) { MessageBox.Show("请选择需要删除的设备!"); return; } if (MessageBox.Show("确认删除此条信息[" + configEquipFactory.CurrentEquip.Name + "]", "提示", MessageBoxButtons.YesNo) != System.Windows.Forms.DialogResult.Yes) { return; } configEquipFactory.AllEquips.Remove(configEquipFactory.CurrentEquip.Name); configEquipFactory.CurrentEquip = null; ShowEquip(); } private void listView1_MouseDoubleClick(object sender, MouseEventArgs e) { toolStripMenuItem8.PerformClick(); } #endregion #endregion #region Group private void ShowGroup() { myCurrentChange(); this.listView2.Items.Clear(); this.listView3.Items.Clear(); int index = 0; foreach (KeyValuePair group in this.configEquipFactory.CurrentEquip.Group) { index++; ListViewItem item = this.listView2.Items.Add(group.Key); item.SubItems.Add(index.ToString()); item.SubItems.Add(group.Value.Name); item.SubItems.Add(group.Value.Block.ToString()); item.SubItems.Add(group.Value.Start.ToString()); item.SubItems.Add(group.Value.Len.ToString()); item.SubItems.Add(group.Value.Access.ToString()); if (group.Value.IsAutoRead) { item.SubItems.Add("√"); } else { item.SubItems.Add(string.Empty); } item.SubItems.Add(group.Value.Remark.ToString()); } if (configEquipFactory.CurrentGroup == null) { if (this.listView2.Items.Count > 0) { this.listView2.Items[0].Selected = true; } } else { for (int i = 0; i < this.listView2.Items.Count; i++) { if (this.listView2.Items[i].Text == configEquipFactory.CurrentGroup.Name) { this.listView2.Items[i].Selected = true; } } } } private void listView2_SelectedIndexChanged(object sender, EventArgs e) { if (listView2.SelectedItems.Count == 0) { return; } string ss = listView2.SelectedItems[0].Text; foreach (Group group in configEquipFactory.CurrentEquip.Group.Values) { if (ss.Trim() == group.Name.Trim()) { configEquipFactory.CurrentGroup = group; ShowData(); return; } } } #region 右键菜单事件 private void toolStripMenuItem1_Click(object sender, EventArgs e) { if (configEquipFactory == null || configEquipFactory.CurrentEquip == null) { MessageBox.Show("请选择需要添加信息组的设备!"); return; } NewGroupForm form = new NewGroupForm(configEquipFactory, true); if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK) { ShowGroup(); } } private void toolStripMenuItem2_Click(object sender, EventArgs e) { if (configEquipFactory == null || configEquipFactory.CurrentEquip == null || configEquipFactory.CurrentGroup == null) { MessageBox.Show("请选择需要修改的信息组!"); return; } NewGroupForm form = new NewGroupForm(configEquipFactory, false); if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK) { ShowGroup(); } } private void toolStripMenuItem3_Click(object sender, EventArgs e) { if (configEquipFactory == null || configEquipFactory.CurrentEquip == null || configEquipFactory.CurrentGroup == null) { MessageBox.Show("请选择需要删除的信息组!"); return; } if (MessageBox.Show("确认删除此条信息[" + configEquipFactory.CurrentGroup.Name + "]", "提示", MessageBoxButtons.YesNo) != System.Windows.Forms.DialogResult.Yes) { return; } configEquipFactory.CurrentEquip.Group.Remove(configEquipFactory.CurrentGroup.Name); configEquipFactory.CurrentGroup = null; ShowGroup(); } private void listView2_MouseDoubleClick(object sender, MouseEventArgs e) { toolStripMenuItem2.PerformClick(); } #endregion #endregion #region Data private void ShowData() { myCurrentChange(); this.listView3.Items.Clear(); int index = 0; foreach (KeyValuePair data in this.configEquipFactory.CurrentGroup.Data) { index++; ListViewItem item = this.listView3.Items.Add(data.Key); item.SubItems.Add(index.ToString()); item.SubItems.Add(data.Value.Name.ToString()); item.SubItems.Add(data.Value.RunName.ToString()); item.SubItems.Add(data.Value.Start.ToString()); item.SubItems.Add(data.Value.Len.ToString()); item.SubItems.Add(data.Value.Method.ToString()); item.SubItems.Add(data.Value.Max.ToString()); item.SubItems.Add(data.Value.Subtractor.ToString()); if (data.Value.IsSave) { item.SubItems.Add("√"); } else { item.SubItems.Add(string.Empty); } item.SubItems.Add(data.Value.Remark.ToString()); } if (configEquipFactory.CurrentData == null) { if (this.listView3.Items.Count > 0) { this.listView3.Items[0].Selected = true; } } else { for (int i = 0; i < this.listView3.Items.Count; i++) { if (this.listView3.Items[i].Text == configEquipFactory.CurrentData.Name) { this.listView3.Items[i].Selected = true; } } } } #region 右键菜单事件 private void listView3_SelectedIndexChanged(object sender, EventArgs e) { if (listView3.SelectedItems.Count == 0) { return; } string ss = listView3.SelectedItems[0].Text; foreach (Data data in configEquipFactory.CurrentGroup.Data.Values) { if (ss.Trim() == data.Name.Trim()) { configEquipFactory.CurrentData = data; } } } private void toolStripMenuItem4_Click(object sender, EventArgs e) { if (configEquipFactory == null || configEquipFactory.CurrentEquip == null || configEquipFactory.CurrentGroup == null) { MessageBox.Show("请选择需要添加数据点的信息组!"); return; } NewDataForm form = new NewDataForm(configEquipFactory, true); if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK) { ShowData(); } } private void toolStripMenuItem5_Click(object sender, EventArgs e) { if (configEquipFactory == null || configEquipFactory.CurrentEquip == null || configEquipFactory.CurrentGroup == null || configEquipFactory.CurrentData == null) { MessageBox.Show("请选择需要修改的数据点!"); return; } NewDataForm form = new NewDataForm(configEquipFactory, false); if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK) { ShowData(); } } private void toolStripMenuItem6_Click(object sender, EventArgs e) { if (configEquipFactory == null || configEquipFactory.CurrentEquip == null || configEquipFactory.CurrentGroup == null || configEquipFactory.CurrentData == null) { MessageBox.Show("请选择需要删除的数据点!"); return; } if (MessageBox.Show("确认删除此条信息[" + configEquipFactory.CurrentData.Name + "]", "提示", MessageBoxButtons.YesNo) != System.Windows.Forms.DialogResult.Yes) { return; } configEquipFactory.CurrentGroup.Data.Remove(configEquipFactory.CurrentData.Name); configEquipFactory.CurrentData = null; ShowData(); } private void listView3_MouseDoubleClick(object sender, MouseEventArgs e) { toolStripMenuItem5.PerformClick(); } #endregion #endregion #region 事件 private void myCurrentChange() { myCurrentEquipChange(this.configEquipFactory.CurrentEquip, EventArgs.Empty); myCurrentGroupChange(this.configEquipFactory.CurrentGroup, EventArgs.Empty); myCurrentDataChange(this.configEquipFactory.CurrentData, EventArgs.Empty); } private void myCurrentEquipChange(object sender, EventArgs e) { ConfigEquip equip = sender as ConfigEquip; if (equip == null) { this.groupBox1.Text = string.Format("请选择设备"); } else { this.groupBox1.Text = string.Format("选中设备[{0}]", equip.Name); } } private void myCurrentGroupChange(object sender, EventArgs e) { Group group = sender as Group; if (group == null) { this.groupBox2.Text = string.Format("请选择信息组"); } else { this.groupBox2.Text = string.Format("选中信息组[{0}]", group.Name); } } private void myCurrentDataChange(object sender, EventArgs e) { Data data = sender as Data; if (data == null) { this.groupBox3.Text = string.Format("请选择数据点"); } else { this.groupBox3.Text = string.Format("选中数据点[{0}]", data.Name); } } #endregion #region 保存配置 private void button1_Click(object sender, EventArgs e) { Factory.Instance.SaveConfig(); } private void DataConfigForm_FormClosed(object sender, FormClosedEventArgs e) { } private void button2_Click(object sender, EventArgs e) { DataConfigForm_Shown(sender, e); } #endregion public void SaveConfig() { configEquipFactory.SaveConfig(); } } }