Пример #1
0
        /// <summary>
        /// Установка Tags для выделеного коннектора и других видимых на диаграмме линков того же типа
        /// </summary>
        /// <returns></returns>
        public ExecResult <Boolean> SetSimilarLinksTags(string location)
        {
            ExecResult <Boolean> result = new ExecResult <bool>();

            try
            {
                // Сначала получаем список выделеннеых библиотечных элементов
                EA.Connector selectedConnector = EAHelper.GetSelectedLibConnector_Diagram();

                if (selectedConnector == null)
                {
                    throw new Exception("Не выделены библиотечные элементы");
                }

                // Создаём список коннекторов и добавляем к нему выделенный
                List <EA.Connector> connectorList = new List <EA.Connector>();

                // Ищем на диаграмме другие линки такого же типа
                foreach (EA.DiagramLink curDL in CurrentDiagram.DiagramLinks)
                {
                    EA.Connector curConnector = EARepository.GetConnectorByID(curDL.ConnectorID);
                    if (!curDL.IsHidden && curConnector.Type == selectedConnector.Type)
                    {
                        connectorList.Add(curConnector);
                    }
                }


                // Конструируем данные тэгов для формы
                List <TagData> curTagDataList = new List <TagData>();

                foreach (EA.Connector connector in connectorList)
                {
                    foreach (EA.ConnectorTag taggedValue in selectedConnector.TaggedValues)
                    {
                        string tagName = taggedValue.Name;

                        TagData curTagData;
                        curTagData = curTagDataList.FirstOrDefault(item => (item.TagName == tagName));
                        if (curTagData == null)
                        {
                            curTagData = new TagData()
                            {
                                TagName = tagName, TagValue = taggedValue.Value
                            };
                            curTagDataList.Add(curTagData);
                        }
                        curTagData.TagState = true;
                        curTagData.Ex       = false;
                        curTagData.Count++;
                    }
                }

                // Открываем форму для установки Tags
                ExecResult <List <TagData> > setTagsResult = new FSetTags().Execute(curTagDataList);
                if (setTagsResult.code != 0)
                {
                    return(result);
                }

                // Прописываем в элементах что наустанавливали на форме
                foreach (EA.Connector connector in connectorList)
                {
                    foreach (TagData curTagData in setTagsResult.value)
                    {
                        if (curTagData.Enabled) // записываем только для Tags, в котоорые разрешено
                        {
                            if (curTagData.TagState == false)
                            {
                                EATVHelper.TaggedValueRemove(connector, curTagData.TagName);
                            }
                            else
                            {
                                EATVHelper.TaggedValueSet(connector, curTagData.TagName, curTagData.TagValue);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                result.setException(ex);
            }

            return(result);
        }
Пример #2
0
        /// <summary>
        /// Установка Tags для выделенных элементов
        /// </summary>
        /// <returns></returns>
        public ExecResult <Boolean> SetElementTags(string location)
        {
            ExecResult <Boolean> result = new ExecResult <bool>();

            try
            {
                // Сначала получаем список выделеннеых библиотечных элементов
                List <EA.Element> selectedLibElements = new List <EA.Element>();

                switch (location)
                {
                case "TreeView":
                    selectedLibElements = EAHelper.GetSelectedLibElement_Tree();
                    break;

                case "Diagram":
                    if (!Context.CheckCurrentDiagram())
                    {
                        throw new Exception("Не установлена или не открыта текущая диаграмма");
                    }

                    selectedLibElements = EAHelper.GetSelectedLibElement_Diagram();
                    break;

                case "MainMenu":
                    if (CurrentDiagram != null)
                    {
                        if (Context.CheckCurrentDiagram())
                        {
                            selectedLibElements = EAHelper.GetSelectedLibElement_Diagram();
                        }
                        else
                        {
                            selectedLibElements = EAHelper.GetSelectedLibElement_Tree();
                        }
                    }
                    else
                    {
                        selectedLibElements = EAHelper.GetSelectedLibElement_Tree();
                    }
                    break;
                }

                if (selectedLibElements.Count == 0) // если не выделены элементы  - пытаемся найти выделенные коннекторы
                {
                    if (location == "Diagram" || location == "MainMenu")
                    {
                        EA.Connector selectedConnector = EAHelper.GetSelectedLibConnector_Diagram();
                        if (selectedConnector != null)
                        {
                            return(Context.LinkDesigner.SetConnectorTags(location));
                        }
                    }
                    else
                    {
                        throw new Exception("Не выделены библиотечные элементы");
                    }
                }


                // Конструируем данные тэгов для формы
                List <TagData> curTagDataList = new List <TagData>();
                foreach (EA.Element curElement in selectedLibElements)
                {
                    foreach (EA.TaggedValue taggedValue in curElement.TaggedValuesEx)
                    {
                        string tagName = taggedValue.Name;

                        TagData curTagData;
                        curTagData = curTagDataList.FirstOrDefault(item => (item.TagName == tagName));
                        if (curTagData == null)
                        {
                            curTagData = new TagData()
                            {
                                TagName = tagName, TagValue = taggedValue.Value
                            };
                            curTagDataList.Add(curTagData);
                        }
                        curTagData.TagState = true;
                        curTagData.Count++;
                        if (taggedValue.ElementID != curElement.ElementID)
                        {
                            curTagData.Ex = true;
                        }
                    }
                }
                // Открываем форму для установки Tags
                ExecResult <List <TagData> > setTagsResult = new FSetTags().Execute(curTagDataList);
                if (setTagsResult.code != 0)
                {
                    return(result);
                }

                // Прописываем в элементах что наустанавливали на форме
                foreach (EA.Element curElement in selectedLibElements)
                {
                    foreach (TagData curTagData in setTagsResult.value)
                    {
                        if (curTagData.Enabled) // записываем только для Tags, в котоорые разрешено
                        {
                            if (curTagData.TagState == false)
                            {
                                EATVHelper.TaggedValueRemove(curElement, curTagData.TagName);
                            }
                            else
                            {
                                EATVHelper.TaggedValueSet(curElement, curTagData.TagName, curTagData.TagValue);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                result.setException(ex);
            }

            return(result);
        }
Пример #3
0
        /// <summary>
        /// Установка Tags для выделенного коннектора
        /// </summary>
        /// <returns></returns>
        public ExecResult <Boolean> SetConnectorTags(string location)
        {
            if (!Context.CheckCurrentDiagram())
            {
                throw new Exception("Не установлена или не открыта текущая диаграмма");
            }


            ExecResult <Boolean> result = new ExecResult <bool>();

            try
            {
                // Сначала получаем список выделеннеых библиотечных элементов
                EA.Connector selectedConnector = EAHelper.GetSelectedLibConnector_Diagram(false);

                if (selectedConnector == null)
                {
                    throw new Exception("Не выделены библиотечные элементы");
                }


                // Конструируем данные тэгов для формы
                List <TagData> curTagDataList = new List <TagData>();

                foreach (EA.ConnectorTag taggedValue in selectedConnector.TaggedValues)
                {
                    string tagName = taggedValue.Name;

                    TagData curTagData = new TagData()
                    {
                        TagName = tagName, TagValue = taggedValue.Value
                    };
                    curTagData.TagState = true;
                    curTagData.Ex       = false;
                    curTagData.Count    = 1;
                    curTagDataList.Add(curTagData);
                }

                // Открываем форму для установки Tags
                ExecResult <List <TagData> > setTagsResult = new FSetTags().Execute(curTagDataList);
                if (setTagsResult.code != 0)
                {
                    return(result);
                }

                // Прописываем в элементах что наустанавливали на форме
                foreach (TagData curTagData in setTagsResult.value)
                {
                    if (curTagData.Enabled) // записываем только для Tags, в котоорые разрешено
                    {
                        if (curTagData.TagState == false)
                        {
                            EATVHelper.TaggedValueRemove(selectedConnector, curTagData.TagName);
                        }
                        else
                        {
                            EATVHelper.TaggedValueSet(selectedConnector, curTagData.TagName, curTagData.TagValue);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                result.setException(ex);
            }

            return(result);
        }