// // // // // $Revision: 3763 $ // using System; using System.Windows.Forms; namespace ICSharpCode.Core.WinForms { public class ToolBarCommand : ToolStripButton, IStatusUpdate { object caller; Codon codon; ICommand menuCommand = null; public ToolBarCommand(Codon codon, object caller, bool createCommand) { this.RightToLeft = RightToLeft.Inherit; this.caller = caller; this.codon = codon; if (createCommand) { menuCommand = (ICommand)codon.AddIn.CreateObject(codon.Properties["class"]); } if (codon.Properties.Contains("label")){ Text = StringParser.Parse(codon.Properties["label"]); } if (Image == null && codon.Properties.Contains("icon")) { Image = WinFormsResourceService.GetBitmap(StringParser.Parse(codon.Properties["icon"])); } UpdateStatus(); UpdateText(); } protected override void OnClick(EventArgs e) { base.OnClick(e); if (menuCommand == null) { menuCommand = (ICommand)codon.AddIn.CreateObject(codon.Properties["class"]); } if (menuCommand != null) { menuCommand.Owner = caller; LoggingService.Info("Run command " + menuCommand.GetType().FullName); menuCommand.Run(); } } public virtual void UpdateStatus() { if (codon != null) { ConditionFailedAction failedAction = codon.GetFailedAction(caller); this.Visible = failedAction != ConditionFailedAction.Exclude; bool isEnabled = failedAction != ConditionFailedAction.Disable; if (isEnabled && menuCommand != null && menuCommand is IMenuCommand) { isEnabled = ((IMenuCommand)menuCommand).IsEnabled; } this.Enabled = isEnabled; if (this.Visible && codon.Properties.Contains("icon")) { Image = WinFormsResourceService.GetBitmap(StringParser.Parse(codon.Properties["icon"])); } } } public virtual void UpdateText() { if (codon != null) { if (codon.Properties.Contains("tooltip")) { ToolTipText = StringParser.Parse(codon.Properties["tooltip"]); } if (codon.Properties.Contains("label")){ Text = StringParser.Parse(codon.Properties["label"]); } } } } }