152 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.Text;
 | |
| using VEPROMS.CSLA.Library;
 | |
| 
 | |
| namespace Volian.Controls.Library
 | |
| {
 | |
| 	public class MostRecentItemList : List<MostRecentItem>
 | |
| 	{
 | |
| 		private int _MaxItems = 10;
 | |
| 		public int MaxItems
 | |
| 		{
 | |
| 			get { return _MaxItems; }
 | |
| 			set { _MaxItems = value; }
 | |
| 		}
 | |
| 		public new MostRecentItem Add(MostRecentItem myMRI)
 | |
| 		{
 | |
| 			MostRecentItem tmp = null;
 | |
| 			// Look for the ItemID
 | |
| 			foreach (MostRecentItem mri in this)
 | |
| 				if (mri.ItemID == myMRI.ItemID)
 | |
| 					tmp = mri;
 | |
| 			// If it exists - remove it
 | |
| 			if (tmp != null)
 | |
| 				Remove(tmp);
 | |
| 			// Insert it in the first place in the list
 | |
| 			Insert(0, myMRI);
 | |
| 			// If more than MaxItems exist remove the items beyond MaxItems 
 | |
| 			while (Count > MaxItems) RemoveAt(MaxItems);
 | |
| 			return myMRI;
 | |
| 		}
 | |
| 		public MostRecentItem Add(int itemID)
 | |
| 		{
 | |
| 			return Add(new MostRecentItem(ItemInfo.Get(itemID)));
 | |
| 		}
 | |
| 		public MostRecentItem Add(ItemInfo myItem)
 | |
| 		{
 | |
| 			return Add(new MostRecentItem(myItem));
 | |
| 		}
 | |
| 		public MostRecentItem Add(string s)
 | |
| 		{
 | |
| 			return Add(new MostRecentItem(s));
 | |
| 		}
 | |
| 		public MostRecentItem Add(IVEDrillDownReadOnly myDrillDown)
 | |
| 		{
 | |
| 			if (typeof(ItemInfo).IsAssignableFrom(myDrillDown.GetType()))
 | |
| 				return Add(new MostRecentItem((ItemInfo)myDrillDown));
 | |
| 			return null;
 | |
| 		}
 | |
| 		public static MostRecentItemList GetMRILst(System.Collections.Specialized.StringCollection list)
 | |
| 		{
 | |
| 			MostRecentItemList mril = new MostRecentItemList();
 | |
| 			if (list != null)
 | |
| 				for (int i = list.Count - 1; i >= 0;i-- )// Add in reverse order so first is last and last is first
 | |
| 					mril.Add(list[i]);
 | |
| 			return mril;
 | |
| 		}
 | |
| 		public System.Collections.Specialized.StringCollection ToSettings()
 | |
| 		{
 | |
| 			if (Count == 0) return null;
 | |
| 			System.Collections.Specialized.StringCollection retval = new System.Collections.Specialized.StringCollection();
 | |
| 			foreach (MostRecentItem mri in this)
 | |
| 				retval.Add(mri.ToString());
 | |
| 			return retval;
 | |
| 		}
 | |
| 	} // Class
 | |
| 	public class MostRecentItem
 | |
| 	{
 | |
| 		[NonSerialized]
 | |
| 		private ItemInfo _MyItemInfo;
 | |
| 		public ItemInfo MyItemInfo
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (_MyItemInfo == null)
 | |
| 					_MyItemInfo = ItemInfo.Get(_ItemID);
 | |
| 				return _MyItemInfo;
 | |
| 			}
 | |
| 			set
 | |
| 			{
 | |
| 				_ItemID = value.ItemID;
 | |
| 				_MyItemInfo = value;
 | |
| 				_MenuTitle = GetMenuTitle();
 | |
| 				_ToolTip = GetToolTip();
 | |
| 			}
 | |
| 		}
 | |
| 		private int _ItemID;
 | |
| 		public int ItemID
 | |
| 		{
 | |
| 			get { return _ItemID; }
 | |
| 			set { _ItemID = value; }
 | |
| 		}
 | |
| 		private string _MenuTitle;
 | |
| 		public string MenuTitle
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (_MenuTitle == null)
 | |
| 					_MenuTitle = GetMenuTitle();
 | |
| 				return _MenuTitle;
 | |
| 			}
 | |
| 			set { _MenuTitle = value; }
 | |
| 		}
 | |
| 		private string GetMenuTitle()
 | |
| 		{
 | |
| 			return MyItemInfo.Path;
 | |
| 		}
 | |
| 		private string _ToolTip;
 | |
| 		public string ToolTip
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				if (_ToolTip == null)
 | |
| 					_ToolTip = GetToolTip();
 | |
| 				return _ToolTip;
 | |
| 			}
 | |
| 			set { _ToolTip = value; }
 | |
| 		}
 | |
| 		private string GetToolTip()
 | |
| 		{
 | |
| 			// reset active parent if null 
 | |
| 			// if (MyItemInfo.MyProcedure.ActiveParent == null) MyItemInfo.MyProcedure.ActiveParent = null;
 | |
| 			DocVersionInfo tmp = (DocVersionInfo)(MyItemInfo.MyProcedure.ActiveParent);
 | |
| 			StringBuilder sb = new StringBuilder();
 | |
| 			int indent = BuildPath(tmp.MyFolder, ref sb);
 | |
| 			return sb.ToString();
 | |
| 		}
 | |
| 		private int BuildPath(FolderInfo folderInfo, ref StringBuilder sb)
 | |
| 		{
 | |
| 			if (folderInfo.MyParent == null) return 0;
 | |
| 			int indent = BuildPath(folderInfo.MyParent, ref sb);
 | |
| 			sb.Append(string.Format("{0}{1}\r\n", "".PadLeft(indent * 2), folderInfo.Name));
 | |
| 			return indent;
 | |
| 		}
 | |
| 		public override string ToString()
 | |
| 		{
 | |
| 			return string.Format("{0}~{1}~{2}", _ItemID, MenuTitle, ToolTip);
 | |
| 		}
 | |
| 		public MostRecentItem(string str)
 | |
| 		{
 | |
| 			string[] parts = str.Split("~".ToCharArray());
 | |
| 			_ItemID = int.Parse(parts[0]);
 | |
| 			if (parts.Length > 1) _MenuTitle = parts[1];
 | |
| 			if (parts.Length > 2) _ToolTip = parts[2];
 | |
| 		}
 | |
| 		public MostRecentItem(ItemInfo myItem)
 | |
| 		{
 | |
| 			MyItemInfo = myItem;
 | |
| 		}
 | |
| 	}
 | |
| }
 |