/// <summary>
        /// Sets the current filters for the subscription.
        /// </summary>
        /// <param name="filters">The new filters to use for the subscription.</param>
        public void SetFilters(TsCAeSubscriptionFilters filters)
        {
            lock (this)
            {
                // verify state and arguments.
                if (m_subscription == null)
                {
                    throw new NotConnectedException();
                }

                // invoke COM method.
                try
                {
                    ((IOPCEventSubscriptionMgt)m_subscription).SetFilter(
                        filters.EventTypes,
                        filters.Categories.Count,
                        filters.Categories.ToArray(),
                        filters.LowSeverity,
                        filters.HighSeverity,
                        filters.Areas.Count,
                        filters.Areas.ToArray(),
                        filters.Sources.Count,
                        filters.Sources.ToArray());
                }
                catch (Exception e)
                {
                    throw Technosoftware.DaAeHdaClient.Com.Interop.CreateException("IOPCEventSubscriptionMgt.SetFilter", e);
                }
            }
        }
        //======================================================================
        // Filter Management

        /// <summary>
        /// Returns the current filters for the subscription.
        /// </summary>
        /// <returns>The current filters for the subscription.</returns>
        public TsCAeSubscriptionFilters GetFilters()
        {
            lock (this)
            {
                // verify state and arguments.
                if (m_subscription == null)
                {
                    throw new NotConnectedException();
                }

                // initialize arguments.
                int    pdwEventType        = 0;
                int    pdwNumCategories    = 0;
                IntPtr ppdwEventCategories = IntPtr.Zero;
                int    pdwLowSeverity      = 0;
                int    pdwHighSeverity     = 0;
                int    pdwNumAreas         = 0;
                IntPtr ppszAreaList        = IntPtr.Zero;
                int    pdwNumSources       = 0;
                IntPtr ppszSourceList      = IntPtr.Zero;

                // invoke COM method.
                try
                {
                    ((IOPCEventSubscriptionMgt)m_subscription).GetFilter(
                        out pdwEventType,
                        out pdwNumCategories,
                        out ppdwEventCategories,
                        out pdwLowSeverity,
                        out pdwHighSeverity,
                        out pdwNumAreas,
                        out ppszAreaList,
                        out pdwNumSources,
                        out ppszSourceList);
                }
                catch (Exception e)
                {
                    throw Technosoftware.DaAeHdaClient.Com.Interop.CreateException("IOPCEventSubscriptionMgt.GetFilter", e);
                }

                // unmarshal results
                int[]    categoryIDs = Technosoftware.DaAeHdaClient.Com.Interop.GetInt32s(ref ppdwEventCategories, pdwNumCategories, true);
                string[] areaIDs     = Technosoftware.DaAeHdaClient.Com.Interop.GetUnicodeStrings(ref ppszAreaList, pdwNumAreas, true);
                string[] sourceIDs   = Technosoftware.DaAeHdaClient.Com.Interop.GetUnicodeStrings(ref ppszSourceList, pdwNumSources, true);

                // build results.
                TsCAeSubscriptionFilters filters = new TsCAeSubscriptionFilters();

                filters.EventTypes   = pdwEventType;
                filters.LowSeverity  = pdwLowSeverity;
                filters.HighSeverity = pdwHighSeverity;

                filters.Categories.AddRange(categoryIDs);
                filters.Areas.AddRange(areaIDs);
                filters.Sources.AddRange(sourceIDs);

                // return results.
                return(filters);
            }
        }
Exemple #3
0
        /// <summary>
        /// Copy values from control into object - throw exceptions on error.
        /// </summary>
        public object Get()
        {
            TsCAeSubscriptionFilters filters = new TsCAeSubscriptionFilters
            {
                EventTypes = 0
            };

            if (simpleEventChk_.Checked)
            {
                filters.EventTypes |= (int)TsCAeEventType.Simple;
            }
            if (trackingEventsChk_.Checked)
            {
                filters.EventTypes |= (int)TsCAeEventType.Tracking;
            }
            if (conditionEventsChk_.Checked)
            {
                filters.EventTypes |= (int)TsCAeEventType.Condition;
            }

            filters.HighSeverity = (int)highSeverityCtrl_.Value;
            filters.LowSeverity  = (int)lowSeverityCtrl_.Value;

            return(filters);
        }
Exemple #4
0
        /// <summary>
        /// Creates a new object.
        /// </summary>
        public object Create()
        {
            TsCAeSubscriptionFilters filters = new TsCAeSubscriptionFilters
            {
                EventTypes = (int)TsCAeEventType.All
            };

            return(filters);
        }
Exemple #5
0
        /// <summary>
        /// Prompts a user to create a new subscription with a modal dialog.
        /// </summary>
        public TsCAeSubscription ShowDialog(TsCAeServer server, TsCAeSubscription subscription)
        {
            if (server == null)
            {
                throw new ArgumentNullException("server");
            }

            mServer_       = server;
            mSubscription_ = subscription;

            // go to the initial stage.
            mStage_ = 0;
            ChangeStage(0);

            // initialize controls.
            stateCtrl_.SetDefaults();
            filtersCtrl_.SetDefaults();
            categoriesCtrl_.ShowCategories(mServer_);
            attributesCtrl_.ShowAttributes(mServer_);
            browseCtrl_.ShowAreas(mServer_);

            if (mSubscription_ != null)
            {
                mState_      = mSubscription_.GetState();
                mFilters_    = mSubscription_.GetFilters();
                mAttributes_ = mSubscription_.GetAttributes();
                mAreas_      = mSubscription_.Areas.ToArray();
                mSources_    = mSubscription_.Sources.ToArray();
            }
            else
            {
                mState_.Name = String.Format("Subscription{0,3:000}", ++mCount_);
            }

            // set current values.
            stateCtrl_.Set(mState_);
            filtersCtrl_.Set(mFilters_);
            categoriesCtrl_.SetSelectedCategories(mFilters_.Categories.ToArray());
            attributesCtrl_.SetSelectedAttributes(mAttributes_);
            areaSourcesListCtrl_.AddAreas(mAreas_);
            areaSourcesListCtrl_.AddSources(mSources_);

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

            // return updated/created subscription.
            return(mSubscription_);
        }
Exemple #6
0
        /// <summary>
        /// Called when the next button is clicked.
        /// </summary>
        private void NextBTN_Click(object sender, System.EventArgs e)
        {
            if (mStage_ == 0)
            {
                mState_   = (TsCAeSubscriptionState)stateCtrl_.Get();
                mFilters_ = (TsCAeSubscriptionFilters)filtersCtrl_.Get();

                mFilters_.Categories.Clear();
                mFilters_.Categories.AddRange(categoriesCtrl_.GetSelectedCategories());

                mAttributes_ = attributesCtrl_.GetSelectedAttributes();
            }

            ChangeStage(++mStage_);
        }
Exemple #7
0
        /// <summary>
        /// Copy object values into controls.
        /// </summary>
        public void Set(object value)
        {
            // check for null value.
            if (value == null)
            {
                SetDefaults(); return;
            }

            TsCAeSubscriptionFilters filters = (TsCAeSubscriptionFilters)value;

            simpleEventChk_.Checked     = (filters.EventTypes & (int)TsCAeEventType.Simple) != 0;
            trackingEventsChk_.Checked  = (filters.EventTypes & (int)TsCAeEventType.Tracking) != 0;
            conditionEventsChk_.Checked = (filters.EventTypes & (int)TsCAeEventType.Condition) != 0;
            highSeverityCtrl_.Value     = filters.HighSeverity;
            lowSeverityCtrl_.Value      = filters.LowSeverity;
        }