Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="pan"></param>
        /// <param name="mTag"></param>
        /// <param name="tagIt"></param>
        private void TagGraph(PanelControl pan, MenuTag mTag, bool tagIt)
        {
            var matchedId = -1;

            if (pan.TagList == null)
            {
                if (tagIt)
                {
                    pan.TagList    = new GraphControl[1];
                    pan.TagList[0] = new GraphControl(mTag.GraphTag, _graphPanel.GetGraphColour(mTag.GraphTag));
                }

                SetMaster(pan.ConMenu, mTag.GraphTag);
                _graphParams.MasterCallBack();
                _graphParams.GraphicsSet = true;
                return;
            }

            foreach (var t in pan.TagList)
            {
                t.Master = false;
            }

            var cnt = pan.TagList.Length;

            for (var i = 0; i < cnt; i++)
            {
                if (pan.TagList[i].Tag == mTag.GraphTag)
                {
                    matchedId = i;
                    break;
                }
            }

            if (matchedId == -1 && tagIt)
            {
                for (var i = 0; i < cnt; i++)
                {
                    pan.TagList[i].Master = false;
                }


                Array.Resize(ref pan.TagList, cnt + 1);
                pan.TagList[cnt] = new GraphControl(mTag.GraphTag, _graphPanel.GetGraphColour(mTag.GraphTag));

                SetMaster(pan.ConMenu, mTag.GraphTag);
                pan.TagList[cnt].Master = true;
                _graphParams.MasterCallBack();
            }
            else if (matchedId != -1)
            {
                pan.TagList[matchedId].Visible      = tagIt;
                pan.TagList[matchedId].CanBeVisible = tagIt;
                if (tagIt)
                {
                    SetMaster(pan.ConMenu, pan.TagList[matchedId].Tag);
                    pan.TagList[matchedId].Master = true;
                    _graphParams.MasterCallBack();
                }
                else
                {
                    var found = pan.TagList.Any(t => t.Master);
                    if (!found)
                    {
                        foreach (var t in pan.TagList.Where(t => t.Visible))
                        {
                            found = true;
                            SetMaster(pan.ConMenu, t.Tag);
                            t.Master = true;
                            _graphParams.MasterCallBack();
                            break;
                        }

                        if (!found)
                        {
                            SetMaster(pan.ConMenu, pan.TagList[0].Tag);
                            pan.TagList[0].Master = true;
                            _graphParams.MasterCallBack();
                        }

                        Params.SetGraphMasterPan(pan, mTag.GraphTag, true);
                    }
                }
            }
            _graphParams.GraphicsSet = true;
        }