private void TabItem_MouseRightButtonUp(object sender, System.Windows.Input.MouseButtonEventArgs e) {
var tc = Helper.FindParentControl<TabControl>(this);
if (tc == null) return;
var firstItem = tc.Items.OfType<TabItem>().FirstOrDefault();
this.mnu = new ContextMenu();
Action<string, RoutedEventHandler> worker = (x, y) => {
var item = new MenuItem { Header = x };
item.Click += y;
this.mnu.Items.Add(item);
};
worker("Close current tab", new RoutedEventHandler((owner, a) => tc.RemoveTabItem(this)));
worker("Close all tabs", new RoutedEventHandler(
(owner, a) => {
foreach (TabItem tabItem in tc.Items.OfType<TabItem>().ToArray()) {
tc.RemoveTabItem(tabItem, true, true);
}
tc.NewTab(BESettings.StartupLocation, true);
}));
worker("Close all other tabs", new RoutedEventHandler((owner, a) => tc.CloseAllTabsButThis(this)));
this.mnu.Items.Add(new Separator());
worker("New tab", new RoutedEventHandler((owner, a) => tc.NewTab()));
worker("Clone tab", new RoutedEventHandler((owner, a) => tc.CloneTabItem(this)));
this.mnu.Items.Add(new Separator());
var miundocloser = new MenuItem();
miundocloser.Header = "Undo close tab";
miundocloser.IsEnabled = tc.ReopenableTabs.Count > 0;
miundocloser.Tag = "UCTI";
miundocloser.Click += new RoutedEventHandler((owner, a) => tc.ReOpenTab(tc.ReopenableTabs.Last()));
this.mnu.Items.Add(miundocloser);
this.mnu.Items.Add(new Separator());
worker("Open in new window", new RoutedEventHandler(
(owner, a) => {
System.Diagnostics.Process.Start(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName, this.ShellObject.ParsingName + " /nw");
tc.RemoveTabItem(this);
}));
if (this.mnu != null && this.mnu.Items.Count > 0) {
this.mnu.Placement = PlacementMode.Bottom;
this.mnu.PlacementTarget = this;
this.mnu.IsOpen = true;
}
}
}