Пример #1
0
        /// <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);
            }
        }
Пример #2
0
        /// <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();
        }
Пример #3
0
        /// <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();
        }
Пример #4
0
        /// <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)));
        }
Пример #5
0
 /// <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();
 }
Пример #6
0
        /// <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);
            }
        }
Пример #7
0
        /// <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);
        }