private void OnContextMenuRequested(object sender, ItemContextMenuRequestEventArgs e) { var vm = ViewModel as TreeViewModel; var rts = vm != null ? vm.TreeSource : null; if (rts != null) { var item = ((ITreeItemListItem)e.Item); var file = item.TreeItem as TreeFile; if (file != null) { var menu = new ContextMenuStrip(); menu.Items.AddRange( new ToolStripItem[] { GuiItemFactory.GetExtractAndOpenFileItem <ToolStripMenuItem>(DataSource.Data, file.RelativePath), GuiItemFactory.GetExtractAndOpenFileWithItem <ToolStripMenuItem>(DataSource.Data, file.RelativePath), GuiItemFactory.GetSaveAsItem <ToolStripMenuItem>(DataSource.Data, file.RelativePath), new ToolStripSeparator(), new ToolStripMenuItem(Resources.StrCopyToClipboard, null, new ToolStripItem[] { GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrFileName, file.Name), GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrRelativePath, file.RelativePath), GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrFullPath, file.FullPath), }), new ToolStripSeparator(), GuiItemFactory.GetBlameItem <ToolStripMenuItem>(rts.Revision, file), GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(rts.Revision, file), new ToolStripSeparator(), GuiItemFactory.GetCheckoutPathItem <ToolStripMenuItem>(rts.Revision, file), }); Utility.MarkDropDownForAutoDispose(menu); e.ContextMenu = menu; e.OverrideDefaultMenu = true; return; } var directory = item.TreeItem as TreeDirectory; if (directory != null) { var menu = new ContextMenuStrip(); menu.Items.AddRange( new ToolStripItem[] { new ToolStripMenuItem(Resources.StrOpen, null, (s, args) => e.Item.Activate()), GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(rts.Revision, directory), new ToolStripSeparator(), GuiItemFactory.GetCheckoutPathItem <ToolStripMenuItem>(rts.Revision, directory), }); Utility.MarkDropDownForAutoDispose(menu); e.ContextMenu = menu; e.OverrideDefaultMenu = true; return; } var commit = ((ITreeItemListItem)e.Item).TreeItem as TreeCommit; if (commit != null) { var menu = new ContextMenuStrip(); menu.Items.AddRange( new ToolStripItem[] { GuiItemFactory.GetPathHistoryItem <ToolStripMenuItem>(rts.Revision, commit), new ToolStripSeparator(), new ToolStripMenuItem(Resources.StrCopyToClipboard, null, new ToolStripItem[] { GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrName, commit.Name), GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrRelativePath, commit.RelativePath), GuiItemFactory.GetCopyToClipboardItem <ToolStripMenuItem>(Resources.StrFullPath, commit.FullPath), }), new ToolStripSeparator(), GuiItemFactory.GetCheckoutPathItem <ToolStripMenuItem>(rts.Revision, commit), }); Utility.MarkDropDownForAutoDispose(menu); e.ContextMenu = menu; e.OverrideDefaultMenu = true; return; } } }