示例#1
0
        private void MoveNode(AIONode [] nodeToMoves, AIONode nodeToAttach)
        {
            for (int i = 0; i < nodeToMoves.Length; i++)
            {
                AIONode nodeToMove = nodeToMoves[i];
                //Logically
                tree.MoveNode(nodeToMove, nodeToAttach);
                //Change tree
                if (nodeToMove.data.isFile == false)                 //Folder
                {
                    TreeNode toMove   = (TreeNode)nodeToMove.container;
                    TreeNode toAttach = (TreeNode)nodeToAttach.container;

                    //Remove old
                    toMove.Remove();

                    //Insert new
                    InsertNode(toAttach, toMove);
                }
            }

            //previousSelected
            treeView1.SelectedNode = previousSelected;

            //Update
            UpdateListView();
        }
        private void listView1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete)             //Delete
            {
                if (listView1.SelectedIndices.Count == 0)
                {
                    return;
                }

                int     index        = listView1.SelectedIndices[0];
                AIONode nodeToDelete = (AIONode)listView1.Items[index].Tag;

                //Delete
                tree.DeleteNode(nodeToDelete);

                //Update tree if isFolder
                if (nodeToDelete.data.isFile == false)
                {                /*
                                  *     TreeNode selected = treeView1.SelectedNode;
                                  *     int i = 0;
                                  *     for (i = 0;i<selected.Nodes.Count;i++)
                                  *     {
                                  *             if (selected.Nodes[i].Text.Equals(nodeToDelete.info.Name))
                                  *                     break;
                                  *     }
                                  *     //Delete node at tree
                                  *     selected.Nodes.RemoveAt(i);*/
                    TreeNode node = (TreeNode)nodeToDelete.container;
                    node.Remove();
                }
                //Refresh
                UpdateListView();
            }
        }
示例#3
0
        private void DeleteNode(AIONode [] nodesToDelete)
        {
            for (int i = 0; i < nodesToDelete.Length; i++)
            {
                AIONode nodeToDelete = nodesToDelete[i];

                try
                {
                    tree.DeleteNode(nodeToDelete);

                    if (nodeToDelete.data.isFile == false)
                    {
                        TreeNode toDelete = (TreeNode)nodeToDelete.container;
                        if (toDelete != null)
                        {
                            toDelete.Remove();
                        }
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
            UpdateListView();
        }
示例#4
0
        //Delete
        private void treeView1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete)             //Delete
            {
                TreeNode node = treeView1.SelectedNode;
                if (node == null)
                {
                    return;
                }

                if (e.Shift == false)                 //Confirmation
                {
                    DialogResult result = MessageBox.Show("Are you sure?", "Delete", MessageBoxButtons.YesNo);
                    if (result.Equals(DialogResult.No))
                    {
                        return;
                    }
                }

                AIONode    nodeToDelete  = (AIONode)node.Tag;
                AIONode [] nodeToDeletes = new AIONode[] { nodeToDelete };

                DeleteNode(nodeToDeletes);
            }
        }
示例#5
0
        public void InsertFileIntoSelectedNode(string path)
        {
            TreeNode node = treeView1.SelectedNode;

            if (node == null)
            {
                return;
            }

            //Insert new category
            AIONode nodeToAttach = (AIONode)node.Tag;

            tree.FilesCount++;

            string  name         = AIOUtil.GetNameFromPath(path);
            AIONode nodeToInsert = new AIONode(new AIOInfo(tree.GenerateFileID(), name, true));

            tree.InsertFile(nodeToInsert, nodeToAttach, path);

            //Be sure to execute the queue
            aioDb.ExecuteQueueCommand();

            //Update listview
            UpdateListView();
        }
示例#6
0
        private void CopyNode(AIONode [] nodesToCopy, AIONode nodeToAttach)
        {
            for (int i = 0; i < nodesToCopy.Length; i++)
            {
                AIONode nodeToCopy = nodesToCopy[i];

                //Logically
                AIONode newCopy = tree.CopyNode(nodeToCopy, nodeToAttach);
                //Change tree
                if (nodeToCopy.data.isFile == false)                 //Folder
                {
                    TreeNode toAttach = (TreeNode)nodeToAttach.container;

                    TreeNode newCopyNode = CreateTreeNode(newCopy);
                    //Insert null child for new copy node
                    newCopyNode.Nodes.Insert(0, new TreeNode());

                    //Insert new
                    InsertNode(toAttach, newCopyNode);
                }
            }
            //previousSelected
            treeView1.SelectedNode = previousSelected;

            //Update
            UpdateListView();
        }
示例#7
0
        private void CreateContainerNode(AIONode node)
        {
            AIONode  parent     = tree.GetParent(node);
            TreeNode parentNode = (TreeNode)parent.container;

            //Expand to create childnodes and container
            parentNode.Expand();
        }
示例#8
0
        private void treeView1_AfterLabelEdit(object sender, System.Windows.Forms.NodeLabelEditEventArgs e)
        {
            TreeNode node = e.Node;

            if (e.Label != null)
            {
                AIONode aionode = (AIONode)node.Tag;
                aionode.data.Name = e.Label;
            }
        }
示例#9
0
        public void Synchronize()
        {
            //GetSubroot
            AIONode subroot = logicalExplorer1.GetCurrentFolder();

            frmSynchronizeWizard synch = new frmSynchronizeWizard(tree, subroot);

            synch.ShowDialog();
            //logicalExplorer1.SetTree(tree);
        }
示例#10
0
        private void listView1_AfterLabelEdit(object sender, System.Windows.Forms.LabelEditEventArgs e)
        {
            if (e.Label != null)
            {
                AIONode aionode = (AIONode)listView1.Items[e.Item].Tag;
                aionode.data.Name = e.Label;

                TreeNode node = (TreeNode)aionode.container;
                node.Text = e.Label;
            }
        }
示例#11
0
        //My methods-----------------------------------------------------

        //Create a tree node from AIONode
        private TreeNode CreateTreeNode(AIONode node)
        {
            TreeNode treenode = new TreeNode();

            tree.CopyNodeInfo(treenode, node);

            //Save container
            node.container = treenode;

            return(treenode);
        }
示例#12
0
        public AIONode GetCurrentFolder()
        {
            TreeNode treenode = treeView1.SelectedNode;

            if (treenode == null)
            {
                return(null);
            }
            AIONode node = (AIONode)treenode.Tag;

            return(node);
        }
示例#13
0
        public frmSynchronizeWizard(AIOFolderTree tree2, AIONode subroot)
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
            this.tree    = tree2;
            this.subroot = subroot;
        }
