Exemplo n.º 1
0
        /// <summary>
        /// Заполнение дерева объектов операциями.
        /// </summary>
        /// <param name="modes">Операции</param>
        /// <param name="parentNode">Родительский узел</param>
        /// <param name="checkedMode">Выбранный режим</param>
        /// <param name="techObject">Технологический объект</param>
        /// <param name="techObjNum">Номер объекта</param>
        /// <param name="modeNum">Номер операции</param>
        private void FillTreeObjectsModes(List <TechObject.Mode> modes,
                                          Node parentNode, Editor.ITreeViewItem checkedMode,
                                          TechObject.TechObject techObject, ref int techObjNum,
                                          ref int modeNum)
        {
            var restriction = checkedMode as TechObject.Restriction;

            foreach (var mode in modes)
            {
                modeNum = mode.GetModeNumber();
                var childNode = new Node(mode.DisplayText[0]);
                childNode.Tag = mode;
                parentNode.Nodes.Add(childNode);

                if (checkedMode != null)
                {
                    var restrictionManager = checkedMode.Parent;
                    var selectedMode       = restrictionManager.Parent as
                                             TechObject.Mode;
                    var modeManager        = selectedMode.Parent;
                    var selectedTechObject = modeManager.Parent as
                                             TechObject.TechObject;
                    bool notSameObjects =
                        techObject.DisplayText[0] == selectedTechObject
                        .DisplayText[0] && mode.Name == selectedMode.Name;
                    if (notSameObjects)
                    {
                        childNode.IsHidden = true;
                    }
                }

                if (checkedMode != null &&
                    restriction.RestrictDictionary != null &&
                    restriction.RestrictDictionary.ContainsKey(techObjNum) &&
                    restriction.RestrictDictionary[techObjNum]
                    .Contains(modeNum))
                {
                    childNode.CheckState = CheckState.Checked;
                }
                else
                {
                    childNode.CheckState = CheckState.Unchecked;
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Заполнение дерева с операциями для настройки ограничений
        /// </summary>
        /// <param name="treeItems"></param>
        /// <param name="root"></param>
        /// <param name="mainTechObject"></param>
        /// <param name="showOneNode"></param>
        /// <param name="techObjNum"></param>
        /// <param name="modeNum"></param>
        /// <param name="checkedMode"></param>
        private void FillTreeObjects(Editor.ITreeViewItem[] treeItems,
                                     Node root, TechObject.TechObject mainTechObject,
                                     bool showOneNode, ref int techObjNum, ref int modeNum,
                                     Editor.ITreeViewItem checkedMode)
        {
            bool notShowAllOperations = checkedMode != null;
            bool notAllowedTypes      = !(checkedMode is TechObject.Restriction ||
                                          checkedMode is TechObject.TechObject.AttachedToObjects) ||
                                        checkedMode.IsEditable == false;

            if (notAllowedTypes && notShowAllOperations)
            {
                ShowNoModes();
                return;
            }

            foreach (var treeItem in treeItems)
            {
                var parentNode = new Node(treeItem.DisplayText[0]);
                parentNode.Tag = treeItem;
                root.Nodes.Add(parentNode);

                if (treeItem is TechObject.TechObject techObject)
                {
                    techObjNum = TechObject.TechObjectManager.GetInstance()
                                 .GetTechObjectN(techObject);
                    List <TechObject.Mode> modes = techObject.ModesManager
                                                   .Modes;

                    if (checkedMode is TechObject.Restriction)
                    {
                        FillTreeObjectsModes(modes, parentNode, checkedMode,
                                             techObject, ref techObjNum, ref modeNum);
                    }

                    SetUpTechObjectNodeVisibility(showOneNode, parentNode,
                                                  techObject, mainTechObject);
                }
                else
                {
                    FillTreeObjects(treeItem.Items, parentNode, mainTechObject,
                                    showOneNode, ref techObjNum, ref modeNum, checkedMode);
                }
            }
        }
Exemplo n.º 3
0
 /// <summary>
 /// Настройка видимости узла в дереве для тех. объектов и операций
 /// </summary>
 /// <param name="showOneNode">Флаг, указывающий скрывать ли узлы,
 /// которые не равны выделенному объекту</param>
 /// <param name="parentNode">Родительский узел</param>
 /// <param name="techObject">Технологический объект</param>
 /// <param name="mainTechObject">Выбранный технологический объект
 /// </param>
 private void SetUpTechObjectNodeVisibility(bool showOneNode,
                                            Node parentNode, TechObject.TechObject techObject,
                                            TechObject.TechObject mainTechObject)
 {
     if (showOneNode == true)
     {
         if (techObject != mainTechObject)
         {
             SetUpHiddenProperty(parentNode);
         }
     }
     else
     {
         if (techObject == mainTechObject)
         {
             SetUpHiddenProperty(parentNode);
         }
     }
 }
Exemplo n.º 4
0
        /// <summary>
        /// Обновление дерева на основе текущих устройств проекта.
        /// </summary>
        ///
        /// <param name="techManager">Менеджер техустройств проекта.</param>
        /// <param name="checkedMode">Выбранные операиции.</param>
        private void Refresh(TechObject.TechObjectManager techManager,
                             ITreeViewItem checkedMode, bool showOneNode, ITreeViewItem item)
        {
            modesTreeViewAdv.BeginUpdate();

            modesTreeViewAdv.Model = null;
            modesTreeViewAdv.Refresh();
            TreeModel treeModel = new TreeModel();

            Node root = new Node(techManager.DisplayText[0]);

            root.Tag = techManager.GetType().FullName;
            treeModel.Nodes.Add(root);

            int toNum   = 0;
            int modeNum = 0;

            TechObject.TechObject mainTO = item as TechObject.TechObject;
            var restriction = checkedMode as TechObject.Restriction;

            //Заполняем узлы дерева устройствами.
            foreach (TechObject.TechObject to in techManager.Objects)
            {
                toNum++;

                Node parentNode = new Node(to.DisplayText[0]);
                parentNode.Tag = to.GetType().FullName;
                root.Nodes.Add(parentNode);

                List <TechObject.Mode> modes = to.ModesManager.Modes;

                foreach (TechObject.Mode mode in modes)
                {
                    modeNum++;

                    Node childNode = new Node(mode.DisplayText[0]);
                    childNode.Tag = mode.GetType().FullName;
                    parentNode.Nodes.Add(childNode);

                    if (restriction != null)
                    {
                        var restrictionManager = restriction.Parent;
                        var selectedMode       = restrictionManager.Parent as
                                                 TechObject.Mode;
                        var modeManager = selectedMode.Parent;
                        var selectedTO  = modeManager.Parent as
                                          TechObject.TechObject;
                        if (to.DisplayText[0] == selectedTO.DisplayText[0] &&
                            mode.Name == selectedMode.Name)
                        {
                            childNode.IsHidden = true;
                        }
                    }

                    string checkedStr;
                    if (checkedMode != null)
                    {
                        checkedStr = checkedMode.EditText[1];
                        if (restriction != null)
                        {
                            if (restriction.RestrictDictionary != null)
                            {
                                if (restriction.RestrictDictionary
                                    .ContainsKey(toNum))
                                {
                                    if (restriction.RestrictDictionary[toNum]
                                        .Contains(modeNum))
                                    {
                                        childNode.CheckState = CheckState
                                                               .Checked;
                                    }
                                    else
                                    {
                                        childNode.CheckState = CheckState
                                                               .Unchecked;
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        checkedStr           = "";
                        childNode.CheckState = CheckState.Unchecked;
                    }
                }

                if (showOneNode == true)
                {
                    if (to != mainTO)
                    {
                        parentNode.IsHidden = true;
                        foreach (Node child in parentNode.Nodes)
                        {
                            child.IsHidden = true;
                        }
                    }
                }
                else
                {
                    if (to == mainTO)
                    {
                        parentNode.IsHidden = true;
                        foreach (Node child in parentNode.Nodes)
                        {
                            child.IsHidden = true;
                        }
                    }
                }
            }

            modesTreeViewAdv.Model = treeModel;
            //Обновляем названия строк (добавляем количество объектов).

            List <TreeNodeAdv> nodes    = modesTreeViewAdv.AllNodes.ToList();
            TreeNodeAdv        treeNode = nodes[0];

            OnHideOperationTree.Execute(treeNode);

            modesTreeViewAdv.ExpandAll();
            modesTreeViewAdv.Refresh();
            modesTreeViewAdv.EndUpdate();
        }