Skip to content

Commit 0182674

Browse files
committed
Fix for adding new content in environment dialog
1 parent ab262a6 commit 0182674

File tree

3 files changed

+85
-38
lines changed

3 files changed

+85
-38
lines changed

AzTagger/AzureContextConfigDialog.cs

Lines changed: 68 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ public AzureContextConfigDialog(Settings settings)
3535

3636
InitializeComponent();
3737

38+
_tempAzureContexts.AddingNew += TempAzureContexts_AddingNew;
3839
_dataGridView.DataSource = _tempAzureContexts;
40+
3941
_dataGridView.CellToolTipTextNeeded += DataGridView_CellToolTipTextNeeded;
4042

4143
_azureService = new AzureService(_inputSettings);
@@ -44,7 +46,7 @@ public AzureContextConfigDialog(Settings settings)
4446
_dataGridViewContextMenu = new ContextMenuStrip();
4547

4648
_deleteContextMenuItem = new ToolStripMenuItem($"Remove Context");
47-
_deleteContextMenuItem.Click += MenuItem_RemoveAzureContextIrem_Click;
49+
_deleteContextMenuItem.Click += MenuItem_RemoveAzureContextItem_Click;
4850
_dataGridViewContextMenu.Items.Add(_deleteContextMenuItem);
4951
_dataGridViewContextMenu.Items.Add(new ToolStripSeparator());
5052

@@ -136,7 +138,20 @@ private void DataGridView_ContextMenu_Opened(object sender, EventArgs e)
136138
}
137139
}
138140

