private void scintilla_ConstructContextMenu(ContextMenuStrip menuStrip, int clickedPositionInDocument)
{
EventHandler onClick = new EventHandler(ContextMenuChooseOption);
_goToSprite = null;
string clickedOnType = string.Empty;
if (!scintilla.InsideStringOrComment(false, clickedPositionInDocument))
{
float dummy;
clickedOnType = scintilla.GetFullTypeNameAtPosition(clickedPositionInDocument);
// if on nothing, or a number, ignore
if (clickedOnType.Length > 0)
{
int temp;
if (int.TryParse(clickedOnType, out temp))
{
_goToSprite = temp;
clickedOnType = string.Empty;
}
else if (!float.TryParse(clickedOnType, out dummy))
{
_goToDefinition = clickedOnType;
clickedOnType = " of " + clickedOnType;
}
}
else
{
clickedOnType = string.Empty;
}
}
menuStrip.Items.Add(new ToolStripMenuItem("Go to Definition" + clickedOnType, null, onClick, CONTEXT_MENU_GO_TO_DEFINITION));
if (clickedOnType == string.Empty)
{
menuStrip.Items[menuStrip.Items.Count - 1].Enabled = false;
}
menuStrip.Items.Add(new ToolStripMenuItem("Find All Usages" + clickedOnType, null, onClick, CONTEXT_MENU_FIND_ALL_USAGES));
if (clickedOnType == string.Empty)
{
menuStrip.Items[menuStrip.Items.Count - 1].Enabled = false;
}
menuStrip.Items.Add(new ToolStripMenuItem("Go to sprite " + (_goToSprite.HasValue ? _goToSprite.ToString() : ""), null, onClick, CONTEXT_MENU_GO_TO_SPRITE));
if (_goToSprite == null)
{
menuStrip.Items[menuStrip.Items.Count - 1].Enabled = false;
}
menuStrip.Items.Add(new ToolStripSeparator());
menuStrip.Items.Add(new ToolStripMenuItem("Toggle Breakpoint", Factory.GUIController.ImageList.Images["ToggleBreakpointMenuIcon"], onClick, CONTEXT_MENU_TOGGLE_BREAKPOINT));
}