by Pieter Brinkman
25. February 2010 09:58
Create a Visual Studio add-in with contextmenu and selected text as input
When working with a new way of storing settings in a database. I was frustrated how much work it was to check the value of setting from code. So I deceided to make my life a bit easier by creating a VS2008 contextmenu add-in. With this add-in I can select text within VS and use the value of the selected text within the add-in popup. The hardest part was figuring out how to create a contextmenu and how to use the selected text as input value.
In this blogpost I will show how to create a Visual Studio contextmenu add-in and pass the selected text to the pop-up. I’m not going to explain how to create an add-in you can easily find articles about this on MSDN or blogs (just try Google).
Now let’s get started. Create an new Visual Studio add-in project and add the following code to the OnConnetion Method within the Connect.cs. This code will insert add the contextmenu.
[code:c#]
_applicationObject = (DTE2)application;
CommandBars cBars = (CommandBars)_applicationObject.CommandBars;
CommandBar editorCommandBar = (CommandBar)cBars["Editor Context Menus"];
CommandBarPopup editPopUp = (CommandBarPopup)editorCommandBar.Controls["Code Window"];
Command command = commands.AddNamedCommand2(_addInInstance,
"GetSetting", "Bekijk Setting", "Executes the command for test", true, 733, ref contextGUIDS,
(int)vsCommandStatus.vsCommandStatusSupported + (int)vsCommandStatus.vsCommandStatusEnabled,
(int)vsCommandStyle.vsCommandStylePictAndText,
vsCommandControlType.vsCommandControlTypeButton);
[/code]
Then to get the selected text I use the following method within the Exec of the Connect.cs and pass the selected text (return value) to a property of a Windows Form pop-up.
[code:c#]
private string GetSelection()
{
string setting =
"";
//Check active document
if (_applicationObject.ActiveDocument != null)
{
//Get active document
TextDocument objTextDocument = (TextDocument)_applicationObject.ActiveDocument.Object("");
TextSelection objTextSelection = objTextDocument.Selection;
if (!String.IsNullOrEmpty(objTextSelection.Text))
{
//Get selected text
setting = objTextSelection.Text;
}
}
return setting;
}
[/code]
Hope it helps.
Cheers,
Pieter
by Pieter Brinkman
23. June 2009 03:49
The last few years I spend a lot of time working with Asp.Net AJAX. It all worked pretty good, the only downside is that you do not have control the generated HTML. With jQuery you can manipulate generated HTML. This HTML can be generated fully controlled with a ListView.
I'm a lazy programmer so the first thing I needed to do is fix jQuery Intellisense in VS2008. I found my information for doing this on Scott Gu's blog (jQuery Intellisense in Vs 2008). Everything worked great the only bad thing is that my computer needed a restart after installing a Visual Studio Patch...
Now the Intellisense is working the only thing I need to do is blog some nice examples of my work! ;-)
Cheers,
Pieter