Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
0ee962c
Adding custom argument model and the add/edit dialog.
meviktor Sep 6, 2025
2039441
AddOrEditCustomArgument dialog: additional validation. Remove unneces…
meviktor Sep 6, 2025
4288421
Rename CustomArgument to UserDefinedArgument in types. Extending AddM…
meviktor Sep 8, 2025
098734b
Displaying user-defined arguments in Options grid for view and edit. …
meviktor Sep 8, 2025
f438a20
Renaming AddOrEditUserDefinedArgument to AddUserDefinedArgument.
meviktor Sep 8, 2025
d321ad4
Removing editing scenaro from AddUserDefinedArgument dialog's code.
meviktor Sep 8, 2025
71dbc25
Refactoring & fixes:
meviktor Sep 8, 2025
e80762e
Enabling user-defined parameters in T-SQL scripts. See details below.
meviktor Sep 10, 2025
9e3a5c9
UI fixes:
meviktor Sep 11, 2025
ace5355
Making parameter name replacement case-insensitive.
meviktor Sep 11, 2025
0434c7e
Adding bit (boolean) parameter type.
meviktor Sep 12, 2025
0fe7b12
Adding CustomList parameter type. Refactoring in validation.
meviktor Sep 12, 2025
7828961
Adding missing inital value of the CustomList collection - fixing not…
meviktor Sep 15, 2025
6ea1551
Arranging controls of ArgumentControl - providing more space between …
meviktor Sep 15, 2025
ecd31d7
Turning MenuItem context into enumeration type. Fixing issues the bel…
meviktor Sep 15, 2025
d293da7
Providing description for UserDefinedParameterType values.
meviktor Sep 15, 2025
01f9d59
Changing listview's view mode in AddUserDefinedParameter dialog.
meviktor Sep 15, 2025
3117c45
Fixing displayed text in labels, dialogs. Moving enum converters in i…
meviktor Sep 16, 2025
76c36c5
Enabling/disabling the dialog buttons instead of displaying error pop…
meviktor Sep 16, 2025
6387825
Fixing XML export / import:
meviktor Oct 9, 2025
60f643a
Refactoring, adding explanation comments.
meviktor Oct 15, 2025
e35bbcf
Small fix for displaying user-defined parameter's type in the add men…
meviktor Oct 16, 2025
7b2b959
Updating README.
meviktor Oct 16, 2025
df38d4a
Merge branch 'main' into user-defined-script-parameters.
meviktor Oct 16, 2025
bb0c9a6
Fix AddMenuItem.png
meviktor Oct 16, 2025
8c39cd7
Fixing bug: user is not able to set negative value as an integer argu…
meviktor Oct 23, 2025
03f3faa
Removed the maximum size limit of the "Enter script arguments..." win…
meviktor Oct 23, 2025
8ea1aed
Made argument controls as wide as their container (FlowLayout). Remov…
meviktor Oct 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
496 changes: 280 additions & 216 deletions AddMenuItem.Designer.cs

Large diffs are not rendered by default.

79 changes: 72 additions & 7 deletions AddMenuItem.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
using SSMSObjectExplorerMenu.objects;
using SSMSObjectExplorerMenu.enums;
using SSMSObjectExplorerMenu.extensions;
using SSMSObjectExplorerMenu.objects;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Windows.Forms;
using MenuItem = SSMSObjectExplorerMenu.objects.MenuItem;
Expand All @@ -13,16 +17,24 @@ public AddMenuItem(NodeInfo nodeInfo)
InitializeComponent();

labelVersion.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString();

comboContext.Text = nodeInfo.UrnPath;
this.ActiveControl = textName;

this.comboContext.DataSource =
Enum.GetValues(typeof(MenuItemContext))
.Cast<MenuItemContext>()
.Select(ctx => new { Displayed = ctx.ToStringDescription(), Value = ctx }).ToList();
this.comboContext.DisplayMember = nameof(ComboBoxItem<MenuItemContext>.Displayed);
this.comboContext.ValueMember = nameof(ComboBoxItem<MenuItemContext>.Value);

this.ActiveControl = textName;
buttonOpen.Visible = false;
}

public MenuItem GetMenuItem()
{
return new MenuItem(true, comboContext.Text, textName.Text, textPath.Text, checkExecute.Checked, checkConfirm.Checked);
return new MenuItem(true, (MenuItemContext)comboContext.SelectedValue, textName.Text, textPath.Text, checkExecute.Checked, checkConfirm.Checked, listViewUserDefinedParam.GetUserDefinedParams());
}


private void textName_TextChanged(object sender, EventArgs e)
{
Expand All @@ -36,8 +48,7 @@ private void textPath_TextChanged(object sender, EventArgs e)

private void ValidateInputs()
{
if (comboContext.Text.Trim().Length > 0
&& textName.Text.Trim().Length > 0
if (textName.Text.Trim().Length > 0
&& textPath.Text.Trim().Length > 0)
{
buttonOK.Enabled = true;
Expand Down Expand Up @@ -86,5 +97,59 @@ private void checkExecute_CheckedChanged(object sender, EventArgs e)
checkConfirm.Checked = false;
}
}
}

private void buttonAddUserDefinedParam_Click(object sender, EventArgs e)
{
var addDialog = new AddUserDefinedParameter(GetArgumentNamesInUse());
if (addDialog.ShowDialog() == DialogResult.OK)
{
var newParam = addDialog.Parameter;
var newListViewItem = new ListViewItem { Text = newParam.Name, Tag = newParam };
newListViewItem.SubItems.Add(new ListViewItem.ListViewSubItem { Text = newParam.Type.ToStringDescription() });
listViewUserDefinedParam.Items.Add(newListViewItem);
}
}

private void buttonEditUserDefinedParam_Click(object sender, EventArgs e)
{
var selectedItem = this.listViewUserDefinedParam.GetSelectedItems().SingleOrDefault();
if (selectedItem != null)
{
var editDialog = new AddUserDefinedParameter(GetArgumentNamesInUse(), true, (UserDefinedParameter)selectedItem.Tag);
if (editDialog.ShowDialog() == DialogResult.OK)
{
var editedParam = editDialog.Parameter;
selectedItem.Text = editedParam.Name;
selectedItem.SubItems[1].Text = Enum.GetName(typeof(UserDefinedParameterType), editedParam.Type);
selectedItem.Tag = editedParam;
}
}
}

private void buttonRemoveUserDefinedParam_Click(object sender, EventArgs e)
{
var selectedItems = this.listViewUserDefinedParam.GetSelectedItems();
if (selectedItems.Any() &&
DialogResult.Yes == MessageBox.Show("Are you sure?", "Delete parameter(s)", MessageBoxButtons.YesNo, MessageBoxIcon.Warning))
{
foreach (var item in selectedItems)
{
this.listViewUserDefinedParam.Items.Remove(item);
}
}
}

private void listViewUserDefinedParam_SelectedIndexChanged(object sender, EventArgs e)
{
// In case of removing items, a minimal delay is needed to work with the state of the listview after the item has been removed.
this.BeginInvoke((Action)(() =>
{
var selectedItemsCount = this.listViewUserDefinedParam.GetSelectedItems().Count();
this.buttonEditUserDefinedParameter.Enabled = selectedItemsCount == 1;
this.buttonRemoveUserDefinedParam.Enabled = selectedItemsCount > 0;
}));
}

private IEnumerable<string> GetArgumentNamesInUse() => this.listViewUserDefinedParam.Items.Cast<ListViewItem>().Select(item => item.Text).Concat(Utils.ParametersFromContext);
}
}
197 changes: 197 additions & 0 deletions AddUserDefinedParameter.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading