예제 #1
0
파일: YtTreeModel.cs 프로젝트: virl/yttrium
        /// <summary>
        /// Загрузка содержимого дерева из Xml файла
        /// </summary>
        /// <param name="filePath">Путь к файлу</param>
        /// <returns>Загруженная модель</returns>
        public void LoadFromFile(string filePath)
        {
            Nodes.Clear();

            GroupNode rootGroup = new GroupNode(Properties.Resources.allComputersGroupName);

            LoadNodesFromFile(filePath, rootGroup);

            Nodes.Add(rootGroup);
        }
예제 #2
0
파일: MainForm.cs 프로젝트: virl/yttrium
        private void LoadDefaultTree()
        {
            bool defaultLoaded = false; //Загружено ли дерево

            //Пытаемся загрузить дерево из директории с исполняемым файлом
            string defaultTreePath = Path.GetDirectoryName(Application.ExecutablePath) + Path.DirectorySeparatorChar + "default.yttree";
            if (File.Exists(defaultTreePath))
            {
                try
                {
                    _treeModel = new YtTreeModel();
                    _treeModel.LoadFromFile(defaultTreePath);
                    mainTreeView.Model = _treeModel;
                    mainTreeView.ExpandAll();
                    defaultLoaded = true;
                    _loadedTreePath = defaultTreePath;
                }
                catch (FormatException)
                {
                }
            }

            //Пытаемся загрузить дерево из директории пользователя
            defaultTreePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
                                Path.DirectorySeparatorChar + "Glint" +
                                Path.DirectorySeparatorChar + "Yttrium" +
                                Path.DirectorySeparatorChar + "ytgui" +
                                Path.DirectorySeparatorChar + "default.yttree";

            if (File.Exists(defaultTreePath))
            {
                try
                {
                    _treeModel = new YtTreeModel();
                    _treeModel.LoadFromFile(defaultTreePath);
                    mainTreeView.Model = _treeModel;
                    mainTreeView.ExpandAll();
                    defaultLoaded = true;
                    _loadedTreePath = defaultTreePath;
                }
                catch (FormatException)
                {
                }
            }

            if (!defaultLoaded)
            {
                _treeModel = new YtTreeModel();

                mainTreeView.Model = _treeModel;

                // Создаем группу "Все компьютеры".
                GroupNode allCompsNode =
                    new GroupNode(
                        Properties.Resources.allComputersGroupName
                        );

                _treeModel.Nodes.Add(allCompsNode);

                mainTreeView.ExpandAll();
            }
        }
예제 #3
0
파일: MainForm.cs 프로젝트: virl/yttrium
        private void createGroupHandler(object sender, EventArgs e)
        {
            TreeNodeAdv selectedNode = mainTreeView.SelectedNode;

            if (selectedNode == null)
                return;

            if (!(selectedNode.Tag is IGroup))
            {
                if(selectedNode.Tag is IComputer)
                {
                    selectedNode = selectedNode.Parent;
                }
                else
                {
                    return;
                }
            }

            AddGroupForm groupForm = new AddGroupForm();
            DialogResult result = groupForm.ShowDialog();

            if (result == DialogResult.OK)
            {
                GroupNode groupNode =
                    new GroupNode(groupForm.groupNameTextBox.Text);

                (selectedNode.Tag as Node).Nodes.Add(groupNode);

                selectedNode.IsExpanded = true;
            }
        }
예제 #4
0
파일: YtTreeModel.cs 프로젝트: virl/yttrium
        /// <summary>
        /// Создание узла дерева из узла xml документа
        /// </summary>
        /// <param name="xmlNode">Узел xml документа</param>
        /// <returns>Созданный узел дерева</returns>
        protected static Aga.Controls.Tree.Node CreateNodeFromXml(XmlNode xmlNode)
        {
            if (xmlNode.Name.Equals("group"))
            {
                GroupNode groupNode = new GroupNode(xmlNode.Attributes["name"].Value);

                foreach (XmlNode subNode in xmlNode.ChildNodes)
                {
                    groupNode.Nodes.Add(CreateNodeFromXml(subNode));
                }

                return groupNode;
            }

            if (xmlNode.Name.Equals("computer"))
            {
                ComputerNode computerNode = new ComputerNode(xmlNode.Attributes["host"].Value);
                XmlAttribute password = (XmlAttribute)xmlNode.Attributes.GetNamedItem("password");
                if (password != null)
                {
                    computerNode.Password = password.Value;
                }

                return computerNode;
            }

            throw new FormatException("Invalid node type");
        }