|
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
// <version>$Revision: 915 $</version>
// </file>
using System;
using System.Drawing;
using System.Diagnostics;
using System.Drawing.Text;
using System.Drawing.Imaging;
using System.Windows.Forms;
namespace ICSharpCode.Core
{
public class ToolBarCommand : ToolStripMenuItem, 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 (Image == null && codon.Properties.Contains("icon")) {
Image = ResourceService.GetBitmap(codon.Properties["icon"]);
}
UpdateStatus();
UpdateText();
}
protected override void OnClick(System.EventArgs e)
{
base.OnClick(e);
if (menuCommand == null) {
menuCommand = (ICommand)codon.AddIn.CreateObject(codon.Properties["class"]);
}
if (menuCommand != null) {
menuCommand.Owner = caller;
menuCommand.Run();
}
}
// protected override void OnSelect(System.EventArgs e)
// {
// base.OnSelect(e);
// StatusBarService.SetMessage(description);
// }
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;
}
}
public virtual void UpdateText()
{
if (codon != null) {
ToolTipText = StringParser.Parse(codon.Properties["tooltip"]);
}
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.