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 workspace at the end of the folder specified. Throw an
 /// exception on error.
 /// </summary>
 public KwsBrowserKwsNode AddKws(Workspace kws, KwsBrowserFolderNode dstFolder, bool firstFlag)
 {
     if (m_kwsTree.ContainsKey(kws.InternalID)) throw new Exception(Base.GetKwsString() + "already exist");
     if (dstFolder.IsRoot()) throw new Exception(Base.GetKwsString() + " must be in folders");
     KwsBrowserKwsNode node = new KwsBrowserKwsNode(kws);
     dstFolder.AddNode(node, firstFlag ? 0 : dstFolder.KwsNodes.Count);
     m_kwsTree[kws.InternalID] = node;
     return node;
 }