1
0
mirror of https://github.com/Ylianst/MeshCentralRouter synced 2025-12-06 00:13:33 +00:00

Completed first version of file manager.

This commit is contained in:
Ylian Saint-Hilaire
2020-09-19 15:18:00 -07:00
parent 4deea28edd
commit 1a65312747
4 changed files with 537 additions and 265 deletions

View File

@@ -26,16 +26,39 @@ namespace MeshCentralRouter
{ {
mainLabel1.Text = (string)fileViewer.uploadFileArray[fileViewer.uploadFileArrayPtr]; mainLabel1.Text = (string)fileViewer.uploadFileArray[fileViewer.uploadFileArrayPtr];
progressBar1.Maximum = (int)fileViewer.uploadFileSize; progressBar1.Maximum = (int)fileViewer.uploadFileSize;
progressBar1.Value = (int)fileViewer.uploadFilePtr; int x = (int)fileViewer.uploadFilePtr;
if (x < 0) { x = 0; }
if (x > (int)fileViewer.uploadFileSize) { x = (int)fileViewer.uploadFileSize; }
progressBar1.Value = x;
progressBar2.Maximum = fileViewer.uploadFileArray.Count; progressBar2.Maximum = fileViewer.uploadFileArray.Count;
x = (int)(int)fileViewer.uploadFileSize;
if (x < 0) { x = 0; }
if (x > (int)fileViewer.uploadFileArray.Count) { x = fileViewer.uploadFileArray.Count; }
progressBar2.Value = fileViewer.uploadFileArrayPtr; progressBar2.Value = fileViewer.uploadFileArrayPtr;
} }
else if (fileViewer.downloadActive)
{
mainLabel1.Text = (string)fileViewer.downloadFileArray[fileViewer.downloadFileArrayPtr];
progressBar1.Maximum = (int)fileViewer.downloadFileSize;
int x = (int)fileViewer.downloadFilePtr;
if (x < 0) { x = 0; }
if (x > (int)fileViewer.downloadFileSize) { x = (int)fileViewer.downloadFileSize; }
progressBar1.Value = x;
progressBar2.Maximum = fileViewer.downloadFileArray.Count;
x = (int)(int)fileViewer.downloadFileSize;
if (x < 0) { x = 0; }
if (x > (int)fileViewer.downloadFileArray.Count) { x = fileViewer.downloadFileArray.Count; }
progressBar2.Value = fileViewer.downloadFileArrayPtr;
}
else { Close(); } else { Close(); }
} }
private void FileTransferStatusForm_FormClosing(object sender, FormClosingEventArgs e) private void FileTransferStatusForm_FormClosing(object sender, FormClosingEventArgs e)
{ {
if (fileViewer.uploadActive) { fileViewer.uploadStop = true; } if (fileViewer.uploadActive) { fileViewer.uploadStop = true; }
if (fileViewer.downloadActive) { fileViewer.downloadStop = true; }
} }
private void cancelButton_Click(object sender, EventArgs e) private void cancelButton_Click(object sender, EventArgs e)

63
FileViewer.Designer.cs generated
View File

