All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.gwtopenmaps.openlayers.client.ScriptInjector Maven / Gradle / Ivy

The newest version!
/**
 *
 *   Copyright 2015 sourceforge.
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 */
package org.gwtopenmaps.openlayers.client;

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.HeadElement;
import com.google.gwt.dom.client.ScriptElement;

/**
 * Script injector that can inject script from a resource.
 * @author fks/Frank Wynants
 *
 */
public final class ScriptInjector
{
    /** Keeps track if script was allready injected. */
    private static List scriptIsInjected = new ArrayList();

    /** The head element to inject in. */
    private static HeadElement head;

    // ===============================================================
    /**
     * Private utility class constructor.
     */
    private ScriptInjector()
    {

    }

    // ===============================================================
    /**
     * Inject public resource script file as a file.
     * @param filename inject file name
     */
    public static void injectResourceScriptAsFile(String filename)
    {
        if (!scriptIsInjected.contains(filename))
        {
            ScriptElement link = Document.get().createScriptElement();
            link.setAttribute("language", "javascript");
            link.setText(filename);
            getHead().appendChild(link);

            scriptIsInjected.add(filename);
        }
    }

    // ================================================================
    /**
     * Get the head element.
     * @return The update HeadElement
     */
    private static HeadElement getHead()
    {
        if (head == null)
        {
            Element elt = Document.get().getElementsByTagName("head").getItem(0);
            assert elt != null : "The host HTML page does not have a  element"
                    + " which is required by StyleInjector";
            head = HeadElement.as(elt);
        }
        return head;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy