protected virtual void OnClick(EventHandler finishDelegate)
{
bool fireDelegate = true;
if (!Ribbon.InDesignMode)
{
// Events only occur when enabled
if (Enabled)
{
// A check button should always toggle state
if (ButtonType == GroupButtonType.Check)
{
// Push back the change to the attached command
if (KryptonCommand != null)
KryptonCommand.Checked = !KryptonCommand.Checked;
else
Checked = !Checked;
}
// In showing a popup we fire the delegate before the click so that the
// minimized popup is removed out of the way before the event is handled
// because if the event shows a dialog then it would appear behind the popup
if (VisualPopupManager.Singleton.CurrentPopup != null)
{
// Do we need to fire a delegate stating the click processing has finished?
if (fireDelegate && (finishDelegate != null))
finishDelegate(this, EventArgs.Empty);
fireDelegate = false;
}
// Generate actual click event
if (Click != null)
Click(this, EventArgs.Empty);
// Clicking the button should execute the associated command
if (KryptonCommand != null)
KryptonCommand.PerformExecute();
}
}
// Do we need to fire a delegate stating the click processing has finished?
if (fireDelegate && (finishDelegate != null))
finishDelegate(this, EventArgs.Empty);
}