2007-05-22 13:45:34 +00:00
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
using System.Reflection;
|
2008-07-21 21:12:59 +00:00
|
|
|
using OpenMetaverse;
|
2007-05-22 13:45:34 +00:00
|
|
|
|
2008-07-21 21:12:59 +00:00
|
|
|
namespace OpenMetaverse.GUITestClient
|
2007-05-22 13:45:34 +00:00
|
|
|
{
|
|
|
|
|
public partial class frmTestClient : Form
|
|
|
|
|
{
|
2008-07-21 21:12:59 +00:00
|
|
|
private GridClient Client = new GridClient();
|
2007-05-22 13:45:34 +00:00
|
|
|
private Dictionary<Interface, TabPage> Interfaces = new Dictionary<Interface, TabPage>();
|
|
|
|
|
|
|
|
|
|
public frmTestClient()
|
|
|
|
|
{
|
2008-01-08 20:48:22 +00:00
|
|
|
Client.Network.OnLogin += new NetworkManager.LoginCallback(Network_OnLogin);
|
2007-05-22 13:45:34 +00:00
|
|
|
Client.Settings.MULTIPLE_SIMS = false;
|
|
|
|
|
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
|
|
|
|
RegisterAllPlugins(Assembly.GetExecutingAssembly());
|
|
|
|
|
EnablePlugins(false);
|
|
|
|
|
}
|
|
|
|
|
|
2008-01-08 20:48:22 +00:00
|
|
|
private void Network_OnLogin(LoginStatus login, string message)
|
|
|
|
|
{
|
|
|
|
|
if (login == LoginStatus.Success)
|
|
|
|
|
{
|
|
|
|
|
EnablePlugins(true);
|
|
|
|
|
}
|
|
|
|
|
else if (login == LoginStatus.Failed)
|
|
|
|
|
{
|
|
|
|
|
BeginInvoke(
|
|
|
|
|
(MethodInvoker)delegate()
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(this, String.Format("Error logging in ({0}): {1}",
|
|
|
|
|
Client.Network.LoginErrorKey, Client.Network.LoginMessage));
|
|
|
|
|
cmdConnect.Text = "Connect";
|
|
|
|
|
txtFirstName.Enabled = txtLastName.Enabled = txtPassword.Enabled = true;
|
|
|
|
|
EnablePlugins(false);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2007-05-22 13:45:34 +00:00
|
|
|
private void cmdConnect_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (cmdConnect.Text == "Connect")
|
|
|
|
|
{
|
|
|
|
|
cmdConnect.Text = "Disconnect";
|
|
|
|
|
txtFirstName.Enabled = txtLastName.Enabled = txtPassword.Enabled = false;
|
|
|
|
|
|
2008-01-08 20:48:22 +00:00
|
|
|
LoginParams loginParams = Client.Network.DefaultLoginParams(txtFirstName.Text, txtLastName.Text,
|
|
|
|
|
txtPassword.Text, "GUITestClient", "1.0.0");
|
|
|
|
|
Client.Network.BeginLogin(loginParams);
|
2007-05-22 13:45:34 +00:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Client.Network.Logout();
|
|
|
|
|
cmdConnect.Text = "Connect";
|
|
|
|
|
txtFirstName.Enabled = txtLastName.Enabled = txtPassword.Enabled = true;
|
|
|
|
|
EnablePlugins(false);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void EnablePlugins(bool enable)
|
|
|
|
|
{
|
|
|
|
|
tabControl.TabPages.Clear();
|
|
|
|
|
tabControl.TabPages.Add(tabLogin);
|
|
|
|
|
|
|
|
|
|
if (enable)
|
|
|
|
|
{
|
|
|
|
|
lock (Interfaces)
|
|
|
|
|
{
|
|
|
|
|
foreach (TabPage page in Interfaces.Values)
|
|
|
|
|
{
|
|
|
|
|
tabControl.TabPages.Add(page);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void RegisterAllPlugins(Assembly assembly)
|
|
|
|
|
{
|
|
|
|
|
foreach (Type t in assembly.GetTypes())
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (t.IsSubclassOf(typeof(Interface)))
|
|
|
|
|
{
|
|
|
|
|
ConstructorInfo[] infos = t.GetConstructors();
|
|
|
|
|
Interface iface = (Interface)infos[0].Invoke(new object[] { this });
|
|
|
|
|
RegisterPlugin(iface);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show(e.ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void RegisterPlugin(Interface iface)
|
|
|
|
|
{
|
|
|
|
|
TabPage page = new TabPage();
|
|
|
|
|
tabControl.TabPages.Add(page);
|
|
|
|
|
|
|
|
|
|
iface.Client = Client;
|
|
|
|
|
iface.TabPage = page;
|
|
|
|
|
|
|
|
|
|
if (!Interfaces.ContainsKey(iface))
|
|
|
|
|
{
|
2007-11-20 04:13:40 +00:00
|
|
|
lock (Interfaces) Interfaces.Add(iface, page);
|
2007-05-22 13:45:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
iface.Initialize();
|
|
|
|
|
|
|
|
|
|
page.Text = iface.Name;
|
|
|
|
|
page.ToolTipText = iface.Description;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void frmTestClient_Paint(object sender, PaintEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
lock (Interfaces)
|
|
|
|
|
{
|
|
|
|
|
foreach (Interface iface in Interfaces.Keys)
|
|
|
|
|
{
|
|
|
|
|
iface.Paint(sender, e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2007-11-20 04:13:40 +00:00
|
|
|
}
|