void EndEdit()
        {
            if (!List.ContainsKey(m_TextBox.Text))
            {
                FolderInfo info = new FolderInfo(m_TextBox.Text, m_TextBox.Text, true);
                List.Add(info.Name, info);
                FolderItemControl itemControl = new FolderItemControl(info);
                m_ComboBox.Combo.Items.Add(itemControl);
                m_ComboBox.Combo.SelectedItem = itemControl;
            }
            m_ComboBox.Visibility = Visibility.Visible;
            m_TextBox.Visibility = Visibility.Collapsed;
            m_ComboBox.Focus();

            Raise_EditEnd();
        }
        public void Initialize(CubeDefInfo cubeInfo)
        {
            Groups.Clear();
            Groups.Add(RootGroup.Name, RootGroup); 

            if (cubeInfo != null)
            {
                // Создаем описатели групп мер
                foreach (MeasureGroupInfo groupInfo in cubeInfo.MeasureGroups)
                {
                    if (!Groups.ContainsKey(groupInfo.Name))
                    {
                        Groups.Add(groupInfo.Name, new GroupInfo(groupInfo.Name, groupInfo.Caption));
                    }
                }

                foreach (MeasureInfo measureInfo in cubeInfo.Measures)
                {
                    String groupName = measureInfo.MeasureGroup;

                    // Если папка указана, то добавлем в иерархию (если она не привязана к группе, то она попадает в корневую коллекцию папкок)
                    // DisplayFolder может содержать иерархию папок, разделенную "\\"
                    if (!String.IsNullOrEmpty(measureInfo.DisplayFolder))
                    {
                        // Определяем группу, в которую входит данная папка (группы может и не быть)
                        GroupInfo groupInfo = null;
                        if (!String.IsNullOrEmpty(groupName) && Groups.ContainsKey(groupName))
                        {
                            groupInfo = Groups[groupName];
                        }

                        // Разбиваем полный путь на составляющие и создаем папку для каждой из них
                        String[] folders_names = measureInfo.DisplayFolder.Split(new String[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);
                        if (folders_names != null)
                        {
                            String folderName = String.Empty;
                            FolderInfo prev_folderInfo = null;
                            foreach (String folderCaption in folders_names)
                            {
                                // Создаем узел для группы
                                if (!String.IsNullOrEmpty(folderCaption))
                                {
                                    // Получаем имя папки для данного уровня
                                    if (!String.IsNullOrEmpty(folderName))
                                    {
                                        folderName += "\\";
                                    }
                                    folderName += folderCaption;

                                    // Пытаемся найти папку с данным именем. Если она не найдена, то создаем ее
                                    FolderInfo folderInfo = GetFolder(groupInfo != null ? groupInfo.Name : String.Empty, folderName);
                                    if (folderInfo == null)
                                    {
                                        // Создаем данную папку
                                        folderInfo = new FolderInfo(folderName, folderCaption);

                                        // Если предыдущая папка в иерархии известна, то добавляем в нее
                                        if (prev_folderInfo != null)
                                        {
                                            prev_folderInfo.Folders.Add(folderName, folderInfo);
                                        }
                                        else
                                        {
                                            // Если группа известна то добавляем в группу в коллекцию корневых, иначе просто в коллекцию корневых папок
                                            if (groupInfo != null)
                                                groupInfo.Folders.Add(folderName, folderInfo);
                                            else
                                                RootGroup.Folders.Add(folderName, folderInfo);
                                        }
                                    }

                                    prev_folderInfo = folderInfo;
                                }
                            }
                        }
                    }
                }
            }
        }
Example #3
0
        public void Initialize(CubeDefInfo cubeInfo)
        {
            Groups.Clear();
            Groups.Add(RootGroup.Name, RootGroup);

            if (cubeInfo != null)
            {
                // Создаем описатели групп мер
                foreach (MeasureGroupInfo groupInfo in cubeInfo.MeasureGroups)
                {
                    if (!Groups.ContainsKey(groupInfo.Name))
                    {
                        Groups.Add(groupInfo.Name, new GroupInfo(groupInfo.Name, groupInfo.Caption));
                    }
                }

                foreach (MeasureInfo measureInfo in cubeInfo.Measures)
                {
                    String groupName = measureInfo.MeasureGroup;

                    // Если папка указана, то добавлем в иерархию (если она не привязана к группе, то она попадает в корневую коллекцию папкок)
                    // DisplayFolder может содержать иерархию папок, разделенную "\\"
                    if (!String.IsNullOrEmpty(measureInfo.DisplayFolder))
                    {
                        // Определяем группу, в которую входит данная папка (группы может и не быть)
                        GroupInfo groupInfo = null;
                        if (!String.IsNullOrEmpty(groupName) && Groups.ContainsKey(groupName))
                        {
                            groupInfo = Groups[groupName];
                        }

                        // Разбиваем полный путь на составляющие и создаем папку для каждой из них
                        String[] folders_names = measureInfo.DisplayFolder.Split(new String[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);
                        if (folders_names != null)
                        {
                            String     folderName      = String.Empty;
                            FolderInfo prev_folderInfo = null;
                            foreach (String folderCaption in folders_names)
                            {
                                // Создаем узел для группы
                                if (!String.IsNullOrEmpty(folderCaption))
                                {
                                    // Получаем имя папки для данного уровня
                                    if (!String.IsNullOrEmpty(folderName))
                                    {
                                        folderName += "\\";
                                    }
                                    folderName += folderCaption;

                                    // Пытаемся найти папку с данным именем. Если она не найдена, то создаем ее
                                    FolderInfo folderInfo = GetFolder(groupInfo != null ? groupInfo.Name : String.Empty, folderName);
                                    if (folderInfo == null)
                                    {
                                        // Создаем данную папку
                                        folderInfo = new FolderInfo(folderName, folderCaption);

                                        // Если предыдущая папка в иерархии известна, то добавляем в нее
                                        if (prev_folderInfo != null)
                                        {
                                            prev_folderInfo.Folders.Add(folderName, folderInfo);
                                        }
                                        else
                                        {
                                            // Если группа известна то добавляем в группу в коллекцию корневых, иначе просто в коллекцию корневых папок
                                            if (groupInfo != null)
                                            {
                                                groupInfo.Folders.Add(folderName, folderInfo);
                                            }
                                            else
                                            {
                                                RootGroup.Folders.Add(folderName, folderInfo);
                                            }
                                        }
                                    }

                                    prev_folderInfo = folderInfo;
                                }
                            }
                        }
                    }
                }
            }
        }