public void Add(CommandInfo info, object dataItem)
 {
     info.DataItem = dataItem;
     if (info.Text == null) info.Text = defaultInfo.Text;
     if (info.Icon == null) info.Icon = defaultInfo.Icon;
     list.Add (info);
 }
 protected override void Update(CommandInfo info)
 {
     if (Runtime.ProjectService.CurrentOpenCombine != null) {
         CombineEntry entry = Runtime.ProjectService.CurrentSelectedCombineEntry;
         if (entry != null) {
             info.Enabled = Runtime.ProjectService.CurrentBuildOperation.IsCompleted;
             info.Text = string.Format (GettextCatalog.GetString ("Build {0}"), entry.Name);
             if (entry is Combine)
                 info.Description = string.Format (GettextCatalog.GetString ("Build Solution {0}"), entry.Name);
             else if (entry is Project)
                 info.Description = string.Format (GettextCatalog.GetString ("Build Project {0}"), entry.Name);
             else
                 info.Description = info.Text;
         } else {
             info.Enabled = false;
         }
     } else {
         if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow != null) {
             info.Enabled = Runtime.ProjectService.CurrentBuildOperation.IsCompleted;
             string file = Path.GetFileName (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow.ViewContent.ContentName);
             info.Text = info.Description = string.Format (GettextCatalog.GetString ("Build {0}"), file);
         } else {
             info.Enabled = false;
         }
     }
 }
 protected override void Update(CommandInfo info)
 {
     if (Runtime.DebuggingService == null)
         info.Visible = false;
     else
         info.Enabled = Runtime.DebuggingService.IsRunning;
 }
        protected override void Update(CommandArrayInfo info)
        {
            int contentCount = WorkbenchSingleton.Workbench.ViewContentCollection.Count;
            if (contentCount == 0) return;

            for (int i = 0; i < contentCount; ++i) {
                IViewContent content = (IViewContent)WorkbenchSingleton.Workbench.ViewContentCollection[i];

                CommandInfo item = null;
                if (content.WorkbenchWindow.ShowNotification) {
                    item = new CommandInfo ("<span foreground=\"blue\">" + content.WorkbenchWindow.Title + "</span>");
                    item.UseMarkup = true;
                } else {
                    item = new CommandInfo (content.WorkbenchWindow.Title);
                }

                item.Checked = (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow == content.WorkbenchWindow);
                item.Description = GettextCatalog.GetString ("Activate this window");

                if (i + 1 <= 9)
                    item.AccelKey = "Alt|" + (i+1);

                info.Add (item, content.WorkbenchWindow);
            }
        }
 protected override void Update(CommandArrayInfo info)
 {
     for (int i = 0; i < ToolLoader.Tool.Count; ++i) {
         CommandInfo cmd = new CommandInfo (ToolLoader.Tool[i].ToString());
         cmd.Description = GettextCatalog.GetString ("Start tool") + " " + String.Join(String.Empty, ToolLoader.Tool[i].ToString().Split('&'));
         info.Add (cmd, ToolLoader.Tool[i]);
     }
 }
 protected void OnUpdateViewToolbar(CommandArrayInfo info)
 {
     foreach (IDockToolbar bar in Toolbars) {
         CommandInfo cmd = new CommandInfo (bar.Title);
         cmd.Checked = bar.Visible;
         info.Add (cmd, bar);
     }
 }
        internal CommandInfo GetCommandInfo(object commandId)
        {
            ActionCommand cmd = GetActionCommand (commandId);
            CommandInfo info = new CommandInfo (cmd);

            try {
                int globalPos;
                object cmdTarget = GetFirstCommandTarget (out globalPos);

                while (cmdTarget != null)
                {
                    HandlerTypeInfo typeInfo = GetTypeHandlerInfo (cmdTarget);
                    CommandUpdaterInfo cui = typeInfo.GetCommandUpdater (commandId);

                    if (cui != null) {
                        if (cmd.CommandArray) {
                            info.ArrayInfo = new CommandArrayInfo (info);
                            cui.Run (cmdTarget, info.ArrayInfo);
                            return info;
                        }
                        else {
                            cui.Run (cmdTarget, info);
                            return info;
                        }
                    }

                    if (typeInfo.GetCommandHandler (commandId) != null) {
                        info.Enabled = true;
                        info.Visible = true;
                        return info;
                    }

                    cmdTarget = GetNextCommandTarget (cmdTarget, ref globalPos);
                }

                cmd.UpdateCommandInfo (info);
            }
            catch (Exception ex) {
                if (!commandUpdateErrors.Contains (commandId)) {
                    commandUpdateErrors.Add (commandId);
                    ReportError (commandId, "Error while updating status of command: " + commandId, ex);
                }
                info.Enabled = false;
                info.Visible = true;
            }
            return info;
        }
 protected void OnUpdateSelectTestInTree(CommandInfo info)
 {
     UnitTest test = GetSelectedTest ();
     info.Enabled = test != null;
 }
        public bool DispatchCommand(object commandId, object dataItem)
        {
            ActionCommand cmd = null;
            try {
                cmd = GetActionCommand (commandId);

                int globalPos;
                object cmdTarget = GetFirstCommandTarget (out globalPos);
                CommandInfo info = new CommandInfo (cmd);

                while (cmdTarget != null)
                {
                    HandlerTypeInfo typeInfo = GetTypeHandlerInfo (cmdTarget);

                    CommandUpdaterInfo cui = typeInfo.GetCommandUpdater (commandId);
                    if (cui != null) {
                        if (cmd.CommandArray) {
                            // Make sure that the option is still active
                            CommandArrayInfo ainfo = new CommandArrayInfo (info);
                            cui.Run (cmdTarget, ainfo);
                            bool found = false;
                            foreach (CommandInfo ci in ainfo) {
                                if (Object.Equals (dataItem, ci.DataItem)) {
                                    found = true;
                                    break;
                                }
                            }
                            if (!found) return false;
                        } else {
                            cui.Run (cmdTarget, info);
                            if (!info.Enabled || !info.Visible) return false;
                        }
                    }

                    CommandHandlerInfo chi = typeInfo.GetCommandHandler (commandId);
                    if (chi != null) {
                        if (cmd.CommandArray)
                            chi.Run (cmdTarget, dataItem);
                        else
                            chi.Run (cmdTarget);
                        UpdateToolbars ();
                        return true;
                    }

                    cmdTarget = GetNextCommandTarget (cmdTarget, ref globalPos);
                }

                return cmd.DispatchCommand (dataItem);
            }
            catch (Exception ex) {
                string name = (cmd != null && cmd.Text != null && cmd.Text.Length > 0) ? cmd.Text : commandId.ToString ();
                name = name.Replace ("_","");
                ReportError (commandId, "Error while executing command: " + name, ex);
                return false;
            }
        }
 protected void OnUpdateUnIndentSelection(CommandInfo info)
 {
     info.Enabled = window.ActiveViewContent is ICodeStyleOperations;
 }
 protected void OnUpdateRunTest(CommandInfo info)
 {
     UnitTest test = GetSelectedTest ();
     info.Enabled = test != null && test.SourceCodeLocation != null;
 }
 public void UpdateToggleBreakpoint(CommandInfo info)
 {
     if (Runtime.DebuggingService == null)
         info.Visible = false;
     else
         info.Enabled = DisplayBinding.ContentName != null;
 }
 protected void OnUpdateUndo(CommandInfo info)
 {
     info.Enabled = window.ActiveViewContent is IEditable;
 }
 public void OnUpdateIncludeInDeploy(CommandInfo info)
 {
     Project project = (Project) CurrentNode.GetParentDataItem (typeof(Project), false);
     ProjectFile finfo = CurrentNode.DataItem as ProjectFile;
     info.Checked = !project.DeployInformation.IsFileExcluded (finfo.Name);
 }
 protected override void Update(CommandInfo info)
 {
     info.Enabled = WorkbenchSingleton.Workbench.WorkbenchLayout != null && WorkbenchSingleton.Workbench.WorkbenchLayout.CurrentLayout != "Default";
 }
 protected override void Update(CommandInfo info)
 {
     info.Visible = Runtime.ProjectService.CurrentSelectedProject is MonoProject;
 }
 protected override void Update(CommandInfo info)
 {
     if (Runtime.DebuggingService == null)
         info.Visible = false;
 }
 protected void UpdatePasteToCurrentItem(CommandInfo info)
 {
     if (copyObject != null) {
         TreeNodeNavigator node = (TreeNodeNavigator) GetSelectedNode ();
         if (node != null) {
             NodeBuilder[] chain = node.NodeBuilderChain;
             NodePosition pos = node.CurrentPosition;
             foreach (NodeBuilder b in chain) {
                 NodeCommandHandler handler = b.CommandHandler;
                 handler.SetCurrentNode (node);
                 if (handler.CanDropNode (copyObject, currentTransferOperation)) {
                     info.Enabled = true;
                     return;
                 }
                 node.MoveToPosition (pos);
             }
         }
     }
     info.Enabled = false;
 }
 protected void UpdateCutCurrentItem(CommandInfo info)
 {
     info.Enabled = CanTransferCurrentItem (DragOperation.Move);
 }
 protected void BuildTreeOptionsMenu(CommandArrayInfo info)
 {
     ITreeNavigator tnav = GetSelectedNode ();
     ITreeOptions currentOptions = tnav.Options;
     foreach (TreePadOption op in options) {
         CommandInfo ci = new CommandInfo (op.Label);
         ci.Checked = currentOptions [op.Id];
         info.Add (ci, op.Id);
     }
 }
 public void Run(object cmdTarget, CommandInfo info)
 {
     if (isArray)
         throw new InvalidOperationException ("Invalid signature for command update handler: " + Method.DeclaringType + "." + Method.Name + "()");
     Method.Invoke (cmdTarget, new object[] {info} );
 }
 public void OnUpdateIncludeInBuild(CommandInfo info)
 {
     ProjectFile file = CurrentNode.DataItem as ProjectFile;
     info.Checked = (file.BuildAction == BuildAction.Compile);
 }
 protected void OnUpdateRunTest(CommandInfo info)
 {
     UnitTest test = CurrentNode.DataItem as UnitTest;
     info.Enabled = test.SourceCodeLocation != null;
 }
 void Update(CommandInfo cmdInfo)
 {
     if (lastDesc != cmdInfo.Description) {
         SetTooltip (tips, cmdInfo.Description, cmdInfo.Description);
         lastDesc = cmdInfo.Description;
     }
     if (Label != cmdInfo.Text)
         Label = cmdInfo.Text;
     if (cmdInfo.Icon != StockId)
         StockId = cmdInfo.Icon;
     if (cmdInfo.Enabled != Sensitive)
         Sensitive = cmdInfo.Enabled;
     if (cmdInfo.Visible != Visible)
         Visible = cmdInfo.Visible;
 }
 protected override void Update(CommandInfo info)
 {
     info.Enabled = Runtime.DebuggingService != null &&
                     Runtime.ProjectService.CurrentRunOperation.IsCompleted;
 }
 protected void OnUpdateReloadFile(CommandInfo info)
 {
     info.Enabled = window.ViewContent.ContentName != null && !window.ViewContent.IsViewOnly;
 }
 protected override void Update(CommandArrayInfo info)
 {
     IWorkbench wb = WorkbenchSingleton.Workbench;
     if (wb.WorkbenchLayout != null) {
         PadContentCollection pads = wb.WorkbenchLayout.PadContentCollection;
         foreach (IPadContent padContent in pads) {
             CommandInfo cmd = new CommandInfo (padContent.Title);
             cmd.UseMarkup = true;
             cmd.Checked = WorkbenchSingleton.Workbench.WorkbenchLayout.IsVisible (padContent);
             info.Add (cmd, padContent);
         }
     }
 }
        protected void OnUpdateSaveFile(CommandInfo info)
        {
            if (window.ViewContent.IsViewOnly) {
                info.Enabled = false;
                return;
            }

            IViewContent content = window.ActiveViewContent as IViewContent;
            if (content != null)
                info.Enabled = content.IsDirty;
            else
                info.Enabled = false;
        }
 protected override void Update(CommandArrayInfo info)
 {
     IWorkbench wb = WorkbenchSingleton.Workbench;
     if (wb.WorkbenchLayout != null) {
         string[] layouts = wb.WorkbenchLayout.Layouts;
         Array.Sort (layouts);
         foreach (string layout in layouts) {
             CommandInfo cmd = new CommandInfo (layout);
             cmd.Checked = (layout == wb.WorkbenchLayout.CurrentLayout);
             info.Add (cmd, layout);
         }
     }
 }
 protected void OnUpdateSelectAll(CommandInfo info)
 {
     IEditable editable = window.ActiveViewContent as IEditable;
     info.Enabled = editable != null && editable.ClipboardHandler.EnableSelectAll;
 }