@@ -46,14 +46,14 @@ namespace MeshCentralRouter
this.remoteRootButton = new System.Windows.Forms.Button(); this.remoteRootButton = new System.Windows.Forms.Button();
this.localRootButton = new System.Windows.Forms.Button(); this.localRootButton = new System.Windows.Forms.Button();
this.remoteDeleteButton = new System.Windows.Forms.Button(); this.remoteDeleteButton = new System.Windows.Forms.Button();
this.downloadButton = new System.Windows.Forms.Button();
this.uploadButton = new System.Windows.Forms.Button();
this.topPanel = new System.Windows.Forms.Panel(); this.topPanel = new System.Windows.Forms.Panel();
this.statusStrip = new System.Windows.Forms.StatusStrip(); this.statusStrip = new System.Windows.Forms.StatusStrip();
this.mainToolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); this.mainToolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
this.consoleMessage = new System.Windows.Forms.Label(); this.consoleMessage = new System.Windows.Forms.Label();
this.mainTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); this.mainTableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
this.panel1 = new System.Windows.Forms.Panel(); this.panel1 = new System.Windows.Forms.Panel();
this.downloadButton = new System.Windows.Forms.Button();
this.uploadButton = new System.Windows.Forms.Button();
this.rightPanel = new System.Windows.Forms.Panel(); this.rightPanel = new System.Windows.Forms.Panel();
this.rightListView = new System.Windows.Forms.ListView(); this.rightListView = new System.Windows.Forms.ListView();
this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader3 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
@@ -71,6 +71,8 @@ namespace MeshCentralRouter
this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.columnHeader2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.leftTopPanel = new System.Windows.Forms.Panel(); this.leftTopPanel = new System.Windows.Forms.Panel();
this.localLabel = new System.Windows.Forms.Label(); this.localLabel = new System.Windows.Forms.Label();
this.localDeleteButton = new System.Windows.Forms.Button();
this.localNewFolderButton = new System.Windows.Forms.Button();
this.topPanel.SuspendLayout(); this.topPanel.SuspendLayout();
this.statusStrip.SuspendLayout(); this.statusStrip.SuspendLayout();
this.mainTableLayoutPanel.SuspendLayout(); this.mainTableLayoutPanel.SuspendLayout();
@@ -180,6 +182,24 @@ namespace MeshCentralRouter
this.remoteDeleteButton.UseVisualStyleBackColor = true; this.remoteDeleteButton.UseVisualStyleBackColor = true;
this.remoteDeleteButton.Click += new System.EventHandler(this.remoteDeleteButton_Click); this.remoteDeleteButton.Click += new System.EventHandler(this.remoteDeleteButton_Click);
// //
// downloadButton
//
resources.ApplyResources(this.downloadButton, "downloadButton");
this.downloadButton.Image = global::MeshCentralRouter.Properties.Resources.arrowleft16;
this.downloadButton.Name = "downloadButton";
this.mainToolTip.SetToolTip(this.downloadButton, resources.GetString("downloadButton.ToolTip"));
this.downloadButton.UseVisualStyleBackColor = true;
this.downloadButton.Click += new System.EventHandler(this.downloadButton_Click);
//
// uploadButton
//
resources.ApplyResources(this.uploadButton, "uploadButton");
this.uploadButton.Image = global::MeshCentralRouter.Properties.Resources.arrowright16;
this.uploadButton.Name = "uploadButton";
this.mainToolTip.SetToolTip(this.uploadButton, resources.GetString("uploadButton.ToolTip"));
this.uploadButton.UseVisualStyleBackColor = true;
this.uploadButton.Click += new System.EventHandler(this.uploadButton_Click);
//
// topPanel // topPanel
// //
this.topPanel.BackColor = System.Drawing.SystemColors.Control; this.topPanel.BackColor = System.Drawing.SystemColors.Control;
@@ -222,23 +242,6 @@ namespace MeshCentralRouter
resources.ApplyResources(this.panel1, "panel1"); resources.ApplyResources(this.panel1, "panel1");
this.panel1.Name = "panel1"; this.panel1.Name = "panel1";
// //
// downloadButton
//
resources.ApplyResources(this.downloadButton, "downloadButton");
this.downloadButton.Image = global::MeshCentralRouter.Properties.Resources.arrowleft16;
this.downloadButton.Name = "downloadButton";
this.mainToolTip.SetToolTip(this.downloadButton, resources.GetString("downloadButton.ToolTip"));
this.downloadButton.UseVisualStyleBackColor = true;
//
// uploadButton
//
resources.ApplyResources(this.uploadButton, "uploadButton");
this.uploadButton.Image = global::MeshCentralRouter.Properties.Resources.arrowright16;
this.uploadButton.Name = "uploadButton";
this.mainToolTip.SetToolTip(this.uploadButton, resources.GetString("uploadButton.ToolTip"));
this.uploadButton.UseVisualStyleBackColor = true;
this.uploadButton.Click += new System.EventHandler(this.uploadButton_Click);
//
// rightPanel // rightPanel
// //
this.rightPanel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.rightPanel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
@@ -360,6 +363,8 @@ namespace MeshCentralRouter
// //
// leftTopPanel // leftTopPanel
// //
this.leftTopPanel.Controls.Add(this.localDeleteButton);
this.leftTopPanel.Controls.Add(this.localNewFolderButton);
this.leftTopPanel.Controls.Add(this.localRootButton); this.leftTopPanel.Controls.Add(this.localRootButton);
this.leftTopPanel.Controls.Add(this.localRefreshButton); this.leftTopPanel.Controls.Add(this.localRefreshButton);
this.leftTopPanel.Controls.Add(this.localUpButton); this.leftTopPanel.Controls.Add(this.localUpButton);
@@ -372,6 +377,24 @@ namespace MeshCentralRouter
resources.ApplyResources(this.localLabel, "localLabel"); resources.ApplyResources(this.localLabel, "localLabel");
this.localLabel.Name = "localLabel"; this.localLabel.Name = "localLabel";
// //
// localDeleteButton
//
resources.ApplyResources(this.localDeleteButton, "localDeleteButton");
this.localDeleteButton.Image = global::MeshCentralRouter.Properties.Resources.delete16;
this.localDeleteButton.Name = "localDeleteButton";
this.mainToolTip.SetToolTip(this.localDeleteButton, resources.GetString("localDeleteButton.ToolTip"));
this.localDeleteButton.UseVisualStyleBackColor = true;
this.localDeleteButton.Click += new System.EventHandler(this.localDeleteButton_Click);
//
// localNewFolderButton
//
resources.ApplyResources(this.localNewFolderButton, "localNewFolderButton");
this.localNewFolderButton.Image = global::MeshCentralRouter.Properties.Resources.foldernew16;
this.localNewFolderButton.Name = "localNewFolderButton";
this.mainToolTip.SetToolTip(this.localNewFolderButton, resources.GetString("localNewFolderButton.ToolTip"));
this.localNewFolderButton.UseVisualStyleBackColor = true;
this.localNewFolderButton.Click += new System.EventHandler(this.localNewFolderButton_Click);
//
// FileViewer // FileViewer
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
@@ -440,6 +463,8 @@ namespace MeshCentralRouter
private ToolStripMenuItem refreshToolStripMenuItem; private ToolStripMenuItem refreshToolStripMenuItem;
private Button uploadButton; private Button uploadButton;
private Button downloadButton; private Button downloadButton;
private Button localDeleteButton;
private Button localNewFolderButton;
} }
} }

View File

