Tim

Footprints in the snow of a warped mind

Collapse all Solution Explorer items in Visual Studio 2010

Where to find me

Flickr Icon  Twitter Icon  Linked In Icon  FaceBook Icon  Windows Live Alerts Butterfly  RSS 2.0 

Tag Cloud

AJAX (4) ASP (6) ASP.Net (50) Error Reporting (4) Web Service (1) WSDL (1) Atlas (2) Business (76) Business Start-up Advice (25) Client (14) Expanding Your Business (17) C# (16) Canoeing (4) Canoe Racing (5) Cheshire Ring Race (5) Racing (2) Training (4) CIMA (1) Cisco (1) 7970G (1) CSS (3) dasBlog (4) DDD (1) Design (9) Icons (1) Development (12) General (39) Christmas (6) Fun and Games (11) Internet (22) Random (46) RX-8 (8) Home Cinema (2) Hosting (2) IIS (10) iPhone (1) JavaScript (4) jQuery (1) Marketing (5) Email (1) Multipack (1) Networking (2) Nintendo (1) OS Commerce (1) Photography (1) PHP (1) PowerShell (2) Press Release (1) Productivity (2) Security (2) SEO (5) Server Maintenance (4) Server Management (9) Social Media (1) Social Networking (2) Experiment (1) Software (9) Office (5) Visual Studio (12) Windows (4) Vista (1) SQL (1) SQL Server (13) Stored Procedure (1) Testing (1) The Site Doctor (104) Turnover Challenge (1) Twitter (2) Umbraco (17) 2009 (1) Web Development (54) WebDD (33) Wii (1)

Blog Archive

Search

<February 2010>
SunMonTueWedThuFriSat
31123456
78910111213
14151617181920
21222324252627
28123456
78910111213

Recent Comments

Blog Archive

Various Links

Blogs I Read

[Feed] Google Blog
Official Google Webmaster Central Blog
[Feed] Matt Cutts
Gadgets, Google, and SEO
[Feed] Ol' Deano's Blog
My mate Dean's blog on my space, equally as random as mine but not off on as much of a tangent!
[Feed] Sam's Blog
Sam is one of my younger brothers studying Product Design and Manufacture at Loughborough, this is his blog :) Enjoy!

Recent Tracks

last.fm - The Social Music Revolution

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

newtelligence dasBlog 2.2.8279.16125

Send mail to the author(s) Email Me (Tim Gaunt)

© 2010 Tim Gaunt.

Sign In

    # Saturday, February 27, 2010

    Collapse all Solution Explorer items in Visual Studio 2010

    Saturday, February 27, 2010 12:22:48 PM (GMT Standard Time, UTC+00:00)

    Ever wanted to be able to collapse all items within Visual Studio's solution window? This is a nifty little Visual Studio macro that I came across a few years ago and have been using successfully in Visual Studio 2005, Visual Studio 2008 and now in the Visual Studio 2010 RC.

    I'll overview how to install it below in case you're unsure how to do it but I have this bound to the key combination Ctrl+Shift+` as ReSharper now uses my previous key combination of Ctrl+` for it's new bookmark explorer.

    Anyway, here's the Visual Studio Solution Explorer item Collapse All macro:

    Imports System
    Imports EnvDTE
    Imports EnvDTE80
    Imports EnvDTE90
    Imports System.Diagnostics
    '-----------------------------------------------------------
    ' CollapseAll Module
    '-----------------------------------------------------------
    ' Simple macro that fully collapses all items in the 
    ' Solution Explorer rather than just the top level node
    '
    ' To make live easier, bind it to a keyboard setting such
    ' as Ctrl+Shift+` which by default has no bindings (Ctrl+` is
    ' now used by Resharper
    '
    ' Tested and works with:
    ' Visual Studio 2005
    ' Visual Studio 2008
    ' Visual Studio 2010
    '
    ' Originally from: http://bit.ly/bmRu3W
    '-----------------------------------------------------------
    Public Module CollapseAll
    
        Sub CollapseTree()
            ' Get the the Solution Explorer tree
            Dim solutionExplorer As UIHierarchy
            solutionExplorer = DTE.Windows.Item(Constants.vsext_wk_SProjectWindow).Object()
    
            ' Check if there is any open solution
            If (solutionExplorer.UIHierarchyItems.Count = 0) Then
                Return
            End If
    
            ' Get the top node (the name of the solution)
            Dim rootNode As UIHierarchyItem = solutionExplorer.UIHierarchyItems.Item(1)
            rootNode.DTE.SuppressUI = True
    
            ' Collapse each project node
            Collapse(rootNode, solutionExplorer)
    
            ' Select the solution node, or else when you click 
            ' on the solution window
            ' scrollbar, it will synchronize the open document 
            ' with the tree and pop
            ' out the corresponding node which is probably not what you want.
            rootNode.Select(vsUISelectionType.vsUISelectionTypeSelect)
            rootNode.DTE.SuppressUI = False
        End Sub
    
        Private Sub Collapse(ByVal item As UIHierarchyItem, ByRef solutionExplorer As UIHierarchy)
            For Each innerItem As UIHierarchyItem In item.UIHierarchyItems
                If innerItem.UIHierarchyItems.Count > 0 Then
                    ' Re-cursive call
                    Collapse(innerItem, solutionExplorer)
                    ' Collapse
                    If innerItem.UIHierarchyItems.Expanded Then
                        innerItem.UIHierarchyItems.Expanded = False
                        If innerItem.UIHierarchyItems.Expanded = True Then
                            ' Bug in VS 2005
                            innerItem.Select(vsUISelectionType.vsUISelectionTypeSelect)
                            solutionExplorer.DoDefaultAction()
                        End If
                    End If
    
                End If
            Next
        End Sub
    End Module

     

    In case you've never installed a Visual Studio macro before, here's a couple of instructions:

    1. In Visual Studio, press Alt+F11 to load up the Visual Studio Macro editor (or View > Other Windows > Macro Explorer > Double Click on "Module1" in "My Macros")
    2. Either create a new module of it it's not in use, you can edit Module1 and past in the code above
    3. Save and close the Visual Studio Macro editor
    4. You should be back in Visual Studio so click "Tools > Options > Environment > Keyboard"
    5. In the "Show commands containing" text box, enter "CollapseTree" and the macro you just created should be shown.
    6. Make sure "Global" is selected in the "Use new shortcut in:" drop down list
    7. Press Ctrl+Shift+` in the "Press shortcut keys:" text box
    8. Click Assign
    9. Click OK

    You're done :)