public void ShowContextMenu(ChoiceGroup group, Point location,
TemporaryColleagueParameter temporaryColleagueParam,
MessageSequencer sequencer)
{
using (CommandBarContextMenu menu= new CommandBarContextMenu())
{
menu.Tag = group;
group.ReferenceWidget = menu;
menu.Popup += new System.EventHandler(group.OnDisplay);
// Pre-menu process two optional paremeters.
if (temporaryColleagueParam != null)
temporaryColleagueParam.Mediator.AddColleague(temporaryColleagueParam.TemporaryColleague);
bool resume = false;
if (sequencer != null)
resume = sequencer.PauseMessageQueueing();
// NB: This is *always* modal, as it doesn't return until it closes.
menu.Show(null, location);
// Post-menu process two optional paremeters.s
if (temporaryColleagueParam != null)
{
IxCoreColleague colleague = temporaryColleagueParam.TemporaryColleague;
temporaryColleagueParam.Mediator.RemoveColleague(colleague);
if (temporaryColleagueParam.ShouldDispose && colleague is IDisposable)
(colleague as IDisposable).Dispose();
}
if (sequencer != null && resume)
sequencer.ResumeMessageQueueing();
}
}