| 
					
				 | 
			
			
				@@ -14,17 +14,24 @@ using System.Windows.Controls; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 namespace PRSDesktop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class KanbanGridSettings : IUserConfigurationSettings 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public string[] RecentTags { get; set; } = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public abstract class BaseKanbanGrid : DynamicDataGrid<Kanban> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     protected abstract TaskPanelProperties Properties { get; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    protected KanbanGridSettings Settings { get; private set; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public BaseKanbanGrid() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Settings = new UserConfiguration<KanbanGridSettings>().Load(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ActionColumns.Add(new DynamicImageColumn(PRSDesktop.Resources.menu.AsBitmapImage(), FormMenuClick)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         HiddenColumns.Add(x => x.EmployeeLink.ID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        OnCustomiseEditor += CustomiseEditor; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     protected override void DoValidate(Kanban[] items, List<string> errors) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -73,7 +80,7 @@ public abstract class BaseKanbanGrid : DynamicDataGrid<Kanban> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         TaskPanel.ManageSubscribers(kanban); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private void CustomiseEditor(IDynamicEditorForm sender, Kanban[]? items, DynamicGridColumn column, BaseEditor editor) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    protected override void CustomiseEditor(IDynamicEditorForm sender, Kanban[]? items, DynamicGridColumn column, BaseEditor editor) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         var kanban = items?.FirstOrDefault(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (kanban is null) return; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -107,6 +114,33 @@ public abstract class BaseKanbanGrid : DynamicDataGrid<Kanban> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    protected override void OnCreateEditorControl(string column, BaseEditor editor, IDynamicEditorControl control) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        base.OnCreateEditorControl(column, editor, control); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(column == nameof(Kanban.Tags) && control is TagsEditorControl tagsEditor) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tagsEditor.RecentTags = Settings.RecentTags.ToList(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tagsEditor.OnRecentTagsChanged += TagsEditor_OnRecentTagsChanged; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private void TagsEditor_OnRecentTagsChanged(IEnumerable<string> tags) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        var lst = tags.ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(lst.Length > 15) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var newArr = new string[15]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Array.Copy(lst, lst.Length - 15, newArr, 0, 15); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Settings.RecentTags = newArr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Settings.RecentTags = lst; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        new UserConfiguration<KanbanGridSettings>().Save(Settings); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private bool IsFullControl(Kanban[] kanbans) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         foreach (var kanban in kanbans) 
			 |