void AWSMetricsEditorSystemComponent::OnMenuBindingHook()

in Gems/AWSMetrics/Code/Source/AWSMetricsEditorSystemComponent.cpp [72:157]


    void AWSMetricsEditorSystemComponent::OnMenuBindingHook()
    {
        constexpr const char* AWSMetrics[] =
        {
             "Metrics Gem" ,
             "aws_metrics_gem" ,
             ":/Notifications/download.svg",
             ""
        };

        AWSCore::AWSCoreEditorRequestBus::Broadcast(&AWSCore::AWSCoreEditorRequests::CreateSubMenu, AWSCore::AWSMenuIdentifier, AWSMetrics, 200);

        const auto& submenuIdentifier = AWSMetrics[1];

        static constexpr const char* AWSMetricsGemOverview[] =
        {
             "Metrics Gem overview" ,
             "aws_metrics_gem_overview" ,
             ":/Notifications/link.svg",
             "https://o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/"
        };

        AWSCore::AWSCoreEditorRequestBus::Broadcast(&AWSCore::AWSCoreEditorRequests::AddExternalLinkAction, submenuIdentifier, AWSMetricsGemOverview, 0);

        static constexpr const char* AWSMetricsSetupGem[] =
        {
             "Setup Metrics Gem" ,
             "aws_setup_metrics_gem" ,
             ":/Notifications/link.svg",
             "https://o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/setup/"
        };

        AWSCore::AWSCoreEditorRequestBus::Broadcast(&AWSCore::AWSCoreEditorRequests::AddExternalLinkAction, submenuIdentifier, AWSMetricsSetupGem, 0);

        static constexpr const char* AWSMetricsScripting[] =
        {
             "Scripting Reference" ,
             "aws_metrics_scripting_reference" ,
             ":/Notifications/link.svg",
             "https://o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/scripting/"
        };

        AWSCore::AWSCoreEditorRequestBus::Broadcast(&AWSCore::AWSCoreEditorRequests::AddExternalLinkAction, submenuIdentifier, AWSMetricsScripting, 0);

        static constexpr const char* AWSMetricsAPIReference[] =
        {
             "API Reference" ,
             "aws_metrics_api_reference" ,
             ":/Notifications/link.svg",
             "https://o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/cpp-api/"
        };

        AWSCore::AWSCoreEditorRequestBus::Broadcast(&AWSCore::AWSCoreEditorRequests::AddExternalLinkAction, submenuIdentifier, AWSMetricsAPIReference, 0);

        static constexpr const char* AWSMetricsAdvancedTopics[] =
        {
             "Advanced Topics" ,
             "aws_metrics_advanced_topics" ,
             ":/Notifications/link.svg",
             "https://o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/advanced-topics/"
        };

        AWSCore::AWSCoreEditorRequestBus::Broadcast(&AWSCore::AWSCoreEditorRequests::AddExternalLinkAction, submenuIdentifier, AWSMetricsAdvancedTopics, 0);

        constexpr const char metricsSettingsIdentifier[] = "aws_metrics_settings";

        auto configFilePath = AZ::IO::FixedMaxPath(AZ::Utils::GetGemPath("AWSMetrics")) / AZ::SettingsRegistryInterface::RegistryFolder;

        auto actionManagerInterface = AZ::Interface<AzToolsFramework::ActionManagerInterface>::Get();
        AZ_Assert(actionManagerInterface, "AWSMetricsEditorSystemComponent - could not get ActionManagerInterface");

        AzToolsFramework::ActionProperties actionProperties;
        actionProperties.m_name = "Metrics Settings";
        auto outcome = actionManagerInterface->RegisterAction(AWSCore::ActionContext, metricsSettingsIdentifier, actionProperties,
            [configFilePath = AZ::IO::Path(configFilePath.String())]()
            {
                QDesktopServices::openUrl(QUrl::fromLocalFile(configFilePath.c_str()));
            });
        AZ_Assert(outcome.IsSuccess(), "Failed to register action %s", metricsSettingsIdentifier);

        auto menuManagerInterface = AZ::Interface<AzToolsFramework::MenuManagerInterface>::Get();
        AZ_Assert(menuManagerInterface, "AWSCoreEditorSystemComponent - could not get MenuManagerInterface");

        menuManagerInterface->AddActionToMenu(submenuIdentifier, metricsSettingsIdentifier, 0);

    }