示例#14
0
        private void UpdateListView()
        {
            listView1.Items.Clear();
            TreeNode node = treeView1.SelectedNode;

            if (node == null)
            {
                return;
            }

            AIONode aionode = (AIONode)node.Tag;

            if (aionode == null)
            {
                return;
            }

            aionode = aionode.childNode;
            while (aionode != null)
            {
                string name = "null";
                //if (aionode.data != null)
                name = aionode.data.Name;
                //name = aionode.data.ID;
                ListViewItem item = listView1.Items.Add(name, 0);
                //Save tag
                item.Tag = aionode;

                //View sub items info
                if (aionode.data.isFile)
                {
                    object [] obj = aioDb.GetCommonInfo(aionode.data.ID);

                    //View it
                    if (obj != null)
                    {
                        for (int i = 0; i < obj.Length; i++)
                        {
                            item.SubItems.Add(obj[i].ToString());
                        }
                    }
                }

                if (aionode.data.isFile)
                {
                    item.ImageIndex = 1;
                }
                aionode = aionode.nextNode;
            }
        }
示例#15
0
        //---------------------------------------------------------------

        //Update details information
        private void UpdateDetailsInfo()
        {
            AIONode node = (AIONode)listView1.SelectedItems[0].Tag;

            if (node.data.isFile == false)
            {
                return;
            }

            string   path = listView1.SelectedItems[0].SubItems[3].Text;
            FileInfo file = new FileInfo(path);
            long     size = file.Length;

            ViewDetailsInfo(new string[] { AIOUtil.ByteToKB_String(size) });
        }
示例#16
0
        TreeNode previousSelected = null;         //Save previous selected node in DragDrop for Delete old node
        private void listView1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
            {
                if (listView1.SelectedIndices.Count == 0)
                {
                    return;
                }

                int     index = listView1.SelectedIndices[0];
                AIONode node  = (AIONode)listView1.Items[index].Tag;

                //Copy or Move
                listView1.DoDragDrop(node, DragDropEffects.All);
            }
        }
示例#17
0
        private void tree_UpdateLogicalExplorer(AIONode node)
        {
            TreeNode treenode = new TreeNode();

            tree.CopyNodeInfo(treenode, node);
            //Make container
            node.container = treenode;

            AIONode  parent     = tree.GetParent(node);
            TreeNode parentnode = (TreeNode)parent.container;

            tree.FillOneLevelNode(treenode, node);
            //Insert to treeView
            //InsertNode(parentnode, treenode);
            //Marshall to STA thread
            treeView1.Invoke(new InsertNodeDele(InsertNode), new object[] { parentnode, treenode });
        }
示例#18
0
        private void treeView1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
        {
            //Cancel drag drop
            IsDragDroping = false;

            if (treeView1.SelectedNode == null)
            {
                return;
            }

            AIONode nodeToAttach = (AIONode)treeView1.SelectedNode.Tag;

            AIONode [] nodeToDrops = (AIONode[])e.Data.GetData(typeof(AIONode[]));

            //Check if valid to move or copy
            for (int i = 0; i < nodeToDrops.Length; i++)
            {
                AIONode nodeToDrop = nodeToDrops[i];

                if (!tree.IsValidMoveCopy(nodeToDrop, nodeToAttach))
                {
                    MessageBox.Show("Can't move or copy to sub folder.");
                    return;
                    //continue;
                }

                if (nodeToDrop.data.isFile == false && nodeToDrop.container == null)
                {
                    CreateContainerNode(nodeToDrop);
                }
            }

            if (e.Effect.Equals(DragDropEffects.Move))             //Move
            {
                MoveNode(nodeToDrops, nodeToAttach);
            }
            else
            {
                if (e.Effect.Equals(DragDropEffects.Copy))                 //Copy
                {
                    //Logical copy
                    CopyNode(nodeToDrops, nodeToAttach);
                }
            }
        }
