diff --git a/mRemoteV1/Tools/ADhelper.cs b/mRemoteV1/Tools/ADhelper.cs
new file mode 100644
index 000000000..bf9276279
--- /dev/null
+++ b/mRemoteV1/Tools/ADhelper.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections;
+using System.DirectoryServices;
+using System.Runtime.InteropServices;
+
+namespace mRemoteNG.Tools
+{
+ public class ADhelper
+ {
+ private DirectoryEntry _dEntry;
+
+ public ADhelper(string domain)
+ {
+ Children = new Hashtable();
+ Domain = domain;
+ }
+
+ public Hashtable Children { get; }
+
+ private string Domain { get; }
+
+ public void GetChildEntries(string adPath = "")
+ {
+ _dEntry = adPath.Length <= 0
+ ? Domain.Length <= 0 ? new DirectoryEntry() : new DirectoryEntry("LDAP://" + Domain)
+ : new DirectoryEntry(adPath);
+ try
+ {
+ foreach (DirectoryEntry child in _dEntry.Children)
+ Children.Add(child.Name, child.Path);
+ }
+ catch (COMException ex)
+ {
+ if (ex.Message.ToLower().Equals("the server is not operational"))
+ throw new Exception("Could not find AD Server", ex);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/mRemoteV1/UI/Controls/AdTree.Designer.cs b/mRemoteV1/UI/Controls/AdTree.Designer.cs
new file mode 100644
index 000000000..48e63dd0c
--- /dev/null
+++ b/mRemoteV1/UI/Controls/AdTree.Designer.cs
@@ -0,0 +1,73 @@
+namespace mRemoteNG.UI.Controls
+{
+ partial class AdTree
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AdTree));
+ this.tvActiveDirectory = new System.Windows.Forms.TreeView();
+ this.ImglTree = new System.Windows.Forms.ImageList(this.components);
+ this.SuspendLayout();
+ //
+ // tvActiveDirectory
+ //
+ this.tvActiveDirectory.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tvActiveDirectory.Location = new System.Drawing.Point(0, 0);
+ this.tvActiveDirectory.Name = "tvActiveDirectory";
+ this.tvActiveDirectory.Size = new System.Drawing.Size(800, 450);
+ this.tvActiveDirectory.TabIndex = 0;
+ this.tvActiveDirectory.AfterExpand += new System.Windows.Forms.TreeViewEventHandler(this.TvActiveDirectory_AfterExpand);
+ this.tvActiveDirectory.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.TvActiveDirectory_AfterSelect);
+ //
+ // ImglTree
+ //
+ this.ImglTree.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ImglTree.ImageStream")));
+ this.ImglTree.TransparentColor = System.Drawing.Color.Transparent;
+ this.ImglTree.Images.SetKeyName(0, "Root.png");
+ this.ImglTree.Images.SetKeyName(1, "OU.png");
+ this.ImglTree.Images.SetKeyName(2, "Folder.png");
+ this.ImglTree.Images.SetKeyName(3, "Question.png");
+ //
+ // AdTree
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
+ this.Controls.Add(this.tvActiveDirectory);
+ this.Name = "AdTree";
+ this.Size = new System.Drawing.Size(800, 450);
+ this.Load += new System.EventHandler(this.AdTree_Load);
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TreeView tvActiveDirectory;
+ private System.Windows.Forms.ImageList ImglTree;
+ }
+}
\ No newline at end of file
diff --git a/mRemoteV1/UI/Controls/AdTree.cs b/mRemoteV1/UI/Controls/AdTree.cs
new file mode 100644
index 000000000..feb64a2e2
--- /dev/null
+++ b/mRemoteV1/UI/Controls/AdTree.cs
@@ -0,0 +1,123 @@
+using mRemoteNG.Tools;
+using System;
+using System.Runtime.CompilerServices;
+using System.Windows.Forms;
+
+namespace mRemoteNG.UI.Controls
+{
+ public partial class AdTree : UserControl
+ {
+ #region Public Methods
+
+ public AdTree()
+ {
+ InitializeComponent();
+ }
+
+ public event AdPathChangedEventHandler AdPathChanged;
+
+ public delegate void AdPathChangedEventHandler(object sender);
+
+ public string AdPath { get; set; }
+
+ public string Domain
+ {
+ private get => string.IsNullOrEmpty(_domain) == false ? _domain : Environment.UserDomainName;
+ set => _domain = value;
+ }
+
+ public object SelectedNode { get; internal set; }
+
+ #endregion Public Methods
+
+ #region Private Methods
+
+ private string _domain;
+
+ private void TvActiveDirectory_AfterExpand(object sender, TreeViewEventArgs e)
+ {
+ try
+ {
+ foreach (TreeNode node in e.Node.Nodes)
+ AddTreeNodes(node);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex.StackTrace);
+ }
+ }
+
+ private void TvActiveDirectory_AfterSelect(object sender, TreeViewEventArgs e)
+ {
+ AdPath = e.Node.Tag.ToString();
+ var pathChangedEvent = AdPathChanged;
+ pathChangedEvent?.Invoke(this);
+ }
+
+ private void AdTree_Load(object sender, EventArgs e)
+ {
+ tvActiveDirectory.Nodes.Clear();
+ var treeNode = new TreeNode(Domain) { Tag = "" };
+ tvActiveDirectory.Nodes.Add(treeNode);
+ AddTreeNodes(treeNode);
+ tvActiveDirectory.Nodes[0].Expand();
+ }
+
+ private void AddTreeNodes(TreeNode tNode)
+ {
+ var adhelper = new ADhelper(Domain);
+ adhelper.GetChildEntries(tNode.Tag.ToString());
+ var enumerator = adhelper.Children.GetEnumerator();
+ tvActiveDirectory.BeginUpdate();
+ while (enumerator.MoveNext())
+ {
+ var flag1 = false;
+ if (enumerator.Key == null) continue;
+ var node1 = new TreeNode(enumerator.Key.ToString().Substring(3))
+ {
+ Tag = RuntimeHelpers.GetObjectValue(enumerator.Value)
+ };
+ if (!enumerator.Key.ToString().Substring(0, 2).Equals("CN") ||
+ enumerator.Key.ToString().Equals("CN=Computers") ||
+ enumerator.Key.ToString().Equals("CN=Users"))
+ flag1 = true;
+
+ if (flag1)
+ {
+ var flag2 = false;
+ try
+ {
+ foreach (TreeNode node2 in tNode.Nodes)
+ {
+ if (!node2.Text.Equals(node1.Text)) continue;
+ flag2 = true;
+ break;
+ }
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex.StackTrace);
+ }
+
+ if (!flag2)
+ tNode.Nodes.Add(node1);
+ }
+
+ var imageIndex = GetImageIndex(enumerator.Key.ToString().Substring(0, 2));
+ node1.ImageIndex = imageIndex;
+ node1.SelectedImageIndex = imageIndex;
+ }
+
+ tvActiveDirectory.EndUpdate();
+ }
+
+ private static int GetImageIndex(string objType)
+ {
+ if (objType.Equals("CN"))
+ return 2;
+ return objType.Equals("OU") ? 1 : 3;
+ }
+
+ #endregion Private Methods
+ }
+}
diff --git a/mRemoteV1/UI/Controls/AdTree.resx b/mRemoteV1/UI/Controls/AdTree.resx
new file mode 100644
index 000000000..6e89531ad
--- /dev/null
+++ b/mRemoteV1/UI/Controls/AdTree.resx
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
+ LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAA4
+ DAAAAk1TRnQBSQFMAgEBBAEAARgBAAEYAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+ AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
+ AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
+ AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
+ AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
+ AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
+ ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
+ AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
+ AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
+ AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
+ AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
+ AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
+ AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
+ AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
+ AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
+ ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
+ Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
+ AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
+ AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
+ AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
+ ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
+ Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
+ AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
+ AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
+ AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
+ AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
+ AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
+ AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD//8A/wD/AP8ACAAC/wH0
+ A/MC9AL/CwAB9AH3AQcB/yYAAf8B9AHxAbsBtAGtAc8BtAG1AfEC/wcAA/8CtAEHAf8lAAL/AfABiwFl
+ AYYBrQHPAa0BhgGtAd0B/wUAAv8B8wHwAbUBuwGRAZIB8gH0Af8CAAHsAesBbQHqARMBFQERAQ8HDgEA
+ AewB6wFtAeoBEwEVAREBDwcOAwAB/wGLAQ0BiwG0AgkBtAHPAWwBiwH/BAAB/wHyAfcB7AHtAbUBCQG0
+ AesB7AH3AfEB/wEAAewBmgF6AVgFUgFRAUsBKgJLAQ8BAAHsAZoBegFYBVIBUQFLASoCSwEPAwABtQFm
+ AWwBrgGRA7UBrgFsAWYBtAMAAf8BvAGRArUBuwEJARkBCQG1AbQB6wHsAfAB/wHsAaABmgF5AhUBUgF6
+ AVkBSwEAASoBMQFLAREBAAHsAaACmgR6AVkBUwJSATEBSwERAgAB8gFsAe8BtQKLAbUBCQG1AWwBZgJl
+ AfIBAAH/AbwBtQEJAhkBCQGmAa0CGQEJAbUBrgHsAfEB7AEaAaABSgJ5AUoBegFZAQABUgEAAVIBKgFD
+ AQAB7AEaAaACmgN6AlkBUwJSASoBQwEAAfQB7QFlAZEBrQGmAa0BCQH/AbsBiwFlAmYBrgL0AbUBCQMZ
+ AbUBCgFlAxkBCQG1AesBkgHtAcMBoAEAApoBAAJ6AQABWQEAAVIBMQEUAQAB7QHDAqACmgN6AlkBUwFS
+ ATEBFAEAAfMBZgFlAaYCrAGtAgkBtAKLAZEBbAFmAfEBBwEJBRkBuwEJBBkBCQG1AW0B7QHDAaABSgGZ
+ AXkBSgJ6AQABWQEAAVIBMQESAQAB7QHDAqACmgR6AlkBUgExARIBAAHxAmUBigGsAbMB2wG6AbMBrAGK
+ AbQBBwGRAWYBvAEHBRkB9AG0AQkB/wQZAbsB6wEcAsMBmQIUAXkCegEAAXoBAAFSATEB6gEAARwDwwGg
+ ApoEegFZAVIBMQHqAQAB8QKmAa0BswHbARkB3AGtAqwBiwGRAa4BZgG8AQcBGQH0AxkB/wG1AYYBGQH0
+ AxkBCQHsARwDwwKgApoEegFZAVIB6wEAARwDwwKgApoEegFZAVIB6wEAAfQBiwGGAdUC3AEZAdsCswKt
+ AosBbAHyAbwF9AEZAf8CpgEJAfQCGQEJAe0BHAXDAqACmgR6AesBAAEcBcMCoAKaBHoB6wEAAf8BCQGt
+ AdsB3AIZAdwB1QIJAa0CiwGSAf8B8AH0Af8B9AH/AbQBpgEJAa4BXwG0Av8B9AG7AbwKHATtAewBAAoc
+ BO0B7AIAAf8BzgG0AfAB9AH/ARkB3AHdAQkBswGLAWYB9AEAAfQB8gP/AbUBXwEJAYYBXwG7Av8B8wHv
+ AfQBHAEaAsMBoAGaARwB8QgAARwBGgLDAaABmgEcAfEKAAHzAYsBBwL/AfQCCQK0AYsBvAMAAvMD/wG1
+ Aa0BhgG1Av8B9AG8AfQBAAHxBRwB8QkAAfEFHAHxDAAB8wG0AbsB8gHwAbsCtAGLAfAFAALzB/8B9AHw
+ Af8mAAH/AfACtAGRAbQBCQH/BwAB/wLzAfQB9gH/AfQB8wH0Af8jAAFCAU0BPgcAAT4DAAEoAwABQAMA
+ ASADAAEBAQABAQYAAQEWAAP/gQAB4AEHAf8BDwT/AcABAwH4AQ8E/wGAAQMB4AEDAQABAQEAAQEBwAED
+ AcABAQEAAQEBAAEBAcABAwGAAgABAQEAAQEBgAEBAwABAQEAAQEFAAEBAQABAQUAAQEBAAEBBQABAQEA
+ AQEFAAEBAQABAQUAAQEBAAEBBQABAQEAAQEBgAEBAwAB/wEAAf8BwAEDAYACAQH/AQEB/wHgAQcBwAED
+ BP8B8AEPAeABBwT/Cw==
+
+
+
\ No newline at end of file
diff --git a/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.Designer.cs b/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.Designer.cs
index 8593b2e0b..4aaa8305f 100644
--- a/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.Designer.cs
+++ b/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.Designer.cs
@@ -1,10 +1,7 @@
-
-using mRemoteNG.Themes;
-
namespace mRemoteNG.UI.Window
{
- public partial class ActiveDirectoryImportWindow : BaseWindow
+ public partial class ActiveDirectoryImportWindow
{
#region Windows Form Designer generated code
private void InitializeComponent()
@@ -13,7 +10,7 @@ namespace mRemoteNG.UI.Window
this.txtDomain = new mRemoteNG.UI.Controls.Base.NGTextBox();
this.lblDomain = new mRemoteNG.UI.Controls.Base.NGLabel();
this.btnChangeDomain = new mRemoteNG.UI.Controls.Base.NGButton();
- this.ActiveDirectoryTree = new ADTree.ADtree();
+ this.activeDirectoryTree = new mRemoteNG.UI.Controls.AdTree();
this.btnClose = new mRemoteNG.UI.Controls.Base.NGButton();
this.chkSubOU = new mRemoteNG.UI.Controls.Base.NGCheckBox();
this.SuspendLayout();
@@ -28,7 +25,7 @@ namespace mRemoteNG.UI.Window
this.btnImport.TabIndex = 4;
this.btnImport.Text = "&Import";
this.btnImport.UseVisualStyleBackColor = true;
- this.btnImport.Click += new System.EventHandler(this.btnImport_Click);
+ this.btnImport.Click += new System.EventHandler(this.BtnImport_Click);
//
// txtDomain
//
@@ -39,7 +36,7 @@ namespace mRemoteNG.UI.Window
this.txtDomain.Name = "txtDomain";
this.txtDomain.Size = new System.Drawing.Size(406, 22);
this.txtDomain.TabIndex = 1;
- this.txtDomain.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtDomain_KeyDown);
+ this.txtDomain.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtDomain_KeyDown);
//
// lblDomain
//
@@ -60,23 +57,22 @@ namespace mRemoteNG.UI.Window
this.btnChangeDomain.TabIndex = 2;
this.btnChangeDomain.Text = "Change";
this.btnChangeDomain.UseVisualStyleBackColor = true;
- this.btnChangeDomain.Click += new System.EventHandler(this.btnChangeDomain_Click);
+ this.btnChangeDomain.Click += new System.EventHandler(this.BtnChangeDomain_Click);
//
// ActiveDirectoryTree
//
- this.ActiveDirectoryTree.AdPath = null;
- this.ActiveDirectoryTree.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ this.activeDirectoryTree.AdPath = null;
+ this.activeDirectoryTree.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- this.ActiveDirectoryTree.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
- this.ActiveDirectoryTree.Domain = "";
- this.ActiveDirectoryTree.Location = new System.Drawing.Point(12, 52);
- this.ActiveDirectoryTree.Margin = new System.Windows.Forms.Padding(4);
- this.ActiveDirectoryTree.Name = "ActiveDirectoryTree";
- this.ActiveDirectoryTree.SelectedNode = null;
- this.ActiveDirectoryTree.Size = new System.Drawing.Size(510, 285);
- this.ActiveDirectoryTree.TabIndex = 3;
- this.ActiveDirectoryTree.AdPathChanged += new ADTree.ADtree.AdPathChangedEventHandler(this.ActiveDirectoryTree_ADPathChanged);
+ this.activeDirectoryTree.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.activeDirectoryTree.Location = new System.Drawing.Point(12, 52);
+ this.activeDirectoryTree.Margin = new System.Windows.Forms.Padding(4);
+ this.activeDirectoryTree.Name = "ActiveDirectoryTree";
+ this.activeDirectoryTree.SelectedNode = null;
+ this.activeDirectoryTree.Size = new System.Drawing.Size(510, 285);
+ this.activeDirectoryTree.TabIndex = 3;
+ this.activeDirectoryTree.AdPathChanged += new mRemoteNG.UI.Controls.AdTree.AdPathChangedEventHandler(this.ActiveDirectoryTree_ADPathChanged);
//
// btnClose
//
@@ -88,7 +84,7 @@ namespace mRemoteNG.UI.Window
this.btnClose.TabIndex = 5;
this.btnClose.Text = "Close";
this.btnClose.UseVisualStyleBackColor = true;
- this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
+ this.btnClose.Click += new System.EventHandler(this.BtnClose_Click);
//
// chkSubOU
//
@@ -112,7 +108,7 @@ namespace mRemoteNG.UI.Window
this.ClientSize = new System.Drawing.Size(534, 381);
this.Controls.Add(this.chkSubOU);
this.Controls.Add(this.btnClose);
- this.Controls.Add(this.ActiveDirectoryTree);
+ this.Controls.Add(this.activeDirectoryTree);
this.Controls.Add(this.lblDomain);
this.Controls.Add(this.txtDomain);
this.Controls.Add(this.btnChangeDomain);
@@ -122,7 +118,6 @@ namespace mRemoteNG.UI.Window
this.Name = "ActiveDirectoryImportWindow";
this.TabText = "Active Directory Import";
this.Text = "Active Directory Import";
- this.Load += new System.EventHandler(this.ADImport_Load);
this.ResumeLayout(false);
this.PerformLayout();
@@ -131,7 +126,7 @@ namespace mRemoteNG.UI.Window
private Controls.Base.NGTextBox txtDomain;
private Controls.Base.NGLabel lblDomain;
private Controls.Base.NGButton btnChangeDomain;
- private ADTree.ADtree ActiveDirectoryTree;
+ private mRemoteNG.UI.Controls.AdTree activeDirectoryTree;
#endregion
private Controls.Base.NGButton btnClose;
diff --git a/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.cs b/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.cs
index af220114a..c59bf857d 100644
--- a/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.cs
+++ b/mRemoteV1/UI/Window/ActiveDirectoryImportWindow.cs
@@ -8,47 +8,37 @@ using mRemoteNG.Themes;
namespace mRemoteNG.UI.Window
{
- public partial class ActiveDirectoryImportWindow
+ public partial class ActiveDirectoryImportWindow : BaseWindow
{
private string _currentDomain;
public ActiveDirectoryImportWindow()
{
- InitializeComponent();
- FontOverrider.FontOverride(this);
WindowType = WindowType.ActiveDirectoryImport;
DockPnl = new DockContent();
- _currentDomain = Environment.UserDomainName;
+ InitializeComponent();
+ FontOverrider.FontOverride(this);
ApplyTheme();
- }
-
- private new void ApplyTheme()
- {
- base.ApplyTheme();
- if (ActiveDirectoryTree.Controls.Count < 1) return;
- if (!(ActiveDirectoryTree.Controls[0] is TreeView tv)) return;
- var tm = ThemeManager.getInstance();
- if (!tm.ActiveAndExtended) return;
- tv.BackColor = tm.ActiveTheme.ExtendedPalette.getColor("List_Background");
- tv.ForeColor = tm.ActiveTheme.ExtendedPalette.getColor("List_Item_Foreground");
+ ApplyLanguage();
+ txtDomain.Text = _currentDomain;
+ EnableDisableImportButton();
+ // Domain doesn't refresh on load, so it defaults to DOMAIN without this...
+ _currentDomain = Environment.UserDomainName;
+ ChangeDomain();
}
#region Private Methods
- #region Event Handlers
-
- private void ADImport_Load(object sender, EventArgs e)
+ private new void ApplyTheme()
{
- ApplyLanguage();
- txtDomain.Text = _currentDomain;
- ActiveDirectoryTree.Domain = _currentDomain;
- EnableDisableImportButton();
-
- // Domain doesn't refresh on load, so it defaults to DOMAIN without this...
- ChangeDomain();
+ if (!ThemeManager.getInstance().ThemingActive) return;
+ base.ApplyTheme();
+ if (!ThemeManager.getInstance().ActiveAndExtended) return;
+ activeDirectoryTree.BackColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("List_Background");
+ activeDirectoryTree.ForeColor = ThemeManager.getInstance().ActiveTheme.ExtendedPalette.getColor("List_Item_Foreground");
}
- private void btnImport_Click(object sender, EventArgs e)
+ private void BtnImport_Click(object sender, EventArgs e)
{
var selectedNode = Windows.TreeForm.SelectedNode;
ContainerInfo importDestination;
@@ -57,37 +47,26 @@ namespace mRemoteNG.UI.Window
else
importDestination = Runtime.ConnectionsService.ConnectionTreeModel.RootNodes.First();
- Import.ImportFromActiveDirectory(ActiveDirectoryTree.AdPath, importDestination, chkSubOU.Checked);
+ Import.ImportFromActiveDirectory(activeDirectoryTree.AdPath, importDestination, chkSubOU.Checked);
}
- /*
- private static void txtDomain_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
- {
- if (e.KeyCode == Keys.Enter)
- e.IsInputKey = true;
- }
- */
-
- private void txtDomain_KeyDown(object sender, KeyEventArgs e)
+ private void TxtDomain_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Enter) return;
ChangeDomain();
e.SuppressKeyPress = true;
}
- private void btnChangeDomain_Click(object sender, EventArgs e)
+ private void BtnChangeDomain_Click(object sender, EventArgs e)
{
ChangeDomain();
}
- // ReSharper disable once UnusedParameter.Local
private void ActiveDirectoryTree_ADPathChanged(object sender)
{
EnableDisableImportButton();
}
- #endregion
-
private void ApplyLanguage()
{
btnImport.Text = Language.strButtonImport;
@@ -100,20 +79,19 @@ namespace mRemoteNG.UI.Window
private void ChangeDomain()
{
_currentDomain = txtDomain.Text;
- ActiveDirectoryTree.Domain = _currentDomain;
- ActiveDirectoryTree.Refresh();
+ activeDirectoryTree.Domain = _currentDomain;
+ activeDirectoryTree.Refresh();
}
private void EnableDisableImportButton()
{
- btnImport.Enabled = !string.IsNullOrEmpty(ActiveDirectoryTree.AdPath);
+ btnImport.Enabled = !string.IsNullOrEmpty(activeDirectoryTree.AdPath);
}
-
- #endregion
-
- private void btnClose_Click(object sender, EventArgs e)
+ private void BtnClose_Click(object sender, EventArgs e)
{
Close();
}
+
+ #endregion Private Methods
}
}
\ No newline at end of file
diff --git a/mRemoteV1/mRemoteV1.csproj b/mRemoteV1/mRemoteV1.csproj
index 8464afcdb..245540f24 100644
--- a/mRemoteV1/mRemoteV1.csproj
+++ b/mRemoteV1/mRemoteV1.csproj
@@ -48,9 +48,6 @@
true
-
- References\ADTree.dll
-
..\packages\BouncyCastle.1.8.6.1\lib\BouncyCastle.Crypto.dll
@@ -347,6 +344,7 @@
Component
+
@@ -439,6 +437,12 @@
+
+ UserControl
+
+
+ AdTree.cs
+
Component
@@ -902,6 +906,9 @@
ColorMapTheme.Designer.cs
mRemoteNG
+
+ AdTree.cs
+
NGButton.cs