@@ -16,8 +16,8 @@ limitations under the License.
using System; using System;
using System.IO; using System.IO;
using System.Net;
using System.Text; using System.Text;
using System.Drawing;
using System.Collections; using System.Collections;
using System.Windows.Forms; using System.Windows.Forms;
using System.Collections.Generic; using System.Collections.Generic;
@@ -59,6 +59,18 @@ namespace MeshCentralRouter
public long uploadFilePtr = 0; public long uploadFilePtr = 0;
public long uploadFileSize = 0; public long uploadFileSize = 0;
// Download state
public bool downloadActive = false;
public bool downloadStop = false;
public int downloadFileArrayPtr = -1;
public ArrayList downloadFileArray;
public ArrayList downloadFileSizeArray;
public DirectoryInfo downloadLocalPath;
public string downloadRemotePath;
public FileStream downloadFileStream = null;
public long downloadFilePtr = 0;
public long downloadFileSize = 0;
public FileViewer(MeshCentralServer server, NodeClass node) public FileViewer(MeshCentralServer server, NodeClass node)
{ {
InitializeComponent(); InitializeComponent();
@@ -76,6 +88,8 @@ namespace MeshCentralRouter
if (localFolder == null) if (localFolder == null)
{ {
localRootButton.Enabled = false; localRootButton.Enabled = false;
localNewFolderButton.Enabled = false;
localDeleteButton.Enabled = false;
try try
{ {
DriveInfo[] drives = DriveInfo.GetDrives(); DriveInfo[] drives = DriveInfo.GetDrives();
@@ -94,6 +108,8 @@ namespace MeshCentralRouter
else else
{ {
localRootButton.Enabled = true; localRootButton.Enabled = true;
localNewFolderButton.Enabled = true;
localDeleteButton.Enabled = false;
try try
{ {
DirectoryInfo[] directories = localFolder.GetDirectories(); DirectoryInfo[] directories = localFolder.GetDirectories();
@@ -339,34 +355,63 @@ namespace MeshCentralRouter
// Parse the received JSON // Parse the received JSON
Dictionary<string, object> jsonAction = new Dictionary<string, object>(); Dictionary<string, object> jsonAction = new Dictionary<string, object>();
jsonAction = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(data); jsonAction = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(data);
if ((jsonAction == null) || (jsonAction.ContainsKey("type") == false) || (jsonAction["type"].GetType() != typeof(string))) return; if (jsonAction == null) return;
string action = jsonAction["type"].ToString(); if (jsonAction.ContainsKey("action") && (jsonAction["action"].GetType() == typeof(string)))
switch (action)
{ {
case "metadata": string action = jsonAction["action"].ToString();
{ switch (action)
if ((jsonAction.ContainsKey("users") == false) || (jsonAction["users"] == null)) return; {
Dictionary<string, object> usersex = (Dictionary<string, object>)jsonAction["users"]; case "download":
userSessions = new Dictionary<string, int>(); {
foreach (string user in usersex.Keys) { userSessions.Add(user, (int)usersex[user]); } if (downloadStop) { downloadCancel(); return; }
UpdateStatus();
break; string sub = null;
} if (jsonAction.ContainsKey("sub")) { sub = (string)jsonAction["sub"]; }
case "console": if (sub == "start")
{ {
string msg = null; // Send DOWNLOAD startack command
int msgid = -1; string cmd = "{\"action\":\"download\",\"sub\":\"startack\",\"id\":" + (downloadFileArrayPtr + 1000) + "}";
if ((jsonAction.ContainsKey("msg")) && (jsonAction["msg"] != null)) { msg = jsonAction["msg"].ToString(); } byte[] bincmd = UTF8Encoding.UTF8.GetBytes(cmd);
if (jsonAction.ContainsKey("msgid")) { msgid = (int)jsonAction["msgid"]; } wc.SendBinary(bincmd, 0, bincmd.Length);
if (msgid == 1) { msg = "Waiting for user to grant access..."; } }
if (msgid == 2) { msg = "Denied"; } else if (sub == "cancel")
if (msgid == 3) { msg = "Failed to start remote terminal session"; } // , {0} ({1}) {
if (msgid == 4) { msg = "Timeout"; } // Cancel the download
if (msgid == 5) { msg = "Received invalid network data"; } downloadCancel();
displayMessage(msg); }
break; break;
} }
}
}
else if (jsonAction.ContainsKey("type") && (jsonAction["type"].GetType() == typeof(string))) {
string action = jsonAction["type"].ToString();
switch (action)
{
case "metadata":
{
if ((jsonAction.ContainsKey("users") == false) || (jsonAction["users"] == null)) return;
Dictionary<string, object> usersex = (Dictionary<string, object>)jsonAction["users"];
userSessions = new Dictionary<string, int>();
foreach (string user in usersex.Keys) { userSessions.Add(user, (int)usersex[user]); }
UpdateStatus();
break;
}
case "console":
{
string msg = null;
int msgid = -1;
if ((jsonAction.ContainsKey("msg")) && (jsonAction["msg"] != null)) { msg = jsonAction["msg"].ToString(); }
if (jsonAction.ContainsKey("msgid")) { msgid = (int)jsonAction["msgid"]; }
if (msgid == 1) { msg = "Waiting for user to grant access..."; }
if (msgid == 2) { msg = "Denied"; }
if (msgid == 3) { msg = "Failed to start remote terminal session"; } // , {0} ({1})
if (msgid == 4) { msg = "Timeout"; }
if (msgid == 5) { msg = "Received invalid network data"; }
displayMessage(msg);
break;
}
}
} }
} }
@@ -435,6 +480,12 @@ namespace MeshCentralRouter
if (jsonAction.ContainsKey("dir")) { remoteFolderList = (ArrayList)jsonAction["dir"]; } if (jsonAction.ContainsKey("dir")) { remoteFolderList = (ArrayList)jsonAction["dir"]; }
updateRemoteFileView(); updateRemoteFileView();
} }
} else
{
if (downloadActive) {
if (downloadStop) { downloadCancel(); return; }
downloadGotBinaryData(data, offset, length);
}
} }
} }
@@ -446,6 +497,14 @@ namespace MeshCentralRouter
updateTimer.Enabled = true; updateTimer.Enabled = true;
} }
private delegate void localRefreshHandler();
private void localRefresh()
{
if (this.InvokeRequired) { this.Invoke(new localRefreshHandler(localRefresh)); return; }
updateLocalFileView();
}
private void MenuItemDisconnect_Click(object sender, EventArgs e) private void MenuItemDisconnect_Click(object sender, EventArgs e)
{ {
if (wc != null) if (wc != null)
@@ -776,11 +835,12 @@ namespace MeshCentralRouter
private void leftListView_SelectedIndexChanged(object sender, EventArgs e) private void leftListView_SelectedIndexChanged(object sender, EventArgs e)
{ {
updateTransferButtons(); updateTransferButtons();
localDeleteButton.Enabled = ((localFolder != null) && (leftListView.SelectedItems.Count > 0));
} }
private void uploadButton_Click(object sender, EventArgs e) private void uploadButton_Click(object sender, EventArgs e)
{ {
if (uploadActive) return; if (uploadActive || downloadActive) return;
uploadFileArrayPtr = 0; uploadFileArrayPtr = 0;
uploadFileArray = new ArrayList(); uploadFileArray = new ArrayList();
foreach (ListViewItem l in leftListView.SelectedItems) { if (l.ImageIndex == 2) { uploadFileArray.Add(l.Text); } } foreach (ListViewItem l in leftListView.SelectedItems) { if (l.ImageIndex == 2) { uploadFileArray.Add(l.Text); } }
@@ -861,5 +921,145 @@ namespace MeshCentralRouter
transferStatusForm.Close(); transferStatusForm = null; transferStatusForm.Close(); transferStatusForm = null;
} }
private void downloadButton_Click(object sender, EventArgs e)
{
if (uploadActive || downloadActive) return;
downloadFileArrayPtr = 0;
downloadFileArray = new ArrayList();
downloadFileSizeArray = new ArrayList();
foreach (ListViewItem l in rightListView.SelectedItems) {
if (l.ImageIndex == 2) {
downloadFileArray.Add(l.Text);
downloadFileSizeArray.Add(int.Parse(l.SubItems[1].Text));
}
}
downloadLocalPath = localFolder;
downloadRemotePath = remoteFolder;
downloadActive = true;
downloadStop = false;
downloadNextFile();
// Show transfer status dialog
transferStatusForm = new FileTransferStatusForm(this);
transferStatusForm.Show(this);
}
private void downloadNextFile()
{
string localFilePath;
localFilePath = Path.Combine(downloadLocalPath.FullName, (string)downloadFileArray[downloadFileArrayPtr]);
downloadFileStream = File.OpenWrite(localFilePath);
downloadFileSize = (int)downloadFileSizeArray[downloadFileArrayPtr];
downloadFilePtr = 0;
string r;
if (downloadRemotePath.EndsWith("/")) { r = downloadRemotePath + downloadFileArray[downloadFileArrayPtr]; } else { r = downloadRemotePath + "/" + downloadFileArray[downloadFileArrayPtr]; }
// Send DOWNLOAD command
string cmd = "{\"action\":\"download\",\"sub\":\"start\",\"id\":" + (downloadFileArrayPtr + 1000) + ",\"path\":\"" + r + "\"}";
byte[] bincmd = UTF8Encoding.UTF8.GetBytes(cmd);
wc.SendBinary(bincmd, 0, bincmd.Length);
}
private void downloadGotBinaryData(byte[] data, int offset, int length)
{
if ((length < 4) || (downloadFileStream == null)) return;
if (length > 4)
{
// Save part to disk
downloadFileStream.Write(data, offset + 4, length - 4);
downloadFilePtr += (length - 4);
}
int controlBits = IPAddress.NetworkToHostOrder(BitConverter.ToInt32(data, offset));
if ((controlBits & 1) != 0)
{
if (downloadFileStream != null) { downloadFileStream.Close(); downloadFileStream = null; }
downloadFilePtr = 0;
downloadFileSize = 0;
if (downloadFileArray.Count > downloadFileArrayPtr + 1)
{
// Download the next file
downloadFileArrayPtr++;
downloadNextFile();
}
else
{
// Done with all files
downloadActive = false;
downloadStop = false;
downloadFileArrayPtr = -1;
downloadFileArray = null;
downloadLocalPath = null;
downloadRemotePath = null;
closeTransferDialog();
localRefresh();
}
}
else
{
// Send DOWNLOAD command
string cmd = "{\"action\":\"download\",\"sub\":\"ack\",\"id\":" + (downloadFileArrayPtr + 1000) + "}";
byte[] bincmd = UTF8Encoding.UTF8.GetBytes(cmd);
wc.SendBinary(bincmd, 0, bincmd.Length);
}
}
public void downloadCancel()
{
if (downloadActive == false) return;
// Send DOWNLOAD command
string cmd = "{\"action\":\"download\",\"sub\":\"stop\",\"id\":" + (downloadFileArrayPtr + 1000) + "}";
byte[] bincmd = UTF8Encoding.UTF8.GetBytes(cmd);
wc.SendBinary(bincmd, 0, bincmd.Length);
// Done with all files
if (downloadFileStream != null) { downloadFileStream.Close(); downloadFileStream = null; }
downloadFilePtr = 0;
downloadFileSize = 0;
downloadActive = false;
downloadStop = false;
downloadFileArrayPtr = -1;
downloadFileArray = null;
downloadLocalPath = null;
downloadRemotePath = null;
closeTransferDialog();
localRefresh();
}
private void localNewFolderButton_Click(object sender, EventArgs e)
{
if (localFolder == null) return;
FilenamePromptForm f = new FilenamePromptForm("Create Folder", "");
if (f.ShowDialog(this) == DialogResult.OK)
{
Directory.CreateDirectory(Path.Combine(localFolder.FullName, f.filename));
updateLocalFileView();
}
}
private void localDeleteButton_Click(object sender, EventArgs e)
{
ArrayList filesArray = new ArrayList();
foreach (ListViewItem l in leftListView.SelectedItems) { filesArray.Add(l.Text); }
string[] files = (string[])filesArray.ToArray(typeof(string));
string msg = string.Format("Confirm removal of {0} items?", files.Length);
if (files.Length == 1) { msg = "Confirm removal of 1 item?"; }
FileDeletePromptForm f = new FileDeletePromptForm(msg);
if (f.ShowDialog(this) == DialogResult.OK)
{
foreach (string file in filesArray)
{
try {
string fullpath = Path.Combine(localFolder.FullName, file);
FileAttributes attr = File.GetAttributes(fullpath);
if ((attr & FileAttributes.Directory) == FileAttributes.Directory) { Directory.Delete(fullpath, f.recursive); } else { File.Delete(fullpath); }
} catch (Exception) { }
}
updateLocalFileView();
}
}
} }
} }

