protected override void Update()
        {
            base.Update();

            IMainWindow mainWindow = Command.MainWindowCommandInterface;
            SelectedItemCollection selection = Command.GetSelection();

            if (mainWindow != null)
            {
                base.DropDownItems.Clear();

                Command cmd = new ShutDownVMCommand(mainWindow, selection);
                if (cmd.CanExecute())
                {
                    base.DropDownItems.Add(new CommandToolStripMenuItem(cmd));
                }
                else
                {
                    base.DropDownItems.Add(new CommandToolStripMenuItem(new StartVMCommand(mainWindow, selection)));
                }

                cmd = new ResumeVMCommand(mainWindow, selection);
                if (cmd.CanExecute())
                {
                    base.DropDownItems.Add(new CommandToolStripMenuItem(cmd));
                }
                else
                {
                    base.DropDownItems.Add(new CommandToolStripMenuItem(new SuspendVMCommand(mainWindow, selection)));
                }

                base.DropDownItems.Add(new CommandToolStripMenuItem(new RebootVMCommand(mainWindow, selection)));
                base.DropDownItems.Add(new CommandToolStripMenuItem(new VMRecoveryModeCommand(mainWindow, selection)));
                base.DropDownItems.Add(new ToolStripSeparator());
                base.DropDownItems.Add(new CommandToolStripMenuItem(new ForceVMShutDownCommand(mainWindow, selection)));
                base.DropDownItems.Add(new CommandToolStripMenuItem(new ForceVMRebootCommand(mainWindow, selection)));

                DropDownItems.Add(new ToolStripSeparator());
                DropDownItems.Add(new CommandToolStripMenuItem(new VappStartCommand(mainWindow, selection)));
                DropDownItems.Add(new CommandToolStripMenuItem(new VappShutDownCommand(mainWindow, selection)));
            }
        }
示例#2
0
        private void treeView_NodeMouseDoubleClick(object sender, VirtualTreeNodeMouseClickEventArgs e)
        {
            if (e.Button != MouseButtons.Left)
                return;
            if (e.Node == null)
                return;

            IXenConnection conn = e.Node.Tag as IXenConnection;
            if (conn == null)
            {
                var obj = e.Node.Tag as IXenObject;
                if (obj != null)
                    conn = obj.Connection;
            }
            if (conn != null && !conn.IsConnected)
            {
                new ReconnectHostCommand(Program.MainWindow, conn).Execute();
                return;
            }

            VM vm = e.Node.Tag as VM;
            if (vm != null)
            {
                Command cmd = null;

                if (vm.is_a_template)
                {
                    cmd = new NewVMCommand(Program.MainWindow, Program.MainWindow.SelectionManager.Selection);
                }
                else if (vm.power_state == vm_power_state.Halted && vm.allowed_operations.Contains(vm_operations.start))
                {
                    cmd = new StartVMCommand(Program.MainWindow, Program.MainWindow.SelectionManager.Selection);
                }
                else if (vm.power_state == vm_power_state.Suspended && vm.allowed_operations.Contains(vm_operations.resume))
                {
                    cmd = new ResumeVMCommand(Program.MainWindow, Program.MainWindow.SelectionManager.Selection);
                }

                if (cmd != null && cmd.CanExecute())
                {
                    treeView.SelectedNode = e.Node;
                    cmd.Execute();
                }
                return;
            }

            Host host = e.Node.Tag as Host;
            if (host != null)
            {
                Command cmd = new PowerOnHostCommand(Program.MainWindow, host);
                if (cmd.CanExecute())
                {
                    treeView.SelectedNode = e.Node;
                    cmd.Execute();
                }
            }
        }