1 visual studio: extending visual studio with add-ins and packages philip taylor...

75
1 Visual Studio: Extending Visual Studio: Extending Visual Studio With Add-ins Visual Studio With Add-ins And Packages And Packages Philip Taylor Philip Taylor [email protected] [email protected] TLN404 TLN404 Program Manager, Visual Studio 2005 Program Manager, Visual Studio 2005 SDK SDK Microsoft Corporation Microsoft Corporation

Upload: gerard-atkinson

Post on 16-Jan-2016

232 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

1

Visual Studio: Extending Visual Visual Studio: Extending Visual Studio With Add-ins And Studio With Add-ins And PackagesPackages

Philip Taylor Philip Taylor [email protected]@microsoft.comTLN404TLN404Program Manager, Visual Studio 2005 SDKProgram Manager, Visual Studio 2005 SDKMicrosoft CorporationMicrosoft Corporation

Page 2: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

2

Why Come To This Why Come To This Session?Session?

Visual Studio Extensibility lets you Visual Studio Extensibility lets you write and add custom tools like write and add custom tools like

Custom help systems Custom help systems New languages New languages New editors New editors Tool windowsTool windows

Extensibility fits the tool to the Extensibility fits the tool to the process and not the other way process and not the other way aroundaroundUpon completing this session, Upon completing this session, attendees will have followed the attendees will have followed the steps for a complete tool window steps for a complete tool window package that extends Visual Studiopackage that extends Visual Studio

Page 3: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

3

Pre-RequirementsPre-Requirements

Must codeMust code

Be familiar withBe familiar withGeneral use of Visual StudioGeneral use of Visual Studio

COMCOM and C++, or .NET Frameworkand C++, or .NET Framework

Automation models in generalAutomation models in general

Nice to understandNice to understandVisual Studio automation modelVisual Studio automation model

Page 4: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

4

AgendaAgenda

Extensibility OverviewExtensibility Overview

Demo:Writing a ToolWindowDemo:Writing a ToolWindow

Visual Studio 2005 SDKVisual Studio 2005 SDK

Page 5: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

5

Visual Studio ExtensibilityVisual Studio ExtensibilityOptions for Extending Visual StudioOptions for Extending Visual Studio

VS User CustomizationVS User Customization

MacrosMacros

Add-InsAdd-Ins

PackagesPackages

Developer Developer ReachReach

Level of

Level of

inte

gra

tion

inte

gra

tion

Cost

of

Cost

of

inte

gra

tion

inte

gra

tion

Page 6: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

6

Extensibility MapExtensibility MapHow to ChooseHow to ChooseTypeType BenefitsBenefits LimitationsLimitationsCustomizatiCustomizationon

SimpleSimple Cannot control IDE, Cannot control IDE, can only customizecan only customize

MacrosMacros Full control of IDEFull control of IDE Cannot add featuresCannot add featuresProvided in sourceProvided in source

Add-insAdd-ins Full control of IDE Full control of IDE Compiled for performance Compiled for performance and protection of sourceand protection of sourceCan implement :Can implement :

new tool windows, new tool windows, commands, commands, Tools Options pagesTools Options pages

Cannot implement:Cannot implement:new document new document

types, types, new project types, new project types, new debug new debug

engines, engines, etcetc

PackagesPackages Full control of IDEFull control of IDECompiled for performance Compiled for performance and protection of sourceand protection of sourceFull ability to add new Full ability to add new featuresfeatures

Complex Complex development modeldevelopment model

Page 7: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

7

MacrosMacros

The Visual Studio automation object model The Visual Studio automation object model contains >140 objects, allowing control of contains >140 objects, allowing control of the IDE from a solution level all the way to the IDE from a solution level all the way to a single parameter of a single functiona single parameter of a single function

Macros can leverage nearly all of the Macros can leverage nearly all of the features of the .NET Framework, as well as features of the .NET Framework, as well as most of the automation modelmost of the automation model

Macros accessed via Tools|MacrosMacros accessed via Tools|Macros

Macros have some limitationsMacros have some limitationsMacros can only be written in the Visual Basic language Macros can only be written in the Visual Basic language

Macros cannot be used to implement new tool windows, Macros cannot be used to implement new tool windows, commands, Tools Options pagescommands, Tools Options pages

Page 8: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

8

Add-insAdd-ins

Customize, automate, and extend VSCustomize, automate, and extend VS

Provide new VS featuresProvide new VS featuresUser manageableUser manageable

Simple to buildSimple to buildAdd-in creation wizardAdd-in creation wizard

Build in any language which supports Build in any language which supports COMCOM

Leverage rich Visual Studio object Leverage rich Visual Studio object modelmodel

Available to all Visual Studio.NET Available to all Visual Studio.NET developers developers

Extensive coverage of VS featuresExtensive coverage of VS features

Page 9: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

9

Add-in Features And Add-in Features And LimitationsLimitations

Simple registration using XML ( no Simple registration using XML ( no more COM registration )more COM registration )

Unlike macros, Add-ins Unlike macros, Add-ins cancan implement new tool windows, implement new tool windows, commands, Tools Options pagescommands, Tools Options pages

