Skip to content

Commit 16ec669

Browse files
committed
Add Execute Button UI Settings
1 parent f3d8d2b commit 16ec669

6 files changed

Lines changed: 83 additions & 20 deletions

File tree

src/SQLScriptsExplorer.Addin/Controls/FileExplorerTreeView.xaml.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
using SQLScriptsExplorer.Addin.Infrastructure.Helpers;
44
using SQLScriptsExplorer.Addin.Models;
55
using SQLScriptsExplorer.Addin.Models.Enums;
6+
using SQLScriptsExplorer.Addin.Repository;
7+
using SQLScriptsExplorer.Addin.Repository.Interfaces;
68
using System;
79
using System.Collections.Generic;
810
using System.IO;
@@ -177,7 +179,9 @@ private void mnuExecuteFile_Click(object sender, RoutedEventArgs e)
177179
{
178180
try
179181
{
180-
DocumentManager.ExecuteTemplate(treeNode.FileName, treeNode.FileFullPath);
182+
ISettingsRepository settingsRepository = new SettingsRepository();
183+
184+
DocumentManager.ExecuteTemplate(treeNode.FileName, treeNode.FileFullPath, settingsRepository.ConfirmScriptExecution);
181185
}
182186
catch (Exception ex)
183187
{

src/SQLScriptsExplorer.Addin/Infrastructure/DocumentManager.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using System.Collections.Generic;
88
using System.IO;
99
using System.Linq;
10+
using System.Windows.Forms;
1011

1112
namespace SQLScriptsExplorer.Addin.Infrastructure
1213
{
@@ -24,7 +25,7 @@ public static void OpenTemplate(string fileName, string fileFullPath)
2425

2526
DTE dte = Package.GetGlobalService(typeof(DTE)) as DTE;
2627
var fileDocument = dte.ItemOperations.NewFile(@"General\Text File", fileName).Document;
27-
28+
2829
TextSelection textSelection = fileDocument.Selection as TextSelection;
2930
textSelection.SelectAll();
3031
textSelection.Text = string.Empty;
@@ -66,7 +67,7 @@ public static void EditTemplate(string fileName, string fileFullPath)
6667
}
6768
}
6869

69-
public static void ExecuteTemplate(string fileName, string fileFullPath)
70+
public static void ExecuteTemplate(string fileName, string fileFullPath, bool confirmScriptExecution)
7071
{
7172
string CMD_QUERY_EXECUTE = "Query.Execute";
7273

@@ -81,7 +82,17 @@ public static void ExecuteTemplate(string fileName, string fileFullPath)
8182
// Ensure the document we are executing is the document we have opened by checking its name
8283
if (dte.ActiveDocument != null && dte.ActiveDocument.ProjectItem.Name.Equals(fileName))
8384
{
84-
dte.ExecuteCommand(CMD_QUERY_EXECUTE);
85+
DialogResult dialogResult = DialogResult.Yes;
86+
87+
if (confirmScriptExecution)
88+
{
89+
dialogResult = MessageBox.Show($"Are sure you want to execute the script {fileName}?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.None, MessageBoxDefaultButton.Button2);
90+
}
91+
92+
if (dialogResult == DialogResult.Yes)
93+
{
94+
dte.ExecuteCommand(CMD_QUERY_EXECUTE);
95+
}
8596
}
8697
}
8798
catch (Exception ex)

src/SQLScriptsExplorer.Addin/Repository/Interfaces/ISettingsRepository.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ public interface ISettingsRepository
99
string SQLParserVersion { get; set; }
1010
string AllowedFileTypes { get; set; }
1111
bool ExpandMappedFoldersOnLoad { get; set; }
12+
bool ShowExecuteFileButton { get; set; }
13+
bool ConfirmScriptExecution { get; set; }
1214

1315
void Refresh();
1416
void Save();

src/SQLScriptsExplorer.Addin/Repository/SettingsRepository.cs

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ public class SettingsRepository : ISettingsRepository
1313
private const string SQL_PARSER = "SQLParser";
1414
private const string EXPAND_MAPPEDFOLDERS_ONLOAD = "ExpandMappedFoldersOnLoad";
1515
private const string ALLOWED_FILE_TYPES = "AllowedFileTypes";
16+
private const string SHOW_EXECUTEFILE_BUTTON = "ShowExecuteFileButton";
17+
private const string CONFIRM_SCRIPT_EXECUTION = "ConfirmScriptExecution";
1618

1719
public List<FolderMapping> FolderMapping { get; set; }
1820

@@ -22,6 +24,10 @@ public class SettingsRepository : ISettingsRepository
2224

2325
public string AllowedFileTypes { get; set; }
2426

27+
public bool ShowExecuteFileButton { get; set; }
28+
29+
public bool ConfirmScriptExecution { get; set; }
30+
2531
public SettingsRepository()
2632
{
2733
Refresh();
@@ -30,7 +36,8 @@ public SettingsRepository()
3036
public void Refresh()
3137
{
3238
LoadFolderMapping();
33-
LoadOtherSettings();
39+
LoadUserInterfaceSettings();
40+
LoadGenericSettings();
3441
}
3542

3643
public void Save()
@@ -41,6 +48,8 @@ public void Save()
4148
RegistryManager.SaveRegisterValue(SQL_PARSER, SQLParserVersion);
4249
RegistryManager.SaveRegisterValue(EXPAND_MAPPEDFOLDERS_ONLOAD, ExpandMappedFoldersOnLoad.ToString());
4350
RegistryManager.SaveRegisterValue(ALLOWED_FILE_TYPES, AllowedFileTypes);
51+
RegistryManager.SaveRegisterValue(SHOW_EXECUTEFILE_BUTTON, ShowExecuteFileButton.ToString());
52+
RegistryManager.SaveRegisterValue(CONFIRM_SCRIPT_EXECUTION, ConfirmScriptExecution.ToString());
4453
}
4554

4655
private void LoadFolderMapping()
@@ -72,7 +81,24 @@ private void LoadFolderMapping()
7281
}
7382
}
7483