示例#19
0
        //Tree view drapdrop
        private void treeView1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (((e.Button & MouseButtons.Left) == MouseButtons.Left) && !IsDragDroping)
            {
                TreeNode treeNode = treeView1.SelectedNode;
                if (treeNode == null)
                {
                    return;
                }

                AIONode    node  = (AIONode)treeNode.Tag;
                AIONode [] nodes = new AIONode[] { node };

                IsDragDroping = true;
                //ddType = DragDropType.TREE;

                previousSelected = treeView1.SelectedNode;

                //Copy or Move
                treeView1.DoDragDrop(nodes, DragDropEffects.Copy | DragDropEffects.Move);
            }
        }
示例#20
0
        private void UpdateListView()
        {
            listView1.Items.Clear();
            TreeNode node = treeView1.SelectedNode;

            if (node == null)
            {
                return;
            }

            AIONode aionode = (AIONode)node.Tag;

            aionode = aionode.childNode;
            while (aionode != null)
            {
                ListViewItem item = listView1.Items.Add(aionode.data.Name, 0);
                item.Tag = aionode;
                if (aionode.data.isFile)
                {
                    item.ImageIndex = 1;
                }
                aionode = aionode.nextNode;
            }
        }
示例#21
0
        private void ctxNew_Click(object sender, System.EventArgs e)
        {
            TreeNode node = treeView1.SelectedNode;

            if (node == null)
            {
                return;
            }

            node.Expand();

            //Insert new category
            AIONode nodeToAttach = (AIONode)node.Tag;

            tree.FoldersCount++;
            AIONode nodeToInsert = new AIONode(new AIOInfo(tree.GenerateFolderID(), "New Category", false));

            tree.InsertCategory(nodeToInsert, nodeToAttach);

            //Tree
            TreeNode newNode = new TreeNode();

            tree.CopyNodeInfo(newNode, nodeToInsert);

            //Save Container
            nodeToInsert.container = newNode;

            //Insert();
            node.Nodes.Insert(0, newNode);
            if (node.IsExpanded == false)
            {
                node.Expand();
            }

            newNode.BeginEdit();
        }
示例#22
0
        private void GoToSelectedFolder()
        {
            if (listView1.SelectedItems.Count == 0)
            {
                return;
            }
            AIONode node = (AIONode)listView1.SelectedItems[0].Tag;

            if (node.data.isFile == false)             //IsFolder
            {
                TreeNode selected = treeView1.SelectedNode;
                if (selected.IsExpanded == false)
                {
                    selected.Expand();
                }

                TreeNode treenode = (TreeNode)node.container;

                treeView1.SelectedNode = treenode;
                treeView1.Select();
                UpdateListView();
                if (listView1.Items.Count > 0)
                {
                    listView1.Items[0].Selected = true;
                }

                listView1.Select();
            }
            else             //IsFile - Execute here-----------------
            {
                //System.Diagnostics.Process.Start(node.info.FullName);
                string ID = node.data.ID;

                EditFileInfo(ID);
            }
        }
示例#23
0
        private void ctxPaste_Click(object sender, System.EventArgs e)
        {
            if (nodeToOperateList == null)
            {
                return;
            }

            //Get node to operate
            AIONode [] destNodes = ((AIONode[])GetOperateNode(objSender));

            if (destNodes == null)
            {
                if (objSender.Equals(listView1))                        //Neu ListView khong select
                {
                    destNodes = ((AIONode[])GetOperateNode(treeView1)); //Sau khi lay o tree, destNode luon la mot thu muc
                }
                else
                {
                    return;
                }
            }
            else
            if (destNodes[0].data.isFile)
            {
                //Change destNode to current category in treeView
                destNodes = ((AIONode[])GetOperateNode(treeView1));
                if (destNodes == null)
                {
                    return;
                }
            }

            if (destNodes.Length > 1)
            {
                MessageBox.Show("Paste into " + destNodes[0].data.Name);
            }

            AIONode destNode = destNodes[0];

            //Loop through operate node
            for (int i = 0; i < nodeToOperateList.Length; i++)
            {
                AIONode nodeToOperate = nodeToOperateList[i];
                //Checking
                if (!tree.IsValidMoveCopy(nodeToOperate, destNode))
                {
                    //continue;
                    return;
                }

                if (nodeToOperate.data.isFile == false && nodeToOperate.container == null)
                {
                    CreateContainerNode(nodeToOperate);
                }
            }

            switch (ctxState)
            {
            case ContextState.CTX_CUT:
                MoveNode(nodeToOperateList, destNode);

                break;

            case ContextState.CTX_COPY:
                CopyNode(nodeToOperateList, destNode);

                break;
            }

            //Change the state to READY when done
            ctxState = ContextState.CTX_READY;
        }