mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-25 19:38:37 +08:00
# Conflicts: # CHANGELOG.TXT # CREDITS.TXT # README.MD # Tools/postbuild_installer.ps1 # Tools/set_LargeAddressAware.ps1 # mRemoteNGTests/mRemoteNGTests.csproj # mRemoteNGTests/packages.config # mRemoteV1/App/Logger.cs # mRemoteV1/App/Runtime.cs # mRemoteV1/App/Startup.cs # mRemoteV1/Connection/DefaultConnectionInfo.cs # mRemoteV1/Connection/Protocol/IntegratedProgram.cs # mRemoteV1/Connection/Protocol/PuttyBase.cs # mRemoteV1/Messages/MessageCollector.cs # mRemoteV1/Properties/AssemblyInfo.cs # mRemoteV1/Resources/Language/Language.Designer.cs # mRemoteV1/Resources/PuTTYNG.exe # mRemoteV1/Tools/ConnectionsTreeToMenuItemsConverter.cs # mRemoteV1/Tools/ExternalToolArgumentParser.cs # mRemoteV1/Tools/IeBrowserEmulation.cs # mRemoteV1/Tools/NotificationAreaIcon.cs # mRemoteV1/Tools/PortScanner.cs # mRemoteV1/UI/Controls/ConnectionTree/ConnectionTree.cs # mRemoteV1/UI/Controls/ConnectionTree/NameColumn.cs # mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.cs # mRemoteV1/UI/Forms/frmMain.cs # mRemoteV1/UI/Window/AboutWindow.cs # mRemoteV1/UI/Window/PortScanWindow.cs
77 lines
2.5 KiB
C#
77 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Windows.Forms;
|
|
using mRemoteNG.App;
|
|
using mRemoteNG.Connection;
|
|
using mRemoteNG.Container;
|
|
using mRemoteNG.Tree;
|
|
|
|
|
|
namespace mRemoteNG.Tools
|
|
{
|
|
public class ConnectionsTreeToMenuItemsConverter
|
|
{
|
|
public MouseEventHandler MouseUpEventHandler { get; set; }
|
|
|
|
|
|
public IEnumerable<ToolStripDropDownItem> CreateToolStripDropDownItems(ConnectionTreeModel connectionTreeModel)
|
|
{
|
|
var rootNodes = connectionTreeModel.RootNodes;
|
|
return CreateToolStripDropDownItems(rootNodes);
|
|
}
|
|
|
|
public IEnumerable<ToolStripDropDownItem> CreateToolStripDropDownItems(IEnumerable<ConnectionInfo> nodes)
|
|
{
|
|
var dropDownList = new List<ToolStripDropDownItem>();
|
|
try
|
|
{
|
|
dropDownList.AddRange(nodes.Select(CreateMenuItem));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Runtime.MessageCollector.AddExceptionMessage("frmMain.AddNodeToMenu() failed", ex);
|
|
}
|
|
return dropDownList;
|
|
}
|
|
|
|
private void AddSubMenuNodes(IEnumerable<ConnectionInfo> nodes, ToolStripDropDownItem toolStripMenuItem)
|
|
{
|
|
foreach (var connectionInfo in nodes)
|
|
{
|
|
var newItem = CreateMenuItem(connectionInfo);
|
|
toolStripMenuItem.DropDownItems.Add(newItem);
|
|
}
|
|
}
|
|
|
|
private ToolStripDropDownItem CreateMenuItem(ConnectionInfo node)
|
|
{
|
|
var menuItem = new ToolStripMenuItem
|
|
{
|
|
Text = node.Name,
|
|
Tag = node
|
|
};
|
|
|
|
var nodeAsContainer = node as ContainerInfo;
|
|
if (nodeAsContainer != null)
|
|
{
|
|
menuItem.Image = Resources.Folder;
|
|
menuItem.Tag = nodeAsContainer;
|
|
AddSubMenuNodes(nodeAsContainer.Children, menuItem);
|
|
}
|
|
else if (node.GetTreeNodeType() == TreeNodeType.PuttySession)
|
|
{
|
|
menuItem.Image = Resources.PuttySessions;
|
|
menuItem.Tag = node;
|
|
}
|
|
else if (node.GetTreeNodeType() == TreeNodeType.Connection)
|
|
{
|
|
menuItem.Image = node.OpenConnections.Count > 0 ? Resources.Play : Resources.Pause;
|
|
menuItem.Tag = node;
|
|
}
|
|
|
|
menuItem.MouseUp += MouseUpEventHandler;
|
|
return menuItem;
|
|
}
|
|
}
|
|
} |