75-
private void LoadOtherSettings()
84+
private void LoadUserInterfaceSettings()
85+
{
86+
// Show Execute File Button and
87+
var showExecuteFileButton = RegistryManager.GetRegisterValue(SHOW_EXECUTEFILE_BUTTON);
88+
if (string.IsNullOrEmpty(showExecuteFileButton))
89+
ShowExecuteFileButton = true;
90+
else
91+
ShowExecuteFileButton = bool.Parse(showExecuteFileButton);
92+
93+
// Confirm Script Execution
94+
var confirmScriptExecution = RegistryManager.GetRegisterValue(CONFIRM_SCRIPT_EXECUTION);
95+
if (string.IsNullOrEmpty(confirmScriptExecution))
96+
ConfirmScriptExecution = true;
97+
else
98+
ConfirmScriptExecution = bool.Parse(confirmScriptExecution);
99+
}
100+
101+
private void LoadGenericSettings()
76102
{
77103
// SQL Parser Version
78104
SQLParserVersion = RegistryManager.GetRegisterValue(SQL_PARSER);

src/SQLScriptsExplorer.Addin/frmSettings.Designer.cs

Lines changed: 9 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/SQLScriptsExplorer.Addin/frmSettings.cs

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,25 +20,39 @@ public frmSettings()
2020

2121
settingsRepository = new SettingsRepository();
2222

23-
cboParserVersion.SelectedItem = settingsRepository.SQLParserVersion;
24-
chkExpandOnLoad.Checked = settingsRepository.ExpandMappedFoldersOnLoad;
25-
txtAllowedFileTypes.Text = settingsRepository.AllowedFileTypes;
26-
23+
// Folder Mapping
2724
jsonFolderMappingPrevious = Newtonsoft.Json.JsonConvert.SerializeObject(settingsRepository.FolderMapping);
2825
folderMappingBindingList = new BindingList<FolderMapping>(settingsRepository.FolderMapping);
2926

3027
gdvFolderMapping.AutoGenerateColumns = false;
3128
gdvFolderMapping.DataSource = folderMappingBindingList;
29+
30+
chkExpandOnLoad.Checked = settingsRepository.ExpandMappedFoldersOnLoad;
31+
32+
// User Interface
33+
chkShowExecuteFileButton.Checked = settingsRepository.ShowExecuteFileButton;
34+
chkConfirmScriptExecution.Checked = settingsRepository.ConfirmScriptExecution;
35+
36+
// General
37+
cboParserVersion.SelectedItem = settingsRepository.SQLParserVersion;
38+
txtAllowedFileTypes.Text = settingsRepository.AllowedFileTypes;
3239
}
3340

3441
private void btnSave_Click(object sender, System.EventArgs e)
3542
{
3643
var jsonFolderMappingCurrent = Newtonsoft.Json.JsonConvert.SerializeObject(folderMappingBindingList.ToList());
3744

38-
settingsRepository.SQLParserVersion = cboParserVersion.SelectedItem.ToString();
45+
// Folder Mapping
46+
settingsRepository.FolderMapping = folderMappingBindingList.ToList();
3947
settingsRepository.ExpandMappedFoldersOnLoad = chkExpandOnLoad.Checked;
48+
49+
// User Interface
50+
settingsRepository.ShowExecuteFileButton = chkShowExecuteFileButton.Checked;
51+
settingsRepository.ConfirmScriptExecution = chkConfirmScriptExecution.Checked;
52+
53+
// General
54+
settingsRepository.SQLParserVersion = cboParserVersion.SelectedItem.ToString();
4055
settingsRepository.AllowedFileTypes = txtAllowedFileTypes.Text;
41-
settingsRepository.FolderMapping = folderMappingBindingList.ToList();
4256

4357
settingsRepository.Save();
4458

@@ -160,5 +174,10 @@ private void gdvFolderMapping_CellFormatting(object sender, DataGridViewCellForm
160174
}
161175

162176
#endregion
177+
178+
private void chkShowExecuteFileButton_CheckedChanged(object sender, System.EventArgs e)
179+
{
180+
chkConfirmScriptExecution.Enabled = chkShowExecuteFileButton.Checked;
181+
}
163182
}
164183
}

0 commit comments

Comments
 (0)