// Methods
        public InventoryViewer(string first, string last, string password)
        {
            //this.Client.Self.OnInstantMessage += new MainAvatar.InstantMessageCallback(this.Self_OnInstantMessage);
            this.Client.Assets.OnAssetReceived += new AssetManager.AssetReceivedCallback(this.Assets_OnAssetReceived);
            ContextMenuStrip ItemMenu = new ContextMenuStrip();

            ItemMenu.Items.Add(new ToolStripMenuItem("Get Info", null, new EventHandler(this.getInfo_Click)));
            ItemMenu.Items.Add(new ToolStripMenuItem("Print Asset", null, new EventHandler(this.printAsset_Click)));
            ItemMenu.Items.Add(new ToolStripMenuItem("Save Asset...", null, new EventHandler(this.saveAsset_Click)));
            ItemMenu.Items.Add(new ToolStripMenuItem("Delete", null, new EventHandler(this.delete_Click)));
            ContextMenuStrip FolderMenu = new ContextMenuStrip();

            FolderMenu.Items.Add(new ToolStripMenuItem("Get Info", null, new EventHandler(this.getInfo_Click)));
            FolderMenu.Items.Add(new ToolStripMenuItem("Delete", null, new EventHandler(this.delete_Click)));
            FolderMenu.Items.Add(new ToolStripMenuItem("Empty", null, new EventHandler(this.empty_Click)));
            ContextMenuStrip GeneralMenu = new ContextMenuStrip();

            GeneralMenu.Items.Add(new ToolStripMenuItem("Get Info", null, new EventHandler(this.getInfo_Click)));
            GeneralMenu.Items.Add(new ToolStripMenuItem("Delete", null, new EventHandler(this.delete_Click)));
            this.inventoryView = new InventoryTreeView();
            this.inventoryView.GeneralContextMenu = GeneralMenu;
            this.inventoryView.FolderContextMenu  = FolderMenu;
            this.inventoryView.ItemContextMenu    = ItemMenu;
            this.inventoryView.Dock = DockStyle.Fill;
            this.mainWindow.Controls.Add(this.inventoryView);
            this.mainWindow.FormClosing += new FormClosingEventHandler(this.Form_FormClosing);
            this.mainWindow.Show();
            MainForm = mainWindow;

            LoginParams loginp = Client.Network.DefaultLoginParams(first, last, password, "InventoryViewer by Christopher Omega", "0.1");

            Client.Network.OnLogin +=
                delegate(LoginStatus status, string message) {
                if (status == LoginStatus.Success)
                {
                    Console.WriteLine("Login success: " + message);
                    ShowInventory();
                }
                else if (status == LoginStatus.Failed)
                {
                    Console.WriteLine("Login failed: " + message);
                    Application.Exit();
                }
            };
            Client.Network.BeginLogin(loginp);
        }
        // Methods
        public InventoryDirectorySelector(InventoryManager manager, Inventory inventory, InventoryNode root)
        {
            this.form.FormBorderStyle   = FormBorderStyle.FixedDialog;
            this.treeView               = new InventoryTreeView();
            this.treeView.Model         = new InventoryTreeModel(manager, inventory, root, new InventoryType[0]);
            this.treeView.SelectionMode = TreeSelectionMode.Single;
            this.form.Controls.Add(this.treeView);
            Button ok = new Button();

            ok.Text = "Select";
            this.form.AcceptButton = ok;
            this.form.Controls.Add(ok);
            Button cancel = new Button();

            cancel.Text            = "Cancel";
            this.form.CancelButton = cancel;
            this.form.Controls.Add(cancel);
        }