6 Ekim 2009 Salı

Visual studio da kalablık bir proje grubu ile çalışıyorsak bazen bunları genişletip
daraltmak (collapse) hali hazırda bir kısayol yada buton olmadığı(yada benim ve proje ekibinde sorduğum arkadaşların bilmedi) için zahmetli olabiliyor.
aşağıdaki adımları izlersek bu işi bizim için yapan bir butonumuz olacak. bunun için studio da alt+f8 (tools->Macros->macro explorer) kısa yoluyla açtığımız macro explorer da yeni bir macro oluşturup yada hali hazırda var olan macrolardan herhangi birinin altında, ki ben Samples->MakeAddin' in
altında ekledim ve böylesi daha kolay, eklediğimiz yeni macromuzun içine aşağıdaki kodu ekliyoruz. Yalnız var olan bir macro modülünün altına ekleme yapıyorsak mevcut yapıyı bozmamaya dikkat ediyoruz.

-----start------
Imports System
Imports EnvDTE
Imports System.Diagnostics

Public Module Collapse
Sub CollapseAll()
' Get the the Solution Explorer tree
Dim UIHSolutionExplorer As UIHierarchy
UIHSolutionExplorer = DTE.Windows.Item(Constants.vsext_wk_SProjectWindow).Object()
' Check if there is any open solution
If (UIHSolutionExplorer.UIHierarchyItems.Count = 0) Then
' MsgBox("Nothing to collapse. You must have an open solution.")
Return
End If
' Get the top node (the name of the solution)
Dim UIHSolutionRootNode As UIHierarchyItem
UIHSolutionRootNode = UIHSolutionExplorer.UIHierarchyItems.Item(1)
UIHSolutionRootNode.DTE.SuppressUI = True
' Collapse each project node
Dim UIHItem As UIHierarchyItem
For Each UIHItem In UIHSolutionRootNode.UIHierarchyItems
'UIHItem.UIHierarchyItems.Expanded = False
If UIHItem.UIHierarchyItems.Expanded Then
Collapse(UIHItem)
End If
Next
' 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.
UIHSolutionRootNode.Select(vsUISelectionType.vsUISelectionTypeSelect)
UIHSolutionRootNode.DTE.SuppressUI = False
End Sub

Private Sub Collapse(ByVal item As UIHierarchyItem)
For Each eitem As UIHierarchyItem In item.UIHierarchyItems
If eitem.UIHierarchyItems.Expanded AndAlso eitem.UIHierarchyItems.Count > 0 Then
Collapse(eitem)
End If
Next
item.UIHierarchyItems.Expanded = False
End Sub
End Module

------end-------

macromuzu hazırladıktan sonra toolbar da boş bir yere tıklayıp "customize" deyip karşımıza çıkan pencerede toolbars tabında yeni bir toolbar tanımlıyoruz.
tanımladığımız yeni toolbar yan tarafta içi boş bir şekilde görünüyor. ardından commands tabında ki categories listesinden "Macros" a tıklayıp, yan taraftaki "Commands" listedinde bizim oluşturduğumuz macroyu buluyoruz. oluşturduğumuz makroyu sürükleyip yeni toolbarımıza
bırakıyoruz. artık toolbarda, tıklandığında tüm projeleri daraltan yeni bir butonumuz var. Hayırlı olsun. İyi günlerde kullanın.