However, Add-ins cannot implement However, Add-ins cannot implement new document types, new project new document types, new project types, new debug engines, etc. types, new debug engines, etc. which require a packagewhich require a package

Page 10: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

10

ToolWindow Demo:ToolWindow Demo:Visual Studio UI ElementsVisual Studio UI Elements

Page 11: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

11

ToolWindow Add-inToolWindow Add-in

Craig SkiboCraig SkiboSoftware Design EngineerSoftware Design EngineerVisual StudioVisual Studio

Page 12: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

12

Deepest possible integration with VSDeepest possible integration with VS

Add functionality seamlessly with VS Add functionality seamlessly with VS integration packagesintegration packages

Rich access to common shell featuresRich access to common shell features

Plus full access to the automation modelPlus full access to the automation model

Add new features to Visual Studio forAdd new features to Visual Studio for

IDE, Debugger, Source Control, Data Sources, etcIDE, Debugger, Source Control, Data Sources, etc

PackagesPackages

Page 13: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

13

Visual Studio Industry Partner ( VSIP ) Visual Studio Industry Partner ( VSIP ) program to provide marketing and business program to provide marketing and business supportsupport

1 Free level: Affiliate1 Free level: Affiliate

2 Paid levels: Alliance and Premier2 Paid levels: Alliance and Premier

Visual Studio 2005 SDK to provide Visual Studio 2005 SDK to provide developer tool for package developmentdeveloper tool for package development

Downloads free after brief registration processDownloads free after brief registration process

Programs And Tools For Programs And Tools For Package DevelopmentPackage Development

Page 14: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

14

Package Extensibility Package Extensibility PointsPoints

IDEIDEProject systems, Languages, Editors, ToolWindows,Project systems, Languages, Editors, ToolWindows,.NET Designers, Menus and Commands, Toolbox .NET Designers, Menus and Commands, Toolbox Integration, Tools Options Page, Property BrowserIntegration, Tools Options Page, Property BrowserHelp Integration, Setup and DeploymentHelp Integration, Setup and Deployment

DebuggerDebuggerCustom Debug EngineCustom Debug EngineExpression EvaluatorsExpression EvaluatorsType VisualizersType Visualizers

Source ControlSource ControlProject systems enabled to participate in source controlProject systems enabled to participate in source controlSource Control Provider ( Plug-in or Package )Source Control Provider ( Plug-in or Package )

Data SourcesData SourcesDesign-time Data Source Drag-n-DropDesign-time Data Source Drag-n-DropData Source ProviderData Source Provider

And MoreAnd More

Page 15: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

15

Your Managed Package

Package ArchitecturePackage Architecture

Visual Studio 2005 is the Visual Studio 2005 is the platformplatformNative Interfaces Native Interfaces provide extensibility provide extensibility pointspointsInterop Assemblies Interop Assemblies enable managed code enable managed code accessaccess

Visual Studio 2005

Native Interfaces

MPF 8.0

SDK ProvidesSDK ProvidesNative Interface IDLsNative Interface IDLsInterop AssembliesInterop AssembliesSamples, Doc, Samples, Doc, templates, etctemplates, etcPackage WizardPackage Wizard

Interop Assemblies

Your Native Packageoror

Page 16: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

16

Programming ModelProgramming Model

Features added to IDE via VsPackage Features added to IDE via VsPackage interfaceinterfaceLogical unit of extensibility consisting ofLogical unit of extensibility consisting of

CoCreate-able COM object - CoCreate-able COM object - IVsPackageIVsPackage;;Initial object created and sited by IDE Initial object created and sited by IDE Other supporting COM objectsOther supporting COM objects

Interactions between IDE and Packages Interactions between IDE and Packages abstracted via COM interfaces abstracted via COM interfaces Same architecture is used for MS built Same architecture is used for MS built features as well as 3features as well as 3rdrd party extensions! party extensions!Package development only available with Package development only available with Visual Studio 2005 SDK installsVisual Studio 2005 SDK installs

Page 17: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

17

Delayed LoadingDelayed Loading

Fundamental principleFundamental principleDelay loading code until functionality is neededDelay loading code until functionality is needed

Package exposes registry info about functionality Package exposes registry info about functionality so IDE knows when to load it so IDE knows when to load it

Registry info enables features to be exposed in UI Registry info enables features to be exposed in UI without loading Package codewithout loading Package code

Local registry enables multiple SxS versionsLocal registry enables multiple SxS versionsHKLM/Software/Microsoft/Visual Studio/7.0 ( Visual Studio 2002 )HKLM/Software/Microsoft/Visual Studio/7.0 ( Visual Studio 2002 )

HKLM/Software/Microsoft/Visual Studio/7.1 ( Visual Studio 2003 )HKLM/Software/Microsoft/Visual Studio/7.1 ( Visual Studio 2003 )

HKLM/Software/Microsoft/Visual Studio/8.0 ( Visual Studio 2005 )HKLM/Software/Microsoft/Visual Studio/8.0 ( Visual Studio 2005 )

