tdf#126643: avoid unnecessary asking for JRE in script organizer dialog

Use two-pass search for the needed language node; if it fails with Java
interaction disabled, only then repeat the search with it enabled, like
in commit f3ce30ec75a4d7116b9cd4d7b21d9aaa0e237eeb.

Change-Id: Icde5dbeb552a6837af02182f7b8cbbc90765c5a5
Reviewed-on: https://gerrit.libreoffice.org/76831
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
(cherry picked from commit 1a1f4e73b7ab9e5b071aab74c8d7e27ba2b2d29c)
Reviewed-on: https://gerrit.libreoffice.org/76878
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/cui/source/dialogs/scriptdlg.cxx b/cui/source/dialogs/scriptdlg.cxx
index 11ef3a8..99ac608 100644
--- a/cui/source/dialogs/scriptdlg.cxx
+++ b/cui/source/dialogs/scriptdlg.cxx
@@ -24,6 +24,7 @@
#include <sfx2/objsh.hxx>
#include <vcl/svapp.hxx>
#include <vcl/weld.hxx>
#include <uno/current_context.hxx>

#include <strings.hrc>
#include <bitmaps.hlst>
@@ -47,6 +48,7 @@
#include <com/sun/star/script/XInvocation.hpp>
#include <com/sun/star/document/XEmbeddedScripts.hpp>

#include <comphelper/DisableInteractionHelper.hxx>
#include <comphelper/documentinfo.hxx>
#include <comphelper/processfactory.hxx>

@@ -247,14 +249,24 @@ SvxScriptOrgDialog::getLangNodeFromRootNode( Reference< browse::XBrowseNode > co

    try
    {
        Sequence < Reference< browse::XBrowseNode > > children = rootNode->getChildNodes();
        for ( sal_Int32 n = 0; n < children.getLength(); n++ )
        auto tryFind = [&] {
            const Sequence<Reference<browse::XBrowseNode>> children = rootNode->getChildNodes();
            const auto it = std::find_if(children.begin(), children.end(),
                                         [&](const Reference<browse::XBrowseNode>& child) {
                                             return child->getName() == language;
                                         });
            return (it != children.end()) ? *it : nullptr;
        };
        {
            if ( children[ n ]->getName() == language )
            {
                langNode = children[ n ];
                break;
            }
            // First try without Java interaction, to avoid warnings for non-JRE-dependent providers
            css::uno::ContextLayer layer(
                new comphelper::NoEnableJavaInteractionContext(css::uno::getCurrentContext()));
            langNode = tryFind();
        }
        if (!langNode)
        {
            // Now try with Java interaction enabled
            langNode = tryFind();
        }
    }
    catch ( Exception& )