Exemple #1
0
        // <!--------------------------------- Сохранение - Конец ----------------------------->

        // <!--------------------------------- Загрузка - Начало ----------------------------->
        public void LoadProcess(SaveProcess process, DrawArea area)
        {
            // Создаём начальный и конечный блоки
            StartBlockWPF startBlock = new StartBlockWPF(process.StartElement);
            EndBlockWPF   endBlock   = new EndBlockWPF(process.EndElement);

            // Кидаем их на поле
            area.Children.Add(startBlock);
            area.Children.Add(endBlock);

            // Помечаем, что они уже есть
            area.IsHaveStartEnd = true;

            // Тут лежат уже обработанные блоки
            Dictionary <Guid, ProcedureWPF> worksavelistproc = new Dictionary <Guid, ProcedureWPF>();
            Dictionary <Guid, ResourceWPF>  worksavelistres  = new Dictionary <Guid, ResourceWPF>();

            // Проходим по сохранённым процедурам
            foreach (var proc in process.ProcedureList)
            {
                area.Children.Add(LoadProcedureBlock(proc, worksavelistproc));
            }

            // Проходим по всем ресурсам
            foreach (var res in process.ResourceList)
            {
                area.Children.Add(LoadResourceBlock(res, worksavelistres));
            }

            // Проходим по всем связям с процедурами
            foreach (SaveProcedureConnection connectproc in process.ProcedureConnectonList)
            {
                area.Children.Add(LoadProcConnection(connectproc, worksavelistproc, startBlock, endBlock));
            }

            // Проходим по всем связям с ресурсами
            foreach (SaveResourceConnection connectres in process.ResourceConnectionList)
            {
                area.Children.Add(LoadResConnection(connectres, worksavelistproc, worksavelistres));
            }
        }
Exemple #2
0
        // Загрузка связи с процедурами
        private ProcConnectionWPF LoadProcConnection(SaveProcedureConnection connectproc, Dictionary <Guid, ProcedureWPF> worksavelistproc, StartBlockWPF startBlock, EndBlockWPF endBlock)
        {
            ProcedureWPF procStart = null;
            ProcedureWPF procEnd   = null;

            if (connectproc.StartID.CompareTo(new Guid()) != 0)
            {
                procStart = worksavelistproc[connectproc.StartID];
            }

            if (connectproc.EndID.CompareTo(new Guid()) != 0)
            {
                procEnd = worksavelistproc[connectproc.EndID];
            }

            ProcConnectionWPF connection = null;

            if (procStart != null && procEnd != null)
            {
                connection = new ProcConnectionWPF(procStart, procEnd, connectproc.RelativeStartPosition, connectproc.RelativeEndPosition, connectproc.StartPort, connectproc.EndPort);

                procStart.AddOutPutConnection(connection);
                procEnd.AddInPutConnection(connection);
            }
            else
            {
                if (procStart == null)
                {
                    connection = new ProcConnectionWPF(startBlock, procEnd, connectproc.RelativeStartPosition, connectproc.RelativeEndPosition, connectproc.StartPort, connectproc.EndPort);
                    procEnd.AddInPutConnection(connection);
                    startBlock.AddOutPutConnection(connection);
                }

                if (procEnd == null)
                {
                    connection = new ProcConnectionWPF(procStart, endBlock, connectproc.RelativeStartPosition, connectproc.RelativeEndPosition, connectproc.StartPort, connectproc.EndPort);
                    procStart.AddOutPutConnection(connection);
                    endBlock.AddInPutConnection(connection);
                }
            }

            return(connection);
        }