We call this a “registry hive” We call this a “registry hive”

Delayed Loading also helps Visual Studio load Delayed Loading also helps Visual Studio load performanceperformance

Page 18: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

18

IDE ServicesIDE Services

Interface contract implemented by a Interface contract implemented by a single COM objectsingle COM object

Functionality built into the IDE is Functionality built into the IDE is exposed through Servicesexposed through Services

Packages can expose new servicesPackages can expose new services

Packages can consume functionality Packages can consume functionality from others via Servicesfrom others via Services

Page 19: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

19

IDE ServicesIDE Services

Page 20: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

20

Demo DetailsDemo DetailsToolWindow with custom Todo ListToolWindow with custom Todo List

All 10 Steps, as separate solutions, All 10 Steps, as separate solutions, available atavailable at

On Conference DVDOn Conference DVDOn MSDN dev centerOn MSDN dev center

http://http://msdn.microsoft.com/vstudio/extendmsdn.microsoft.com/vstudio/extend//

Custom “todo list” ToolWindow originally Custom “todo list” ToolWindow originally published atpublished at

http://dotnet.sys-con.com/read/105646_1.htmhttp://dotnet.sys-con.com/read/105646_1.htmAvailable as article+codeAvailable as article+code

Future article will enhance sample to Future article will enhance sample to participate in Visual Studio task listparticipate in Visual Studio task list

Page 21: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

21

Demo DetailsDemo DetailsToolWindow with custom Todo ListToolWindow with custom Todo List

10 Steps ( 0-9 ) 10 Steps ( 0-9 ) 0:Run Wizard0:Run Wizard1:Update Wizard Files1:Update Wizard Files2:Add Todo List UI2:Add Todo List UI3:Add EventHandler3:Add EventHandler4:Add Toolbar4:Add Toolbar

CTCCTCResource IDsResource IDsToolbar constructorToolbar constructor

5:Add AddTask dialog form5:Add AddTask dialog formAdd WinformAdd WinformSet Form propertiesSet Form properties

6:Wire up properties in AddTask dialog6:Wire up properties in AddTask dialog7:Wire up Toolbar button and AddTask method7:Wire up Toolbar button and AddTask method8:Static accessor and save package instance8:Static accessor and save package instance9:Add delegate+event, EventArgs subclass, event handler, and 9:Add delegate+event, EventArgs subclass, event handler, and update AddTask methodupdate AddTask method

Page 22: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

22

ToolWindow PackageToolWindow Package

Philip TaylorPhilip TaylorProgram Manager, VS ExtensibilityProgram Manager, VS ExtensibilityVisual StudioVisual Studio

Page 23: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

23

Visual Studio 2005 SDKVisual Studio 2005 SDK

Key ConceptsKey Concepts

Development PlanDevelopment Plan

Release PlanRelease Plan

Community PlanCommunity Plan

Page 24: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

24

Key ConceptsKey Concepts

Experimental HiveExperimental HiveThe SDK creates the separate registry hive to do The SDK creates the separate registry hive to do prototyping workprototyping workSamples auto-register in Experimental HiveSamples auto-register in Experimental HiveThe new SDK enables a “reset all” for the experimental The new SDK enables a “reset all” for the experimental hivehive

DLK and PLKDLK and PLKDevelopers use the Developer License Key, provided with Developers use the Developer License Key, provided with the SDKthe SDKShipping requires Package Load KeyShipping requires Package Load Key

available from http://www.vsipdev.com/plkregister.aspxavailable from http://www.vsipdev.com/plkregister.aspx

Setup and DeploymentSetup and DeploymentFinal product needs to author a setup and deployment Final product needs to author a setup and deployment project that handles:project that handles:

Presenting your company EULAPresenting your company EULAInstallInstallRegistrationRegistration

Page 25: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

25

SDK RTM FeaturesSDK RTM Features

Reorganized SDK layout and samplesReorganized SDK layout and samples8 New Reference Implementations8 New Reference Implementations

Package, Service, Menu and Commands, Package, Service, Menu and Commands, ToolWindowToolWindow

Both Managed and Native versionsBoth Managed and Native versions

Updated Debugger sampleUpdated Debugger sampleManaged Resources enabled for Managed Managed Resources enabled for Managed PackagesPackagesCTC file colorizingCTC file colorizingUpdated WizardUpdated Wizard

Using Reference Implementations as basisUsing Reference Implementations as basis

Significantly updated Help DocumentationSignificantly updated Help Documentation11stst public viewing in Sept preview public viewing in Sept preview

Page 26: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

26

Package Sample SourcePackage Sample Source

Page 27: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

27

Sample CTC FilesSample CTC Files

Page 28: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

28

SDK Release PlanSDK Release Plan

Goal is Trimester releasesGoal is Trimester releasesWith monthly previewsWith monthly previews

July and August already available: July and August already available: http://www.vsipdev.com/downloadshttp://www.vsipdev.com/downloads

On target for Nov 2005 RTM with On target for Nov 2005 RTM with Visual Studio 2005Visual Studio 2005

