×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ソリューション内のプロジェクトとかフォルダーが
何階層にもなっていると、幾重にも展開されたプロジェクトやらフォルダーやら、
あーもうー的に縦広がり横広がりに耐えかね耐えかねました。
折りたたむマクロを作ろうと作ってみたのですが、
プロジェクトは折りたためれども、
フォルダー以下を折りたたむのがわからず。
調べたところまさにドン・ピシャリなのを作っている人が
いらっしゃいました。
何階層にもなっていると、幾重にも展開されたプロジェクトやらフォルダーやら、
あーもうー的に縦広がり横広がりに耐えかね耐えかねました。
折りたたむマクロを作ろうと作ってみたのですが、
プロジェクトは折りたためれども、
フォルダー以下を折りたたむのがわからず。
調べたところまさにドン・ピシャリなのを作っている人が
いらっしゃいました。
「Useful Visual Studio Macros」
http://tomfaust.blogspot.com/2008/05/useful-vs2008-macros.html
自分なりに解釈したコメントをつけたのが以下。
- マクロ
パタパタと全部ひっくるめて折りたたんでくださるマクロで
便利なことこの上なしです。
ただしすでにたたまれているノード以下は
折りたたまれない仕様となっているようです。
http://tomfaust.blogspot.com/2008/05/useful-vs2008-macros.html
自分なりに解釈したコメントをつけたのが以下。
- マクロ
' ソリューションTree内のプロジェクトをすべて折りたたむ
Sub CollapseAllProject()
' ソリューションエクスプローラーオブジェクトを取得
Dim solutionExplorer As UIHierarchy = DTE.Windows.Item(Constants.vsext_wk_SProjectWindow).Object()
' ソリューション以下の階層アイテムがなければスルー
If (solutionExplorer.UIHierarchyItems.Count = 0) Then
Return
End If
' ルートノードを取得。操作中断。
Dim rootNode As UIHierarchyItem = solutionExplorer.UIHierarchyItems.Item(1)
rootNode.DTE.SuppressUI = True
' すべてのプロジェクトをたたむ。再帰。
CollapseProject(rootNode, solutionExplorer)
' ルートノードを選択。
' ドキュメント選択時にソリューションTreeを同期する設定に。
rootNode.Select(vsUISelectionType.vsUISelectionTypeSelect)
' 操作再開。
rootNode.DTE.SuppressUI = False
End Sub
' ノード内にあるプロジェクトを折りたたむ
Private Sub CollapseProject(ByVal item As UIHierarchyItem, ByRef solutionExplorer As UIHierarchy)
' 対象ノードの子ノードを対象。
For Each innerItem As UIHierarchyItem In item.UIHierarchyItems
If innerItem.UIHierarchyItems.Count > 0 Then
' 下の子がいれば再帰
CollapseProject(innerItem, solutionExplorer)
' 折りたたむ
If innerItem.UIHierarchyItems.Expanded Then
innerItem.UIHierarchyItems.Expanded = False
If innerItem.UIHierarchyItems.Expanded = True Then
' VisualStudio2005のバグ用
innerItem.Select(vsUISelectionType.vsUISelectionTypeSelect)
solutionExplorer.DoDefaultAction()
End If
End If
End If
Next
End Sub
パタパタと全部ひっくるめて折りたたんでくださるマクロで
便利なことこの上なしです。
ただしすでにたたまれているノード以下は
折りたたまれない仕様となっているようです。
PR
この記事にコメントする