This commit is contained in:
parent
931394efc5
commit
47e02071fc
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user