/// <summary>
        /// Removes a subscription from the control.
        /// </summary>
        public void RemoveSubscription(TsCAeSubscription subscription)
        {
            State state = (State)mSubscriptions_[subscription.ClientHandle];

            if (state != null)
            {
                // unregister call backs.
                subscription.DataChangedEvent -= state.EventHandler;

                // remove subscription.
                mSubscriptions_.Remove(subscription.ClientHandle);

                // compile list of item to delete.
                ArrayList itemsToDelete = new ArrayList();

                foreach (ListViewItem item in notificationsLv_.Items)
                {
                    TsCAeEventNotification notification = (TsCAeEventNotification)item.Tag;

                    if (notification.ClientHandle.Equals(subscription.ClientHandle))
                    {
                        itemsToDelete.Add(item);
                    }
                }

                // delete items.
                foreach (ListViewItem item in itemsToDelete)
                {
                    item.Remove();
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Toggles the active/inactive state for a subscription.
        /// </summary>
        private void ActiveMI_Click(object sender, System.EventArgs e)
        {
            try
            {
                ListViewItem      item         = subscriptionsLv_.SelectedItems[0];
                TsCAeSubscription subscription = (TsCAeSubscription)item.Tag;

                TsCAeSubscriptionState state = new TsCAeSubscriptionState
                {
                    Active = !activeMi_.Checked
                };

                subscription.ModifyState((int)TsCAeStateMask.Active, state);

                // toggle checkbox.
                activeMi_.Checked = !activeMi_.Checked;

                // update list.
                Update(item);

                // receive notifications.
                if (MSubscriptionAction != null)
                {
                    MSubscriptionAction(subscription, !subscription.Active);
                }

                // adjust columns.
                AdjustColumns(subscriptionsLv_);
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }
        /// <summary>
        /// Adds a subscription to the control.
        /// </summary>
        public void AddSubscription(TsCAeSubscription subscription)
        {
            if (subscription == null)
            {
                throw new ArgumentNullException();
            }
            if (mSubscriptions_.Contains(subscription.ClientHandle))
            {
                throw new ArgumentException("Subscription exists");
            }

            // update current server.
            if (mServer_ != subscription.Server)
            {
                mServer_ = subscription.Server;
            }

            State state = new State
            {
                Subscription = subscription,
                EventHandler = new TsCAeDataChangedEventHandler(Subscription_EventChanged)
            };

            subscription.DataChangedEvent += new TsCAeDataChangedEventHandler(Subscription_EventChanged);

            mSubscriptions_.Add(subscription.ClientHandle, state);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Updates a subscription in the list.
        /// </summary>
        private void Update(ListViewItem item)
        {
            TsCAeSubscription subscription = (TsCAeSubscription)item.Tag;

            item.Text             = subscription.Name;
            item.SubItems[1].Text = (subscription.Active)?"Yes":"No";
        }
Exemplo n.º 5
0
        /// <summary>
        /// Called when the close button is clicked.
        /// </summary>
        private void DoneBTN_Click(object sender, System.EventArgs e)
        {
            try
            {
                mAreas_   = areaSourcesListCtrl_.GetAreas();
                mSources_ = areaSourcesListCtrl_.GetSources();

                // don't activate until all the filters are applied.
                bool active = mState_.Active;
                bool update = mSubscription_ != null;

                // create new subscription.
                if (mSubscription_ == null)
                {
                    mState_.Active       = false;
                    mState_.ClientHandle = Guid.NewGuid().ToString();
                    mSubscription_       = (TsCAeSubscription)mServer_.CreateSubscription(mState_);
                }

                // update existing subscription.
                else
                {
                    mSubscription_.ModifyState(((int)TsCAeStateMask.All & ~(int)TsCAeStateMask.Active), mState_);
                }

                // select filters.
                mFilters_.Areas.Clear();
                mFilters_.Areas.AddRange(mAreas_);
                mFilters_.Sources.Clear();
                mFilters_.Sources.AddRange(mSources_);

                mSubscription_.SetFilters(mFilters_);

                // select attributes.
                IDictionaryEnumerator enumerator = mAttributes_.GetEnumerator();

                while (enumerator.MoveNext())
                {
                    int categoryId = (int)enumerator.Key;
                    Technosoftware.DaAeHdaClient.Ae.TsCAeAttributeCollection attributeIDs = (Technosoftware.DaAeHdaClient.Ae.TsCAeAttributeCollection)enumerator.Value;

                    mSubscription_.SelectReturnedAttributes(categoryId, attributeIDs.ToArray());
                }

                // activate the subscription.
                if (active || update)
                {
                    mState_.Active = active;
                    mSubscription_.ModifyState((int)TsCAeStateMask.Active, mState_);
                }

                // close the dialog.
                DialogResult = DialogResult.OK;
                Close();
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Adds a subscription to the list.
        /// </summary>
        private void Add(TsCAeSubscription subscription)
        {
            ListViewItem item = new ListViewItem(subscription.Name, Resources.IMAGE_ENVELOPE);

            item.SubItems.Add((subscription.Active)?"Yes":"No");
            item.Tag = subscription;

            subscriptionsLv_.Items.Add(item);
        }
Exemplo n.º 7
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_);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Refreshes the current subscription.
        /// </summary>
        private void RefreshMI_Click(object sender, System.EventArgs e)
        {
            try
            {
                ListViewItem      item         = subscriptionsLv_.SelectedItems[0];
                TsCAeSubscription subscription = (TsCAeSubscription)item.Tag;

                subscription.Refresh();
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }
        /// <summary>
        /// Displays the event notifications.
        /// </summary>
        public void ShowDialog(TsCAeSubscription subscription, TsCAeEventNotification notification)
        {
            if (subscription == null)
            {
                throw new ArgumentNullException("subscription");
            }

            mSubscription_ = subscription;
            mNotification_ = notification;

            acknowledgeBtn_.Enabled = notification.AckRequired;

            notificationCtrl_.ShowNotification(subscription, notification);

            ShowDialog();
        }
 /// <summary>
 /// Adds or removes a subscription from the event notifications control.
 /// </summary>
 private void SubscriptionsCTRL_SubscriptionAction(TsCAeSubscription subscription, bool deleted)
 {
     try
     {
         if (deleted)
         {
             eventListCtrl_.RemoveSubscription(subscription);
         }
         else
         {
             eventListCtrl_.AddSubscription(subscription);
         }
     }
     catch (Exception exception)
     {
         MessageBox.Show(exception.Message);
     }
 }
Exemplo n.º 11
0
        /// <summary>
        /// Deletes a subscription.
        /// </summary>
        private void DeleteMI_Click(object sender, System.EventArgs e)
        {
            try
            {
                ListViewItem      item         = subscriptionsLv_.SelectedItems[0];
                TsCAeSubscription subscription = (TsCAeSubscription)item.Tag;

                // send notifications.
                if (MSubscriptionAction != null)
                {
                    MSubscriptionAction(subscription, true);
                }

                // remove from list.
                item.Remove();
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Edits the state of a subscription.
        /// </summary>
        private void EditMI_Click(object sender, System.EventArgs e)
        {
            try
            {
                ListViewItem      item         = subscriptionsLv_.SelectedItems[0];
                TsCAeSubscription subscription = (TsCAeSubscription)item.Tag;

                // show properties dialog.
                bool active = subscription.Active;

                new SubscriptionEditDlg().ShowDialog(mServer_, subscription);

                if (subscription == null)
                {
                    return;
                }

                // update list.
                Update(item);

                // send notifications.
                if (active != subscription.Active)
                {
                    if (MSubscriptionAction != null)
                    {
                        MSubscriptionAction(subscription, !subscription.Active);
                    }
                }

                // adjust columns.
                AdjustColumns(subscriptionsLv_);
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message);
            }
        }
        /// <summary>
        /// Displays the notification in the control.
        /// </summary>
        public void ShowNotification(TsCAeSubscription subscription, TsCAeEventNotification notification)
        {
            // check for null value.
            if (notification == null)
            {
                sourceTb_.Text           = "";
                timeTb_.Text             = "";
                messageTb_.Text          = "";
                eventTypeTb_.Text        = "";
                eventCategoryTb_.Text    = "";
                conditionNameTb_.Text    = "";
                subConditionNameTb_.Text = "";
                newStateTb_.Text         = "";
                ackRequiredTb_.Text      = "";
                qualityTb_.Text          = "";
                activeTimeTb_.Text       = "";
                actorTb_.Text            = "";

                attributesLv_.Items.Clear();
                return;
            }

            // find category.
            Technosoftware.DaAeHdaClient.Ae.TsCAeCategory category = null;

            try
            {
                Technosoftware.DaAeHdaClient.Ae.TsCAeCategory[] categories = subscription.Server.QueryEventCategories((int)notification.EventType);

                for (int ii = 0; ii < categories.Length; ii++)
                {
                    if (categories[ii].ID == notification.EventCategory)
                    {
                        category = categories[ii];
                        break;
                    }
                }
            }
            catch
            {
                category = null;
            }

            // find attributes.
            ArrayList attributes = new ArrayList();

            try
            {
                // get attribute descriptions.
                Technosoftware.DaAeHdaClient.Ae.TsCAeAttribute[] descriptions = subscription.Server.QueryEventAttributes(notification.EventCategory);

                // get selected attributes.
                int[] attributeIDs = null;

                if (subscription.Attributes.Contains(notification.EventCategory))
                {
                    attributeIDs = subscription.Attributes[notification.EventCategory].ToArray();
                }

                // find decriptions for selected attributes.
                if (attributeIDs != null)
                {
                    for (int ii = 0; ii < attributeIDs.Length; ii++)
                    {
                        for (int jj = 0; jj < descriptions.Length; jj++)
                        {
                            if (descriptions[jj].ID == attributeIDs[ii])
                            {
                                attributes.Add(descriptions[jj]);
                                break;
                            }
                        }
                    }
                }
            }
            catch
            {
                // ignore errors.
            }

            sourceTb_.Text           = notification.SourceID;
            timeTb_.Text             = Technosoftware.DaAeHdaClient.OpcConvert.ToString(notification.Time);
            messageTb_.Text          = notification.Message;
            eventTypeTb_.Text        = Technosoftware.DaAeHdaClient.OpcConvert.ToString(notification.EventType);
            eventCategoryTb_.Text    = (category != null)?category.Name:"";
            conditionNameTb_.Text    = notification.ConditionName;
            subConditionNameTb_.Text = notification.SubConditionName;
            newStateTb_.Text         = "";
            ackRequiredTb_.Text      = Technosoftware.DaAeHdaClient.OpcConvert.ToString(notification.AckRequired);
            qualityTb_.Text          = Technosoftware.DaAeHdaClient.OpcConvert.ToString(notification.Quality);
            activeTimeTb_.Text       = Technosoftware.DaAeHdaClient.OpcConvert.ToString(notification.ActiveTime);
            actorTb_.Text            = notification.ActorID;

            // convert state to a string.
            if ((notification.NewState & (int)TsCAeConditionState.Active) != 0)
            {
                newStateTb_.Text += TsCAeConditionState.Active.ToString();
            }

            if ((notification.NewState & (int)TsCAeConditionState.Enabled) != 0)
            {
                if (newStateTb_.Text != "")
                {
                    newStateTb_.Text += " AND ";
                }
                newStateTb_.Text += TsCAeConditionState.Enabled.ToString();
            }

            if ((notification.NewState & (int)TsCAeConditionState.Acknowledged) != 0)
            {
                if (newStateTb_.Text != "")
                {
                    newStateTb_.Text += " AND ";
                }
                newStateTb_.Text += TsCAeConditionState.Acknowledged.ToString();
            }

            // fill attributes list.
            attributesLv_.Items.Clear();

            for (int ii = 0; ii < notification.Attributes.Count; ii++)
            {
                Technosoftware.DaAeHdaClient.Ae.TsCAeAttribute attribute = (ii < attributes.Count)?(Technosoftware.DaAeHdaClient.Ae.TsCAeAttribute)attributes[ii]:null;

                ListViewItem item = new ListViewItem((attribute != null)?attribute.Name:"Unknown");

                item.SubItems.Add(Technosoftware.DaAeHdaClient.OpcConvert.ToString(notification.Attributes[ii]));

                attributesLv_.Items.Add(item);
            }

            AdjustColumns(attributesLv_);
        }