Tek vuruşta Solution Explorer daki tüm açılır nesneleri Collapsed durumuna getirebilirmisiniz? Bu işkenceden bedavaya kurtulun!
Visual Studio solution açıldığında explorer da tüm nesnelerin açık durumda gelmesi bende bir süredir karın ağrısına sebep oluyordu. Microsoftun böyle bariz şeyleri pakete koymamasını da anlamak mümkün değil. Buna kesin ve etkili çözümü bulduğumda buraya not geçmeyi unutmuşum. Birkaç değerli abimizin scriptlerinden derlenerek hazırlanan hicaz makamındaki "Collapse Solution Explorer" adlı toolbar butonu eserini icra edeceğiz :p
Tools -> Macros -> Macro Explorer açıyoruz.
"My Macros" sağ tık new module diyip Collapse ismini verdiğimiz modul içeriğine aşağıdakini yerleştiriyoruz
Imports System
Imports EnvDTE
Imports System.Diagnostics
Public Module Collapse
Sub CollapseAll()
' 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
Sonrasında Toolbarların orada boş biryere sağ tıklayıp customize diyoruz.
Toolbars sekmesinde new diyerek kendi toolbarımızı yaratıyoruz. (Örn: Mahmut)
Commands sekmesine geçip MyMacros.Collapse.CollapseAll nesnesini yeni oluşan Mahmut toolbarının üstüne sürüklüyoruz.
Toolbarımızı IDE üzerinde uygun bir yere yrleştiriyoruz. Ben solution explorerın sağ üstünü tercih ediyorum.
Sript her türlü çalışıyor. Çalışma süresini çok büyük solution larda 30 saniyeye kadar vurduğunu gördüm ama ederi bu zaten tüm nodları recursive olarak kapatıyor.
Perşembe, Ekim 07, 2010
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder