329 lines
12 KiB
C#
329 lines
12 KiB
C#
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
|
|
/// <summary>
|
|
/// Container
|
|
/// </summary>
|
|
public DisplayTabControl MyDisplayTabControl
|
|
{
|
|
get { return _MyDisplayTabControl; }
|
|
//set { _MyDisplayTabControl = value; }
|
|
}
|
|
/// <summary>
|
|
/// StepPanel contained in this control.
|
|
/// </summary>
|
|
public Volian.Controls.Library.StepPanel MyStepPanel
|
|
{
|
|
get { return _MyStepPanel; }
|
|
//set { _MyStepPanel = value; }
|
|
}
|
|
/// <summary>
|
|
/// related DisplayTabItem
|
|
/// </summary>
|
|
public DisplayTabItem MyDisplayTabItem
|
|
{
|
|
get { return _MyDisplayTabItem; }
|
|
set { _MyDisplayTabItem = value; }
|
|
}
|
|
/// <summary>
|
|
/// Currently Selected ItemInfo
|
|
/// </summary>
|
|
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));
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Currently Selected EditItem
|
|
/// </summary>
|
|
public EditItem SelectedEditItem
|
|
{
|
|
get { return _MyStepPanel.SelectedEditItem; }
|
|
}
|
|
/// <summary>
|
|
/// Procedure ItemInfo
|
|
/// </summary>
|
|
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
|
|
/// <summary>
|
|
/// Setup StepTabRibbon
|
|
/// </summary>
|
|
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;
|
|
}
|
|
/// <summary>
|
|
/// Setup this within control
|
|
/// </summary>
|
|
private void SetupStepTabPanel()
|
|
{
|
|
Dock = System.Windows.Forms.DockStyle.Fill;
|
|
this.Enter += new EventHandler(StepTabPanel_Enter);
|
|
}
|
|
/// <summary>
|
|
/// Setup StepPanel
|
|
/// </summary>
|
|
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; }
|
|
}
|
|
/// <summary>
|
|
/// Occurs when the user clicks on a StepTabPanel
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
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;
|
|
}
|
|
/// <summary>
|
|
/// Occurs when the cursor moves onto or off of a link
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
void _MyStepPanel_LinkActiveChanged(object sender, StepPanelLinkEventArgs args)
|
|
{
|
|
_MyDisplayTabControl.OnLinkActiveChanged(sender, args);
|
|
}
|
|
/// <summary>
|
|
/// Occurs when the user chooses to add a transition
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
void _MyStepPanel_LinkInsertTran(object sender, StepPanelLinkEventArgs args)
|
|
{
|
|
_MyDisplayTabControl.OnLinkInsertTran(sender, args);
|
|
}
|
|
/// <summary>
|
|
/// Occurs when the user chooses to add an RO
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
void _MyStepPanel_LinkInsertRO(object sender, StepPanelLinkEventArgs args)
|
|
{
|
|
_MyDisplayTabControl.OnLinkInsertRO(sender, args);
|
|
}
|
|
/// <summary>
|
|
/// Occurs when the user chosses to modify a transition
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
void _MyStepPanel_LinkModifyTran(object sender, StepPanelLinkEventArgs args)
|
|
{
|
|
_MyDisplayTabControl.OnLinkModifyTran(sender, args);
|
|
}
|
|
/// <summary>
|
|
/// Occurs when the user chooses to Modify an RO
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
void _MyStepPanel_LinkModifyRO(object sender, StepPanelLinkEventArgs args)
|
|
{
|
|
_MyDisplayTabControl.OnLinkModifyRO(sender, args);
|
|
}
|
|
/// <summary>
|
|
/// Occurs when the Selected Item changes
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
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);
|
|
//}
|
|
|
|
/// <summary>
|
|
/// Occurs when the user clicks on the Attachment Expander
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
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;
|
|
}
|
|
/// <summary>
|
|
/// Occurs when the user clicks on the tab next to an item
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
void _MyStepPanel_ItemClick(object sender, StepPanelEventArgs args)
|
|
{
|
|
_MyDisplayTabControl.OnItemClick(sender, args);
|
|
}
|
|
/// <summary>
|
|
/// Occurs when the user clicks on an item
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
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
|
|
}
|
|
}
|