381 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			381 lines
		
	
	
		
			14 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 JR.Utils.GUI.Forms;
 | 
						|
 | 
						|
namespace Volian.Controls.Library
 | 
						|
{
 | 
						|
	public partial class DisplayTabItem : DevComponents.DotNetBar.DockContainerItem
 | 
						|
	{
 | 
						|
		#region Private Fields
 | 
						|
		private DisplayTabControl _MyDisplayTabControl;
 | 
						|
		private ItemInfo _MyItemInfo;
 | 
						|
		private StepTabPanel _MyStepTabPanel;
 | 
						|
		private string _MyKey;
 | 
						|
		private DSOTabPanel _MyDSOTabPanel;
 | 
						|
		private DocumentInfo _MyDocumentInfo;
 | 
						|
 | 
						|
 | 
						|
		#endregion
 | 
						|
		#region Properties
 | 
						|
		/// <summary>
 | 
						|
		/// ItemInfo associated with this DisplayTabItem
 | 
						|
		/// </summary>
 | 
						|
		private int _OwnerID;
 | 
						|
		public int OwnerID
 | 
						|
		{
 | 
						|
			get { return _OwnerID; }
 | 
						|
			set { _OwnerID = value; }
 | 
						|
		}
 | 
						|
		public ItemInfo MyItemInfo
 | 
						|
		{
 | 
						|
			get { return _MyItemInfo; }
 | 
						|
			//set { _MyItemInfo = value; }
 | 
						|
		}
 | 
						|
		/// <summary>
 | 
						|
		/// get Key Either: 
 | 
						|
		///		"Item - " + Procedure ItemID for step pages
 | 
						|
		///		"Doc - " + DocumentID for Word Documents
 | 
						|
		/// </summary>
 | 
						|
		public string MyKey
 | 
						|
		{
 | 
						|
			get { return _MyKey; }
 | 
						|
		}
 | 
						|
		/// <summary>
 | 
						|
		/// Related StepTabPanel for a Step page
 | 
						|
		/// </summary>
 | 
						|
		public StepTabPanel MyStepTabPanel
 | 
						|
		{
 | 
						|
			get { return _MyStepTabPanel; }
 | 
						|
			set { _MyStepTabPanel = value; }
 | 
						|
		}
 | 
						|
		/// <summary>
 | 
						|
		/// Related DSOTabPanle for a Word page
 | 
						|
		/// </summary>
 | 
						|
		public DSOTabPanel MyDSOTabPanel
 | 
						|
		{
 | 
						|
			get { return _MyDSOTabPanel; }
 | 
						|
			set { _MyDSOTabPanel = value; }
 | 
						|
		}
 | 
						|
		private string _MyUserRole;
 | 
						|
		public string MyUserRole
 | 
						|
		{
 | 
						|
			get { return _MyUserRole; }
 | 
						|
			set { _MyUserRole = value; }
 | 
						|
		}
 | 
						|
		private bool _Closed = false;
 | 
						|
		public bool Closed
 | 
						|
		{
 | 
						|
			get { return _Closed; }
 | 
						|
			set { _Closed = value; }
 | 
						|
		}
 | 
						|
		/// <summary>
 | 
						|
		/// Current SelectedItemInfo for this page
 | 
						|
		/// </summary>
 | 
						|
		public ItemInfo SelectedItemInfo
 | 
						|
		{
 | 
						|
			get
 | 
						|
			{
 | 
						|
				if (_MyStepTabPanel == null) return null;
 | 
						|
				return _MyStepTabPanel.SelectedItemInfo;
 | 
						|
			}
 | 
						|
			set
 | 
						|
			{// B2018-074 Don't crash if opening MSWord section from Tools window in Debug Mode
 | 
						|
				if (_MyStepTabPanel != null)
 | 
						|
					_MyStepTabPanel.SelectedItemInfo = value;
 | 
						|
			}
 | 
						|
		}
 | 
						|
		/// <summary>
 | 
						|
		/// Current DocumentInfo for this page - only set if library document
 | 
						|
		/// </summary>
 | 
						|
		public DocumentInfo MyDocumentInfo
 | 
						|
		{
 | 
						|
			get { return _MyDocumentInfo; }
 | 
						|
		}
 | 
						|
		#endregion
 | 
						|
		#region Constructors
 | 
						|
		public DisplayTabItem(IContainer container, DisplayTabControl myDisplayTabControl, ItemInfo myItemInfo, string myKey)
 | 
						|
		{
 | 
						|
			_MyItemInfo = myItemInfo;
 | 
						|
			if (MyItemInfo.MyContent.MyEntry == null)
 | 
						|
				OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyProcedure.ItemID, CheckOutType.Procedure);
 | 
						|
			else
 | 
						|
				OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myItemInfo.MyContent.MyEntry.DocID, CheckOutType.Document);
 | 
						|
			//Console.WriteLine("DisplayTabItem");
 | 
						|
			_MyKey = myKey;
 | 
						|
			_MyDisplayTabControl = myDisplayTabControl;
 | 
						|
			container.Add(this);
 | 
						|
			InitializeComponent();
 | 
						|
			this.Click += new EventHandler(DisplayTabItem_Click);
 | 
						|
			if (myItemInfo.MyContent.MyEntry == null)
 | 
						|
				SetupStepTabPanel();
 | 
						|
			else
 | 
						|
				SetupDSOTabPanel();
 | 
						|
			SetupSecurity(myItemInfo);
 | 
						|
			// B2022-055 assigning the Name caused a duplicate name error
 | 
						|
			//           we found that the procedure tab control remained in the Control list after the procedure was closed
 | 
						|
			//           later on we need to find out why it isn't removed when the procedure is closed
 | 
						|
			//if (MyDSOTabPanel == null || MyDSOTabPanel.MyEdWord != null) // B2017-219 check needed if we could not open a word attachment
 | 
						|
			//{
 | 
						|
			//	//Name = string.Format("DisplayTabItem {0}", myItemInfo.ItemID);
 | 
						|
			//}
 | 
						|
 | 
						|
		}
 | 
						|
		private bool MesssageShown = false;
 | 
						|
		public void SetupSecurity(ItemInfo myItem)
 | 
						|
		{
 | 
						|
			UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID);
 | 
						|
 | 
						|
			if (ui == null)
 | 
						|
			{
 | 
						|
				if (!MesssageShown)
 | 
						|
				{
 | 
						|
					FlexibleMessageBox.Show("Security has not been defined for PROMS.  All functionality has been defaulted to the lowest level for all users until security is defined.", "no security defined", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
 | 
						|
					MesssageShown = true;
 | 
						|
				}
 | 
						|
				_MyStepTabPanel.MyStepTabRibbon.SetupReviewerMode();
 | 
						|
			}
 | 
						|
			else if (ui.IsAdministrator())
 | 
						|
			{
 | 
						|
				if (_MyStepTabPanel != null)
 | 
						|
					_MyStepTabPanel.MyStepTabRibbon.SetupAdminMode();
 | 
						|
 | 
						|
				MyUserRole = Volian.Base.Library.VlnSettings.UserID + " - Administrator";
 | 
						|
			}
 | 
						|
			else if (ui.IsSetAdministrator(myItem.MyDocVersion))
 | 
						|
			{
 | 
						|
				if (_MyStepTabPanel != null)
 | 
						|
					_MyStepTabPanel.MyStepTabRibbon.SetupSetAdminMode();
 | 
						|
				MyUserRole = Volian.Base.Library.VlnSettings.UserID + " - Set Administrator";
 | 
						|
			}
 | 
						|
			else if (ui.IsROEditor(myItem.MyDocVersion) && !ui.IsWriter(myItem.MyDocVersion))
 | 
						|
			{
 | 
						|
				if (_MyStepTabPanel != null)
 | 
						|
					_MyStepTabPanel.MyStepTabRibbon.SetupROEditorMode();
 | 
						|
				MyUserRole = Volian.Base.Library.VlnSettings.UserID + " - RO Editor";
 | 
						|
			}
 | 
						|
			else if (ui.IsWriter(myItem.MyDocVersion))
 | 
						|
			{
 | 
						|
				if (_MyStepTabPanel != null)
 | 
						|
					_MyStepTabPanel.MyStepTabRibbon.SetupWriterMode();
 | 
						|
				MyUserRole = Volian.Base.Library.VlnSettings.UserID + " - Writer";
 | 
						|
			}
 | 
						|
			else if (ui.IsReviewer(myItem.MyDocVersion))
 | 
						|
			{
 | 
						|
				if (_MyStepTabPanel != null)
 | 
						|
					_MyStepTabPanel.MyStepTabRibbon.SetupReviewerMode();
 | 
						|
				MyUserRole = Volian.Base.Library.VlnSettings.UserID + " - Reviewer";
 | 
						|
			}
 | 
						|
			else
 | 
						|
			{
 | 
						|
				if (_MyStepTabPanel != null)
 | 
						|
					_MyStepTabPanel.MyStepTabRibbon.SetupReviewerMode();
 | 
						|
				MyUserRole = Volian.Base.Library.VlnSettings.UserID + " - Reviewer";
 | 
						|
			}
 | 
						|
		}
 | 
						|
		public DisplayTabItem(IContainer container, DisplayTabControl myDisplayTabControl, DocumentInfo myDocumentInfo, string myKey)
 | 
						|
		{
 | 
						|
			OwnerID = myDisplayTabControl.MySessionInfo.CheckOutItem(myDocumentInfo.DocID, CheckOutType.Document);
 | 
						|
			_MyKey = myKey;
 | 
						|
			_MyDisplayTabControl = myDisplayTabControl;
 | 
						|
			_MyDocumentInfo = myDocumentInfo;
 | 
						|
			container.Add(this);
 | 
						|
			InitializeComponent();
 | 
						|
			this.Click += new EventHandler(DisplayTabItem_Click);
 | 
						|
			SetupLibraryDocumentDSOTabPanel();
 | 
						|
			// B2022-055 assigning the Name caused a duplicate name error
 | 
						|
			//           we found that the procedure tab control remained in the Control list after the procedure was closed
 | 
						|
			//           later on we need to find out why it isn't removed when the procedure is closed
 | 
						|
			//Name = string.Format("DisplayTabLibraryDocument {0}", myDocumentInfo.DocID);
 | 
						|
		}
 | 
						|
 | 
						|
		protected override void OnDisplayedChanged()
 | 
						|
		{
 | 
						|
			//Console.WriteLine("=>=>=>=> OnDisplayedChanged");
 | 
						|
			if (_MyStepTabPanel != null)
 | 
						|
				_MyStepTabPanel.MyStepPanel.DisplayItemChanging = true;
 | 
						|
			base.OnDisplayedChanged();
 | 
						|
			if (_MyStepTabPanel != null)
 | 
						|
				_MyStepTabPanel.MyStepPanel.DisplayItemChanging = false;
 | 
						|
			//Console.WriteLine("<=<=<=<= OnDisplayedChanged");
 | 
						|
		}
 | 
						|
 | 
						|
		//void DisplayTabItem_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
 | 
						|
		//{
 | 
						|
		//  Console.WriteLine("DisplayTabItem_MouseUp");
 | 
						|
		//}
 | 
						|
 | 
						|
		//void DisplayTabItem_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
 | 
						|
		//{
 | 
						|
		//  Console.WriteLine("DisplayTabItem_MouseDown");
 | 
						|
		//}
 | 
						|
 | 
						|
		//void DisplayTabItem_LostFocus(object sender, EventArgs e)
 | 
						|
		//{
 | 
						|
		//  Console.WriteLine("DisplayTabItem_LostFocus");
 | 
						|
		//}
 | 
						|
 | 
						|
		//void DisplayTabItem_GotFocus(object sender, EventArgs e)
 | 
						|
		//{
 | 
						|
		//  Console.WriteLine("DisplayTabItem_GotFocus");
 | 
						|
		//}
 | 
						|
		#endregion
 | 
						|
		#region Event Handlers
 | 
						|
		/// <summary>
 | 
						|
		/// Updates SelectedRTBItem when the user selects a DisplayTabItem
 | 
						|
		/// </summary>
 | 
						|
		/// <param name="sender"></param>
 | 
						|
		/// <param name="e"></param>
 | 
						|
		private void DisplayTabItem_Click(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			// Tell the TabControl that the ItemSelected has changed
 | 
						|
			DisplayTabItem myTabItem = sender as DisplayTabItem;
 | 
						|
			if (myTabItem == null) return;
 | 
						|
			StepTabPanel myTabPanel = myTabItem.MyStepTabPanel as StepTabPanel;
 | 
						|
			if (myTabPanel == null) return;
 | 
						|
			if (MyStepTabPanel.SelectedEditItem == null) return;
 | 
						|
			MyStepTabPanel.MyDisplayTabControl.HandleChangeId(MyStepTabPanel.SelectedEditItem.MyItemInfo, myTabItem);
 | 
						|
			_MyDisplayTabControl.OnItemSelectedChanged(this, new ItemSelectedChangedEventArgs(MyStepTabPanel.SelectedEditItem));
 | 
						|
		}
 | 
						|
		#endregion
 | 
						|
		#region private Methods
 | 
						|
		/// <summary>
 | 
						|
		/// Creates and sets-up a StepTabPanel
 | 
						|
		/// </summary>
 | 
						|
		private void SetupStepTabPanel()
 | 
						|
		{
 | 
						|
			((System.ComponentModel.ISupportInitialize)(_MyDisplayTabControl.MyBar)).BeginInit();
 | 
						|
			_MyDisplayTabControl.MyBar.SuspendLayout();
 | 
						|
			_MyStepTabPanel = new StepTabPanel(_MyDisplayTabControl);
 | 
						|
			// 
 | 
						|
			// tabItem
 | 
						|
			// 
 | 
						|
			Control = _MyStepTabPanel;
 | 
						|
			// B2022-055 assigning the Name caused a duplicate name error
 | 
						|
			//           we found that the procedure tab control remained in the Control list after the procedure was closed
 | 
						|
			//           later on we need to find out why it isn't removed when the procedure is closed
 | 
						|
			//Name = "tabItem Item " + _MyItemInfo.ItemID;
 | 
						|
			Text = _MyItemInfo.TabTitle;
 | 
						|
			_MyItemInfo.Changed += new ItemInfoEvent(_MyItemInfo_Changed);
 | 
						|
			Tooltip = _Tooltip = _MyItemInfo.TabToolTip.Replace("\u2011", "-").Replace(@"\u9586?", @"\");
 | 
						|
			MouseMove += new System.Windows.Forms.MouseEventHandler(DisplayTabItem_MouseMove);
 | 
						|
			LostFocus += new EventHandler(DisplayTabItem_LostFocus);
 | 
						|
			//
 | 
						|
			_MyDisplayTabControl.Controls.Add(_MyStepTabPanel);
 | 
						|
			_MyDisplayTabControl.MyBar.Items.Add(this);
 | 
						|
			_MyDisplayTabControl.MyBar.Width = 300; // This triggers the bar to resize itself
 | 
						|
			// 
 | 
						|
			// tabPanel
 | 
						|
			// 
 | 
						|
			_MyStepTabPanel.MyDisplayTabItem = this;
 | 
						|
			((System.ComponentModel.ISupportInitialize)(_MyDisplayTabControl.MyBar)).EndInit();
 | 
						|
			_MyDisplayTabControl.MyBar.ResumeLayout(false);
 | 
						|
			DocVersionInfo dvi = _MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo; //MyRTBItem.MyItemInfo.MyProcedure.ActiveParent as DocVersionInfo;
 | 
						|
			if (dvi == null) return;
 | 
						|
			if (dvi.VersionType > 127)
 | 
						|
				MyStepTabPanel.MyStepPanel.VwMode = E_ViewMode.View;
 | 
						|
			// C2021 - 027: Procedure level PC/PC - add _MyIteminfo to argument list
 | 
						|
			if (dvi.MultiUnitCount > 1)
 | 
						|
				this.MyStepTabPanel.MyStepTabRibbon.SetParentChildCreatePDFButton(dvi.UnitNames, _MyItemInfo); //C2020-013 add parent/child sub menu items for printing specific children (units)
 | 
						|
		}
 | 
						|
		void _MyItemInfo_Changed(object sender)
 | 
						|
		{
 | 
						|
			Text = _MyItemInfo.TabTitle;
 | 
						|
			Tooltip = _Tooltip = _MyItemInfo.TabToolTip.Replace("\u2011", "-").Replace(@"\u9586?", @"\");
 | 
						|
		}
 | 
						|
		void DisplayTabItem_LostFocus(object sender, EventArgs e)
 | 
						|
		{
 | 
						|
			if (Tooltip != _Tooltip)
 | 
						|
				Tooltip = _Tooltip;
 | 
						|
		}
 | 
						|
		private string _Tooltip;
 | 
						|
		public void SetPrivateTooltip(string tt)
 | 
						|
		{
 | 
						|
			_Tooltip = tt;
 | 
						|
		}
 | 
						|
		void DisplayTabItem_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
 | 
						|
		{
 | 
						|
			string newTooltip = e.Y > 30 ? null : _Tooltip;
 | 
						|
			if (Tooltip != newTooltip)
 | 
						|
				Tooltip = newTooltip;
 | 
						|
		}
 | 
						|
		/// <summary>
 | 
						|
		/// Creates and sets-up a DSOTabPanel
 | 
						|
		/// </summary>
 | 
						|
		private void SetupDSOTabPanel()
 | 
						|
		{
 | 
						|
			EntryInfo myEntry = _MyItemInfo.MyContent.MyEntry;
 | 
						|
			UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID);
 | 
						|
			_MyDSOTabPanel = new DSOTabPanel(myEntry.MyDocument, _MyDisplayTabControl, _MyItemInfo, UserInfo.CanEdit(ui, MyItemInfo.MyDocVersion));
 | 
						|
			if (_MyDSOTabPanel.MyEdWord == null) return; // B2017-219 if we could not open the word attachment just return
 | 
						|
			// 
 | 
						|
			// tabItem
 | 
						|
			// 
 | 
						|
			Control = _MyDSOTabPanel;
 | 
						|
			// B2022-055 assigning the Name caused a duplicate name error
 | 
						|
			//           we found that the procedure tab control remained in the Control list after the procedure was closed
 | 
						|
			//           later on we need to find out why it isn't removed when the procedure is closed
 | 
						|
			//Name = "tabItem Item " + _MyItemInfo.ItemID;
 | 
						|
			Text = _MyItemInfo.TabTitle;
 | 
						|
			Tooltip = _Tooltip = _MyItemInfo.TabToolTip.Replace("\u2011", "-").Replace(@"\u9586?", @"\");
 | 
						|
			MouseMove += new System.Windows.Forms.MouseEventHandler(DisplayTabItem_MouseMove);
 | 
						|
			LostFocus += new EventHandler(DisplayTabItem_LostFocus);
 | 
						|
			_MyDisplayTabControl.Controls.Add(_MyDSOTabPanel);
 | 
						|
			DSOTabPanel.IgnoreEnter = true;
 | 
						|
			//Console.WriteLine("AddRange {0}", Name);
 | 
						|
			_MyDisplayTabControl.MyBar.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] {
 | 
						|
			this});
 | 
						|
			// 
 | 
						|
			// tabPanel
 | 
						|
			// 
 | 
						|
			_MyDisplayTabControl.SelectDisplayTabItem(this);
 | 
						|
			_MyDSOTabPanel.MyDisplayTabItem = this;
 | 
						|
			DSOTabPanel.IgnoreEnter = false;
 | 
						|
		}
 | 
						|
		private void SetupLibraryDocumentDSOTabPanel()
 | 
						|
		{
 | 
						|
			UserInfo ui = UserInfo.GetByUserID(OwnerInfo.Get(OwnerID).SessionUserID);
 | 
						|
			// B2016-131 if myiteminfo is null, then the lib doc is not referenced. 
 | 
						|
			//  - Allow editting only if you are an Administrator
 | 
						|
			//  - Cannot check if you are a Writer or Set Aministrator because we don't have a Doc Verion
 | 
						|
			_MyDSOTabPanel = new DSOTabPanel(_MyDocumentInfo, _MyDisplayTabControl, _MyItemInfo, (MyItemInfo != null) ? UserInfo.CanEdit(ui, MyItemInfo.MyDocVersion) : ui.IsAdministrator());
 | 
						|
			// 
 | 
						|
			// tabItem
 | 
						|
			// 
 | 
						|
			Control = _MyDSOTabPanel;
 | 
						|
			// B2022-055 assigning the Name caused a duplicate name error
 | 
						|
			//           we found that the procedure tab control remained in the Control list after the procedure was closed
 | 
						|
			//           later on we need to find out why it isn't removed when the procedure is closed
 | 
						|
			//Name = "tabLibraryDocument " + _MyDocumentInfo.DocID;
 | 
						|
			Text = _MyDocumentInfo.LibTitle;
 | 
						|
			DocumentConfig dc = new DocumentConfig(_MyDocumentInfo);
 | 
						|
			Tooltip = _Tooltip = dc.LibDoc_Comment;
 | 
						|
			MouseMove += new System.Windows.Forms.MouseEventHandler(DisplayTabItem_MouseMove);
 | 
						|
			LostFocus += new EventHandler(DisplayTabItem_LostFocus);
 | 
						|
			_MyDisplayTabControl.Controls.Add(_MyDSOTabPanel);
 | 
						|
			DSOTabPanel.IgnoreEnter = true;
 | 
						|
			_MyDisplayTabControl.MyBar.Items.AddRange(new DevComponents.DotNetBar.BaseItem[] {
 | 
						|
			this});
 | 
						|
			// 
 | 
						|
			// tabPanel
 | 
						|
			// 
 | 
						|
			_MyDisplayTabControl.SelectDisplayTabItem(this);
 | 
						|
			_MyDSOTabPanel.MyDisplayTabItem = this;
 | 
						|
			DSOTabPanel.IgnoreEnter = false;
 | 
						|
		}
 | 
						|
		#endregion
 | 
						|
		public override string ToString()
 | 
						|
		{
 | 
						|
			if (MyDSOTabPanel != null)
 | 
						|
				return MyDSOTabPanel.ToString();
 | 
						|
			if (MyStepTabPanel != null)
 | 
						|
				return MyStepTabPanel.ToString();
 | 
						|
			return "NULL";
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |