Wpf.Controls.TabItem.TabItem_MouseRightButtonUp C# (CSharp) Method

TabItem_MouseRightButtonUp() private method

private TabItem_MouseRightButtonUp ( object sender, System e ) : void
sender object
e System
return void
		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;
			}
		}
	}