139-
private void MenuItem_RemoveAzureContextIrem_Click(object sender, EventArgs e)
141+
private void TempAzureContexts_AddingNew(object sender, AddingNewEventArgs e)
142+
{
143+
var newRowIndex = _dataGridView.Rows.Count - 1;
144+
if (newRowIndex < 0 || _dataGridView.Rows.Count <= newRowIndex || !_dataGridView.Rows[newRowIndex].IsNewRow)
145+
{
146+
return;
147+
}
148+
var newRow = _dataGridView.Rows[newRowIndex];
149+
var newAzureContext = new AzureContext();
150+
newAzureContext.Name = MakeAzureContextNameUnique(newAzureContext.Name);
151+
e.NewObject = newAzureContext;
152+
}
153+
154+
private void MenuItem_RemoveAzureContextItem_Click(object sender, EventArgs e)
140155
{
141156
if (_dataGridView.SelectedRows.Count > 0)
142157
{
@@ -174,8 +189,17 @@ private void MenuItem_SelectEnvironment_Click(object sender, EventArgs e)
174189
{
175190
selectedRow.Cells[1].Value = envName;
176191
selectedRow.Cells[1].Selected = true;
177-
_dataGridView.NotifyCurrentCellDirty(true);
178-
_dataGridView.Refresh();
192+
193+
if (selectedRow.DataBoundItem is AzureContext azureContext)
194+
{
195+
azureContext.AzureEnvironmentName = envName;
196+
_dataGridView.Refresh();
197+
}
198+
else
199+
{
200+
_dataGridView.NotifyCurrentCellDirty(true);
201+
_dataGridView.EndEdit();
202+
}
179203

180204
ResetTenantMenuItems();
181205

@@ -240,8 +264,17 @@ private void MenuItem_SelectTenant_Click(object sender, EventArgs e)
240264
{
241265
selectedRow.Cells[2].Value = tenantId;
242266
selectedRow.Cells[2].Selected = true;
243-
_dataGridView.NotifyCurrentCellDirty(true);
244-
_dataGridView.Refresh();
267+
268+
if (selectedRow.DataBoundItem is AzureContext azureContext)
269+
{
270+
azureContext.TenantId = tenantId;
271+
_dataGridView.Refresh();
272+
}
273+
else
274+
{
275+
_dataGridView.NotifyCurrentCellDirty(true);
276+
_dataGridView.EndEdit();
277+
}
245278

246279
HideContextMenu(sender, e);
247280
UpdateSelectionLabel();
@@ -252,38 +285,34 @@ private void DataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e
252285
{
253286
if (e.ColumnIndex == 0)
254287
{
255-
if (string.IsNullOrEmpty(_dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value?.ToString()))
288+
var azureContextName = _dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value?.ToString();
289+
if (string.IsNullOrEmpty(azureContextName))
256290
{
257-
_dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = "Default";
291+
azureContextName = "Default";
258292
}
259-
else
260-
{
261-
var azureContextNames = _tempAzureContexts.Select(x => x.Name).ToList();
262-
var azureContextName = _dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
263-
var i = 1;
264-
while (azureContextNames.Count(x => x == azureContextName) > 1)
265-
{
266-
azureContextName = $"{_dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value} ({i})";
267-
i++;
268-
}
269-
_dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = azureContextName;
293+
azureContextName = MakeAzureContextNameUnique(azureContextName);
294+
_dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = azureContextName;
270295

271-
if (_dataGridView.SelectedRows.Count > 0)
272-
{
273-
UpdateSelectionLabel();
274-
}
296+
if (_dataGridView.SelectedRows.Count > 0)
297+
{
298+
UpdateSelectionLabel();
275299
}
276300
}
277301
}
278302

279303
private void DataGridView_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
280304
{
305+
_dataGridView.CancelEdit();
281306
var deletedRowIndex = e.RowIndex;
282307
if (_dataGridView.SelectedRows.Count == 0 && _dataGridView.Rows.Count > 0)
283308
{
284-
_dataGridView.Rows[deletedRowIndex - 1].Selected = true;
309+
var newRowIndex = deletedRowIndex > 0 ? deletedRowIndex - 1 : 0;
310+
_dataGridView.Rows[newRowIndex].Selected = true;
311+
}
312+
if (_tempAzureContexts.Count == 0)
313+
{
314+
_tempAzureContexts.AddNew();
285315
}
286-
287316
}
288317

289318
private void DataGridView_SelectionChanged(object sender, EventArgs e)
@@ -313,7 +342,7 @@ private void Button_Ok_Click(object sender, EventArgs e)
313342
_inputSettings.AzureContexts = _tempAzureContexts.AsList();
314343
var selectedAzureContextName = GetSelectedAzureContextName();
315344
_inputSettings.SelectAzureContext(selectedAzureContextName);
316-
_inputSettings.SanitizeAzureContexts();
345+
_inputSettings.SanitizeAzureContextsSetting();
317346
Close();
318347
}
319348

@@ -410,6 +439,19 @@ private string GetSelectedAzureContextName()
410439
return selectedAzureContextName ?? string.Empty;
411440
}
412441

442+
private string MakeAzureContextNameUnique(string azureContextName)
443+
{
444+
var newAzureContextName = azureContextName;
445+
var azureContextNames = _tempAzureContexts.Select(x => x.Name).ToList();
446+
var i = 1;
447+
while (azureContextNames.Count(x => x == newAzureContextName) > 0)
448+
{
449+
newAzureContextName = $"{azureContextName} ({i})";
450+
i++;
451+
}
452+
return newAzureContextName;
453+
}
454+
413455
private void UpdateSelectionLabel(string selectedAzureContextName = null)
414456
{
415457
if (string.IsNullOrEmpty(selectedAzureContextName))

AzTagger/Models/Settings.cs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public class Settings
4444
[JsonPropertyName("LastQuickFilter2Text")]
4545
public string LastQuickFilter2Text { get; set; } = string.Empty;
4646

47-
public void SanitizeAzureContexts()
47+
public void SanitizeAzureContextsSetting()
4848
{
4949
if (AzureContexts == null || AzureContexts.Count == 0)
5050
{
@@ -53,18 +53,23 @@ public void SanitizeAzureContexts()
5353
}
5454
else
5555
{
56-
var azureContextNames = AzureContexts.Select(x => x.Name).ToList();
57-
foreach (var azureContext in AzureContexts)
56+
SanitizeAzureContexts(AzureContexts);
57+
}
58+
}
59+
60+
public static void SanitizeAzureContexts(IList<AzureContext> azureContexts)
61+
{
62+
foreach (var azureContext in azureContexts.Reverse())
63+
{
64+
var azureContextNames = azureContexts.Select(x => x.Name).ToList();
65+
var azureContextName = azureContext.Name;
66+
var i = 1;
67+
while (azureContextNames.Count(x => x == azureContextName) > 1)
5868
{
59-
var azureContextName = azureContext.Name;
60-
var i = 1;
61-
while (azureContextNames.Count(x => x == azureContextName) > 1)
62-
{
63-
azureContextName = $"{azureContext.Name} ({i})";
64-
i++;
65-
}
66-
azureContext.Name = azureContextName;
69+
azureContextName = $"{azureContext.Name} ({i})";
70+
i++;
6771
}
72+
azureContext.Name = azureContextName;
6873
}
6974
}
7075

AzTagger/Services/SettingsService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public static Settings Load()
3434
settings.RecentSearches.Add("| where SubscriptionName =~ 'Prototypes'\r\n| where ResourceGroup =~ 'WebApp'\r\n| where ResourceName =~ 'webappstore'");
3535
}
3636

37-
settings.SanitizeAzureContexts();
37+
settings.SanitizeAzureContextsSetting();
3838
var selectedAzureContext = settings.AzureContexts.FirstOrDefault(x => x.Name == settings.SelectedAzureContext);
3939
if (selectedAzureContext == null)
4040
{

0 commit comments

Comments
 (0)