This commit is contained in:
Kathy Ruffing 2008-08-20 11:09:34 +00:00
parent 931394efc5
commit 47e02071fc

View File

@ -129,7 +129,6 @@ namespace Volian.Controls.Library
VETreeNode _LastTreeNode = null;
StepInfo _LastStepInfo = null;
ItemInfo _LastItemInfo = null;
bool CanPaste = false;
#endregion
#region Events
public event vlnTreeViewEvent NodeMove;
@ -184,7 +183,7 @@ namespace Volian.Controls.Library
// that allow more than one type of operation associated with their selection.
public enum MenuSelections : int
{
None = 0, Folder = 1, DocVersion = 2, Procedure = 3, ProcedureBefore = 4, ProcedureAfter = 5, Section = 6, SectionBefore = 7, SectionAfter = 8, Step = 9, StepBefore = 10, StepAfter = 11
Folder = 1, FolderBefore = 2, FolderAfter = 3, DocVersion = 4, Procedure = 5, ProcedureBefore = 6, ProcedureAfter = 7, Section = 8, SectionBefore = 9, SectionAfter = 10, Step = 11, StepBefore = 12, StepAfter = 13
}
void tv_MouseDown(object sender, MouseEventArgs e)
{
@ -206,6 +205,11 @@ namespace Volian.Controls.Library
// folders then can only add another folder, and if children are docversions can only
// add docversion.
FolderInfo fi = tn.VEObject as FolderInfo;
if (fi.MyParent != null) // don't allow insert before/after if at top node
{
cm.MenuItems.Add("Insert Folder Before", new EventHandler(mi_Click));
cm.MenuItems.Add("Insert Folder After", new EventHandler(mi_Click));
}
if (fi.FolderDocVersionCount == 0) cm.MenuItems.Add("New Folder", new EventHandler(mi_Click));
if (fi.ChildFolderCount == 0) cm.MenuItems.Add("New Document Version", new EventHandler(mi_Click));
}
@ -213,8 +217,8 @@ namespace Volian.Controls.Library
cm.MenuItems.Add("New Procedure", new EventHandler(mi_Click));
else if (tn.VEObject as ProcedureInfo != null) // Procs can only contain sections
{
cm.MenuItems.Add("New Procedure Before", new EventHandler(mi_Click));
cm.MenuItems.Add("New Procedure After", new EventHandler(mi_Click));
cm.MenuItems.Add("Insert Procedure Before", new EventHandler(mi_Click));
cm.MenuItems.Add("Insert Procedure After", new EventHandler(mi_Click));
cm.MenuItems.Add("New Section", new EventHandler(mi_Click));
}
else if (tn.VEObject as SectionInfo != null)
@ -226,15 +230,15 @@ namespace Volian.Controls.Library
SectionInfo si = tn.VEObject as SectionInfo;
// Do not need step versus Word doc options, user enters this in property page during
// insert process.
cm.MenuItems.Add("New Section Before", new EventHandler(mi_Click));
cm.MenuItems.Add("New Section After", new EventHandler(mi_Click));
cm.MenuItems.Add("Insert Section Before", new EventHandler(mi_Click));
cm.MenuItems.Add("Insert Section After", new EventHandler(mi_Click));
cm.MenuItems.Add("New Subsection", new EventHandler(mi_Click));
if (si.IsStepSection) cm.MenuItems.Add("New Step", new EventHandler(mi_Click));
}
else if (tn.VEObject as StepInfo != null)
{
cm.MenuItems.Add("New Step Before", new EventHandler(mi_Click));
cm.MenuItems.Add("New Step After", new EventHandler(mi_Click));
cm.MenuItems.Add("Insert Step Before", new EventHandler(mi_Click));
cm.MenuItems.Add("Insert Step After", new EventHandler(mi_Click));
}
#endregion
#region Menu_Open
@ -255,12 +259,34 @@ namespace Volian.Controls.Library
// For initial release, cut/copy are not available for folders or docversions
if (tn.VEObject as FolderInfo != null && tn.VEObject as DocVersionInfo != null)
{
cm.MenuItems.Add("Cut (not supported yet)", new EventHandler(mi_Click));
cm.MenuItems.Add("Copy (not supported yet)", new EventHandler(mi_Click));
cm.MenuItems.Add("Cut", new EventHandler(mi_Click));
cm.MenuItems.Add("Copy", new EventHandler(mi_Click));
}
#endregion
#region MenuPaste
if (CanPaste)cm.MenuItems.Add("Paste (not supported yet)", new EventHandler(mi_Click));
// Find what's in paste buffer & determine whether the paste can occur for the selected node.
//ItemInfo iiClipboard = Clipboard.GetData("ItemInfo") as ItemInfo;
//if (iiClipboard != null)
//{
// // can it be pasted at current node.
// if (tn.VEObject as DocVersionInfo != null) // paste item must be a proc
// {
// if (iiClipboard.IsProcedure) cm.MenuItems.Add("Paste Procedure", new EventHandler(mi_Click));
// }
// else
// {
// ItemInfo iiPasteHere = tn.VEObject as ItemInfo;
// if (iiPasteHere != null)
// {
// if (iiPasteHere.IsProcedure && iiClipboard.IsSection) // procedure must have sections only
// cm.MenuItems.Add("Paste Section", new EventHandler(mi_Click));
// else if (iiPasteHere.IsSection && iiClipboard.IsSection)
// cm.MenuItems.Add("Paste Section", new EventHandler(mi_Click));
// else if (iiPasteHere.IsStepSection && iiClipboard.IsStep)
// cm.MenuItems.Add("Paste Step", new EventHandler(mi_Click));
// }
// }
//}
#endregion
#region Menu_Delete
// Add delete to the menu unless at the very 'top' node.
@ -283,7 +309,13 @@ namespace Volian.Controls.Library
case "Open":
OpenNode();
break;
case "New Folder"://Add a new child node at the current location
case "Insert Folder Before":
tv_NodeNew(MenuSelections.FolderBefore);
break;
case "Insert Folder After":
tv_NodeNew(MenuSelections.FolderAfter);
break;
case "New Folder":
tv_NodeNew(MenuSelections.Folder);
break;
case "New Document Version":
@ -292,26 +324,26 @@ namespace Volian.Controls.Library
case "New Procedure":
tv_NodeNew(MenuSelections.Procedure);
break;
case "New Procedure Before":
case "Insert Procedure Before":
tv_NodeNew(MenuSelections.ProcedureBefore);
break;
case "New Procedure After":
case "Insert Procedure After":
tv_NodeNew(MenuSelections.ProcedureAfter);
break;
case "New Section":
case "New Subsection":
tv_NodeNew(MenuSelections.Section);
break;
case "New Section Before":
case "Insert Section Before":
tv_NodeNew(MenuSelections.SectionBefore);
break;
case "New Section After":
case "Insert Section After":
tv_NodeNew(MenuSelections.SectionAfter);
break;
case "New Step Before":
case "Insert Step Before":
tv_NodeNew(MenuSelections.StepBefore);
break;
case "New Step After":
case "Insert Step After":
tv_NodeNew(MenuSelections.StepAfter);
break;
case "New Step":
@ -435,6 +467,7 @@ namespace Volian.Controls.Library
public void tv_NodeNew(MenuSelections newtype)
{
VETreeNode tn = null;
if (SelectedNode == null) return;
SetLastValues((VETreeNode)SelectedNode);
#region InsertFolderOrDocVersion
@ -451,7 +484,7 @@ namespace Volian.Controls.Library
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs("New Document Version", docversion.DocVersionConfig)) == DialogResult.OK)
docversion.Save().Dispose();
tn = new VETreeNode(_LastDocVersionInfo);
SelectedNode.Nodes.Add(tn); // add tree node to end of list.
}
}
else if (newtype == MenuSelections.Folder)
@ -464,9 +497,27 @@ namespace Volian.Controls.Library
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(uniquename, folder.FolderConfig)) == DialogResult.OK)
folder.Save().Dispose();
tn = new VETreeNode((IVEDrillDownReadOnly)_LastFolderInfo);
SelectedNode.Nodes.Add(tn); // add new tree node to end of childlist.
}
}
else if (newtype == MenuSelections.FolderAfter||newtype == MenuSelections.FolderBefore)
{
string uniquename = _LastFolderInfo.MyParent.UniqueChildName("New Folder");
int myindex = SelectedNode.Index + ((newtype == MenuSelections.FolderAfter) ? 1 : 0);
FolderInfo parfolderinfo = FolderInfo.Get(parentfolder.FolderID);
double? myorder = parfolderinfo.NewManualOrder(myindex);
using (Folder folder = Folder.MakeFolder(parentfolder.MyParent, parentfolder.MyConnection, uniquename, string.Empty, "Short Name", null, myorder, string.Empty, DateTime.Now, "Test"))
{
ShowBrokenRules(folder.BrokenRulesCollection);
SetLastValues(FolderInfo.Get(folder.FolderID));
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(uniquename, folder.FolderConfig)) == DialogResult.OK)
folder.Save().Dispose();
tn = new VETreeNode((IVEDrillDownReadOnly)_LastFolderInfo);
if (newtype == MenuSelections.FolderBefore) SelectedNode.Parent.Nodes.Insert(SelectedNode.Index, tn);
if (newtype == MenuSelections.FolderAfter) SelectedNode.Parent.Nodes.Insert(SelectedNode.Index + 1, tn);
}
}
SelectedNode.Nodes.Add(tn); // add tree node to end of list.
}
}
#endregion
@ -565,7 +616,7 @@ namespace Volian.Controls.Library
}
}
#endregion
SelectedNode = tn;
OnNodeSelect(this, new vlnTreeEventArgs(SelectedNode));
Refresh();