Release schedule possible with Agile Release schedule possible with Agile methodologymethodology

Page 29: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

29

SDK Community PlanSDK Community Plan

Available NowAvailable NowRe-vamped download pageRe-vamped download page

New VS SDK Previews as well as “Archive” VSIP New VS SDK Previews as well as “Archive” VSIP SDKSDK

Monthly sprint backlogs and monthly reviewsMonthly sprint backlogs and monthly reviewsTransparency into SDK planning processTransparency into SDK planning process

See: http://www.vsipdev.com/downloads See: http://www.vsipdev.com/downloads

• In ProcessIn ProcessWeb site for Community developed sample Web site for Community developed sample contentcontent

MVPs for forums and newsgroupsMVPs for forums and newsgroups

Post long-term backlog and enable community Post long-term backlog and enable community feedbackfeedback

The community feedback will be incorporated as part The community feedback will be incorporated as part of the weighting used by the SDK team to decide of the weighting used by the SDK team to decide prioritiespriorities

Page 30: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

30

Community ResourcesCommunity ResourcesAt PDCAt PDC

For more information, go seeFor more information, go seeLabs: TLNHOL16 Visual Studio Add-insLabs: TLNHOL16 Visual Studio Add-insLabs: TLNHOL01 Visual Studio PackagesLabs: TLNHOL01 Visual Studio PackagesLabs: TLNHOL14 Customizing Templates and Starter KitsLabs: TLNHOL14 Customizing Templates and Starter KitsTools and Languages Track lounge: Team will be thereTools and Languages Track lounge: Team will be there

After PDCAfter PDCIf you missed this related session, watch it on the DVDIf you missed this related session, watch it on the DVD

TLN404: Visual Studio ExtensibilityTLN404: Visual Studio Extensibility

MSDN dev center: MSDN dev center: http://msdn.microsoft.com/vstudio/extend/http://msdn.microsoft.com/vstudio/extend/MSDN Forum: MSDN Forum: http://forums.microsoft.com/msdn/ShowForum.aspx?http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=57 ForumID=57 Downloads: http://www.vsipdev.com/downloadsDownloads: http://www.vsipdev.com/downloads

Page 31: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

31

Call To ActionCall To Action

Explore Extensibility Hands-on LabsExplore Extensibility Hands-on LabsLabs: TLNHOL16 Visual Studio Add-insLabs: TLNHOL16 Visual Studio Add-ins

Labs: TLNHOL01 Visual Studio PackagesLabs: TLNHOL01 Visual Studio Packages

Labs: TLNHOL14 Customizing Templates Labs: TLNHOL14 Customizing Templates and Starter Kitsand Starter Kits

Work thru the sample Code for demoWork thru the sample Code for demo

Build your own extensibility solutionsBuild your own extensibility solutions

Give us feedback on the new SDK!Give us feedback on the new SDK!

Page 32: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

32

Q&AQ&A

??

Page 33: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

33

© 2005 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

Page 34: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

34

AppendixAppendix

Page 35: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

35

Demo Details:Demo Details:ToolWindow with custom Todo ListToolWindow with custom Todo List

All 10 Steps, as separate solutions, All 10 Steps, as separate solutions, available at:available at:

On Conference DVDOn Conference DVDon MSDN dev center:on MSDN dev center:

http://http://msdn.microsoft.com/vstudio/extendmsdn.microsoft.com/vstudio/extend//

Custom “todo list” ToolWindow Custom “todo list” ToolWindow originally published at:originally published at:

http://dotnet.sys-con.com/read/105646_http://dotnet.sys-con.com/read/105646_1.htm1.htmAvailable as article+codeAvailable as article+code

Future article will enhance sample to Future article will enhance sample to participate in Visual Studio task listparticipate in Visual Studio task list

Page 36: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

36

Step 0:Generate the Step 0:Generate the ProjectProjectRun the wizardRun the wizardUpdate Wizard SettingsUpdate Wizard Settings

Pick toolwindow onlyPick toolwindow only

Name PDCToolWindowName PDCToolWindow

cmdidPDCToolWindowcmdidPDCToolWindow

Page 37: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

37

Step 0:Generate the Step 0:Generate the Project Project Run the wizardRun the wizard

Page 38: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

38

Step 1:Update Wizard Step 1:Update Wizard FilesFilesRename filesRename filesRenameRename

Vspkg.cs to PDCToolWindowPackage.csVspkg.cs to PDCToolWindowPackage.cs

My tool window.cs to PDCToolWindow.csMy tool window.cs to PDCToolWindow.cs

Mycontrol.cs to Mycontrol.cs to PDCToolWindowClientarea.csPDCToolWindowClientarea.cs

Page 39: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

39

Step 1:Update Wizard Step 1:Update Wizard Files Files Solution FilesSolution FilesSolution: Tasklist SampleSolution: Tasklist Sample

