/// <summary> /// Edits the item template. /// </summary> private void EditTemplate(OpcDa::Item template) { // prompt user to edit the template. OpcDa::Item[] templates = new ItemListEditDlg().ShowDialog(new OpcDa::Item[] { template }, IsReadItem, false); if (templates == null || templates.Length != 1) { return; } // get existing items without applying defaults. ArrayList items = new ArrayList(); foreach (ListViewItem item in ItemListLV.Items) { if (item.Tag != null && item.Tag.GetType() == typeof(OpcDa::Item)) { if (item.Tag != m_template) { items.Add(item.Tag); } } } // re-initialize the list with the new template. Initialize(templates[0]); // add items back. foreach (OpcDa::Item item in items) { AddItem(item); } }
/// <summary> /// Adds an item to the list view. /// </summary> public void AddItem(OpcDa::Item item) { // create list view item. ListViewItem listItem = new ListViewItem(item.ItemName, (int)ImageListLibrary.Icons.IMAGE_TAG); // add appropriate sub-items. listItem.SubItems.Add(Opc.Convert.ToString(GetFieldValue(item, ITEM_PATH))); listItem.SubItems.Add(Opc.Convert.ToString(GetFieldValue(item, REQUESTED_TYPE))); listItem.SubItems.Add(Opc.Convert.ToString(GetFieldValue(item, MAXIMUM_AGE))); listItem.SubItems.Add(Opc.Convert.ToString(GetFieldValue(item, ACTIVE))); listItem.SubItems.Add(Opc.Convert.ToString(GetFieldValue(item, DEADBAND))); listItem.SubItems.Add(Opc.Convert.ToString(GetFieldValue(item, SAMPLING_RATE))); listItem.SubItems.Add(Opc.Convert.ToString(GetFieldValue(item, ENABLE_BUFFERING))); // save item object as list view item tag. listItem.Tag = item; // insert/add item to list view. if (item == m_template) { ItemListLV.Items.Insert(0, listItem); } else { ItemListLV.Items.Add(listItem); } // adjust columns. AdjustColumns(); }
/// <summary> /// Initializes the control with the specified set of items. /// </summary> public void Initialize(OpcDa::Item template, OpcDa::Item[] items) { Initialize(template); // add items. if (items != null) { foreach (OpcDa::Item item in items) { // clear subscription related fields. if (IsReadItem) { item.ActiveSpecified = false; item.DeadbandSpecified = false; item.SamplingRateSpecified = false; item.EnableBufferingSpecified = false; } AddItem(item); } } // adjust columns. AdjustColumns(); }
/// <summary> /// Returns the set of items in the control. /// </summary> public OpcDa::Item[] GetItems() { ArrayList items = new ArrayList(); foreach (ListViewItem listItem in ItemListLV.Items) { // skip template. if (listItem.Tag == m_template) { continue; } object field = null; // create copy of item. OpcDa::Item item = (OpcDa::Item)((OpcDa::Item)listItem.Tag).Clone(); // Req Type field = GetFieldValue(item, REQUESTED_TYPE); item.ReqType = (System.Type)field; // Max Age field = GetFieldValue(item, MAXIMUM_AGE); item.MaxAge = (field != null) ? (int)field : 0; item.MaxAgeSpecified = field != null; // Active field = GetFieldValue(item, ACTIVE); item.Active = (field != null) ? (bool)field : false; item.ActiveSpecified = field != null; // Deadband field = GetFieldValue(item, DEADBAND); item.Deadband = (field != null) ? (float)field : 0; item.DeadbandSpecified = field != null; // Sampling Rate field = GetFieldValue(item, SAMPLING_RATE); item.SamplingRate = (field != null) ? (int)field : 0; item.SamplingRateSpecified = field != null; // Enable Buffering field = GetFieldValue(item, ENABLE_BUFFERING); item.EnableBuffering = (field != null) ? (bool)field : false; item.EnableBufferingSpecified = field != null; // add item to list. items.Add(item); } //Opc.Convert to array of item objects. return((OpcDa::Item[])items.ToArray(typeof(OpcDa::Item))); }
/// <summary> /// Initializes the control with the specified template item. /// </summary> public void Initialize(OpcDa::Item template) { // clear existing items. ItemListLV.Items.Clear(); // create template item. if (template != null) { m_template = (OpcDa::Item)template.Clone(); } else { m_template = new OpcDa::Item(); m_template.Active = true; m_template.ActiveSpecified = true; } m_template.ItemName = "< template >"; // add template to list. AddItem(m_template); // adjust columns. AdjustColumns(); }
/// <summary> /// Creates a new item. /// </summary> private void NewMI_Click(object sender, System.EventArgs e) { OpcDa::Item template = null; // copy the current selection. if (ItemListLV.SelectedItems.Count > 0) { template = (OpcDa::Item)((OpcDa::Item)ItemListLV.SelectedItems[0].Tag).Clone(); } // prompt user to edit new item. OpcDa::Item[] items = new ItemListEditDlg().ShowDialog(new OpcDa::Item[] { template }, IsReadItem, true); if (items == null) { return; } // add new items. foreach (OpcDa::Item item in items) { AddItem(item); } }
/// <summary> /// Returns the value of the specified field. /// </summary> private object GetFieldValue(OpcDa::Item item, int fieldID) { object fieldValue = null; switch (fieldID) { // Item Path case ITEM_PATH: { fieldValue = item.ItemPath; break; } // Req Type case REQUESTED_TYPE: { fieldValue = item.ReqType; if (fieldValue == null) { fieldValue = m_template.ReqType; } break; } // Max Age case MAXIMUM_AGE: { fieldValue = (item.MaxAgeSpecified) ? item.MaxAge : fieldValue; if (fieldValue == null) { fieldValue = (m_template.MaxAgeSpecified) ? m_template.MaxAge : fieldValue; } break; } // Active case ACTIVE: { fieldValue = (item.ActiveSpecified) ? item.Active : fieldValue; if (fieldValue == null) { fieldValue = (m_template.ActiveSpecified) ? m_template.Active : fieldValue; } break; } // Deadband case DEADBAND: { fieldValue = (item.DeadbandSpecified) ? item.Deadband : fieldValue; if (fieldValue == null) { fieldValue = (m_template.DeadbandSpecified) ? m_template.Deadband : fieldValue; } break; } // Sampling Rate case SAMPLING_RATE: { fieldValue = (item.SamplingRateSpecified) ? item.SamplingRate : fieldValue; if (fieldValue == null) { fieldValue = (m_template.SamplingRateSpecified) ? m_template.SamplingRate : fieldValue; } break; } // Enable Buffering case ENABLE_BUFFERING: { fieldValue = (item.EnableBufferingSpecified) ? item.EnableBuffering : fieldValue; if (fieldValue == null) { fieldValue = (m_template.EnableBufferingSpecified) ? m_template.EnableBuffering : fieldValue; } break; } } return(fieldValue); }