Beispiel #1
0
 /// <summary>
 /// Check if the specified move is valid. If the move is valid, a null
 /// string is returned, otherwise a string describing the problem is 
 /// returned.
 /// </summary>
 public String MoveCheck(KwsBrowserNode srcNode, KwsBrowserFolderNode dstFolder, String dstName, int dstIndex)
 {
     String dstID = MakeIDForNodeName(srcNode, dstName);
     if ((srcNode is KwsBrowserFolderNode) && ((KwsBrowserFolderNode)srcNode).PermanentFlag)
         return "cannot move or rename this folder";
     if (srcNode is KwsBrowserKwsNode && dstFolder.IsRoot())
         return "workspaces must be in folders";
     if (srcNode is KwsBrowserKwsNode && dstID != srcNode.ID)
         return "cannot change workspace ID";
     if (srcNode is KwsBrowserFolderNode && !KwsBrowserFolderNode.IsValidFolderName(dstName))
         return "invalid destination name";
     if (srcNode == dstFolder || dstFolder.IsDescendantOf(srcNode)) return "invalid move";
     bool reindexFlag = (dstFolder.GetNodeByID(dstID) == srcNode);
     if (!reindexFlag && dstFolder.GetNodeByID(dstID) != null)
         return "destination already exists";
     if (!dstFolder.IsIndexValidForInsert(srcNode, dstIndex))
         return "invalid destination index";
     return null;
 }
Beispiel #2
0
 /// <summary>
 /// Add a folder with the name specified at the end of the folder
 /// specified. Throw an exception on error.
 /// </summary>
 public KwsBrowserFolderNode AddFolder(KwsBrowserFolderNode dstFolder, String name)
 {
     if (!KwsBrowserFolderNode.IsValidFolderName(name)) throw new Exception("invalid folder name");
     KwsBrowserFolderNode node = new KwsBrowserFolderNode(name);
     if (dstFolder.GetNodeByID(node.ID) != null) throw new Exception("destination already exists");
     dstFolder.AddNode(node, dstFolder.FolderNodes.Count);
     return node;
 }
Beispiel #3
0
        /// <summary>
        /// Move the node at the source specified to the destination specified
        /// with the index specified. Throw an exception on error.
        /// </summary>
        public void Move(KwsBrowserNode srcNode, KwsBrowserFolderNode dstFolder, String dstName, int dstIndex)
        {
            String MoveCheckRes = MoveCheck(srcNode, dstFolder, dstName, dstIndex);
            if (MoveCheckRes != null) throw new Exception(MoveCheckRes);

            // Adjust the destination index if we're moving the source node
            // to the last index of a different folder than its parent.
            if (dstFolder.GetNodeByID(srcNode.ID) == null &&
                dstIndex + 1 == dstFolder.KwsNodes.Count)
            {
                dstIndex++;
            }

            srcNode.Parent.RemoveNode(srcNode);
            if (srcNode is KwsBrowserFolderNode) ((KwsBrowserFolderNode)srcNode).FolderName = dstName;
            dstFolder.AddNode(srcNode, dstIndex);

            // The workspace list has changed.
            m_wm.OutlookBroker.OnKwsListChanged();
        }
Beispiel #4
0
        /// <summary>
        /// Request the creation of a folder. Return the node of the created folder.
        /// Warning: UpdateTvWorkspacesList() must be called after a call to this
        /// method.
        /// </summary>
        public KwsBrowserFolderNode RequestCreateFolder(KwsBrowserFolderNode parent)
        {
            // We're changing the WM state.
            m_wm.SetDirty();

            // Generate a default folder name.
            String baseName = "New folder";
            String name = baseName;
            int count = 0;
            while (parent.GetNodeByID("f_" + name) != null) name = baseName + " (" + ++count + ")";

            // Insert the node in the browser.
            return Browser.AddFolder(parent, name);
        }