/// <summary> /// Initializes Action with specific parameters defining Name, tree structure etc. /// Subscribes to events /// </summary> /// <param name="param"></param> public override void Initialize(ActionInitializeParams param) { Debug.Assert(param is LayerActionInitializeParams, "In Measure Menu ActionInitializeParams should be of type LayerActionInitializeParams"); UiMode = ((LayerActionInitializeParams)param).Layer; SubUiMode = ((LayerActionInitializeParams)param).SubUiMode; base.Initialize(param); _uiModeService.CanEnterModeChanged += (_, ea) => { if (ea.Mode == UiMode) { //regular notification if (string.IsNullOrWhiteSpace(ea.SubUiMode)) { CanEnterMode = ea.CanEnter; } //specific notification for SubUiMode if (!string.IsNullOrWhiteSpace(ea.SubUiMode) && !string.IsNullOrWhiteSpace(SubUiMode) && ea.SubUiMode.ToUpper() == SubUiMode.ToUpper()) { CanEnterSubUiMode = ea.CanEnter; } } }; _uiModeService.ModeChanged += (___, ea) => { if (NodeType != NodeType.ContainerParentType)//doesn't have its indication status { IsActive = ea.NewMode == UiMode; } }; //Set initial state CanEnterMode = _uiModeService.CanEnterMode(UiMode, ""); if (!string.IsNullOrWhiteSpace(SubUiMode)) { CanEnterSubUiMode = _uiModeService.CanEnterMode(UiMode, SubUiMode); } }
public bool CanEnterUIMode(UiMode guiMode) { return(_uiModeModel.CanEnterMode(guiMode, null)); }