This commit is contained in:
parent
b4ef570ab4
commit
c113da491f
@ -11,7 +11,7 @@ namespace Volian.Controls.Library
|
|||||||
/// Clean up any resources being used.
|
/// Clean up any resources being used.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
protected override void Dispose(bool disposing)
|
protected void Dispose(bool disposing)
|
||||||
{
|
{
|
||||||
if (disposing && (components != null))
|
if (disposing && (components != null))
|
||||||
{
|
{
|
||||||
|
@ -19,6 +19,20 @@ namespace Volian.Controls.Library
|
|||||||
public delegate bool vlnTreeViewBoolEvent(object sender, vlnTreeEventArgs args);
|
public delegate bool vlnTreeViewBoolEvent(object sender, vlnTreeEventArgs args);
|
||||||
public delegate TreeNode vlnTreeViewTreeNodeEvent(object sender, vlnTreeEventArgs args);
|
public delegate TreeNode vlnTreeViewTreeNodeEvent(object sender, vlnTreeEventArgs args);
|
||||||
public delegate DialogResult vlnTreeViewPropertyEvent(object sender, vlnTreePropertyEventArgs args);
|
public delegate DialogResult vlnTreeViewPropertyEvent(object sender, vlnTreePropertyEventArgs args);
|
||||||
|
public delegate void vlnTreeViewSectionInfoEvent(object sender, vlnTreeSectionInfoEventArgs args);
|
||||||
|
public partial class vlnTreeSectionInfoEventArgs
|
||||||
|
{
|
||||||
|
private SectionInfo _MySectionInfo;
|
||||||
|
public SectionInfo MySectionInfo
|
||||||
|
{
|
||||||
|
get { return _MySectionInfo; }
|
||||||
|
set { _MySectionInfo = value; }
|
||||||
|
}
|
||||||
|
public vlnTreeSectionInfoEventArgs(SectionInfo mySectionInfo)
|
||||||
|
{
|
||||||
|
_MySectionInfo = mySectionInfo;
|
||||||
|
}
|
||||||
|
}
|
||||||
public partial class vlnTreeEventArgs
|
public partial class vlnTreeEventArgs
|
||||||
{
|
{
|
||||||
#region Business Methods
|
#region Business Methods
|
||||||
@ -157,6 +171,11 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
if (NodeSelectionChange != null) NodeSelectionChange(sender, args);
|
if (NodeSelectionChange != null) NodeSelectionChange(sender, args);
|
||||||
}
|
}
|
||||||
|
public event vlnTreeViewSectionInfoEvent SectionShouldClose;
|
||||||
|
private void OnSectionShouldClose(object sender, vlnTreeSectionInfoEventArgs args)
|
||||||
|
{
|
||||||
|
if (SectionShouldClose != null) SectionShouldClose(sender, args);
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
#region Constructors
|
#region Constructors
|
||||||
public vlnTreeView()
|
public vlnTreeView()
|
||||||
@ -211,7 +230,7 @@ namespace Volian.Controls.Library
|
|||||||
cm.MenuItems.Add("Insert Folder After", 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("Create Working Draft", new EventHandler(mi_Click));
|
||||||
}
|
}
|
||||||
else if (tn.VEObject as DocVersionInfo != null) // DocVersions can only contain procs
|
else if (tn.VEObject as DocVersionInfo != null) // DocVersions can only contain procs
|
||||||
cm.MenuItems.Add("New Procedure", new EventHandler(mi_Click));
|
cm.MenuItems.Add("New Procedure", new EventHandler(mi_Click));
|
||||||
@ -256,37 +275,56 @@ namespace Volian.Controls.Library
|
|||||||
cm.MenuItems.Add("Open", new EventHandler(mi_Click));
|
cm.MenuItems.Add("Open", new EventHandler(mi_Click));
|
||||||
#endregion
|
#endregion
|
||||||
#region Menu_CutCopy
|
#region Menu_CutCopy
|
||||||
// For initial release, cut/copy are not available for folders or docversions
|
// For initial release, no cut operations will be coded.
|
||||||
if (tn.VEObject as FolderInfo != null && tn.VEObject as DocVersionInfo != null)
|
// For initial release, copy is not available for folders or docversions
|
||||||
|
if (tn.VEObject as ItemInfo != null)
|
||||||
{
|
{
|
||||||
cm.MenuItems.Add("Cut", new EventHandler(mi_Click));
|
//cm.MenuItems.Add("Cut", new EventHandler(mi_Click));
|
||||||
cm.MenuItems.Add("Copy", new EventHandler(mi_Click));
|
cm.MenuItems.Add("Copy", new EventHandler(mi_Click));
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
#region MenuPaste
|
#region MenuPaste
|
||||||
// Find what's in paste buffer & determine whether the paste can occur for the selected node.
|
// Find what's in paste buffer & determine whether the paste can occur for the selected node.
|
||||||
//ItemInfo iiClipboard = Clipboard.GetData("ItemInfo") as ItemInfo;
|
object tmpClip = Clipboard.GetData("PromsClipboard");
|
||||||
//if (iiClipboard != null)
|
if (tmpClip != null)
|
||||||
//{
|
{
|
||||||
// // can it be pasted at current node.
|
PromsClipboard tstClip = (PromsClipboard)tmpClip;
|
||||||
// if (tn.VEObject as DocVersionInfo != null) // paste item must be a proc
|
ItemInfo iiClipboard = ItemInfo.Get(tstClip.itemId);
|
||||||
// {
|
// can it be pasted at current node.
|
||||||
// if (iiClipboard.IsProcedure) cm.MenuItems.Add("Paste Procedure", new EventHandler(mi_Click));
|
if (tn.VEObject as DocVersionInfo != null) // paste item must be a proc
|
||||||
// }
|
{
|
||||||
// else
|
if (iiClipboard.IsProcedure) cm.MenuItems.Add("Paste Procedure", new EventHandler(mi_Click));
|
||||||
// {
|
}
|
||||||
// ItemInfo iiPasteHere = tn.VEObject as ItemInfo;
|
else
|
||||||
// if (iiPasteHere != null)
|
{
|
||||||
// {
|
ItemInfo iiPasteHere = tn.VEObject as ItemInfo;
|
||||||
// if (iiPasteHere.IsProcedure && iiClipboard.IsSection) // procedure must have sections only
|
if (iiPasteHere != null)
|
||||||
// cm.MenuItems.Add("Paste Section", new EventHandler(mi_Click));
|
{
|
||||||
// else if (iiPasteHere.IsSection && iiClipboard.IsSection)
|
if (iiPasteHere.IsProcedure && iiClipboard.IsProcedure) // procedure can be pasted before/replace/after
|
||||||
// cm.MenuItems.Add("Paste Section", new EventHandler(mi_Click));
|
{
|
||||||
// else if (iiPasteHere.IsStepSection && iiClipboard.IsStep)
|
cm.MenuItems.Add("Paste Procedure Before", new EventHandler(mi_Click));
|
||||||
// cm.MenuItems.Add("Paste Step", new EventHandler(mi_Click));
|
cm.MenuItems.Add("Replace Existing Procedure", new EventHandler(mi_Click));
|
||||||
// }
|
cm.MenuItems.Add("Paste Procedure After", new EventHandler(mi_Click));
|
||||||
// }
|
}
|
||||||
//}
|
else 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 Before", new EventHandler(mi_Click));
|
||||||
|
cm.MenuItems.Add("Replace Existing Section", new EventHandler(mi_Click));
|
||||||
|
cm.MenuItems.Add("Paste Section After", new EventHandler(mi_Click));
|
||||||
|
}
|
||||||
|
else if (iiPasteHere.IsStepSection && iiClipboard.IsStep)
|
||||||
|
cm.MenuItems.Add("Paste Step", new EventHandler(mi_Click));
|
||||||
|
else if (iiPasteHere.IsStep && iiClipboard.IsStep)
|
||||||
|
{
|
||||||
|
cm.MenuItems.Add("Paste Step Before", new EventHandler(mi_Click));
|
||||||
|
cm.MenuItems.Add("Replace Existing Step", new EventHandler(mi_Click));
|
||||||
|
cm.MenuItems.Add("Paste Section 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.
|
||||||
@ -318,7 +356,7 @@ namespace Volian.Controls.Library
|
|||||||
case "New Folder":
|
case "New Folder":
|
||||||
tv_NodeNew(MenuSelections.Folder);
|
tv_NodeNew(MenuSelections.Folder);
|
||||||
break;
|
break;
|
||||||
case "New Document Version":
|
case "Create Working Draft":
|
||||||
tv_NodeNew(MenuSelections.DocVersion);
|
tv_NodeNew(MenuSelections.DocVersion);
|
||||||
break;
|
break;
|
||||||
case "New Procedure":
|
case "New Procedure":
|
||||||
@ -349,15 +387,23 @@ namespace Volian.Controls.Library
|
|||||||
case "New Step":
|
case "New Step":
|
||||||
tv_NodeNew(MenuSelections.Step);
|
tv_NodeNew(MenuSelections.Step);
|
||||||
break;
|
break;
|
||||||
case "Cut"://Cut the selected node
|
|
||||||
// Cut to Clipboard
|
|
||||||
break;
|
|
||||||
case "Copy"://Copy the selected node
|
case "Copy"://Copy the selected node
|
||||||
// Add to Clipboard
|
tv_NodeCopy();
|
||||||
break;
|
break;
|
||||||
case "Paste"://Paste the clipboard node
|
// lots of paste options:
|
||||||
// this is either a copy or a move depending upon where it came from
|
case "Paste Procedure":
|
||||||
// if it is from a cut then when the paste is done it should be set to a copy
|
case "Paste Procedure Before":
|
||||||
|
case "Replace Existing Procedure":
|
||||||
|
case "Paste Procedure After":
|
||||||
|
case "Paste Section":
|
||||||
|
case "Paste Section Before":
|
||||||
|
case "Replace Existing Section":
|
||||||
|
case "Paste Section After":
|
||||||
|
case "Paste Step":
|
||||||
|
case "Paste Step Before":
|
||||||
|
case "Replace Existing Step":
|
||||||
|
case "Paste Step After":
|
||||||
|
tv_NodePaste(mi.Text);
|
||||||
break;
|
break;
|
||||||
case "Delete"://Delete the selected node
|
case "Delete"://Delete the selected node
|
||||||
if (tv_NodeDelete())
|
if (tv_NodeDelete())
|
||||||
@ -377,6 +423,83 @@ namespace Volian.Controls.Library
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public struct PromsClipboard
|
||||||
|
{
|
||||||
|
public int cType;
|
||||||
|
public int itemId;
|
||||||
|
}
|
||||||
|
public enum PromsClipboardType : int
|
||||||
|
{
|
||||||
|
Copy = 1, Cut = 2
|
||||||
|
}
|
||||||
|
private void tv_NodePaste(string p)
|
||||||
|
{
|
||||||
|
object oClip = Clipboard.GetData("PromsClipboard");
|
||||||
|
if (oClip == null) return;
|
||||||
|
|
||||||
|
PromsClipboard iClip = (PromsClipboard) oClip;
|
||||||
|
ItemInfo iiClipboard = ItemInfo.Get(iClip.itemId);
|
||||||
|
VETreeNode tn = SelectedNode as VETreeNode;
|
||||||
|
DocVersionInfo dvi = tn.VEObject as DocVersionInfo;
|
||||||
|
if (dvi != null)
|
||||||
|
{
|
||||||
|
// TODO: KBR Adjust database.
|
||||||
|
VETreeNode tnnew = new VETreeNode(iiClipboard);
|
||||||
|
SelectedNode.Nodes.Add(tnnew);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemInfo iiPaste = tn.VEObject as ItemInfo;
|
||||||
|
if (iiPaste == null) return;
|
||||||
|
if (p.IndexOf("Before") > -1)
|
||||||
|
{
|
||||||
|
// TODO: KBR Adjust database.
|
||||||
|
VETreeNode tnnew = new VETreeNode(iiClipboard);
|
||||||
|
int indx = SelectedNode.Index;
|
||||||
|
SelectedNode.Parent.Nodes.Insert(indx, tnnew);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (p.IndexOf("After") > -1)
|
||||||
|
{
|
||||||
|
// TODO: KBR Adjust database.
|
||||||
|
VETreeNode tnnew = new VETreeNode(iiClipboard);
|
||||||
|
int indx = SelectedNode.Index;
|
||||||
|
SelectedNode.Parent.Nodes.Insert(indx+1, tnnew);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (p.IndexOf("Replace") > -1)
|
||||||
|
{
|
||||||
|
// TODO: KBR Adjust database.
|
||||||
|
VETreeNode tnnew = new VETreeNode(iiClipboard);
|
||||||
|
int indx = SelectedNode.Index;
|
||||||
|
TreeNode tmptn = SelectedNode;
|
||||||
|
SelectedNode = SelectedNode.Parent.Nodes[indx];
|
||||||
|
SelectedNode.Remove();
|
||||||
|
SelectedNode.Parent.Nodes.Insert(indx, tnnew);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// if it got to here, just add as a child.
|
||||||
|
// TODO: KBR Adjust database.
|
||||||
|
VETreeNode tnnewc = new VETreeNode(iiClipboard);
|
||||||
|
SelectedNode.Nodes.Add(tnnewc);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tv_NodeCopy()
|
||||||
|
{
|
||||||
|
if (SelectedNode==null)return;
|
||||||
|
VETreeNode tn = SelectedNode as VETreeNode;
|
||||||
|
ItemInfo ii = tn.VEObject as ItemInfo;
|
||||||
|
if (ii != null)
|
||||||
|
{
|
||||||
|
Clipboard.Clear();
|
||||||
|
PromsClipboard iClip;
|
||||||
|
iClip.itemId = ii.ItemID;
|
||||||
|
iClip.cType = (int)PromsClipboardType.Copy;
|
||||||
|
Clipboard.SetData("PromsClipboard", iClip);
|
||||||
|
}
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
#region PropertyPagesInterface
|
#region PropertyPagesInterface
|
||||||
private void SetupNodeProperties()
|
private void SetupNodeProperties()
|
||||||
@ -400,28 +523,27 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
using (Folder folder = folderInfo.Get())
|
using (Folder folder = folderInfo.Get())
|
||||||
{
|
{
|
||||||
if(OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} Properties", folder.FolderConfig.Name),folder.FolderConfig))==DialogResult.OK)
|
OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} Properties", folder.FolderConfig.Name), folder.FolderConfig));
|
||||||
folder.Save().Dispose();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void OpenProperties(DocVersionInfo dvInfo)
|
private void OpenProperties(DocVersionInfo dvInfo)
|
||||||
{
|
{
|
||||||
using (DocVersion dv = dvInfo.Get())
|
using (DocVersion dv = dvInfo.Get())
|
||||||
{
|
{
|
||||||
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} Properties", dv.DocVersionConfig.Name), dv.DocVersionConfig)) == DialogResult.OK)
|
OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} Properties", dv.DocVersionConfig.Name), dv.DocVersionConfig));
|
||||||
dv.Save().Dispose();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void OpenProperties(ProcedureInfo procInfo)
|
private void OpenProperties(ProcedureInfo procInfo)
|
||||||
{
|
{
|
||||||
using (Procedure proc = procInfo.Get())
|
using (Procedure proc = procInfo.Get())
|
||||||
{
|
{
|
||||||
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} {1} Properties", proc.ProcedureConfig.Number, proc.ProcedureConfig.Title), proc.ProcedureConfig)) == DialogResult.OK)
|
OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(string.Format("{0} {1} Properties", proc.ProcedureConfig.Number, proc.ProcedureConfig.Title), proc.ProcedureConfig));
|
||||||
proc.Save().Dispose();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void OpenProperties(SectionInfo sectInfo)
|
private void OpenProperties(SectionInfo sectInfo)
|
||||||
{
|
{
|
||||||
|
OnSectionShouldClose(this, new vlnTreeSectionInfoEventArgs(sectInfo));
|
||||||
|
|
||||||
using (Section sect = sectInfo.Get())
|
using (Section sect = sectInfo.Get())
|
||||||
{
|
{
|
||||||
string title = null;
|
string title = null;
|
||||||
@ -429,9 +551,8 @@ namespace Volian.Controls.Library
|
|||||||
title = string.Format("{0} {1} Properties", sectInfo.SectionConfig.Number, sectInfo.SectionConfig.Title);
|
title = string.Format("{0} {1} Properties", sectInfo.SectionConfig.Number, sectInfo.SectionConfig.Title);
|
||||||
else
|
else
|
||||||
title = string.Format("{0} Properties", sectInfo.SectionConfig.Title);
|
title = string.Format("{0} Properties", sectInfo.SectionConfig.Title);
|
||||||
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(title, sect.SectionConfig)) == DialogResult.OK)
|
|
||||||
sect.Save().Dispose();
|
OnNodeOpenProperty(this, new vlnTreePropertyEventArgs(title, sect.SectionConfig));
|
||||||
sect.MyContent.Dispose(); // Force Dispose of related content
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
@ -477,11 +598,11 @@ namespace Volian.Controls.Library
|
|||||||
{
|
{
|
||||||
if (newtype == MenuSelections.DocVersion)
|
if (newtype == MenuSelections.DocVersion)
|
||||||
{
|
{
|
||||||
using (DocVersion docversion = DocVersion.MakeDocVersion(parentfolder, "New Document Version", "Title", null, null, null))
|
using (DocVersion docversion = DocVersion.MakeDocVersion(parentfolder, "Working Draft", "Title", null, null, null))
|
||||||
{
|
{
|
||||||
ShowBrokenRules(docversion.BrokenRulesCollection);
|
ShowBrokenRules(docversion.BrokenRulesCollection);
|
||||||
SetLastValues(DocVersionInfo.Get(docversion.VersionID));
|
SetLastValues(DocVersionInfo.Get(docversion.VersionID));
|
||||||
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs("New Document Version", docversion.DocVersionConfig)) == DialogResult.OK)
|
if (OnNodeOpenProperty(this, new vlnTreePropertyEventArgs("Working Draft", 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.
|
SelectedNode.Nodes.Add(tn); // add tree node to end of list.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user