using System; using System.ComponentModel; using System.Collections.Generic; using System.Diagnostics; using System.Text; using System.Drawing; using VEPROMS.CSLA.Library; using Volian.Controls.Library; using System.Windows.Forms; using JR.Utils.GUI.Forms; namespace Volian.Controls.Library { public partial class StepTabPanel : DevComponents.DotNetBar.PanelDockContainer { #region Private Fields private DisplayTabControl _MyDisplayTabControl; private StepTabRibbon _MyStepTabRibbon; public StepTabRibbon MyStepTabRibbon { get { return _MyStepTabRibbon; } set { _MyStepTabRibbon = value; } } private StepPanel _MyStepPanel; private DisplayTabItem _MyDisplayTabItem; #endregion #region Properties /// /// Container /// public DisplayTabControl MyDisplayTabControl { get { return _MyDisplayTabControl; } //set { _MyDisplayTabControl = value; } } /// /// StepPanel contained in this control. /// public Volian.Controls.Library.StepPanel MyStepPanel { get { return _MyStepPanel; } //set { _MyStepPanel = value; } } /// /// related DisplayTabItem /// public DisplayTabItem MyDisplayTabItem { get { return _MyDisplayTabItem; } set { _MyDisplayTabItem = value; } } /// /// Currently Selected ItemInfo /// public ItemInfo SelectedItemInfo { get { return _MyStepPanel.SelectedItemInfo; } set { _MyStepPanel.SelectedEditItem = _MyStepPanel.GetEditItem(value); if (_MyStepPanel.SelectedEditItem == null) { FlexibleMessageBox.Show("The selected item is not available in the editor. One possible cause is that the data is 'not editable', check the section properties 'Editable Data' checkbox.", "Inaccessible Data", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } if (_MyStepPanel.SelectedEditItem != null) _MyStepPanel.SelectedEditItem.ItemSelect(); if (!_MyStepPanel.ItemSelectionChangeShown) _MyStepPanel.OnItemSelectedChanged(this, new ItemSelectedChangedEventArgs(_MyStepPanel.SelectedEditItem)); } } /// /// Currently Selected EditItem /// public EditItem SelectedEditItem { get { return _MyStepPanel.SelectedEditItem; } } /// /// Procedure ItemInfo /// public ItemInfo MyProcedureItemInfo { get { return _MyStepPanel.MyProcedureItemInfo; } set { _MyStepPanel.MyProcedureItemInfo = value; } } private String _SearchString; public String SearchString { get { return _SearchString; } set { _SearchString = value; FindSearchString(); } } public void FindSearchString() { if (SelectedEditItem == null) return;// Uneditable Data if (SelectedEditItem.MyItemInfo.IsTable) { // if not ro table, just make the mysteprtb active. GridItem grd = SelectedEditItem as GridItem; grd.SetSearchCell(SearchString); } // convert the '-' to the unicode non-breaking dash (\u8209? or \u2011 hex) // and the '\' to the unicode backslash sybol (\u9586? or \u2572 hex) if (!SelectedEditItem.MyStepRTB.IsRoTable) SelectedEditItem.MyStepRTB.Find(SearchString.Replace('-', '\u2011').Replace('\\','\u2572')); } #endregion #region Contructors public StepTabPanel(DisplayTabControl myDisplayTabControl) { _MyDisplayTabControl = myDisplayTabControl; InitializeComponent(); SetupStepTabPanel(); SetupStepPanel(); SetupStepTabRibbon(); } #endregion #region Private Methods - Setup /// /// Setup StepTabRibbon /// private void SetupStepTabRibbon() { _MyStepTabRibbon = new StepTabRibbon(); _MyStepTabRibbon.Dock = System.Windows.Forms.DockStyle.Top; _MyStepTabRibbon.Location = new System.Drawing.Point(0, 0); _MyStepTabRibbon.Name = "displayTabRibbon1"; //_MyTabRibbon.MyDisplayRTB = null; _MyStepTabRibbon.MyEditItem = null; this.Controls.Add(_MyStepTabRibbon); _MyStepTabRibbon.Expanded = _MyDisplayTabControl.RibbonExpanded; } /// /// Setup this within control /// private void SetupStepTabPanel() { Dock = System.Windows.Forms.DockStyle.Fill; this.Enter += new EventHandler(StepTabPanel_Enter); } /// /// Setup StepPanel /// private void SetupStepPanel() { //this.Font = new Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0))); _MyStepPanel = new Volian.Controls.Library.StepPanel(this.components); this.Controls.Add(_MyStepPanel); // // _MyPanel // _MyStepPanel.AutoScroll = true; _MyStepPanel.Dock = System.Windows.Forms.DockStyle.Fill; _MyStepPanel.LinkClicked +=new Volian.Controls.Library.StepPanelLinkEvent(_MyStepPanel_LinkClicked); _MyStepPanel.LinkActiveChanged += new Volian.Controls.Library.StepPanelLinkEvent(_MyStepPanel_LinkActiveChanged); _MyStepPanel.LinkInsertTran += new StepPanelLinkEvent(_MyStepPanel_LinkInsertTran); _MyStepPanel.LinkInsertRO += new StepPanelLinkEvent(_MyStepPanel_LinkInsertRO); _MyStepPanel.LinkModifyTran += new StepPanelLinkEvent(_MyStepPanel_LinkModifyTran); _MyStepPanel.LinkModifyRO += new StepPanelLinkEvent(_MyStepPanel_LinkModifyRO); _MyStepPanel.ItemClick +=new Volian.Controls.Library.StepPanelEvent(_MyStepPanel_ItemClick); _MyStepPanel.AttachmentClicked += new Volian.Controls.Library.StepPanelAttachmentEvent(_MyStepPanel_AttachmentClicked); _MyStepPanel.ItemSelectedChanged += new ItemSelectedChangedEvent(_MyStepPanel_ItemSelectedChanged); //_MyStepPanel.ModeChange += new Volian.Controls.Library.StepPanelModeChangeEvent(_MyStepPanel_ModeChange); _MyStepPanel.TabDisplay += new Volian.Controls.Library.StepPanelTabDisplayEvent(_MyStepPanel_TabDisplay); _MyStepPanel.WordSectionClose += new StepPanelWordSectionCloseEvent(_MyStepPanel_WordSectionClose); _MyStepPanel.WordSectionDeleted += new StepPanelWordSectionDeletedEvent(_MyStepPanel_WordSectionDeleted); _MyStepPanel.ItemPasted += new StepPanelItemPastedEvent(_MyStepPanel_ItemPasted); } #endregion #region Event Handlers private bool _ShowingItem = false; public bool ShowingItem { get { return _ShowingItem; } set { _ShowingItem = value; } } /// /// Occurs when the user clicks on a StepTabPanel /// /// /// private void StepTabPanel_Enter(object sender, EventArgs e) { if (_ShowingItem) return; // B2019-029: added to save a dirty annotation when the btnsave was not clicked (user just moves to another steprtb but had added annotationi text): if (MyDisplayTabControl.MyAnnotationDetails.AnnotationDirty) MyDisplayTabControl.MyAnnotationDetails.SaveAnnotation(); _ShowingItem = true; //if (ItemSelected != null) _MyStepPanel.ItemShow(); if (_MyStepPanel.MyStepTabPanel != null) // B2014-024 if MyStepTabPanel is null then we are in the process of closing the procedure in that step panel _MyStepPanel.MyStepTabPanel.MyStepTabRibbon.SetUpdRoValBtn(_MyStepPanel.MyStepTabPanel.MyStepTabRibbon.NewerRoFst()); _ShowingItem = false; _MyDisplayTabControl.SelectedDisplayTabItem = MyDisplayTabItem; } /// /// Occurs when the cursor moves onto or off of a link /// /// /// void _MyStepPanel_LinkActiveChanged(object sender, StepPanelLinkEventArgs args) { _MyDisplayTabControl.OnLinkActiveChanged(sender, args); } /// /// Occurs when the user chooses to add a transition /// /// /// void _MyStepPanel_LinkInsertTran(object sender, StepPanelLinkEventArgs args) { _MyDisplayTabControl.OnLinkInsertTran(sender, args); } /// /// Occurs when the user chooses to add an RO /// /// /// void _MyStepPanel_LinkInsertRO(object sender, StepPanelLinkEventArgs args) { _MyDisplayTabControl.OnLinkInsertRO(sender, args); } /// /// Occurs when the user chosses to modify a transition /// /// /// void _MyStepPanel_LinkModifyTran(object sender, StepPanelLinkEventArgs args) { _MyDisplayTabControl.OnLinkModifyTran(sender, args); } /// /// Occurs when the user chooses to Modify an RO /// /// /// void _MyStepPanel_LinkModifyRO(object sender, StepPanelLinkEventArgs args) { _MyDisplayTabControl.OnLinkModifyRO(sender, args); } /// /// Occurs when the Selected Item changes /// /// /// void _MyStepPanel_ItemSelectedChanged(object sender, ItemSelectedChangedEventArgs args) { _MyStepTabRibbon.MyEditItem = args.MyEditItem; _MyDisplayTabControl.OnItemSelectedChanged(sender, args); } // Occurs when the Mode Changes //void _MyStepPanel_ModeChange(object sender, StepRTBModeChangeEventArgs args) //{ // _MyDisplayTabControl.OnModeChange(sender, args); //} /// /// Occurs when the user clicks on the Attachment Expander /// /// /// private ItemInfo curDSOItem = null; void _MyStepPanel_AttachmentClicked(object sender, StepPanelAttachmentEventArgs args) { if (curDSOItem != null) return; curDSOItem = args.MyEditItem.MyItemInfo; _MyDisplayTabControl.OpenItem(args.MyEditItem.MyItemInfo); curDSOItem = null; } /// /// Occurs when the user clicks on the tab next to an item /// /// /// void _MyStepPanel_ItemClick(object sender, StepPanelEventArgs args) { _MyDisplayTabControl.OnItemClick(sender, args); } /// /// Occurs when the user clicks on an item /// /// /// void _MyStepPanel_LinkClicked(object sender, StepPanelLinkEventArgs args) { if (args.MyLinkText.LinkInfoText.IndexOf("Transition") > -1) { // B2018-002 - Invalid Transitions - Don't fail on invalid transition if (args.MyLinkText.MyTransitionInfo == null) { FlexibleMessageBox.Show("This transition is invalid\r\n\r\nDelete it and replace it with \r\na valid transition", "Invalid Transition", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; // Not a valid transition } ItemInfo item = args.MyLinkText.MyTranToItemInfo; if (item == null || item.MyDocVersion == null || (item.PreviousID == null && item.ItemPartCount == 0 && item.ItemDocVersionCount == 0)) { FlexibleMessageBox.Show("This transition is invalid", "Invalid Transition", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; // Not a valid transition } _MyDisplayTabControl.OpenItem(item); } else Console.WriteLine("Bring Up roeditor"); //TODO: Need to bring up roeditor or infopanel } void _MyStepPanel_TabDisplay(object sender, StepPanelTabDisplayEventArgs args) { _MyDisplayTabControl.OnPanelTabDisplay(sender, args); } void _MyStepPanel_WordSectionClose(object sender, WordSectionEventArgs args) { _MyDisplayTabControl.OnWordSectionClose(sender, args); } void _MyStepPanel_WordSectionDeleted(object sender, WordSectionEventArgs args) { _MyDisplayTabControl.OnWordSectionDeleted(sender, args); } void _MyStepPanel_ItemPasted(object sender, vlnTreeItemInfoPasteEventArgs args) { _MyDisplayTabControl.OnItemPaste(sender, args); } public override string ToString() { return string.Format("StepTabPanel Procedure Item {0} {1}", MyDisplayTabItem.MyItemInfo.ItemID, MyDisplayTabItem.MyItemInfo.DisplayNumber); } #endregion } }