public void Init()
        {
            TabModels.Clear();

            var artistTab = new ArtistTab();
            var venueTab = new VenueTab();
            var performanceTab = new PerformanceTab();

            TabModels.Add(artistTab);
            TabModels.Add(venueTab);
            TabModels.Add(performanceTab);
        }
 private static void win_ActiveViewChanged(object sender, EventArgs e)
 {
     try
     {
         if (sender is EditorWindow)
         {
             EditorWindow win = (EditorWindow)sender;
             if (PerformanceEditorViews.ContainsKey(win))
             {
                 PerformanceTab tab = PerformanceEditorViews[(EditorWindow)sender];
                 if (win.SelectedView == tab.ParentEditorView)
                 {
                     //flip a flag so some Microsoft code doesn't run... the PerformanceTab.OnGotFocus event will restore the value
                     win.GetType().InvokeMember("bSetNewSelection", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.SetField | System.Reflection.BindingFlags.ExactBinding | System.Reflection.BindingFlags.Instance, null, win, new object[] { false });
                 }
             }
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
     }
 }
        internal static void ExecutePackage(ProjectItem pi, string DataFlowGUID)
        {
            try
            {
                if (pi.DTE.Mode == vsIDEMode.vsIDEModeDebug)
                {
                    MessageBox.Show("Please stop the debugger first.");
                    return;
                }

                Window w = pi.Open(BIDSViewKinds.Designer); //opens the designer
                w.Activate();

                IDesignerHost designer = w.Object as IDesignerHost;
                if (designer == null)
                {
                    return;
                }
                EditorWindow win = (EditorWindow)designer.GetService(typeof(Microsoft.DataWarehouse.ComponentModel.IComponentNavigator));
                if (win == null || (win.PropertiesLinkComponent as Package) == null)
                {
                    MessageBox.Show("Package designer is not open yet. Try again in a moment.");
                    return;
                }
                Package package = (Package)win.PropertiesLinkComponent;

                EditorWindow.EditorView view = null;
                if (PerformanceEditorViews.ContainsKey(win))
                {
                    PerformanceTab tab = PerformanceEditorViews[win];
                    view = tab.ParentEditorView;
                    if (tab.IsExecuting)
                    {
                        MessageBox.Show("You may not execute the package until the previous execution of the package completes.");
                    }
                    else
                    {
                        if (DataFlowGUID == null)
                        {
                            tab.ExecutePackage();
                        }
                        else
                        {
                            tab.BreakdownPipelinePerformance(DataFlowGUID);
                        }
                    }
                }
                else
                {
                    win.ActiveViewChanged += new EventHandler(win_ActiveViewChanged);

                    PerformanceTabControlDelegateContainer delegateContainer = new PerformanceTabControlDelegateContainer();
                    view = new EditorWindow.EditorView(new EditorViewLoadDelegate(delegateContainer.CreatePerformanceTabControl), "Performance", "Visualize SSIS package execution performance (BIDS Helper)", 0, BIDSHelper.Resources.Common.Performance);
                    delegateContainer.win          = win;
                    delegateContainer.view         = view;
                    delegateContainer.projectItem  = pi;
                    delegateContainer.DataFlowGUID = DataFlowGUID;
                    win.Views.Add(view);
                    win.EnsureViewIsLoaded(view); //delegate will be called here
                }
                win.SelectedView = view;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
            }
        }