WindowConfiguration Selection Example

This example demonstrates how to create, reference, and delete multiple window configurations, as well as how to select and apply them. It takes a snapshot of your current window configuration. After running WinConfigExample2a, move some windows of the Visual Studio environment around, and then run the second procedure, WinConfigExample2b. This takes another snapshot of your current window configuration, and compares it to the first snapshot. It then deletes both window configurations, resetting your environment as it was before.

To use the following examples, copy them to a new add-in project, and then run the first procedure, WinConfigExample2a, in the add-in's OnConnection method. For more information on how to run the code samples as a part of an add-in, see How to: Compile and Run the Automation Object Model Code Examples.

Example

Sub WinConfigExample2a(ByVal dte As DTE)
    Dim colWinConfig As WindowConfigurations = dte.WindowConfigurations
    Dim objWinConfig As WindowConfiguration

    MsgBox("Taking snapshot of current window configuration... ")
    objWinConfig = colWinConfig.Add("Layout_1")
    MsgBox("Created new configuration: " & _
    colWinConfig.Item(colWinConfig.Count).Name)
    FillMsg(colWinConfig)
End Sub

Sub WinConfigExample2b(ByVal dte As DTE)
    ' Before running this, alter the current window configuration.
    Dim colWinConfig As WindowConfigurations = dte.WindowConfigurations
    Dim objWinConfig As WindowConfiguration
    Dim lCtr As Integer

    ' Create another new window configuration.
    MsgBox("Now we'll save the new configuration...")
    objWinConfig = colWinConfig.Add("Layout_2")

    MsgBox("Created new configuration: " & _
    colWinConfig.Item(colWinConfig.Count).Name)
    FillMsg(colWinConfig)
    MsgBox("Now we'll load and apply the Layout_1 configuration." & _
    vbCr & "You should see the windows change back.")
    colWinConfig.Item(colWinConfig.Count - 1).Apply()
    MsgBox("Now we'll change back to Layout_2...")
    colWinConfig.Item(colWinConfig.Count).Apply()

    ' Delete both new window configurations.
    colWinConfig.Item(3).Apply()
    For lCtr = (colWinConfig.Count - 1) To (colWinConfig.Count)
        objWinConfig = colWinConfig.Item(colWinConfig.Count)
        objWinConfig.Delete()
        FillMsg(colWinConfig)
    Next lCtr
 End Sub

Sub FillMsg(ByVal colWinConfig As Object)
    ' Lists all currently available named window configurations.
    Dim lCtr As Integer
    Dim strMsg As String

    For lCtr = 1 To colWinConfig.count
        strMsg = strMsg & "Configuration name " & lCtr & ": " & _
        colWinConfig.Item(lCtr).Name & vbCr
    Next lCtr
    strMsg = "Current Configurations: " & vbCr & strMsg
    MsgBox(strMsg)
End Sub
void WinConfigExample2a(_DTE dte)
{
    WindowConfigurations colWinConfig = dte.WindowConfigurations;
    WindowConfiguration objWinConfig;

    MessageBox.Show("Taking snapshot of current window 
    configuration... ");
    objWinConfig = colWinConfig.Add("Layout_1");
    MessageBox.Show("Created new configuration: " + 
    colWinConfig.Item(colWinConfig.Count).Name);
    FillMsg(colWinConfig);
}

void WinConfigExample2b(_DTE dte)
{
    // Before running this, alter the current window configuration.
    WindowConfigurations colWinConfig = dte.WindowConfigurations;
    WindowConfiguration objWinConfig; 
    int lCtr;

    // Create another new window configuration.
    MessageBox.Show("Now we'll save the new configuration...");
    objWinConfig = colWinConfig.Add("Layout_2");

    MessageBox.Show("Created new configuration: " + 
    colWinConfig.Item(colWinConfig.Count).Name);
    FillMsg(colWinConfig);
    MessageBox.Show("Now we'll load and apply the Layout_1 
    configuration. \n You should see the windows change back.");
    colWinConfig.Item(colWinConfig.Count - 1).Apply(true);
    MessageBox.Show("Now we'll change back to Layout_2...");
    colWinConfig.Item(colWinConfig.Count).Apply(true);

    // Delete both new window configurations.
    colWinConfig.Item(3).Apply(true);
    for (lCtr = (colWinConfig.Count - 1); lCtr < (colWinConfig.Count 
    +1); lCtr++)
    {
        objWinConfig = colWinConfig.Item(colWinConfig.Count);
        objWinConfig.Delete();
        FillMsg(colWinConfig);
    }
}

void FillMsg(WindowConfigurations colWinConfig )
{
    // Lists all currently available named window configurations.
    int lCtr;
    string strMsg = null;

    for (lCtr = 1; lCtr < colWinConfig.Count + 1; lCtr ++)
    {
    strMsg = strMsg + "Configuration name " + lCtr + ": " + _
    colWinConfig.Item(lCtr).Name + "\n"; 
    }
    strMsg = "Current Configurations: \n" + strMsg;
    MessageBox.Show(strMsg);
}

See Also

Reference

WindowConfiguration

WindowConfigurations