Class AuthorExternalObjectInsertionHandler

    • Constructor Detail

      • AuthorExternalObjectInsertionHandler

        public AuthorExternalObjectInsertionHandler()
    • Method Detail

      • insertURLs

        public void insertURLs​(AuthorAccess authorAccess,
                               java.util.List<java.net.URL> urls,
                               int source)
                        throws AuthorOperationException
        A list of URLs need to be inserted at the caret position, probably as links.
        The source of the insertion can be a paste event or a drag and drop event.
        This call back is received if acceptURLs(AuthorAccess, List, int) returned true for the same source and urls list.
        You can use it to link to those specific files/URLs.
        Parameters:
        authorAccess - The author access
        urls - The list of URLs.
        source - The source of the URLs, one of the AuthorExternalObjectInsertionHandler constants.
        Throws:
        AuthorOperationException
      • insertURLs

        public void insertURLs​(AuthorAccess authorAccess,
                               java.util.List<java.net.URL> urls,
                               java.util.List<ReferenceType> types,
                               int source)
                        throws AuthorOperationException
        A list of URLs need to be inserted at the caret position, probably as links.
        The source of the insertion can be a paste event or a drag and drop event.
        This call back is received if acceptURLs(AuthorAccess, List, int) returned true for the same source and urls list.
        You can use it to link to those specific files/URLs.
        Parameters:
        authorAccess - The author access
        urls - The list of URLs.
        types - The type of the URL reference - if null, the type will be inferred.
        source - The source of the URLs, one of the AuthorExternalObjectInsertionHandler constants.
        Throws:
        AuthorOperationException
        Since:
        18.0
      • acceptURLs

        public boolean acceptURLs​(AuthorAccess authorAccess,
                                  java.util.List<java.net.URL> urls,
                                  int source)
        Confirm that the list of URLs is interesting to this handler.
        The source of the insertion can be a paste event or a drag and drop event. If the source is of drag and drop type and it is accepted, the caret will be moved to the drop position.
        By default accepts the URLs from external sources if the URLs are only images or binary files and all URLs from paste events and drops from the Oxygen Project and DITA Maps Manager. It calls the "acceptSource" method to check if a certain source of the operation is accepted.
        Parameters:
        authorAccess - The author access.
        urls - The list of URLs.
        source - The source of the URLs, one of the AuthorExternalObjectInsertionHandler constants.
        Returns:
        true if the provided URLs are interesting.
      • acceptSource

        public boolean acceptSource​(AuthorAccess authorAccess,
                                    int source)
        Confirm that the source of URLs is interesting to this handler.
        The source of the insertion can be a paste event or a drag and drop event. If the source is of drag and drop type and it is accepted, the caret will be moved to the drag position.
        By default accepts paste sources and drags from the Oxygen Project and DITA Maps Manager.
        Parameters:
        authorAccess - The author access.
        source - The source of the URLs, one of the AuthorExternalObjectInsertionHandler constants (that represents a paste or a drag and drop event)
        Returns:
        true if the insert URLs are interesting.
      • containOnlyImages

        protected static boolean containOnlyImages​(AuthorAccess authorAccess,
                                                   java.util.List<java.net.URL> urlList)
        Verify if the provided URLs are only images.
        Parameters:
        urlList - The list of URLs
        Returns:
        true if the URLs are only images.
      • containOnlyBinaryResources

        protected static boolean containOnlyBinaryResources​(AuthorAccess authorAccess,
                                                            java.util.List<java.net.URL> urlList)
        Verify if the provided URLs are only binary rsources.
        Parameters:
        urlList - The list of URLs
        Returns:
        true if the URLs are only binary resources.
      • insertXHTMLFragment

        public void insertXHTMLFragment​(AuthorAccess authorAccess,
                                        java.io.Reader xhtmlContentReader)
                                 throws AuthorOperationException
        Insert an XHTML fragment
        Parameters:
        authorAccess - The author access
        xhtmlContentReader - The XTHML content reader
        Throws:
        AuthorOperationException
        Since:
        12.1
      • insertImportedContent

        protected void insertImportedContent​(AuthorAccess authorAccess,
                                             java.lang.String importedContent)
                                      throws AuthorOperationException
        Insert the content imported by applying the XSLT stylesheet directly in the document. The insertion is done schema aware.
        Parameters:
        authorAccess - The author access.
        importedContent - The imported content.
        Throws:
        AuthorOperationException
      • getOnlyTextContentStylesheet

        protected javax.xml.transform.stream.StreamSource getOnlyTextContentStylesheet​(AuthorAccess authorAccess)
        Gets an XSLT stylesheet that can extract the entire text content (and only the text content) from any input XML.
        Parameters:
        authorAccess - The author access
        Returns:
        The XSLT stylesheet that keeps only the text content of input.
      • getClassStylesheetResource

        protected javax.xml.transform.stream.StreamSource getClassStylesheetResource​(java.lang.Class clazz,
                                                                                     java.lang.String resourcePath)
        Find the stylesheet resource in the class package with the given file name.
        Parameters:
        clazz - The class where to search for the stylesheet resource
        resourcePath - The resource to find.
        Returns:
        The stylesheet resource or a default stylesheet (that ignores everything) if it cannot be found.
      • getFilterContentOfOutputStylesheet

        protected javax.xml.transform.stream.StreamSource getFilterContentOfOutputStylesheet()
        Gets an XSLT stylesheet that can filter non text content from the output XML.
        Returns:
        The XSLT stylesheet that can filter non text content from the output XML.
      • simpleTransform

        public static java.lang.String simpleTransform​(AuthorAccess authorAccess,
                                                       java.lang.String xml,
                                                       java.lang.String xsl)
                                                throws javax.xml.transform.TransformerException,
                                                       java.io.IOException
        Transform the specified XML input with the specified XSLT stylesheet using Saxon HE processor.
        Parameters:
        authorAccess - helper object for creating the transformer
        xml - the input XML of the transformation
        xsl - the input XSLT of the transformation
        Returns:
        the result of the transformation
        Throws:
        javax.xml.transform.TransformerException - thrown during transformation
        java.io.IOException - thrown during writing the transform result to the output string
      • simpleTransform

        public static java.lang.String simpleTransform​(AuthorAccess authorAccess,
                                                       java.lang.String xml,
                                                       javax.xml.transform.stream.StreamSource xsl)
                                                throws javax.xml.transform.TransformerException,
                                                       java.io.IOException
        Transform the specified XML input with the specified XSLT stylesheet using Saxon HE processor.
        Parameters:
        authorAccess - helper object for creating the transformer
        xml - the input XML of the transformation
        xsl - the input XSLT of the transformation
        Returns:
        the result of the transformation
        Throws:
        javax.xml.transform.TransformerException - thrown during transformation
        java.io.IOException - thrown during writing the transform result to the output string
      • setParametersToTransform

        protected static void setParametersToTransform​(javax.xml.transform.Transformer transformer,
                                                       AuthorAccess authorAccess,
                                                       boolean copyWordImageResources)
        Set the parameters on the XSLT transform engine.
        Parameters:
        transformer - The XSLT transformer.
        authorAccess - The author access.
        copyWordImageResources - true to copy image resources from word document
      • getContextPathNamesAndUris

        protected static java.lang.String[] getContextPathNamesAndUris​(AuthorAccess authorAccess)
        Get the list of parent elements of insertion point in Author document.
        Parameters:
        authorAccess - The author access
        Returns:
        comma-separated list of parent elements of insertion point.
      • createImporterStylesheetSource

        protected javax.xml.transform.stream.StreamSource createImporterStylesheetSource​(AuthorAccess authorAccess)
        Create the StreamSource for the main XSLT stylesheet which will do the importing (transforming from the XHTML content to content valid in the current framework). The main stylesheet will be applied in a pipeline after the preprocessing stylesheets and generates the markup of the current framework (DITA, DocBook, etc).
        Parameters:
        authorAccess - The Author access API.
        Returns:
        the stylesheet which will import from XHTML to this framework. If the main stylesheet of the current framework cannot be loaded from resources a default one will be returned which keeps only the text from the input.
        Since:
        12.1
      • getImporterStylesheetFileName

        protected java.lang.String getImporterStylesheetFileName​(AuthorAccess authorAccess)
        Get the file name of the main Author paste stylesheet. It will be resolved in the context of the current class loader.
        Parameters:
        authorAccess - The author access API.
        Returns:
        the file name of the main Author paste stylesheet. It will be resolved in the context of the current class loader.
        Since:
        12.1
      • getBaseURLAtCaretPosition

        protected static java.net.URL getBaseURLAtCaretPosition​(AuthorAccess authorAccess)
        Get the base URL for the node located at caret position. Usually this is the URL of the opened editor but it can vary if nodes have xml:base defined on them.
        Parameters:
        authorAccess - The author access
        Returns:
        the base URL for the node located at caret position.
      • checkImportedXHTMLContentIsPreservedEntirely

        protected boolean checkImportedXHTMLContentIsPreservedEntirely()
        Overwrite this method if you want to check the text data is preserved on paste after applying the conversion XSL stylesheet. If the data is not preserved the content will be copied without any styling and a warning will appear in the console.
        Returns:
        false by default.