Project: Tasklist SampleProject: Tasklist SampleGuids.csGuids.cs - Contains a list of all GUIDs you - Contains a list of all GUIDs you generate.generate.Key.snkKey.snk ` - The key file for signing your ` - The key file for signing your assembly.assembly.My Tool Window.csMy Tool Window.cs - Subclass of ToolWindowPane. Provides - Subclass of ToolWindowPane. Provides your Tool Window.your Tool Window.MyControl.csMyControl.cs - Contains the UI for your Tool Window. - Contains the UI for your Tool Window.PkgCmdID.csPkgCmdID.cs - Contains a list of all Command IDs you - Contains a list of all Command IDs you generate.generate.ResourcesId.csResourcesId.cs - Contains a list of Resource IDs you - Contains a list of Resource IDs you generate.generate.VsPkg.csVsPkg.cs - This is your Package for Visual Studio. This - This is your Package for Visual Studio. This is the heart of your code.is the heart of your code.

Project: Tasklist SampleUIProject: Tasklist SampleUIGuids.hGuids.h - Native equivalent of Guids.cs. - Native equivalent of Guids.cs.PkgCmdID.hPkgCmdID.h - Native equivalent of PkgCmdID.cs. - Native equivalent of PkgCmdID.cs.Resource.hResource.h - Native equivalent of ResourcesId.cs. - Native equivalent of ResourcesId.cs.Images_24bit.bmpImages_24bit.bmp - Provides 24-bit images (true color, with - Provides 24-bit images (true color, with one color used to specify transparency) for use as your tool one color used to specify transparency) for use as your tool window icon, and other purposes.window icon, and other purposes.Images_32bit.bmpImages_32bit.bmp - Provides 32-bit images (true color, with an - Provides 32-bit images (true color, with an 8-bit alpha channel) for use in your menu item and in the tool 8-bit alpha channel) for use in your menu item and in the tool bar we'll add to your tool window.bar we'll add to your tool window.Package.icoPackage.ico - Branding for use in the Help.About dialog. - Branding for use in the Help.About dialog.PkgCmd.ctcPkgCmd.ctc - Your CommandTable Compiler file. This - Your CommandTable Compiler file. This specifies all of the commands you'll use, and where they specifies all of the commands you'll use, and where they appear. We'll go over this soon.appear. We'll go over this soon.Tasklist SampleUI.rcTasklist SampleUI.rc - Native resource file used for specifying - Native resource file used for specifying your package's icon, output from the CTC compiler, bitmaps, your package's icon, output from the CTC compiler, bitmaps, and so forth. and so forth.

Page 40: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

40

Step 1:Update Wizard Step 1:Update Wizard Files Files Solution rename screenshotSolution rename screenshot

Page 41: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

41

Step 2:Add ToolWindow UIStep 2:Add ToolWindow UIAdd the TaskList UI ControlsAdd the TaskList UI Controls

Open PDCToolWindowClientarea.csOpen PDCToolWindowClientarea.csDelete the buttonDelete the buttonAdd the layout panel ( update properties )Add the layout panel ( update properties )

Columncount=1Columncount=1Dock=fillDock=fill

Add the text box ( update properties )Add the text box ( update properties )Name=txtNewTaskName=txtNewTaskAnchor=top,left,rightAnchor=top,left,rightMargin=0,0,0,0Margin=0,0,0,0

Add listview ( update properties )Add listview ( update properties )Name=lvwTasksName=lvwTasksAnchor=t,b,l,rAnchor=t,b,l,rCheckboxes=trueCheckboxes=trueColumnsColumns

Name=chDescriptinName=chDescriptinText=Description Text=Description Name = chPriorityName = chPriorityText = PriorityText = Priority

Fullrowselect=trueFullrowselect=trueGroups, header name=User TasksGroups, header name=User TasksShow groups=trueShow groups=trueView=detailsView=details

Page 42: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

42

Step 2:Add ToolWindow UI Step 2:Add ToolWindow UI

TaskList UI InTaskList UI In DesignerDesigner

Page 43: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

43

Step 3:Text Entry Step 3:Text Entry HandlingHandlingAdd the event handlerAdd the event handlerOpen PDCToolWindowClientarea.cs and view codeOpen PDCToolWindowClientarea.cs and view code

To txtNewTask, using flash button, for KeyDown eventTo txtNewTask, using flash button, for KeyDown eventAddAdd

private void txtNewTask_KeyDown(object sender, KeyEventArgs e) private void txtNewTask_KeyDown(object sender, KeyEventArgs e) { {

if (e.KeyCode == Keys.Enter) if (e.KeyCode == Keys.Enter) { {

string newItem = txtNewTask.Text.Trim(); string newItem = txtNewTask.Text.Trim(); if (newItem == string.Empty) return; if (newItem == string.Empty) return; AddTask(newItem); AddTask(newItem); txtNewTask.Text = string.Empty; txtNewTask.Text = string.Empty; e.Handled = true; e.Handled = true;

}} } } private void AddTask(string text) private void AddTask(string text) {{ ListViewItem item = new ListViewItem(text); ListViewItem item = new ListViewItem(text); item.Group = lvwTasks.Groups[0]; item.Group = lvwTasks.Groups[0]; lvwTasks.Items.Add(item);lvwTasks.Items.Add(item); } }

