/// <summary> /// This method is activated when a program menu was selected. It performs the needed operations in order to /// translate the selected program menu into the matching operation /// </summary> /// <param name="contextID">active/target context (irelevant for RC)</param> /// <param name="menuEntryProgram">the selected menu \ bar menuEntryProgram object</param> /// <param name="activeForm"></param> /// <param name="ActivatedFromMDIFrame"></param> /// <returns></returns> internal static void onProgramMenuSelection(Int64 contextID, MenuEntryProgram menuEntryProgram, MgForm activeForm, bool ActivatedFromMDIFrame) { Task menuTask = getLastFocusedTask(activeForm); ClientManager.Instance.RuntimeCtx.LastClickedMenuUid = menuEntryProgram.menuUid(); RunTimeEvent programMenuEvt = new RunTimeEvent(menuEntryProgram, menuTask, ActivatedFromMDIFrame); ClientManager.Instance.EventsManager.addToTail(programMenuEvt); }
public TaskDefinitionId TaskCalledByMenu(int menuId, TaskBase mainProg) { //fixed bug#:431559, the menu need to be take from menuCtlIndex main program. ApplicationMenus applicationMenus = getApplicationMenus(mainProg); MenuEntryProgram menuEntry = applicationMenus.menuByUid(menuId) as MenuEntryProgram; TaskDefinitionId taskDefinitionId = new TaskDefinitionId(menuEntry.CtlIndex, menuEntry.ProgramIsn, 0, true); return(taskDefinitionId); }
/// <summary> /// Create an Event for the passed program menu entry /// </summary> /// <param name = "menuEntryProgram">the selected program menu entry</param> /// <param name = "currentTask">the task from which the menu was activated</param> /// <param name = "activatedFromMDIFrame"></param> internal RunTimeEvent(MenuEntryProgram menuEntryProgram, Task currentTask, bool activatedFromMDIFrame) : base(ConstInterface.EVENT_TYPE_MENU_PROGRAM) { PrgFlow = menuEntryProgram.Flow; PublicName = menuEntryProgram.PublicName; PrgDescription = menuEntryProgram.Description; CopyGlobalParams = menuEntryProgram.CopyGlobalParameters; MainProgVars = menuEntryProgram.MainProgVars; ActivatedFromMDIFrame = activatedFromMDIFrame; _task = currentTask; _menuUid = menuEntryProgram.menuUid(); _menuComp = menuEntryProgram.getParentMgMenu().CtlIdx; }
/// <summary> /// Create an open task command from a menu command /// </summary> /// <param name="command"></param> /// <returns></returns> internal LocalRunTimeCommandBase CreateMenuExecuteOperationCommand(MenuCommand command) { // Get the relevant menu entry // QCR #283731. Use MenuComp on command for the relevant Ctl. Task mainProg = MGDataCollection.Instance.GetMainProgByCtlIdx(command.MenuComp); ApplicationMenus applicationMenus = Manager.MenuManager.getApplicationMenus(mainProg); MenuEntryProgram menuEntry = applicationMenus.menuByUid(command.MenuUid) as MenuEntryProgram; TaskDefinitionId taskDefinitionId = new TaskDefinitionId(menuEntry.CtlIndex, menuEntry.ProgramIsn, 0, true); ArgumentsList argList = GetCommandArgumentList(command, menuEntry, mainProg); return(new LocalRunTimeCommandOpenTask(taskDefinitionId) { ArgList = argList, CallingTaskTag = command.TaskTag, PathParentTaskTag = command.TaskTag }); }
/// <summary> /// get the argument list from the command - either from the operation or from the menu entry /// </summary> /// <param name="command"></param> /// <param name="menuEntry"></param> /// <param name="mainProg"></param> /// <returns></returns> private ArgumentsList GetCommandArgumentList(IClientCommand command, MenuEntryProgram menuEntry, Task mainProg) { ExecOperCommand cmd = command as ExecOperCommand; ArgumentsList argList = null; if (cmd != null && cmd.Operation != null) { argList = cmd.Operation.GetArgList(); } else if (menuEntry.MainProgVars != null) { argList = new ArgumentsList(); foreach (String item in menuEntry.MainProgVars) { Argument argument = new Argument(); argument.fillDataByMainProgVars(item, mainProg); argList.Add(argument); } } return(argList); }
/// <summary> /// Handles menu selection /// </summary> /// <param name="contextID">active/target context (irelevant for RC)</param> /// <param name="menuEntry"></param> /// <param name="activeForm"></param> /// <param name="activatedFromMDIFrame"></param> private void OnMenuProgramSelection(Int64 contextID, MenuEntryProgram menuEntryProgram, GuiMgForm activeForm, bool activatedFromMdiFrame) { MenuManager.onProgramMenuSelection(contextID, menuEntryProgram, (MgForm)activeForm, activatedFromMdiFrame); }