View File

@@ -280,7 +280,7 @@
<value>leftTopPanel</value> <value>leftTopPanel</value>
</data> </data>
<data name="&gt;&gt;localRefreshButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;localRefreshButton.ZOrder" xml:space="preserve">
<value>1</value> <value>3</value>
</data> </data>
<data name="localUpButton.Enabled" type="System.Boolean, mscorlib"> <data name="localUpButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value> <value>False</value>
@@ -307,7 +307,7 @@
<value>leftTopPanel</value> <value>leftTopPanel</value>
</data> </data>
<data name="&gt;&gt;localUpButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;localUpButton.ZOrder" xml:space="preserve">
<value>2</value> <value>4</value>
</data> </data>
<data name="remoteNewFolderButton.Enabled" type="System.Boolean, mscorlib"> <data name="remoteNewFolderButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value> <value>False</value>
@@ -397,7 +397,7 @@
<value>leftTopPanel</value> <value>leftTopPanel</value>
</data> </data>
<data name="&gt;&gt;localRootButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;localRootButton.ZOrder" xml:space="preserve">
<value>0</value> <value>2</value>
</data> </data>
<data name="remoteDeleteButton.Enabled" type="System.Boolean, mscorlib"> <data name="remoteDeleteButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value> <value>False</value>
@@ -429,6 +429,63 @@
<data name="&gt;&gt;remoteDeleteButton.ZOrder" xml:space="preserve"> <data name="&gt;&gt;remoteDeleteButton.ZOrder" xml:space="preserve">
<value>0</value> <value>0</value>
</data> </data>
<data name="downloadButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="downloadButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="downloadButton.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 132</value>
</data>
<data name="downloadButton.Size" type="System.Drawing.Size, System.Drawing">
<value>24, 38</value>
</data>
<data name="downloadButton.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="downloadButton.ToolTip" xml:space="preserve">
<value>Download Files</value>
</data>
<data name="&gt;&gt;downloadButton.Name" xml:space="preserve">
<value>downloadButton</value>
</data>
<data name="&gt;&gt;downloadButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;downloadButton.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;downloadButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="uploadButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="uploadButton.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 88</value>
</data>
<data name="uploadButton.Size" type="System.Drawing.Size, System.Drawing">
<value>24, 38</value>
</data>
<data name="uploadButton.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="uploadButton.ToolTip" xml:space="preserve">
<value>Upload files</value>
</data>
<data name="&gt;&gt;uploadButton.Name" xml:space="preserve">
<value>uploadButton</value>
</data>
<data name="&gt;&gt;uploadButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;uploadButton.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;uploadButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="topPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms"> <data name="topPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value> <value>Top</value>
</data> </data>
@@ -531,63 +588,6 @@
<data name="mainTableLayoutPanel.ColumnCount" type="System.Int32, mscorlib"> <data name="mainTableLayoutPanel.ColumnCount" type="System.Int32, mscorlib">
<value>3</value> <value>3</value>
</data> </data>
<data name="downloadButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="downloadButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="downloadButton.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 132</value>
</data>
<data name="downloadButton.Size" type="System.Drawing.Size, System.Drawing">
<value>24, 38</value>
</data>
<data name="downloadButton.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="downloadButton.ToolTip" xml:space="preserve">
<value>Download Files</value>
</data>
<data name="&gt;&gt;downloadButton.Name" xml:space="preserve">
<value>downloadButton</value>
</data>
<data name="&gt;&gt;downloadButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;downloadButton.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;downloadButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="uploadButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="uploadButton.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 88</value>
</data>
<data name="uploadButton.Size" type="System.Drawing.Size, System.Drawing">
<value>24, 38</value>
</data>
<data name="uploadButton.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="uploadButton.ToolTip" xml:space="preserve">
<value>Upload files</value>
</data>
<data name="&gt;&gt;uploadButton.Name" xml:space="preserve">
<value>uploadButton</value>
</data>
<data name="&gt;&gt;uploadButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;uploadButton.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;uploadButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms"> <data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value> <value>Fill</value>
</data> </data>
@@ -660,6 +660,85 @@
<data name="&gt;&gt;rightPanel.ZOrder" xml:space="preserve"> <data name="&gt;&gt;rightPanel.ZOrder" xml:space="preserve">
<value>1</value> <value>1</value>
</data> </data>
<data name="columnHeader1.Text" xml:space="preserve">
<value>Name</value>
</data>
<data name="columnHeader1.Width" type="System.Int32, mscorlib">
<value>220</value>
</data>
<data name="columnHeader2.Text" xml:space="preserve">
<value>Size</value>
</data>
<data name="columnHeader2.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
<value>Right</value>
</data>
<data name="columnHeader2.Width" type="System.Int32, mscorlib">
<value>80</value>
</data>
<data name="leftListView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="leftListView.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 50</value>
</data>
<data name="leftListView.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 388</value>
</data>
<metadata name="fileIconImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>497, 17</value>
</metadata>
<data name="fileIconImageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC+
CQAAAk1TRnQBSQFMAgEBAwEAAWgBAAFoAQABEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABEAMAAQEBAAEQBgABCDoAATABcwHKAWYBygFmAbUBexIAARABQgEQAUIBEAFCARABQgEQAUIBEAFC
ARABQgEQAUIBEAFCARABQgEQAUIBEAFCARABQkYAAcoBZgHKAWYBygFmAcoBZgHKAWYBygFmAcoBZgHK
AWYBygFmAcoBZgHKAWYBygFmATABcwYAARABQgHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7
Ad4BewHeAXsB3gF7ARABQkYAATABcwEwAXMBMAFzATABcwEwAXMBygFmAcoBZgHKAWYBygFmAcoBZgHK
AWYBygFmAcoBZgYAARABQgHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7
ARABQkYAATABcwEwAXMBMAFzATABcwEwAXMBygFmAcoBZgHKAWYBygFmAcoBZgHKAWYBygFmAcoBZgYA
ARABQgHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7ARABQiQAAVsBawFR
AUYBUQFGAVEBRgFRAUYBUQFGAVEBRgFRAUYBUQFGAVEBRgFRAUYBUQFGAVEBRgFRAUYBUQFGAVsBawIA
ATABcwEwAXMBMAFzATABcwEwAXMBygFmAcoBZgHKAWYBygFmAcoBZgHKAWYBygFmAcoBZgYAAfcBXgHe
AXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7AfcBXiQAAVEBRgFRAUYBUQFG
AVEBRgFRAUYBUQFGAVEBRgFRAUYBUQFGAVEBRgFRAUYBUQFGAVsBawFRAUYBUQFGAVEBRgIAATABcwG1
AXsBMAFzATABcwEwAXMBygFmAcoBZgHKAWYBMAFzAcoBZgHKAWYBtQF7AcoBZgYAAfcBXgHeAXsB3gF7
Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7AfcBXiQAAVEBRgFRAUYBWwFrAVsBawFb
AWsBWwFrAVsBawFbAWsBWwFrAVsBawFbAWsBUQFGAVEBRgFRAUYBUQFGAVEBRgIAATABcwG1AXsBtQF7
ATABcwEwAXMBygFmAcoBZgHKAWYBMAFzATABcwEwAXMBtQF7AcoBZgYAAfcBXgHeAXsB3gF7Ad4BewHe
AXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7AfcBXiQAAVEBRgFRAUYBWwFrAVsBawFbAWsBWwFr
AVsBawFbAWsBWwFrAVsBawFbAWsBUQFGAVEBRgFRAUYBUQFGAVEBRgIAATABcwG1AXsBtQF7AbUBewEw
AXMBygFmAcoBZgHKAWYBMAFzATABcwEwAXMBtQF7AcoBZgYAAfcBXgHeAXsB3gF7Ad4BewHeAXsB3gF7
Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7AfcBXiQAAVEBRgFbAWsBWwFrAVsBawFbAWsBWwFrAVsBawFb
AWsBWwFrAVsBawFbAWsBUQFGAVEBRgFRAUYBUQFGAVEBRgIAATABcwG1AXsBtQF7AbUBewG1AXsBygFm
AcoBZgHKAWYBMAFzATABcwEwAXMBMAFzAcoBZgYAAfcBXgHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHe
AXsB3gF7Ad4BewHeAXsB3gF7AfcBXiQAAVEBRgFbAWsBWwFrAf4BewH+AXsB/gF7Af4BewH+AXsB/gF7
Af4BewH+AXsB/gF7Af4BewFbAWsBWwFrAVEBRgIAATABcwG1AXsBtQF7AbUBewG1AXsBygFmAcoBZgHK
AWYBtQF7ATABcwEwAXMBygFmATABcwYAAfcBXgHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7
Ad4BewHeAXsB3gF7AfcBXiQAAVsBawFbAWsBUQFGAVEBRgFRAUYBUQFGAVEBRgFRAUYBUQFGAVEBRgFR
AUYBUQFGAVEBRgFRAUYBWwFrAVsBawIAATABcwG1AXsBtQF7AbUBewG1AXsBygFmATABcwEwAXMBtQF7
AbUBewG1AXsBygFmCAAB9wFeAd4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHe
AXsB9wFeJgABWwFrAVsBawFbAWsBWwFrAf4BewH+AXsB/gF7Af4BewH+AXsB/gF7AVsBawFbAWsBWwFr
AVsBawQAATABcwG1AXsBtQF7AbUBewG1AXsBygFmATABcwEwAXMBtQF7AbUBewG1AXsBygFmCAAB9wFe
Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB9wFeLAABWwFrAVsBawFb
AWsBWwFrAVsBawFbAWsBWwFrAVsBawoAATABcwG1AXsBtQF7AbUBewG1AXsBygFmATABcwEwAXMBtQF7
AbUBewG1AXsBygFmCAAB9wFeAd4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB9wFeAfcBXgH3
AV4B9wFeRgABMAFzAbUBewG1AXsBtQF7ATABcwHKAWYBMAFzAbUBewG1AXsBtQF7AbUBewHKAWYIAAH3
AV4B3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewH3AV4B3gF7AfcBXkgAATABcwG1AXsBMAFz
ATABcwG1AXsBMAFzAbUBewG1AXsBtQF7AbUBewG1AXsBMAFzCAAB9wFeAd4BewHeAXsB3gF7Ad4BewHe
AXsB3gF7Ad4BewHeAXsB9wFeAfcBXkoAATABcwEwAXMBMAFzATABcwEwAXMBMAFzATABcwEwAXMBMAFz
AcoBZgEwAXMBtQF7CAAB9wFeAfcBXgH3AV4B9wFeAfcBXgH3AV4B9wFeAfcBXgH3AV4B9wFeKgABQgFN
AT4HAAE+AwABKAMAAUADAAEQAwABAQEAAQEFAAGAFwAD/wEAAv8B8AH/AYABAwIAAv8BgAEDAYABAwIA
Av8BgAEDAYABAwIAAv8BgAEDAYABAwQAAYABAwGAAQMEAAGAAQMBgAEDBAABgAEDAYABAwQAAYABAwGA
AQMEAAGAAQMBgAEDBAABgAEDAYABAwQAAYABBwGAAQMCAAGAAQEBgAEHAYABAwIAAfABDwGAAQcBgAED
AgAC/wGAAQcBgAEHAgAC/wGAAQcBgAEPAgAC/wGAAQcBgAEfAgAL
</value>
</data>
<data name="leftListView.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;leftListView.Name" xml:space="preserve"> <data name="&gt;&gt;leftListView.Name" xml:space="preserve">
<value>leftListView</value> <value>leftListView</value>
</data> </data>
@@ -672,6 +751,108 @@
<data name="&gt;&gt;leftListView.ZOrder" xml:space="preserve"> <data name="&gt;&gt;leftListView.ZOrder" xml:space="preserve">
<value>1</value> <value>1</value>
</data> </data>
<data name="localDeleteButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="localDeleteButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="localDeleteButton.Location" type="System.Drawing.Point, System.Drawing">
<value>150, 21</value>
</data>
<data name="localDeleteButton.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 23</value>
</data>
<data name="localDeleteButton.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="localDeleteButton.ToolTip" xml:space="preserve">
<value>Delete</value>
</data>
<data name="&gt;&gt;localDeleteButton.Name" xml:space="preserve">
<value>localDeleteButton</value>
</data>
<data name="&gt;&gt;localDeleteButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;localDeleteButton.Parent" xml:space="preserve">
<value>leftTopPanel</value>
</data>
<data name="&gt;&gt;localDeleteButton.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="localNewFolderButton.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="localNewFolderButton.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="localNewFolderButton.Location" type="System.Drawing.Point, System.Drawing">
<value>114, 21</value>
</data>
<data name="localNewFolderButton.Size" type="System.Drawing.Size, System.Drawing">
<value>30, 23</value>
</data>
<data name="localNewFolderButton.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="localNewFolderButton.ToolTip" xml:space="preserve">
<value>New Folder</value>
</data>
<data name="&gt;&gt;localNewFolderButton.Name" xml:space="preserve">
<value>localNewFolderButton</value>
</data>
<data name="&gt;&gt;localNewFolderButton.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;localNewFolderButton.Parent" xml:space="preserve">
<value>leftTopPanel</value>
</data>
<data name="&gt;&gt;localNewFolderButton.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="localLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="localLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="localLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="localLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>33, 13</value>
</data>
<data name="localLabel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="localLabel.Text" xml:space="preserve">
<value>Local</value>
</data>
<data name="&gt;&gt;localLabel.Name" xml:space="preserve">
<value>localLabel</value>
</data>
<data name="&gt;&gt;localLabel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;localLabel.Parent" xml:space="preserve">
<value>leftTopPanel</value>
</data>
<data name="&gt;&gt;localLabel.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="leftTopPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="leftTopPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="leftTopPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 50</value>
</data>
<data name="leftTopPanel.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;leftTopPanel.Name" xml:space="preserve"> <data name="&gt;&gt;leftTopPanel.Name" xml:space="preserve">
<value>leftTopPanel</value> <value>leftTopPanel</value>
</data> </data>
@@ -774,58 +955,6 @@
<data name="rightListView.Size" type="System.Drawing.Size, System.Drawing"> <data name="rightListView.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 388</value> <value>320, 388</value>
</data> </data>
<metadata name="fileIconImageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>497, 17</value>
</metadata>
<data name="fileIconImageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC+
CQAAAk1TRnQBSQFMAgEBAwEAAWABAAFgAQABEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABEAMAAQEBAAEQBgABCDoAATABcwHKAWYBygFmAbUBexIAARABQgEQAUIBEAFCARABQgEQAUIBEAFC
ARABQgEQAUIBEAFCARABQgEQAUIBEAFCARABQkYAAcoBZgHKAWYBygFmAcoBZgHKAWYBygFmAcoBZgHK
AWYBygFmAcoBZgHKAWYBygFmATABcwYAARABQgHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7
Ad4BewHeAXsB3gF7ARABQkYAATABcwEwAXMBMAFzATABcwEwAXMBygFmAcoBZgHKAWYBygFmAcoBZgHK
AWYBygFmAcoBZgYAARABQgHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7
ARABQkYAATABcwEwAXMBMAFzATABcwEwAXMBygFmAcoBZgHKAWYBygFmAcoBZgHKAWYBygFmAcoBZgYA
ARABQgHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7ARABQiQAAVsBawFR
AUYBUQFGAVEBRgFRAUYBUQFGAVEBRgFRAUYBUQFGAVEBRgFRAUYBUQFGAVEBRgFRAUYBUQFGAVsBawIA
ATABcwEwAXMBMAFzATABcwEwAXMBygFmAcoBZgHKAWYBygFmAcoBZgHKAWYBygFmAcoBZgYAAfcBXgHe
AXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7AfcBXiQAAVEBRgFRAUYBUQFG
AVEBRgFRAUYBUQFGAVEBRgFRAUYBUQFGAVEBRgFRAUYBUQFGAVsBawFRAUYBUQFGAVEBRgIAATABcwG1
AXsBMAFzATABcwEwAXMBygFmAcoBZgHKAWYBMAFzAcoBZgHKAWYBtQF7AcoBZgYAAfcBXgHeAXsB3gF7
Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7AfcBXiQAAVEBRgFRAUYBWwFrAVsBawFb
AWsBWwFrAVsBawFbAWsBWwFrAVsBawFbAWsBUQFGAVEBRgFRAUYBUQFGAVEBRgIAATABcwG1AXsBtQF7
ATABcwEwAXMBygFmAcoBZgHKAWYBMAFzATABcwEwAXMBtQF7AcoBZgYAAfcBXgHeAXsB3gF7Ad4BewHe
AXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7AfcBXiQAAVEBRgFRAUYBWwFrAVsBawFbAWsBWwFr
AVsBawFbAWsBWwFrAVsBawFbAWsBUQFGAVEBRgFRAUYBUQFGAVEBRgIAATABcwG1AXsBtQF7AbUBewEw
AXMBygFmAcoBZgHKAWYBMAFzATABcwEwAXMBtQF7AcoBZgYAAfcBXgHeAXsB3gF7Ad4BewHeAXsB3gF7
Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7AfcBXiQAAVEBRgFbAWsBWwFrAVsBawFbAWsBWwFrAVsBawFb
AWsBWwFrAVsBawFbAWsBUQFGAVEBRgFRAUYBUQFGAVEBRgIAATABcwG1AXsBtQF7AbUBewG1AXsBygFm
AcoBZgHKAWYBMAFzATABcwEwAXMBMAFzAcoBZgYAAfcBXgHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHe
AXsB3gF7Ad4BewHeAXsB3gF7AfcBXiQAAVEBRgFbAWsBWwFrAf4BewH+AXsB/gF7Af4BewH+AXsB/gF7
Af4BewH+AXsB/gF7Af4BewFbAWsBWwFrAVEBRgIAATABcwG1AXsBtQF7AbUBewG1AXsBygFmAcoBZgHK
AWYBtQF7ATABcwEwAXMBygFmATABcwYAAfcBXgHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7
Ad4BewHeAXsB3gF7AfcBXiQAAVsBawFbAWsBUQFGAVEBRgFRAUYBUQFGAVEBRgFRAUYBUQFGAVEBRgFR
AUYBUQFGAVEBRgFRAUYBWwFrAVsBawIAATABcwG1AXsBtQF7AbUBewG1AXsBygFmATABcwEwAXMBtQF7
AbUBewG1AXsBygFmCAAB9wFeAd4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHe
AXsB9wFeJgABWwFrAVsBawFbAWsBWwFrAf4BewH+AXsB/gF7Af4BewH+AXsB/gF7AVsBawFbAWsBWwFr
AVsBawQAATABcwG1AXsBtQF7AbUBewG1AXsBygFmATABcwEwAXMBtQF7AbUBewG1AXsBygFmCAAB9wFe
Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB9wFeLAABWwFrAVsBawFb
AWsBWwFrAVsBawFbAWsBWwFrAVsBawoAATABcwG1AXsBtQF7AbUBewG1AXsBygFmATABcwEwAXMBtQF7
AbUBewG1AXsBygFmCAAB9wFeAd4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB9wFeAfcBXgH3
AV4B9wFeRgABMAFzAbUBewG1AXsBtQF7ATABcwHKAWYBMAFzAbUBewG1AXsBtQF7AbUBewHKAWYIAAH3
AV4B3gF7Ad4BewHeAXsB3gF7Ad4BewHeAXsB3gF7Ad4BewH3AV4B3gF7AfcBXkgAATABcwG1AXsBMAFz
ATABcwG1AXsBMAFzAbUBewG1AXsBtQF7AbUBewG1AXsBMAFzCAAB9wFeAd4BewHeAXsB3gF7Ad4BewHe
AXsB3gF7Ad4BewHeAXsB9wFeAfcBXkoAATABcwEwAXMBMAFzATABcwEwAXMBMAFzATABcwEwAXMBMAFz
AcoBZgEwAXMBtQF7CAAB9wFeAfcBXgH3AV4B9wFeAfcBXgH3AV4B9wFeAfcBXgH3AV4B9wFeKgABQgFN
AT4HAAE+AwABKAMAAUADAAEQAwABAQEAAQEFAAGAFwAD/wEAAv8B8AH/AYABAwIAAv8BgAEDAYABAwIA
Av8BgAEDAYABAwIAAv8BgAEDAYABAwQAAYABAwGAAQMEAAGAAQMBgAEDBAABgAEDAYABAwQAAYABAwGA
AQMEAAGAAQMBgAEDBAABgAEDAYABAwQAAYABBwGAAQMCAAGAAQEBgAEHAYABAwIAAfABDwGAAQcBgAED
AgAC/wGAAQcBgAEHAgAC/wGAAQcBgAEPAgAC/wGAAQcBgAEfAgAL
</value>
</data>
<data name="rightListView.TabIndex" type="System.Int32, mscorlib"> <data name="rightListView.TabIndex" type="System.Int32, mscorlib">
<value>1</value> <value>1</value>
</data> </data>
@@ -925,111 +1054,6 @@
<data name="&gt;&gt;remoteLabel.ZOrder" xml:space="preserve"> <data name="&gt;&gt;remoteLabel.ZOrder" xml:space="preserve">
<value>5</value> <value>5</value>
</data> </data>
<data name="columnHeader1.Text" xml:space="preserve">
<value>Name</value>
</data>
<data name="columnHeader1.Width" type="System.Int32, mscorlib">
<value>220</value>
</data>
<data name="columnHeader2.Text" xml:space="preserve">
<value>Size</value>
</data>
<data name="columnHeader2.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
<value>Right</value>
</data>
<data name="columnHeader2.Width" type="System.Int32, mscorlib">
<value>80</value>
</data>
<data name="leftListView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>
<data name="leftListView.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 50</value>
</data>
<data name="leftListView.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 388</value>
</data>
<data name="leftListView.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;leftListView.Name" xml:space="preserve">
<value>leftListView</value>
</data>
<data name="&gt;&gt;leftListView.Type" xml:space="preserve">
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;leftListView.Parent" xml:space="preserve">
<value>leftPanel</value>
</data>
<data name="&gt;&gt;leftListView.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;localLabel.Name" xml:space="preserve">
<value>localLabel</value>
</data>
<data name="&gt;&gt;localLabel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;localLabel.Parent" xml:space="preserve">
<value>leftTopPanel</value>
</data>
<data name="&gt;&gt;localLabel.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="leftTopPanel.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Top</value>
</data>
<data name="leftTopPanel.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value>
</data>
<data name="leftTopPanel.Size" type="System.Drawing.Size, System.Drawing">
<value>320, 50</value>
</data>
<data name="leftTopPanel.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;leftTopPanel.Name" xml:space="preserve">
<value>leftTopPanel</value>
</data>
<data name="&gt;&gt;leftTopPanel.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;leftTopPanel.Parent" xml:space="preserve">
<value>leftPanel</value>
</data>
<data name="&gt;&gt;leftTopPanel.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="localLabel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="localLabel.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="localLabel.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 3</value>
</data>
<data name="localLabel.Size" type="System.Drawing.Size, System.Drawing">
<value>33, 13</value>
</data>
<data name="localLabel.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="localLabel.Text" xml:space="preserve">
<value>Local</value>
</data>
<data name="&gt;&gt;localLabel.Name" xml:space="preserve">
<value>localLabel</value>
</data>
<data name="&gt;&gt;localLabel.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;localLabel.Parent" xml:space="preserve">
<value>leftTopPanel</value>
</data>
<data name="&gt;&gt;localLabel.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value> <value>True</value>
</metadata> </metadata>