Page 44: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

44

Step 3:Text Entry Step 3:Text Entry HandlingHandlingAdd the Event HandlerAdd the Event Handler

Page 45: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

45

Step 4:Add Menus and Step 4:Add Menus and ButtonsButtonsAdd toolbar to ctc fileAdd toolbar to ctc fileOpen PkgCmd.ctc fileOpen PkgCmd.ctc file

AddAdd

MENUS_BEGIN MENUS_BEGIN guidguidPDCToolWindowPDCToolWindowCmdSet:ToolbarMenu,/* == Menu */CmdSet:ToolbarMenu,/* == Menu */guidguidPDCToolWindowPDCToolWindowCmdSet:ToolbarMenu,/* == Relative to Group*/ CmdSet:ToolbarMenu,/* == Relative to Group*/ 0x0100,/* == Priority */0x0100,/* == Priority */TOOLWINDOWTOOLBAR, /* == Menu Type*/ TOOLWINDOWTOOLBAR, /* == Menu Type*/ "Toolbar"; /* == Text*/ "Toolbar"; /* == Text*/ MENUS_END MENUS_END

NEWGROUPS_BEGIN NEWGROUPS_BEGIN guidguidPDCToolWindowPDCToolWindowCmdSet:ToolbarMenuGroup, /* == New Group */CmdSet:ToolbarMenuGroup, /* == New Group */guidguidPDCToolWindowPDCToolWindowCmdSet:ToolbarMenu, /* == Parent Group*/ CmdSet:ToolbarMenu, /* == Parent Group*/ 0x0100; /* == Priority */ 0x0100; /* == Priority */ NEWGROUPS_END NEWGROUPS_END

BUTTONS_BEGIN BUTTONS_BEGIN guidguidPDCToolWindowPDCToolWindowCmdSet:cmdidAddTask, /* == Command */CmdSet:cmdidAddTask, /* == Command */guidguidPDCToolWindowPDCToolWindowCmdSet:ToolbarMenuGroup, /* == Parent Group */ CmdSet:ToolbarMenuGroup, /* == Parent Group */ 0x0100, /* == Priority */ 0x0100, /* == Priority */ guidguidPDCToolWindowPDCToolWindowCmdSet:bmpPic2, /* == Image */ CmdSet:bmpPic2, /* == Image */ BUTTON, /* == Button Type */ BUTTON, /* == Button Type */ , /* == Visibility */ , /* == Visibility */ "Add Task"; /* == Text */"Add Task"; /* == Text */BUTTONS_ENDBUTTONS_END

Page 46: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

46

Step 4:Add Menus and Step 4:Add Menus and Buttons Buttons Add toolbar to ctc fileAdd toolbar to ctc file

Page 47: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

47

Step 4:Menus and Buttons Step 4:Menus and Buttons

Add toolbar, PkgCmd-ID.h fileAdd toolbar, PkgCmd-ID.h fileAddAdd

#define ToolbarMenu 0x1000#define ToolbarMenu 0x1000

#define ToolbarMenuGroup 0x1100#define ToolbarMenuGroup 0x1100

#define cmdidAddTask 0x110 #define cmdidAddTask 0x110

Page 48: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

48

Step 4:Add Menus and Step 4:Add Menus and Buttons Buttons Add toolbar, PkgCmdID.h fileAdd toolbar, PkgCmdID.h file

Page 49: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

49

Step 4:Menus and Buttons Step 4:Menus and Buttons

Add toolbar, PkgCmdID.cs fileAdd toolbar, PkgCmdID.cs fileAddAdd

public const int cmdidAddTask = public const int cmdidAddTask = 0x110;0x110;

public const int ToolbarMenu = 0x1000;public const int ToolbarMenu = 0x1000;

public const int ToolbarMenuGroup = public const int ToolbarMenuGroup = 0x1100; 0x1100;

Page 50: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

50

Step 4:Add Menus and Step 4:Add Menus and Buttons Buttons Add toolbar, PkgCmdID.cs fileAdd toolbar, PkgCmdID.cs file

Page 51: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

51

Step 4:Add Menus and Step 4:Add Menus and Buttons Buttons Add toolbar creation to Add toolbar creation to pdcToolWindow.cspdcToolWindow.cs

Add to constructorAdd to constructor

this.ToolBar = new this.ToolBar = new System.ComponentModel.Design.CommandID(System.ComponentModel.Design.CommandID( GuidList.guid GuidList.guidPDCToolWindowPDCToolWindowCmdSet,CmdSet,

PkgCmdIDList.ToolbarMenu);PkgCmdIDList.ToolbarMenu);

Page 52: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

52

Step 4:Add Menus and Step 4:Add Menus and Buttons Buttons Add toolbar creation to Add toolbar creation to pdcToolWindow.cspdcToolWindow.cs

Page 53: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

53

Step 5:Add Task-Priority Step 5:Add Task-Priority FormFormAdd Form Controls and PropertiesAdd Form Controls and PropertiesAdd a new form AddTaskDialog.csAdd a new form AddTaskDialog.cs

