Files
mRemoteNG/mRemoteV1/Tools/ConnectionsTreeToMenuItemsConverter.cs
David Sparer 32a1dd64ab Merge branch 'master' into develop
# 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
2017-11-03 11:15:20 -05:00

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;
}
}
}