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; VETreeNode _LastTreeNode = null;
StepInfo _LastStepInfo = null; StepInfo _LastStepInfo = null;
ItemInfo _LastItemInfo = null; ItemInfo _LastItemInfo = null;
bool CanPaste = false;
#endregion #endregion
#region Events #region Events
public event vlnTreeViewEvent NodeMove; public event vlnTreeViewEvent NodeMove;
@ -184,7 +183,7 @@ namespace Volian.Controls.Library
// that allow more than one type of operation associated with their selection. // that allow more than one type of operation associated with their selection.
public enum MenuSelections : int 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) 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 // folders then can only add another folder, and if children are docversions can only
// add docversion. // add docversion.
FolderInfo fi = tn.VEObject as FolderInfo; 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.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)); 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)); cm.MenuItems.Add("New Procedure", new EventHandler(mi_Click));
else if (tn.VEObject as ProcedureInfo != null) // Procs can only contain sections 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("Insert Procedure Before", new EventHandler(mi_Click));
cm.MenuItems.Add("New Procedure After", new EventHandler(mi_Click)); cm.MenuItems.Add("Insert Procedure After", new EventHandler(mi_Click));
cm.MenuItems.Add("New Section", new EventHandler(mi_Click)); cm.MenuItems.Add("New Section", new EventHandler(mi_Click));
} }
else if (tn.VEObject as SectionInfo != null) else if (tn.VEObject as SectionInfo != null)
@ -226,15 +230,15 @@ namespace Volian.Controls.Library
SectionInfo si = tn.VEObject as SectionInfo; SectionInfo si = tn.VEObject as SectionInfo;
// Do not need step versus Word doc options, user enters this in property page during // Do not need step versus Word doc options, user enters this in property page during
// insert process. // insert process.
cm.MenuItems.Add("New Section Before", new EventHandler(mi_Click)); cm.MenuItems.Add("Insert Section Before", new EventHandler(mi_Click));
cm.MenuItems.Add("New Section After", new EventHandler(mi_Click)); cm.MenuItems.Add("Insert Section After", new EventHandler(mi_Click));
cm.MenuItems.Add("New Subsection", 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)); if (si.IsStepSection) cm.MenuItems.Add("New Step", new EventHandler(mi_Click));
} }
else if (tn.VEObject as StepInfo != null) else if (tn.VEObject as StepInfo != null)
{ {
cm.MenuItems.Add("New Step Before", new EventHandler(mi_Click)); cm.MenuItems.Add("Insert Step Before", new EventHandler(mi_Click));
cm.MenuItems.Add("New Step After", new EventHandler(mi_Click)); cm.MenuItems.Add("Insert Step After", new EventHandler(mi_Click));
} }
#endregion #endregion
#region Menu_Open #region Menu_Open
@ -255,12 +259,34 @@ namespace Volian.Controls.Library
// For initial release, cut/copy are not available for folders or docversions // For initial release, cut/copy are not available for folders or docversions
if (tn.VEObject as FolderInfo != null && tn.VEObject as DocVersionInfo != null) 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("Cut", new EventHandler(mi_Click));
cm.MenuItems.Add("Copy (not supported yet)", new EventHandler(mi_Click)); cm.MenuItems.Add("Copy", new EventHandler(mi_Click));
} }
#endregion #endregion
#region MenuPaste #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 #endregion
#region Menu_Delete #region Menu_Delete
// Add delete to the menu unless at the very 'top' node. // Add delete to the menu unless at the very 'top' node.
@ -283,7 +309,13 @@ namespace Volian.Controls.Library
case "Open": case "Open":
OpenNode(); OpenNode();
break; 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); tv_NodeNew(MenuSelections.Folder);
break; break;
case "New Document Version": case "New Document Version":
@ -292,26 +324,26 @@ namespace Volian.Controls.Library
case "New Procedure": case "New Procedure":
tv_NodeNew(MenuSelections.Procedure); tv_NodeNew(MenuSelections.Procedure);
break; break;
case "New Procedure Before": case "Insert Procedure Before":
tv_NodeNew(MenuSelections.ProcedureBefore); tv_NodeNew(MenuSelections.ProcedureBefore);
break; break;
case "New Procedure After": case "Insert Procedure After":
tv_NodeNew(MenuSelections.ProcedureAfter); tv_NodeNew(MenuSelections.ProcedureAfter);
break; break;
case "New Section": case "New Section":
case "New Subsection": case "New Subsection":
tv_NodeNew(MenuSelections.Section); tv_NodeNew(MenuSelections.Section);
break; break;
case "New Section Before": case "Insert Section Before":
tv_NodeNew(MenuSelections.SectionBefore); tv_NodeNew(MenuSelections.SectionBefore);
break; break;
case "New Section After": case "Insert Section After":
tv_NodeNew(MenuSelections.SectionAfter); tv_NodeNew(MenuSelections.SectionAfter);
break; break;
case "New Step Before": case "Insert Step Before":
tv_NodeNew(MenuSelections.StepBefore); tv_NodeNew(MenuSelections.StepBefore);
break; break;
case "New Step After": case "Insert Step After":
tv_NodeNew(MenuSelections.StepAfter); tv_NodeNew(MenuSelections.StepAfter);
break; break;
case "New Step": case "New Step":
@ -435,6 +467,7 @@ namespace Volian.Controls.Library
public void tv_NodeNew(MenuSelections newtype) public void tv_NodeNew(MenuSelections newtype)
{ {
VETreeNode tn = null; VETreeNode tn = null;
if (SelectedNode == null) return;
SetLastValues((VETreeNode)SelectedNode); SetLastValues((VETreeNode)SelectedNode);
#region InsertFolderOrDocVersion #region InsertFolderOrDocVersion
@ -451,7 +484,7 @@ namespace Volian.Controls.Library
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs("New Document Version", docversion.DocVersionConfig)) == DialogResult.OK) if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs("New Document Version", docversion.DocVersionConfig)) == DialogResult.OK)
docversion.Save().Dispose(); docversion.Save().Dispose();
tn = new VETreeNode(_LastDocVersionInfo); tn = new VETreeNode(_LastDocVersionInfo);
SelectedNode.Nodes.Add(tn); // add tree node to end of list.
} }
} }
else if (newtype == MenuSelections.Folder) else if (newtype == MenuSelections.Folder)
@ -464,9 +497,27 @@ namespace Volian.Controls.Library
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(uniquename, folder.FolderConfig)) == DialogResult.OK) if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(uniquename, folder.FolderConfig)) == DialogResult.OK)
folder.Save().Dispose(); folder.Save().Dispose();
tn = new VETreeNode((IVEDrillDownReadOnly)_LastFolderInfo); 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 #endregion
@ -565,7 +616,7 @@ namespace Volian.Controls.Library
} }
} }
#endregion #endregion
SelectedNode = tn; SelectedNode = tn;
OnNodeSelect(this, new vlnTreeEventArgs(SelectedNode)); OnNodeSelect(this, new vlnTreeEventArgs(SelectedNode));
Refresh(); Refresh();