Add labelAdd labelText property &DescriptionText property &Description

Add multiline textbox (need to set Add multiline textbox (need to set property)property)

Name=txtDescriptionName=txtDescriptionAdd a labelAdd a label

Text property &PriorityText property &PriorityAdd a comboboxAdd a combobox

Name=cmbPriorityName=cmbPriorityItems ( High, Medium, Low )Items ( High, Medium, Low )

Add 2 ButtonsAdd 2 ButtonsName=btnOk Name=btnOk Name=btnCancelName=btnCancel

Page 54: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

54

Step 5:Add Task-Priority Step 5:Add Task-Priority Form Form Set Form propertiesSet Form properties

BtnOk, btnCancelBtnOk, btnCancelSet accept button to btnOkSet accept button to btnOk

Button Property:Set DialogResult to OKButton Property:Set DialogResult to OKSet cancel button to bntCancelSet cancel button to bntCancel

Form border styleForm border styleFixed dialogFixed dialog

Maximize boxMaximize boxFalseFalse

Minimize boxMinimize boxFalseFalse

ShowInTaskBarShowInTaskBarFalseFalse

ShowIconShowIconfalsefalse

StartPositionStartPositioncenterParentcenterParent

TextTextAdd TaskAdd Task

Page 55: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

55

Step 5:Add Task-Priority Step 5:Add Task-Priority Form Form UI layoutUI layoutEnsure Tab Order matches UI Ensure Tab Order matches UI

GuidelinesGuidelinesArticle adds cancel firstArticle adds cancel first

Simply by adding Ok first avoids having Simply by adding Ok first avoids having to diddle with tab orderto diddle with tab order

Page 56: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

56

Step 5:Add Task-Priority Step 5:Add Task-Priority Form Form Set form propertiesSet form properties

Page 57: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

57

Step 6:Retrieve User Data Step 6:Retrieve User Data Wire up properties in AddTaskDialogWire up properties in AddTaskDialog

View codeView codeAdd:Add:

public string Descriptionpublic string Description{{

getget{{

return txtDescription.Text;return txtDescription.Text;}}setset{{

ttxtDescription.Text = value;xtDescription.Text = value;}}

}}

Page 58: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

58

Step 6:Retrieve User Data Step 6:Retrieve User Data Wire up properties in AddTaskDialogWire up properties in AddTaskDialog

View codeView codeAdd:Add:

public string Prioritypublic string Priority{{

getget{{

return cmbPriority.SelectedText;return cmbPriority.SelectedText;}}setset{{

cmbPriority.SelectedText = value; cmbPriority.SelectedText = value; //this could cause problems if a funky //this could cause problems if a funky gets gets value value

passed in.passed in.}}

}}

Page 59: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

59

Step 6:Retrieve User Data Step 6:Retrieve User Data Wire up properties in AddTaskDialogWire up properties in AddTaskDialog

Page 60: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

60

Step 7:Enable Toolbar Step 7:Enable Toolbar ButtonsButtonsWire up the toolbar buttonWire up the toolbar buttonIn PDCToolWindowPackage.cs, In PDCToolWindowPackage.cs, in Initialize and after existing tool window in Initialize and after existing tool window commandcommandAddAdd

CommandID addTaskCommandIDCommandID addTaskCommandID;;MenuCommand addTaskMenuCmdMenuCommand addTaskMenuCmd;;

// // CommandID to match CTC commandCommandID to match CTC commandaddTaskCommandID = new CommandID(addTaskCommandID = new CommandID( GuidList.guidPDCToolWindowCmdSet,GuidList.guidPDCToolWindowCmdSet,

(int)PkgCmdIDList.cmdidAddTask);(int)PkgCmdIDList.cmdidAddTask);

//construct MenuCommand that combines eventHandler with CommandID//construct MenuCommand that combines eventHandler with CommandIDaddTaskMenuCmd = new MenuCommand(new EventHandler(AddTask),addTaskMenuCmd = new MenuCommand(new EventHandler(AddTask),

addTaskCommandID);addTaskCommandID);

// pass to VS IDE// pass to VS IDEmcs.AddCommand(addTaskMenuCmd);mcs.AddCommand(addTaskMenuCmd);

Page 61: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

61

Step 7:Enable Toolbar Step 7:Enable Toolbar Buttons Buttons AddTask methodAddTask methodOpen PDCToolWindowPackage.csOpen PDCToolWindowPackage.cs

After ShowToolWindowAfter ShowToolWindow

Add:Add:

private void AddTask(object private void AddTask(object sender,EventArgs e)sender,EventArgs e)

{{

AddTaskDialog atd = new AddTaskDialog atd = new AddTaskDialog();AddTaskDialog();

atd.ShowDialog()atd.ShowDialog();;

}}

Page 62: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

62

Step 7:Enable Toolbar Step 7:Enable Toolbar Buttons Buttons Wire up Toolbar and addTask CommandWire up Toolbar and addTask Command

Page 63: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

63

Step 8:Data Forwarding Step 8:Data Forwarding Static Accessor for event subscribingStatic Accessor for event subscribing

