TabItem CreateTab(string title, string query, bool switchToNewTab)
		{
			TabItem newTab = new TabItem();
			Button closeButton = new Button { Style = this.Resources["CloseButton"] as Style };
			TextBlock header = new TextBlock { Margin = new Thickness(0, 0, 4, 0), MaxWidth = 120, MinWidth = 40 };

			newTab.Header = new StackPanel { Orientation = Orientation.Horizontal, Children = { header, closeButton } };

			closeButton.Click += new RoutedEventHandler(CloseButtonClick);
			closeButton.Tag = newTab;

			QueryView view;

			newTab.Content = view = new QueryView();

			view.Provider = this.provider;
			view.Reporter = new ErrorReporter(UpdateErrorList);
			view.SetRange(this.timeLine.SelectedStartIndex, this.timeLine.SelectedEndIndex);
			
			view.CurrentQuery = query;
			view.ShowQueryItems = true;
			view.ContextMenuOpening += delegate(object sender, ContextMenuEventArgs e) {
				object source = (e.OriginalSource is Shape) ? e.OriginalSource : view;
				MenuService.ShowContextMenu(view, source, "/AddIns/Profiler/QueryView/ContextMenu");
			};
			view.CurrentQueryChanged += delegate { ViewCurrentQueryChanged(header, view); };

			header.Text = title;
			header.TextTrimming = TextTrimming.CharacterEllipsis;
			header.TextWrapping = TextWrapping.NoWrap;
			header.ToolTip = title;
			tabView.Items.Insert(tabView.Items.Count - 1, newTab);
			if (switchToNewTab)
				tabView.SelectedItem = newTab;
			
			return newTab;
		}