diff --git a/PROMS/VEPROMS User Interface/frmVEPROMS.cs b/PROMS/VEPROMS User Interface/frmVEPROMS.cs index 6dbb00de..49a9d109 100644 --- a/PROMS/VEPROMS User Interface/frmVEPROMS.cs +++ b/PROMS/VEPROMS User Interface/frmVEPROMS.cs @@ -32,20 +32,21 @@ namespace VEPROMS private bool _panelExpandedChanging = false; Color _CommentTitleBckColor; DocVersionInfo _SelectedDVI = null; - StepTabPanel _SelectedStepTabPanel=null; + StepTabPanel _SelectedStepTabPanel = null; public FindReplace dlgFindReplace = null; public StepTabPanel SelectedStepTabPanel { - get + get { - return _SelectedStepTabPanel; + return _SelectedStepTabPanel; } set { _SelectedStepTabPanel = value; if (value == null) // DSO Tab Panel { + //dlgFindReplace.Visible = false; // Find/Replace dialog should not be visable for DSO tab panels if (tc.SelectedDisplayTabItem != null && tc.SelectedDisplayTabItem.MyItemInfo != null) // 2nd part is for unassociated libdocs SelectedDVI = tc.SelectedDisplayTabItem.MyItemInfo.ActiveParent.ActiveParent as DocVersionInfo; else @@ -58,15 +59,15 @@ namespace VEPROMS public DocVersionInfo SelectedDVI { get { return _SelectedDVI; } - set - { - if (_SelectedDVI != value) - { - _SelectedDVI = value; - _SelectedROFst = null; - } - InitiateSearch(false); - } + set + { + if (_SelectedDVI != value) + { + _SelectedDVI = value; + _SelectedROFst = null; + } + InitiateSearch(false); + } } // TODO: Should the following be an info // For the initial release, we are assuming there will be only one rofst fro a docversion. Changes @@ -74,11 +75,11 @@ namespace VEPROMS private ROFstInfo _SelectedROFst; public ROFstInfo SelectedROFst { - get - { - if(_SelectedROFst == null && SelectedDVI != null) + get + { + if (_SelectedROFst == null && SelectedDVI != null) _SelectedROFst = SelectedDVI.DocVersionAssociations[0].MyROFst; - return _SelectedROFst; + return _SelectedROFst; } set { _SelectedROFst = value; } } @@ -131,8 +132,8 @@ namespace VEPROMS if (!btnAnnoDetailsPushPin.Checked) epAnnotations.Expanded = false; infoPanel.Expanded = false; - toolsPanel.Expanded = false; - ribbonControl1.ExpandedChanged +=new EventHandler(ribbonControl1_ExpandedChanged); + toolsPanel.Expanded = false; + ribbonControl1.ExpandedChanged += new EventHandler(ribbonControl1_ExpandedChanged); dlgFindReplace = new FindReplace(); } @@ -148,7 +149,7 @@ namespace VEPROMS //si.RemoveItem(); //return true; } - + private void frmVEPROMS_FormClosing(object sender, FormClosingEventArgs e) { // Save the location and size of the VE-PROMS appication for this user @@ -305,8 +306,8 @@ namespace VEPROMS /// //private void tv_Click(object sender, EventArgs e) //{ - //tv.Enabled = false; - //tmrTreeView.Enabled = true; + //tv.Enabled = false; + //tmrTreeView.Enabled = true; //} /// /// This opens nodes if the mouse is within the bounds of a node. @@ -330,6 +331,8 @@ namespace VEPROMS } else { + if (tn != null && tn.Bounds.Left < newPoint.X + 30) + return; if (tc.SelectedDisplayTabItem != null && tc.SelectedDisplayTabItem.SelectedItemInfo != null) { tv.AdjustTree(tc.SelectedDisplayTabItem.SelectedItemInfo); @@ -395,7 +398,7 @@ namespace VEPROMS // ii = ItemInfo.Get(tmp.ItemID); // if (!ii.IsStepSection) tc.CloseWordItem(ii); //} - + frmSectionProperties frmsec = new frmSectionProperties(args.SectionConfig); dr = frmsec.ShowDialog(); if (dr == DialogResult.OK && displayLibDocs.LibDocList != null) @@ -407,11 +410,11 @@ namespace VEPROMS } this.Cursor = Cursors.Default; return dr; - } + } #endregion - #endregion - #region ColorStuff - /// + #endregion + #region ColorStuff + /// /// Get a System.Drawing.Color from an Argb or color name /// /// Color Name or "[(alpha,)red,green,blue]" @@ -607,9 +610,9 @@ namespace VEPROMS /// private void btnSimStps_Click(object sender, EventArgs e) { - //infoPanel.Expanded = true; - //infoTabs.SelectedTab = toolstabResults; - //btnSimStpsRslt.Checked = true; + //infoPanel.Expanded = true; + //infoTabs.SelectedTab = toolstabResults; + //btnSimStpsRslt.Checked = true; } #endregion @@ -651,7 +654,7 @@ namespace VEPROMS if (!epProcedures.Expanded) // If panel not expanded - expand it. { epProcedures.Expanded = true; - if(tv.Nodes.Count > 0 && tv.SelectedNode==null) + if (tv.Nodes.Count > 0 && tv.SelectedNode == null) tv.SelectedNode = tv.Nodes[0]; tv.Focus(); } @@ -669,7 +672,7 @@ namespace VEPROMS if (vtn == null) return; // nothing was selected. if (btnNew.SubItems.Count > 0) return; // submenu will be displayed vtn.Expand(); - + // Determine type of 'new' based on tree node's object type. The // only options here are those that would not have created, based on // containers, a submenu (see the office2007buttonstartbutton1_click code) @@ -690,7 +693,7 @@ namespace VEPROMS // All other types are handled with sub-menus. } - + /// /// Options button on the dialog that appears when the V icon is clicked (top left of application window) /// note that the "V icon" is also called the Office 2007 Start Button @@ -725,7 +728,7 @@ namespace VEPROMS displayRO.MyROFST = SelectedROFst; displayRO.MyRTB = (SelectedStepTabPanel == null) ? null : SelectedStepTabPanel.MyStepPanel.SelectedStepItem.MyStepRTB; displayRO.TabControl = tc; - + displayRO.ProgressBar = bottomProgBar; } #endregion @@ -784,7 +787,7 @@ namespace VEPROMS private void tc_WordSectionDeleted(object sender, WordSectionEventArgs args) { // is it a library document - if so and libdoc panel is visible, update lists on panel. - if ((!args.MySectionInfo.IsStepSection) && ((args.MySectionInfo.MyContent.MyEntry.MyDocument.LibTitle ?? "")!="") && (toolsPanel.Expanded)) + if ((!args.MySectionInfo.IsStepSection) && ((args.MySectionInfo.MyContent.MyEntry.MyDocument.LibTitle ?? "") != "") && (toolsPanel.Expanded)) { if (toolsTabs.SelectedTab == tabItemLibDocs) { @@ -824,6 +827,7 @@ namespace VEPROMS else if (args.PanelTabName == "FndRpl") { dlgFindReplace.InApproved = (_SelectedDVI != null && _SelectedDVI.VersionType == 127); + //dlgFindReplace.Mydocversion = _SelectedDVI; dlgFindReplace.Visible = true; } } @@ -834,7 +838,7 @@ namespace VEPROMS private ItemInfo _CurrentItem = null; private void tc_ItemSelectedChanged(object sender, ItemSelectedChangedEventArgs args) { - + lblEditView.Text = " "; if (args == null) { @@ -876,7 +880,7 @@ namespace VEPROMS } else infotabRO.Visible = infotabTransition.Visible = infotabTags.Visible = true; - + //vlnStackTrace.ShowStack("enter tc_ItemSelectedChanged {0}", _CurrentItem); // When infotabTags is set to Visible, the matching panel also needs to be set to visible // the other panels will appear as they are selected by the user. @@ -892,7 +896,7 @@ namespace VEPROMS _CurrentItem.Deleted += new ItemInfoEvent(_CurrentItem_Deleted); dlgFindReplace.MyStepItem = args.MyStepItem; } - if(tc.SelectedDisplayTabItem != null) + if (tc.SelectedDisplayTabItem != null) SelectedStepTabPanel = ((DisplayTabItem)tc.SelectedDisplayTabItem).MyStepTabPanel; } ctrlAnnotationDetails.UpdateAnnotationGrid(_CurrentItem); @@ -986,31 +990,31 @@ namespace VEPROMS } // if at top, 'VE-PROMS', folder and childfolders below this only // option is to create a new (sub)folder, i.e. no submenu items. - if (fi.ChildFolderCount > 0 && fi.MyParent==null) return; + if (fi.ChildFolderCount > 0 && fi.MyParent == null) return; //if (fi.ChildFolderCount == 0) // submenu folders/docversion //{ - if (fi.MyParent != null) - { - ButtonItem fldbbtn = new ButtonItem("fldbtn", "Folder Before"); - ButtonItem fldabtn = new ButtonItem("fldabtn", "Folder After"); - btnNew.SubItems.Add(fldbbtn); - btnNew.SubItems.Add(fldabtn); - fldbbtn.Click += new EventHandler(fldbbtn_Click); - fldabtn.Click += new EventHandler(fldabtn_Click); - } - ButtonItem fldbtn = new ButtonItem("fldbtn", "Folder"); - btnNew.SubItems.Add(fldbtn); - fldbtn.Click += new EventHandler(fldbtn_Click); - if (fi.ChildFolderCount == 0) - { - ButtonItem dvbtn = new ButtonItem("dvbtn", "Document Version"); - btnNew.SubItems.Add(dvbtn); - dvbtn.Click += new EventHandler(dvbtn_Click); - } - return; + if (fi.MyParent != null) + { + ButtonItem fldbbtn = new ButtonItem("fldbtn", "Folder Before"); + ButtonItem fldabtn = new ButtonItem("fldabtn", "Folder After"); + btnNew.SubItems.Add(fldbbtn); + btnNew.SubItems.Add(fldabtn); + fldbbtn.Click += new EventHandler(fldbbtn_Click); + fldabtn.Click += new EventHandler(fldabtn_Click); + } + ButtonItem fldbtn = new ButtonItem("fldbtn", "Folder"); + btnNew.SubItems.Add(fldbtn); + fldbtn.Click += new EventHandler(fldbtn_Click); + if (fi.ChildFolderCount == 0) + { + ButtonItem dvbtn = new ButtonItem("dvbtn", "Document Version"); + btnNew.SubItems.Add(dvbtn); + dvbtn.Click += new EventHandler(dvbtn_Click); + } + return; //} } - + // DocVersions can only have procedures, so no sub-menu DocVersionInfo dvi = vtn.VEObject as DocVersionInfo; if (dvi != null) return; @@ -1142,15 +1146,15 @@ namespace VEPROMS { displayTags.MyRTB = (SelectedStepTabPanel == null) ? null : SelectedStepTabPanel.MyStepPanel.SelectedStepItem.MyStepRTB; } - //private void tv_SectionShouldClose(object sender, vlnTreeSectionInfoEventArgs args) - //{ - // if (!args.MySectionInfo.IsStepSection) tc.CloseWordItem(args.MySectionInfo); - //} + //private void tv_SectionShouldClose(object sender, vlnTreeSectionInfoEventArgs args) + //{ + // if (!args.MySectionInfo.IsStepSection) tc.CloseWordItem(args.MySectionInfo); + //} - private void infotabResults_Click(object sender, EventArgs e) - { - toolsPanel.Expanded = true; - InitiateSearch(true); + private void infotabResults_Click(object sender, EventArgs e) + { + toolsPanel.Expanded = true; + InitiateSearch(true); } private void InitiateSearch(bool searchFocus) { @@ -1170,7 +1174,7 @@ namespace VEPROMS private void ribbonControl1_ExpandedChanged(object sender, EventArgs e) { - Console.WriteLine("Size {0}",ribbonControl1.Expanded); + Console.WriteLine("Size {0}", ribbonControl1.Expanded); // TODO: Need to send message to all StepTabPanels and tell them to minimize their ribbons. tc.RibbonExpanded = ribbonControl1.Expanded; } @@ -1257,9 +1261,5 @@ namespace VEPROMS StepRTB.MyFontFamily = cmbFont.SelectedValue as FontFamily; } - //protected override void WndProc(ref Message m) - //{ - // base.WndProc(ref m); - //} } } diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs index b536e4be..fd8da29a 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemExt.cs @@ -1078,7 +1078,7 @@ namespace VEPROMS.CSLA.Library string number = (MyContent.Type >= 20000 ? Ordinal.ToString() + "." : ((MyContent.Number ?? "") == "" ? MyContent.Text : MyContent.Number)); ItemInfo parent = this; while (parent.MyPrevious != null) parent = parent.MyPrevious; - if (parent.ItemPartCount == 0) + if (parent.ItemPartCount <= 0 || parent.ItemParts.Count == 0) return null; else { diff --git a/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs b/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs index 43bd6090..c05f7f8c 100644 --- a/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs +++ b/PROMS/VEPROMS.CSLA.Library/Extension/ItemInsertExt.cs @@ -183,6 +183,20 @@ namespace VEPROMS.CSLA.Library internal void OnDeleted(object sender) { if (Deleted != null) Deleted(sender); + if (MyParent != null) MyParent.OnChildrenDeleted(sender); + } + public event ItemInfoEvent ChildrenDeleted; + internal void OnChildrenDeleted(object sender) + { + if (_CacheByPrimaryKey.ContainsKey(ItemID.ToString())) + { + List itmlst = _CacheByPrimaryKey[ItemID.ToString()]; + foreach (ItemInfo itm in itmlst) + if (itm.ChildrenDeleted != null) + { + itm.ChildrenDeleted(itm); + } + } } public event ItemInfoInsertEvent NewSiblingAfter; internal void OnNewSiblingAfter(object sender, ItemInfoInsertEventArgs args) diff --git a/PROMS/VEPROMS.CSLA.Library/VEObjects/VETreeNode.cs b/PROMS/VEPROMS.CSLA.Library/VEObjects/VETreeNode.cs index cc293a38..ea735b34 100644 --- a/PROMS/VEPROMS.CSLA.Library/VEObjects/VETreeNode.cs +++ b/PROMS/VEPROMS.CSLA.Library/VEObjects/VETreeNode.cs @@ -323,12 +323,24 @@ namespace VEPROMS.CSLA.Library if (myItemInfo != null) { myItemInfo.Deleted += new ItemInfoEvent(myItemInfo_Deleted); + myItemInfo.ChildrenDeleted += new ItemInfoEvent(myItemInfo_ChildrenDeleted); myItemInfo.MyContent.Changed += new ContentInfoEvent(MyContent_Changed); myItemInfo.NewSiblingAfter += new ItemInfoInsertEvent(myItemInfo_NewSiblingAfter); myItemInfo.NewSiblingBefore += new ItemInfoInsertEvent(myItemInfo_NewSiblingBefore); myItemInfo.NewChild += new ItemInfoInsertEvent(myItemInfo_NewChild); } } + + void myItemInfo_ChildrenDeleted(object sender) + { + //Console.WriteLine("Fix Children"); + ItemInfo myItemInfo = VEObject as ItemInfo; + //if (Nodes.Count > 1) + // Console.WriteLine("{0}, {1}",Nodes[0], Nodes[1]); + + if (!myItemInfo.HasChildren && !(Nodes[0] is VETreeNode)) + Nodes.Clear(); + } void myItemInfo_NewChild(object sender, ItemInfoInsertEventArgs args) { bool isExpanded = IsExpanded; @@ -337,7 +349,8 @@ namespace VEPROMS.CSLA.Library Nodes.Clear(); _ChildrenLoaded = false; ResetNode("Dummy myItemInfo_NewChild"); - if (isExpanded) Expand(); + //if (isExpanded) Expand(); + Collapse(); } void myItemInfo_NewSiblingBefore(object sender, ItemInfoInsertEventArgs args) { diff --git a/PROMS/Volian.Controls.Library/vlnTreeView.cs b/PROMS/Volian.Controls.Library/vlnTreeView.cs index c0e46c6b..967ece45 100644 --- a/PROMS/Volian.Controls.Library/vlnTreeView.cs +++ b/PROMS/Volian.Controls.Library/vlnTreeView.cs @@ -1637,9 +1637,12 @@ namespace Volian.Controls.Library { // start at the top parent and walk down the nodes to find child VETreeNode node = FindNodeAndExpand(selectedItem); - _AdjustingTree = true; - this.SelectedNode = node; - _AdjustingTree = false; + if (node != null) + { + _AdjustingTree = true; + this.SelectedNode = node; + _AdjustingTree = false; + } } public VETreeNode FindNodeAndExpand(IVEDrillDownReadOnly selectedItem) { @@ -1648,15 +1651,23 @@ namespace Volian.Controls.Library return (VETreeNode)this.Nodes[0]; // Return the top node } VETreeNode parent = FindNodeAndExpand(selectedItem.ActiveParent); + if (parent == null) return null; if (!parent.IsExpanded) parent.Expand(); - foreach (VETreeNode child in parent.Nodes) - if (CompareVEObject(child.VEObject, selectedItem)) + foreach (TreeNode childNode in parent.Nodes) + { + VETreeNode child = childNode as VETreeNode; + if (child != null && CompareVEObject(child.VEObject, selectedItem)) return child; - foreach (VETreeNode child in parent.Nodes) - foreach (VETreeNode grandchild in child.Nodes) - if (CompareVEObject(grandchild.VEObject, selectedItem)) - return grandchild; + } + foreach (TreeNode childNode in parent.Nodes) + { + VETreeNode child = childNode as VETreeNode; + if (child.VEObject is PartInfo) + foreach (VETreeNode grandchild in child.Nodes) + if (CompareVEObject(grandchild.VEObject, selectedItem)) + return grandchild; + } return null; } public bool CompareVEObject(IVEDrillDownReadOnly obj1, IVEDrillDownReadOnly obj2)