Open PDCToolWindowPackage.csOpen PDCToolWindowPackage.csAfter DisposeAfter DisposeAdd:Add:

private static PDCToolWindow staticPackage = null;private static PDCToolWindow staticPackage = null;public static PDCToolWindowpublic static PDCToolWindow

PDCToolWindowSingletonPDCToolWindowSingleton{{

getget{{

return staticPackage;return staticPackage;}}

}}

Page 64: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

64

Step 8:Data Forwarding Step 8:Data Forwarding Save package instanceSave package instance

Open PDCToolWindowPackge.csOpen PDCToolWindowPackge.cs

In constructor, add last:In constructor, add last:

PDCToolWindow.staticPackage = PDCToolWindow.staticPackage = this;this;

Page 65: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

65

Step 8:Data Forwarding Step 8:Data Forwarding Static Accessor and Save package Static Accessor and Save package instanceinstance

Page 66: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

66

Step 9:Data Forwarding Step 9:Data Forwarding Add delegate and eventAdd delegate and event

Open PDCToolWindowPackage.csOpen PDCToolWindowPackage.cs

Add, before constructor:Add, before constructor:

public delegate void TaskCreated(object public delegate void TaskCreated(object sender, sender, TaskCreatedEventArgs e);TaskCreatedEventArgs e);

public event TaskCreated OnTaskCreated; public event TaskCreated OnTaskCreated;

Page 67: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

67

Step 9:Data Forwarding Step 9:Data Forwarding Add EventArgs subclass to matchAdd EventArgs subclass to match

Open PDCToolWindowPackage.csOpen PDCToolWindowPackage.csAdd at the endAdd at the end

public class TaskCreatedEventArgs : EventArgspublic class TaskCreatedEventArgs : EventArgs{{

private string m_description;private string m_description;private string m_priority;private string m_priority;

public TaskCreatedEventArgs(string desc, string pri)public TaskCreatedEventArgs(string desc, string pri){{

m_description = desc;m_description = desc;m_priority = pri;m_priority = pri;

}}public string Descriptionpublic string Description{{

get { return m_description; }get { return m_description; }}}public string Prioritypublic string Priority{{

get { return m_priority; }get { return m_priority; }}}

}}

Page 68: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

68

Step 9:Data Forwarding Step 9:Data Forwarding Add delegate,event,and Eventargs Add delegate,event,and Eventargs subclassssubclasss

Page 69: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

69

Step 9:Data ForwardingStep 9:Data ForwardingAdd event handler for EventArgs Add event handler for EventArgs subclasssubclassOpen PDCToolWindowClientarea.csOpen PDCToolWindowClientarea.cs

Add to constructor:Add to constructor:

PDCToolWindow.PDCToolWindowSingleton.OnTaskCreated += PDCToolWindow.PDCToolWindowSingleton.OnTaskCreated += new PDCToolWindow.TaskCreated(TaskWasCreated); new PDCToolWindow.TaskCreated(TaskWasCreated);

And add method:And add method:

private void TaskWasCreated(object sender, private void TaskWasCreated(object sender, TaskCreatedEventArgs e)TaskCreatedEventArgs e)

{{

AddTask(e.Description);AddTask(e.Description);

}}

Page 70: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

70

Step 9:Data Forwarding Step 9:Data Forwarding Add event handler for event argsAdd event handler for event args

Page 71: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

71

Step 9:Data ForwardingStep 9:Data ForwardingUpdate AddTaskUpdate AddTask

Open PDCToolWindowPackage.csOpen PDCToolWindowPackage.csUpdate AddTask method:Update AddTask method:

private void AddTask(object sender, EventArgs e)private void AddTask(object sender, EventArgs e){{

AddTaskDialog atd = new AddTaskDialog();AddTaskDialog atd = new AddTaskDialog();if (atd.ShowDialog() == if (atd.ShowDialog() == System.Windows.Forms.DialogResult.OK)System.Windows.Forms.DialogResult.OK){{

string description = atd.Description;string description = atd.Description;string priority = atd.Priority;string priority = atd.Priority;

if (OnTaskCreated != null)if (OnTaskCreated != null) OnTaskCreated(this, OnTaskCreated(this,

new TaskCreatedEventArgs(description,new TaskCreatedEventArgs(description, priority)); //add thispriority)); //add this}}

} }

Page 72: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

72

Step 9:Data Forwarding Step 9:Data Forwarding Update AddTaskUpdate AddTask

Page 73: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

73

Step 10:Done Step 10:Done TestTest

Test in Experimental HiveTest in Experimental Hive

See View Menu->Other WindowsSee View Menu->Other Windows

See Toolbar->Other WindowsSee Toolbar->Other Windows

Page 74: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

74

Test:View MenuTest:View Menu

Page 75: 1 Visual Studio: Extending Visual Studio With Add-ins And Packages Philip Taylor ptaylor@microsoft.comTLN404 Program Manager, Visual Studio 2005 SDK Microsoft

75

Test:ToolbarTest:Toolbar