IList<MenuCommand> IEditorComponent.GetContextMenu(string controlID)
{
List<MenuCommand> contextMenu = new List<MenuCommand>();
if (controlID == CONTROL_ID_LUA)
{
MenuCommand enabled = new MenuCommand(CONTROL_ID_ENABLE, "Enable Lua features?");
enabled.Checked = IsPluginEnabled;
contextMenu.Add(enabled);
}
else if (controlID.StartsWith(COMPILETIMEENTRY_PREFIX))
{
int index = int.Parse(controlID.Substring(COMPILETIMEENTRY_PREFIX.Length));
contextMenu.Add(new MenuCommand(controlID, "Go to Script"));
contextMenu.Add(new MenuCommand("-", "-"));
if (index > 0)
{
contextMenu.Add(new MenuCommand(CTSCRIPT_MOVEUP_PREFIX + index, "Move Up (Run Earlier)"));
}
if (index < compileTimeScripts.Count-1)
{
contextMenu.Add(new MenuCommand(CTSCRIPT_MOVEDOWN_PREFIX + index, "Move Down (Run Later)"));
}
contextMenu.Add(new MenuCommand(CTSCRIPT_REMOVE_PREFIX + index, "Remove Action"));
}
else if (controlID.StartsWith(SCRIPTS_ROOT))
{
if (controlID.EndsWith("/"))
{
contextMenu.Add(new MenuCommand(NEWSCRIPT_PREFIX + controlID, "New Lua Script"));
if (controlID == SCRIPTS_ROOT)
{
contextMenu.Add(new MenuCommand(NEWFOLDER_PREFIX + controlID, "New Folder"));
}
else
{
contextMenu.Add(new MenuCommand(NEWFOLDER_PREFIX + controlID, "New Subfolder"));
contextMenu.Add(new MenuCommand(DELETEFOLDER_PREFIX + controlID, "Delete Folder"));
contextMenu.Add(new MenuCommand(RENAMEFOLDER_PREFIX + controlID, "Rename Folder"));
}
}
else
{
LuaScriptFileInfo script = scripts[controlID];
contextMenu.Add(new MenuCommand(DELETESCRIPT_PREFIX + controlID, "Delete"));
contextMenu.Add(new MenuCommand(RENAMESCRIPT_PREFIX + controlID, "Rename"));
contextMenu.Add(new MenuCommand("-", "-"));
MenuCommand includeCommand = new MenuCommand(INCLUDESCRIPT_PREFIX + controlID, "Include in Run-Time Scripts Store?");
includeCommand.Checked = script.IncludeAtRunTime;
contextMenu.Add(includeCommand);
#if USE_EVENT_ACTIONS
contextMenu.Add(new MenuCommand("-", "-"));
contextMenu.Add(new MenuCommand(COMPILETIME_PREFIX + controlID, "Add Compile-Time Action: Run Script"));
#endif
}
}
else if (controlID.StartsWith(VISUAL_ROOT))
{
VisualLuaValue val;
if (!visualValues.TryGetValue(controlID, out val))
{
MessageBox.Show("Cannot find Visual Value " + controlID + "!");
}
else
{
val.GetContextMenu(contextMenu);
}
}
return contextMenu;
}