Exemple #1
0
        /// <summary>
        /// Unmarshals and deallocates an OPCHDA_ANNOTATION structure.
        /// </summary>
        internal static TsCHdaAnnotationValueCollection GetAnnotationValueCollection(OpcRcw.Hda.OPCHDA_ANNOTATION input, bool deallocate)
        {
            TsCHdaAnnotationValueCollection output = new TsCHdaAnnotationValueCollection();

            output.ClientHandle = input.hClient;

            DateTime[] timestamps    = Utilities.Interop.GetDateTimes(ref input.ftTimeStamps, input.dwNumValues, deallocate);
            string[]   annotations   = Utilities.Interop.GetUnicodeStrings(ref input.szAnnotation, input.dwNumValues, deallocate);
            DateTime[] creationTimes = Utilities.Interop.GetDateTimes(ref input.ftAnnotationTime, input.dwNumValues, deallocate);
            string[]   users         = Utilities.Interop.GetUnicodeStrings(ref input.szUser, input.dwNumValues, deallocate);

            for (int ii = 0; ii < input.dwNumValues; ii++)
            {
                TsCHdaAnnotationValue value = new TsCHdaAnnotationValue();

                value.Timestamp    = timestamps[ii];
                value.Annotation   = annotations[ii];
                value.CreationTime = creationTimes[ii];
                value.User         = users[ii];

                output.Add(value);
            }

            return(output);
        }
        /// <summary>
        /// Adds a new item value by copying an existing one.
        /// </summary>
        private void CopyMI_Click(object sender, System.EventArgs e)
        {
            try
            {
                // check for valid selection.
                if (ReadOnly || ValuesLV.SelectedItems.Count != 1)
                {
                    return;
                }

                TsCHdaAnnotationValue value = (TsCHdaAnnotationValue)ValuesLV.SelectedItems[0].Tag;

                // create new item value.
                TsCHdaAnnotationValue copy = new AnnotationValueEditDlg().ShowDialog((TsCHdaAnnotationValue)value.Clone());

                // prompt user to edit item value.
                if (copy == null)
                {
                    return;
                }

                // update display.
                AddListItem(copy, ValuesLV.SelectedIndices[0]);

                // adjust columns
                AdjustColumns();
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }
        /// <summary>
        /// Updates an item in the list view.
        /// </summary>
        private void UpdateListItem(ListViewItem listItem, TsCHdaAnnotationValue value)
        {
            // set column values.
            for (int ii = 0; ii < listItem.SubItems.Count; ii++)
            {
                listItem.SubItems[ii].Text = OpcClientSdk.OpcConvert.ToString(GetFieldValue(value, ii));
            }

            // save object as list view item tag.
            listItem.Tag = value;
        }
        /// <summary>
        /// Adds a new item value.
        /// </summary>
        private void AddMI_Click(object sender, System.EventArgs e)
        {
            try
            {
                // check control state.
                if (ReadOnly)
                {
                    return;
                }

                // create new item value.
                TsCHdaAnnotationValue value = new TsCHdaAnnotationValue();

                value.Annotation   = null;
                value.Timestamp    = RunTestDlg.BASETIME;
                value.CreationTime = DateTime.MinValue;
                value.User         = null;

                // prompt user to edit item value.
                value = new AnnotationValueEditDlg().ShowDialog(value);

                if (value == null)
                {
                    return;
                }

                // get the current selection.
                int index = -1;

                if (ValuesLV.SelectedIndices.Count > 0)
                {
                    index = ValuesLV.SelectedIndices[ValuesLV.SelectedIndices.Count - 1];
                }

                // update display.
                AddListItem(value, index);

                // adjust columns
                AdjustColumns();
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }
        /// <summary>
        /// Returns the value of the specified field.
        /// </summary>
        private object GetFieldValue(TsCHdaAnnotationValue value, int fieldID)
        {
            if (value != null)
            {
                switch (fieldID)
                {
                case TIMESTAMP:     { return(value.Timestamp); }

                case VALUE:         { return(value.Annotation); }

                case CREATION_TIME: { return(value.CreationTime); }

                case USER:          { return(value.User); }
                }
            }

            return(null);
        }
        /// <summary>
        /// Returns the value of the specified field.
        /// </summary>
        private object GetFieldValue(TsCHdaAnnotationValue value, int fieldId)
        {
            if (value != null)
            {
                switch (fieldId)
                {
                case Timestamp:     { return(value.Timestamp); }

                case Value:         { return(value.Annotation); }

                case CreationTime: { return(value.CreationTime); }

                case User:          { return(value.User); }
                }
            }

            return(null);
        }
        /// <summary>
        /// Prompts the user to edit an item value.
        /// </summary>
        public TsCHdaAnnotationValue ShowDialog(TsCHdaAnnotationValue item)
        {
            // create a new item if none provided.
            if (item == null)
            {
                item = new TsCHdaAnnotationValue();
            }

            // initialize controls.
            annotationTb_.Text      = item.Annotation;
            timestampCtrl_.Value    = DateTime.Now;
            creationTimeCtrl_.Value = DateTime.Now;
            userTb_.Text            = item.User;

            if (timestampCtrl_.MinDate < item.Timestamp)
            {
                timestampCtrl_.Value = item.Timestamp;
            }

            if (creationTimeCtrl_.MinDate < item.CreationTime)
            {
                creationTimeCtrl_.Value = item.CreationTime;
            }

            // display dialog.
            if (ShowDialog() != DialogResult.OK)
            {
                return(null);
            }

            // update object.
            item.Annotation   = annotationTb_.Text;
            item.Timestamp    = timestampCtrl_.Value;
            item.CreationTime = creationTimeCtrl_.Value;
            item.User         = userTb_.Text;

            // return new value.
            return(item);
        }
Exemple #8
0
        /// <summary>
        /// Prompts the user to edit an item value.
        /// </summary>
        public TsCHdaAnnotationValue ShowDialog(TsCHdaAnnotationValue item)
        {
            // create a new item if none provided.
            if (item == null)
            {
                item = new TsCHdaAnnotationValue();
            }

            // initialize controls.
            AnnotationTB.Text      = item.Annotation;
            TimestampCTRL.Value    = DateTime.Now;
            CreationTimeCTRL.Value = DateTime.Now;
            UserTB.Text            = item.User;

            if (TimestampCTRL.MinDate < item.Timestamp)
            {
                TimestampCTRL.Value = item.Timestamp;
            }

            if (CreationTimeCTRL.MinDate < item.CreationTime)
            {
                CreationTimeCTRL.Value = item.CreationTime;
            }

            // display dialog.
            if (ShowDialog() != DialogResult.OK)
            {
                return(null);
            }

            // update object.
            item.Annotation   = AnnotationTB.Text;
            item.Timestamp    = TimestampCTRL.Value;
            item.CreationTime = CreationTimeCTRL.Value;
            item.User         = UserTB.Text;

            // return new value.
            return(item);
        }
        /// <summary>
        /// Adds an item to the list view.
        /// </summary>
        private void AddListItem(TsCHdaAnnotationValue value, int index)
        {
            // create list view item.
            ListViewItem listItem = new ListViewItem("", Resources.IMAGE_YELLOW_SCROLL);

            // add empty columns.
            while (listItem.SubItems.Count < ColumnNames.Length)
            {
                listItem.SubItems.Add("");
            }

            // update columns.
            UpdateListItem(listItem, value);

            // add to list view.
            if (index < 0)
            {
                ValuesLV.Items.Add(listItem);
            }
            else
            {
                ValuesLV.Items.Insert(index, listItem);
            }
        }