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 

FreeAgent Small Business Online Accounting
Business Protection by Crisis Cover

Tag Cloud

AJAX (4) Analysis (3) ASP (6) ASP.Net (59) Error Reporting (4) Web Service (2) WSDL (1) Atlas (2) Azure (1) Born In The Barn (1) Business (89) Business Start-up Advice (32) Client (17) Expanding Your Business (23) Recruitment (1) C# (22) Canoeing (4) Canoe Racing (5) Cheshire Ring Race (5) Racing (2) Training (4) CIMA (1) Cisco (1) 7970G (1) CMS (1) Code Management (1) Cohorts (4) Commerce4Umbraco (1) Content (1) Content Management (1) Content Management System (1) CSS (4) dasBlog (5) DDD (2) DDDSW (1) Design (11) Icons (1) Development (26) Domain Names (1) eCommerce (12) Employment (2) General (39) Christmas (6) Fun and Games (11) Internet (22) Random (46) RX-8 (8) Git (1) Google (1) Google AdWords (1) Google Analytics (1) Hacking (1) Helpful Script (3) Home Cinema (2) Hosting (2) HTML (3) IIS (11) iPhone (1) JavaScript (5) jQuery (2) Marketing (6) Email (1) Multipack (1) MVC (1) Networking (3) Nintendo (1) Nuget (1) OS Commerce (1) Payment (1) Photography (1) PHP (1) Plugin (1) PowerShell (3) Presentation (1) Press Release (1) Productivity (3) Random Thought (1) Script (2) Security (2) SEO (6) Server Maintenance (7) Server Management (12) Social Media (2) Social Networking (3) Experiment (1) Software (11) Office (5) Visual Studio (14) Windows (5) Vista (1) Source Control (1) SQL (9) SQL Server (19) Statistics (2) Stored Procedure (1) Sublime Text 2 (1) SVN (1) TeaCommerce (1) Testing (2) The Cloud (1) The Site Doctor (136) Turnover Challenge (1) Twitter (3) uCommerce (13) Umbraco (31) 2009 (1) 2011 (1) Useful Script (2) Virtual Machine (1) Web Development (71) WebDD (33) Wii (1) Windows Azure (1) XSLT (1)

Blog Archive

Search

<June 2013>
SunMonTueWedThuFriSat
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

Recent Comments

Blog Archive

Various Links

Google+

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!

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)

© 2013 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 :)

Update via Graeme: Make sure your module name (in the above it's Module1) is the same as your file name otherwise Step 5 minght not work.

 

Don't forget to follow me on Twitter.

Friday, November 12, 2010 4:57:29 PM (GMT Standard Time, UTC+00:00)
Bravo! That works just fine in Visual Studio 2010
Tuesday, November 16, 2010 2:21:56 PM (GMT Standard Time, UTC+00:00)
SCORE! Current firm I'm employed at is in the midsts of migrating legacy to newer .NET tech, and one of the worse parts about the solution they've devised... is that it has close to 100 projects in the ONE solution. This thing did what I was looking for just perfectly! Thank you for your time and effort in hashing this one out for the rest of us!
Monday, December 27, 2010 4:19:49 AM (GMT Standard Time, UTC+00:00)
Make Sure "Show All Settings" is checked.
Gunbilegt Byambadorj
Monday, February 28, 2011 11:50:30 AM (GMT Standard Time, UTC+00:00)
Thank You. Exactly what i was looking for.
Anders Tornes
Friday, March 04, 2011 8:32:55 PM (GMT Standard Time, UTC+00:00)
Step 5 didn't work for me. I tried pasting CollapseTree into the field and it doesn't show the macro i created. I even tried pasting the code into Module1 as suggested. I'm using VS2008 Team Edition. Any ideas? This is a very handy macro if i can get it to work!
jmadden93
Saturday, March 05, 2011 11:07:26 AM (GMT Standard Time, UTC+00:00)
@jmadden93 -hmm I'm not sure to be honest, I suspect it's got something to do with the way the modules are tied in with Visual Studio, I've found in the past I've had to create a completely new module etc to kick it into action...
Monday, March 14, 2011 4:37:34 PM (GMT Standard Time, UTC+00:00)
I have the same problem. I get to step 5, type in CollapseTree, and nothing shows up. I tried editing Module1 and creating a new Module. Neither works. I tried it in both VS2005 and VS2010. I have no idea how this works for anyone else.
Daniel Harris
Monday, March 14, 2011 5:52:08 PM (GMT Standard Time, UTC+00:00)
I figured out why it wasn't working for me. You have to name your module CollapseAll. If you don't then when you type CollapseTree in the Show Commands textbox it won't show up.
Daniel Harris
Thursday, March 17, 2011 4:56:25 PM (GMT Standard Time, UTC+00:00)
Thanks! Exactly what I was looking for.
Madcoder
Wednesday, May 25, 2011 1:49:46 PM (GMT Daylight Time, UTC+01:00)
Super! It does work!!!
Jan Semorad
Tuesday, November 29, 2011 12:19:42 AM (GMT Standard Time, UTC+00:00)
Worked fine until applying SP1 for VS.
Now gives an error:
"Operation could not be completed. The parameter is incorrect."

An update would be much appreciated

Thanks
Bill Morita
Friday, December 09, 2011 12:53:02 AM (GMT Standard Time, UTC+00:00)
Great stuff, one trap I found is that if the module name in the code (eg Public Module CollapseAll) is different to the module name in the Project Explorer (eg Module1), then you won't be able to find the macro at step 5
Graeme McDonald
Monday, December 12, 2011 3:50:31 PM (GMT Standard Time, UTC+00:00)
Thanks Graeme, I'll update the post with your comment.

I've also started using the VS Power Commands extension recently which has this built in (and you can map to it too).
Friday, May 25, 2012 3:20:14 AM (GMT Daylight Time, UTC+01:00)
Appreciate the recommendation. Will try it out.
Friday, June 29, 2012 9:21:12 PM (GMT Daylight Time, UTC+01:00)
Thanks very helfpul!
taylor
Name
E-mail
(will show your gravatar icon)
Home page

Comment (HTML not allowed)  

Live Comment Preview