Пример #1
0
        private void ImportFoldersInDirectory(TreeNode node, XmlNode directoryNode, string[] folders)
        {
            if (directoryNode.Name == "Directory")
            {
                bool mustExpand = (node.Nodes.Count == 0);

                CurrentTreeView.SuspendLayout();

                WixFiles.UndoManager.BeginNewCommandRange();
                try
                {
                    DirectoryImport dirImport = new DirectoryImport(WixFiles, folders, directoryNode);
                    dirImport.Import(node);
                }
                catch (WixEditException ex)
                {
                    MessageBox.Show(String.Format("Failed to complete import: {0}\r\n\r\nThe import is aborted and could be partially completed.", ex.Message), "Import Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                catch (Exception ex)
                {
                    ErrorReportHandler r = new ErrorReportHandler(ex, this.TopLevelControl, "An exception occured during the import! Please press OK to report this error to the WixEdit website, so this error can be fixed.");
                    r.ReportInSeparateThread();
                }

                CurrentTreeView.ResumeLayout();
            }
        }
Пример #2
0
        /// <summary>
        /// 当用户在TreeView上右击鼠标时,设置当前选中的节点
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void treeView1_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e)
        {
            IInputElement     currentElement = CurrentTreeView.InputHitTest(e.GetPosition(CurrentTreeView));
            TreeViewIconsItem node           = GetNodeUnderMouseCursor(currentElement as DependencyObject);

            if (node != null)
            {
                node.IsSelected = true;
            }
            else
            {
                e.Handled = true;
            }
        }
Пример #3
0
        /// <summary>
        /// 用于代表当前节点移动的类型
        /// </summary>
        // private NodeMoveType curNodeMove=NodeMoveType.NodeNotMove ;

        public void OnNodeMove(NodeMoveType moveType)
        {
            // curNodeMove = moveType;

            if (CurrentTreeView.IsInEditMode)
            {
                CurrentTreeView.SelectedItem.EndEdit();
            }
            TreeViewIconsItem selectedNode = CurrentTreeView.SelectedItem;

            //还原默认节点图标
            ChangeNodeIcon(CurrentTreeView.SelectedItem, CurrentTreeView.SelectedItem.NodeData.DataItem.NormalIcon);
            switch (moveType)
            {
            case NodeMoveType.NodeMoveUp:
                CurrentTreeView.MoveUp(selectedNode);

                break;

            case NodeMoveType.NodeMoveDown:
                CurrentTreeView.MoveDown(selectedNode);
                break;

            case NodeMoveType.NodeMoveLeft:
                CurrentTreeView.MoveLeft(selectedNode);
                break;

            case NodeMoveType.NodeMoveRight:
                CurrentTreeView.MoveRight(selectedNode);
                break;

            case NodeMoveType.NodePaste:
                //todo:paste!
                break;

            default:
                break;
            }
            SaveTreeToDB();
            //更新节点图标
            ChangeNodeIcon(CurrentTreeView.SelectedItem, CurrentTreeView.SelectedItem.NodeData.DataItem.SelectedIcon);

            //SaveTreeToFile();
        }
Пример #4
0
        private void treeView_DragDrop(object sender, DragEventArgs e)
        {
            TreeNode aNode = CurrentTreeView.GetNodeAt(CurrentTreeView.PointToClient(new Point(e.X, e.Y)));

            CurrentTreeView.SelectedNode = aNode;

            XmlNode aNodeElement = aNode.Tag as XmlNode;

            if (oldNode != null)
            {
                oldNode.BackColor = aNode.BackColor;
                oldNode.ForeColor = aNode.ForeColor;
            }

            string[] filesOrFolders = (string[])e.Data.GetData(DataFormats.FileDrop);
            if (aNodeElement.Name == "Component")
            {
                ImportFilesInComponent(aNode, aNodeElement, filesOrFolders);
            }
            else if (aNodeElement.Name == "Directory")
            {
                ImportFoldersInDirectory(aNode, aNodeElement, filesOrFolders);
            }
        }
Пример #5
0
        private void ImportFilesInComponent(TreeNode node, XmlNode componentNode, string[] files)
        {
            if (componentNode.Name == "Component")
            {
                bool mustExpand = (node.Nodes.Count == 0);

                CurrentTreeView.SuspendLayout();

                bool foundReg = false;
                foreach (string file in files)
                {
                    if (Path.GetExtension(file).ToLower() == ".reg")
                    {
                        foundReg = true;
                        break;
                    }
                }

                bool importRegistryFiles = false;
                if (foundReg == true)
                {
                    DialogResult result = MessageBox.Show(this, "Import Registry (*.reg) files to Registry elements?", "Import?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
                    if (result == DialogResult.Cancel)
                    {
                        return;
                    }
                    else if (result == DialogResult.Yes)
                    {
                        importRegistryFiles = true;
                    }
                }

                WixFiles.UndoManager.BeginNewCommandRange();
                StringBuilder errorMessageBuilder = new StringBuilder();

                foreach (string file in files)
                {
                    FileInfo fileInfo = new FileInfo(file);
                    try
                    {
                        if (fileInfo.Extension.ToLower() == ".reg" && importRegistryFiles)
                        {
                            RegistryImport regImport = new RegistryImport(WixFiles, fileInfo, componentNode);
                            regImport.Import(node);
                        }
                        else
                        {
                            FileImport fileImport = new FileImport(WixFiles, fileInfo, componentNode);
                            fileImport.Import(node);
                        }
                    }
                    catch (WixEditException ex)
                    {
                        errorMessageBuilder.AppendFormat("{0} ({1})\r\n", fileInfo.Name, ex.Message);
                    }
                    catch (Exception ex)
                    {
                        string        message = String.Format("An exception occured during the import of \"{0}\"! Please press OK to report this error to the WixEdit website, so this error can be fixed.", fileInfo.Name);
                        ExceptionForm form    = new ExceptionForm(message, ex);
                        if (form.ShowDialog() == DialogResult.OK)
                        {
                            ErrorReporter reporter = new ErrorReporter();
                            reporter.Report(ex);
                        }
                    }
                }

                if (errorMessageBuilder.Length > 0)
                {
                    MessageBox.Show(this, "Import failed for the following files:\r\n\r\n" + errorMessageBuilder.ToString(), "Import failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }

                ShowNode(componentNode);

                if (mustExpand)
                {
                    node.Expand();
                }

                CurrentTreeView.ResumeLayout();
            }
        }
Пример #6
0
        private void treeView_DragOver(object sender, DragEventArgs e)
        {
            TreeNode aNode = CurrentTreeView.GetNodeAt(CurrentTreeView.PointToClient(new Point(e.X, e.Y)));

            if (oldNode == aNode)
            {
                return;
            }

            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                XmlNode aNodeElement = aNode.Tag as XmlNode;
                if (aNodeElement.Name == "Component")
                {
                    bool filesOnly = true;

                    string[] filesAndFolders = (string[])e.Data.GetData(DataFormats.FileDrop);
                    foreach (string fileOrFolder in filesAndFolders)
                    {
                        if (File.Exists(fileOrFolder) == false)
                        {
                            filesOnly = false;
                            break;
                        }
                    }

                    if (filesOnly)
                    {
                        e.Effect = DragDropEffects.Copy;
                    }
                    else
                    {
                        e.Effect = DragDropEffects.None;
                    }
                }
                else if (aNodeElement.Name == "Directory")
                {
                    bool dirsOnly = true;

                    string[] filesAndFolders = (string[])e.Data.GetData(DataFormats.FileDrop);
                    foreach (string fileOrFolder in filesAndFolders)
                    {
                        if (Directory.Exists(fileOrFolder) == false)
                        {
                            dirsOnly = false;
                            break;
                        }
                    }

                    if (dirsOnly)
                    {
                        e.Effect = DragDropEffects.Copy;
                    }
                    else
                    {
                        e.Effect = DragDropEffects.None;
                    }
                }
                else
                {
                    e.Effect = DragDropEffects.None;
                }
            }

            if (oldNode != null)
            {
                oldNode.BackColor = aNode.BackColor;
                oldNode.ForeColor = aNode.ForeColor;
            }

            aNode.BackColor = Color.DarkBlue;
            aNode.ForeColor = Color.White;

            oldNode = aNode;
        }
Пример #7
0
        /// <summary>
        /// 将树结构保存到数据库中
        /// </summary>
        public void SaveTreeToDB()
        {
            String treeXml = CurrentTreeView.saveToXmlString();

            (new NodeTreeRepository(DALConfig.getEFConnectionString(dbInfoObject.DatabaseFilePath))).SaveTree(treeXml, CurrentTreeView.TreeNodeType);
        }