瀏覽代碼

Added MoveColumn command to Scenario

tznind 4 年之前
父節點
當前提交
22c30fbb55
共有 1 個文件被更改,包括 35 次插入0 次删除
  1. 35 0
      UICatalog/Scenarios/CsvEditor.cs

+ 35 - 0
UICatalog/Scenarios/CsvEditor.cs

@@ -50,6 +50,7 @@ namespace UICatalog.Scenarios {
 					new MenuItem ("_New Row", "", () => AddRow()),
 					new MenuItem ("_Rename Column", "", () => RenameColumn()),
 					new MenuItem ("_Delete Column", "", () => DeleteColum()),
+					new MenuItem ("_Move Column", "", () => MoveColumn()),
 				}),
 				new MenuBarItem ("_View", new MenuItem [] {
 					miLeft = new MenuItem ("_Align Left", "", () => Align(TextAlignment.Left)),
@@ -89,6 +90,7 @@ namespace UICatalog.Scenarios {
 			SetupScrollBar();
 		}
 
+
 		private void OnSelectedCellChanged (SelectedCellChangedEventArgs e)
 		{
 			selectedCellLabel.Text = $"{tableView.SelectedRow},{tableView.SelectedColumn}";
@@ -141,6 +143,39 @@ namespace UICatalog.Scenarios {
 			}
 		}
 
+		private void MoveColumn ()
+		{
+			if(NoTableLoaded()) {
+				return;
+			}
+
+			if(tableView.SelectedColumn == -1) {
+				
+				MessageBox.ErrorQuery("No Column","No column selected", "Ok");
+				return;
+			}
+			
+			try{
+
+				var currentCol = tableView.Table.Columns[tableView.SelectedColumn];
+
+				if(GetText("Move Column","New Index:",currentCol.Ordinal.ToString(),out string newOrdinal)) {
+
+					var newIdx = Math.Min(Math.Max(0,int.Parse(newOrdinal)),tableView.Table.Columns.Count-1);
+
+					currentCol.SetOrdinal(newIdx);
+
+					tableView.SetSelection(newIdx,tableView.SelectedRow,false);
+					tableView.EnsureSelectedCellIsVisible();
+					tableView.SetNeedsDisplay();
+				}
+
+			}catch(Exception ex)
+			{
+				MessageBox.ErrorQuery("Error moving column",ex.Message, "Ok");
+			}
+		}
+
 		private void Align (TextAlignment newAlignment)
 		{
 			if (NoTableLoaded ()) {