private void _treDirectories_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (last_selected == e.Node)
            {
                return;
            }

            last_selected = e.Node;
            if (e.Node.Name == "directory_unsorted")
            {
                if (directory_selected != null)
                {
                    directory_selected(new DC_DirectoryInformation()
                    {
                        url_id = "0",
                        name   = "Unsorted"
                    });
                }
            }
            else
            {
                DC_DirectoryInformation dir = e.Node.Tag as DC_DirectoryInformation;
                if (dir == null)
                {
                    return;
                }

                if (directory_selected != null)
                {
                    directory_selected(dir);
                }
            }
        }
        public DC_DirectoryInformation getDirectoryAtCursor()
        {
            Point cursora   = Cursor.Position;
            Point client_pt = this.PointToClient(cursora);

            TreeNode node = _treDirectories.GetNodeAt(client_pt);

            if (node == null)
            {
                return(null);
            }

            DC_DirectoryInformation dir = node.Tag as DC_DirectoryInformation;

            if (dir == null && node.Name == "directory_unsorted")
            {
                dir = new DC_DirectoryInformation()
                {
                    url_id = "0",
                    name   = "Unsorted"
                };
            }

            return(dir);
        }
        private void _cmiDirectoryDelete_Click(object sender, EventArgs e)
        {
            if (_treDirectories.SelectedNode.Tag == null)
            {
                return;
            }

            DC_DirectoryInformation dir = _treDirectories.SelectedNode.Tag as DC_DirectoryInformation;

            if (dir == null)            // Should never happen.
            {
                return;
            }

            if (dir.url_id == "")
            {
                return;
            }

            // Remove the node for user verification of deletion.
            _treDirectories.SelectedNode.Remove();

            connector.callServerMethod("Files:directoryDelete", dir.url_id);

            if (status_update != null)
            {
                status_update("Deleting directory.", DirectoryTreeListStatusEnum.deleting);
            }
        }
        public void directoryCreateConfirmation(DC_DirectoryInformation dir)
        {
            addDirectory(dir);

            if (status_update != null)
            {
                status_update("Idle", DirectoryTreeListStatusEnum.created);
            }
        }
        /// <summary>
        /// Add a directory to the TreeList
        /// </summary>
        /// <param name="dir">Directory information.</param>
        private void addDirectory(DC_DirectoryInformation dir)
        {
            string   dir_type = (dir.bool_public) ? "directory" : "directory_private";
            TreeNode node     = node_root.Nodes.Add(dir.id, dir.name, dir_type, dir_type);

            node.Tag = dir;

            directory_nodes.Add(node);
        }
        private void _cmiDirectoryCopyDirectoryUrl_Click(object sender, EventArgs e)
        {
            DC_DirectoryInformation dir = _treDirectories.SelectedNode.Tag as DC_DirectoryInformation;

            if (dir == null)
            {
                return;
            }

            Clipboard.SetText(Client.server_info.server_url + "/" + dir.url_id);
        }
        private void _treDirectories_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
        {
            if (e.Label == null)
            {
                return;
            }

            if (e.Node.Tag == null)
            {
                connector.callServerMethod("Files:directoryCreate", e.Label);
                e.Node.Remove();
                if (status_update != null)
                {
                    status_update("Creating directory " + e.Label, DirectoryTreeListStatusEnum.creating);
                }
            }
            else
            {
                DC_DirectoryInformation dir = e.Node.Tag as DC_DirectoryInformation;
                if (dir == null)
                {
                    e.CancelEdit = true;
                    return;
                }

                // Determine if the label has changed at all.
                if (dir.name == e.Label)
                {
                    return;
                }


                if (Regex.IsMatch(e.Label, @"^[a-zA-Z0-9 _-]+$") == false)
                {
                    MessageBox.Show("Directory name can only contain Alphanumeric and any of the following characters: _-", "Directory Name Change", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    e.CancelEdit = true;
                    return;
                }
                else if (e.Label.Length > 128)
                {
                    MessageBox.Show("Directory name has to be less than 128 characters.", "Directory Name Change", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    e.CancelEdit = true;
                    return;
                }

                updatingDirectory(e.Node);
                connector.callServerMethod("Files:directoryRename", dir.url_id, e.Label);
                if (status_update != null)
                {
                    status_update("Renaming Directory " + dir.name, DirectoryTreeListStatusEnum.renaming);
                }
            }
        }
        /// <summary>
        /// Sets a directory to be in "Updating" to visually let the user know that something is going on.
        /// </summary>
        /// <param name="node">The node that is being updated.</param>
        private void updatingDirectory(TreeNode node)
        {
            DC_DirectoryInformation dir = node.Tag as DC_DirectoryInformation;

            if (dir == null)
            {
                return;
            }

            node.SelectedImageKey = "updating";
            node.ImageKey         = "updating";
        }
        /// <summary>
        /// Called after the directory is updated successfully or otherwise.
        /// </summary>
        /// <param name="node">The node that has completed the work requested.</param>
        private void completedUpdatingDirectory(TreeNode node)
        {
            DC_DirectoryInformation dir = node.Tag as DC_DirectoryInformation;

            if (dir == null)
            {
                return;
            }

            node.Text = dir.name;
            if (dir.bool_public)
            {
                node.SelectedImageKey = "directory";
                node.ImageKey         = "directory";
            }
            else
            {
                node.SelectedImageKey = "directory_private";
                node.ImageKey         = "directory_private";
            }
        }
        public void directoryRenameConfirmation(string url_id, string name)
        {
            foreach (TreeNode node in node_root.Nodes)
            {
                DC_DirectoryInformation dir = node.Tag as DC_DirectoryInformation;
                if (dir == null)
                {
                    continue;
                }

                if (dir.url_id == url_id)
                {
                    dir.name = name;
                    completedUpdatingDirectory(node);
                    break;
                }
            }
            if (status_update != null)
            {
                status_update("Directory renamed.", DirectoryTreeListStatusEnum.renamed);
            }
        }
        private void _cmiDirectoryMakePublic_Click(object sender, EventArgs e)
        {
            DC_DirectoryInformation dir = _treDirectories.SelectedNode.Tag as DC_DirectoryInformation;

            if (dir == null)
            {
                return;
            }
            var set_prop = new Dictionary <string, bool>()
            {
                { "is_public", true }
            };

            connector.callServerMethod("Files:directorySetProperties", dir.url_id, set_prop);
            _treDirectories.SelectedNode.ImageKey         = "directory";
            _treDirectories.SelectedNode.SelectedImageKey = "directory";
            dir.bool_public = true;

            if (status_update != null)
            {
                status_update("Setting directory " + dir.name + " to Public.", DirectoryTreeListStatusEnum.property_setting);
            }
        }
示例#12
0
        private void _dtlDirectories_DragDrop(object sender, DragEventArgs e)
        {
            List <string> move_url_ids = new List <string>();

            DC_DirectoryInformation dir = _dtlDirectories.getDirectoryAtCursor();

            if (dir == null)
            {
                dragging_files.Clear();
                return;
            }

            _lblStatusText.Text = "Moving (" + dragging_files.Count.ToString() + ") File(s) into directory " + dir.name;

            foreach (ListViewItem item in dragging_files)
            {
                move_url_ids.Add(((DC_FileInformation)item.Tag).url_id);                 // Potentially a null reference error...
                item.Remove();
            }
            dragging_files.Clear();

            connector.callServerMethod("Files:move", move_url_ids.ToArray(), dir.url_id);
        }
示例#13
0
 private void _dtlDirectories_directory_selected(DC_DirectoryInformation directory)
 {
     _lstFiles.Items.Clear();
     _lstFiles.Items.Add("Loading", "loading");
     connector.callServerMethod("Files:directoryFiles", directory.url_id);
 }