Class JavaScriptSupportImpl

    • Constructor Detail

      • JavaScriptSupportImpl

        public JavaScriptSupportImpl​(DocumentLinker linker,
                                     JavaScriptStackSource javascriptStackSource,
                                     JavaScriptStackPathConstructor stackPathConstructor,
                                     IdAllocator idAllocator,
                                     boolean partialMode,
                                     BooleanHook suppressCoreStylesheetsHook)
        Parameters:
        linker - responsible for assembling all the information gathered by JavaScriptSupport and attaching it to the Document (for a full page render) or to the JSON response (in a partial render)
        javascriptStackSource - source of information about JavaScriptStacks, used when handling the import of libraries and stacks (often, to handle transitive dependencies)
        stackPathConstructor - encapsulates the knowledge of how to represent a stack (which may be converted from a series of JavaScript libraries into a single virtual JavaScript library)
        idAllocator - used when allocating unique ids (it is usually pre-initialized in an Ajax request to ensure that newly allocated ids do not conflict with previous renders and partial updates)
        partialMode - if true, then the JSS configures itself for a partial page render (part of an Ajax request) which automatically assumes the "core" library has been added (to the original page render)
        suppressCoreStylesheetsHook - a hook that enables ignoring CSS files on the core stack
    • Method Detail

      • commit

        public void commit()
      • addInitializerCall

        public void addInitializerCall​(InitializationPriority priority,
                                       java.lang.String functionName,
                                       JSONObject parameter)
        Description copied from interface: JavaScriptSupport
        Adds a call to a client-side function inside the Tapestry.Initializer namespace. Calls to this method are aggregated into a call to the Tapestry.init() function. Initialization occurs at the specified priority.
        Specified by:
        addInitializerCall in interface JavaScriptSupport
        Parameters:
        priority - priority to use when adding the script
        functionName - name of client-side function (within Tapestry.Initializer namespace) to execute
        parameter - object to pass to the client-side function
      • addInitializerCall

        public void addInitializerCall​(java.lang.String functionName,
                                       JSONArray parameter)
        Description copied from interface: JavaScriptSupport
        Adds a call to a client-side function inside the Tapestry.Initializer namespace. Calls to this method are aggregated into a call to the Tapestry.init() function. Initialization occurs at InitializationPriority.NORMAL priority.
        Specified by:
        addInitializerCall in interface JavaScriptSupport
        Parameters:
        functionName - name of client-side function (within Tapestry.Initializer namespace) to execute
        parameter - array of parameters to pass to the client-side function
      • addInitializerCall

        public void addInitializerCall​(InitializationPriority priority,
                                       java.lang.String functionName,
                                       JSONArray parameter)
        Description copied from interface: JavaScriptSupport
        Adds a call to a client-side function inside the Tapestry.Initializer namespace. Calls to this method are aggregated into a call to the Tapestry.init() function. Initialization occurs at InitializationPriority.NORMAL priority.
        Specified by:
        addInitializerCall in interface JavaScriptSupport
        functionName - name of client-side function (within Tapestry.Initializer namespace) to execute
        parameter - array of parameters to pass to the client-side function
      • addInitializerCall

        public void addInitializerCall​(java.lang.String functionName,
                                       JSONObject parameter)
        Description copied from interface: JavaScriptSupport
        Adds a call to a client-side function inside the Tapestry.Initializer namespace. Calls to this method are aggregated into a call to the Tapestry.init() function. Initialization occurs at InitializationPriority.NORMAL priority.
        Specified by:
        addInitializerCall in interface JavaScriptSupport
        Parameters:
        functionName - name of client-side function (within Tapestry.Initializer namespace) to execute
        parameter - object to pass to the client-side function
      • addInitializerCall

        public void addInitializerCall​(InitializationPriority priority,
                                       java.lang.String functionName,
                                       java.lang.String parameter)
        Description copied from interface: JavaScriptSupport
        Adds a call to a client-side function inside the Tapestry.Initializer namespace. Calls to this method are aggregated into a call to the Tapestry.init() function. Initialization occurs at the specified priority.
        Specified by:
        addInitializerCall in interface JavaScriptSupport
        Parameters:
        priority - priority to use when adding the script
        functionName - name of client-side function (within Tapestry.Initializer namespace) to execute
        parameter - string to pass to function (typically, a client id)
      • addInitializerCall

        public void addInitializerCall​(java.lang.String functionName,
                                       java.lang.String parameter)
        Description copied from interface: JavaScriptSupport
        Adds a call to a client-side function inside the Tapestry.Initializer namespace. Calls to this method are aggregated into a call to the Tapestry.init() function. Initialization occurs at InitializationPriority.NORMAL priority.
        Specified by:
        addInitializerCall in interface JavaScriptSupport
        Parameters:
        functionName - name of client-side function (within Tapestry.Initializer namespace) to execute
        parameter - string to pass to function (typically, a client id)
      • addScript

        public void addScript​(InitializationPriority priority,
                              java.lang.String format,
                              java.lang.Object... arguments)
        Description copied from interface: JavaScriptSupport
        Adds initialization script at the specified priority.
        Specified by:
        addScript in interface JavaScriptSupport
        Parameters:
        priority - priority to use when adding the script
        format - format string (as per String.format(String, Object...)
        arguments - arguments referenced by format specifiers
      • addScript

        public void addScript​(java.lang.String format,
                              java.lang.Object... arguments)
        Description copied from interface: JavaScriptSupport
        Adds initialization script at InitializationPriority.NORMAL priority.
        Specified by:
        addScript in interface JavaScriptSupport
        Parameters:
        format - format string (as per String.format(String, Object...)
        arguments - arguments referenced by format specifiers
      • allocateClientId

        public java.lang.String allocateClientId​(java.lang.String id)
        Description copied from interface: JavaScriptSupport
        Allocates a unique id based on the component's id. In some cases, the return value will not precisely match the input value (an underscore and a unique index value may be appended).
        Specified by:
        allocateClientId in interface JavaScriptSupport
        Parameters:
        id - the component id from which a unique id will be generated
        Returns:
        a unique id for this rendering of the page
        See Also:
        IdAllocator
      • importJavaScriptLibrary

        public JavaScriptSupport importJavaScriptLibrary​(Asset asset)
        Description copied from interface: JavaScriptSupport
        Imports a JavaScript library as part of the rendered page. Libraries are added in the order they are first imported; duplicate imports are ignored. Libraries are added to the page serially (whereas modules may be loaded in parallel), and all libraries are added before any modules are loaded. Because of this, it is preferrable to organize your JavaScript into modules, rather than libraries.
        Specified by:
        importJavaScriptLibrary in interface JavaScriptSupport
        Returns:
        this JavaScriptSupport, for further configuration
        See Also:
        Import
      • importStylesheet

        public JavaScriptSupport importStylesheet​(StylesheetLink stylesheetLink)
        Description copied from interface: JavaScriptSupport
        Imports a Cascading Style Sheet file as part of the rendered page. Stylesheets are added in the order they are first imported; duplicate imports are ignored. Starting in 5.4, importing a stylesheet imports the core stack as well (with its stylesheets); this ensures that the imported stylesheet(s) can override rules from Tapestry's default stylesheets.
        Specified by:
        importStylesheet in interface JavaScriptSupport
        Parameters:
        stylesheetLink - encapsulates the link URL plus any additional options
        Returns:
        this JavaScriptSupport, for further configuration
      • autofocus

        public JavaScriptSupport autofocus​(FieldFocusPriority priority,
                                           java.lang.String fieldId)
        Description copied from interface: JavaScriptSupport
        Invoked to set focus on a rendered field. Takes into account priority, meaning that a field with errors will take precedence over a merely required field, and over a field that is optional. The value FieldFocusPriority.OVERRIDE can be used to force a particular field to receive focus.
        Specified by:
        autofocus in interface JavaScriptSupport
        Parameters:
        priority - focus is set only if the provided priority is greater than the current priority
        fieldId - id of client-side element to take focus
      • require

        public Initialization require​(java.lang.String moduleName)
        Description copied from interface: JavaScriptSupport
        Requires a JavaScript module by name. On the client, this will require() the module and (optionally) de-reference a function exported by the module (or, treat the module as exporting a single implicit function). The function will be invoked. Use the returned Initialization to specify the function name to invoke, and the parameters to pass to the function. In some cases, a module exports no functions, but performs some initialization (typically, adding document-level event handlers), in which case a call to require() is sufficient. In cases where the module, or a function within the module, are invoked with no parameters, the calls will be collapsed into a single invocation. If the module is part of a JavaScript stack, then the stack will be imported; this is important when JavaScript aggregation is enabled, but also ensures that libraries in the stack are loaded before the module (for cases where the module has dependencies on libraries not wrapped as AMD modules).
        Specified by:
        require in interface JavaScriptSupport
        Parameters:
        moduleName - the name of the module to require
        Returns:
        Initialization instance, used to configure function name, arguments, etc.