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

org.gwtopenmaps.openlayers.client.popup.FramedCloud Maven / Gradle / Ivy

/**
 *
 *   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.popup;

import org.gwtopenmaps.openlayers.client.LonLat;
import org.gwtopenmaps.openlayers.client.OpenLayersObjectWrapper;
import org.gwtopenmaps.openlayers.client.Size;
import org.gwtopenmaps.openlayers.client.util.JSObject;


/**
 *
 * @author Edwin Commandeur - Atlis Information Systems
 * @author Marten Karlberg, Digpro AB
 */
public class FramedCloud extends Popup
{

    protected FramedCloud(JSObject element)
    {
        super(element);
    }

    /**
     * Constructor also taking a CloseListener callback as suggested by the original OpenLayers
     * JavaScript constructor. Because adding the CloseListener using the Popup.addCloseListener
     * results in adding a second closeBox on top of the original closeBox. That sollution is
     * ugly but works for the Popup class as the two buttons get the same position and click
     * events fall through to the underlaying button. But the style of FramedCloud popup is more
     * complex and the closeBoxes get different positions and the second get no z-index value
     * set which makes it hidden behind the popup surface.
     *
     * Added by Digpro.
     */
    public FramedCloud(String id, LonLat lonlat, Size size, String html,
        OpenLayersObjectWrapper anchor, boolean closeBox,
        CloseListener closeBoxCallback)
    {

        this(FramedCloudImpl.create(id,
                lonlat.getJSObject(),
                (size != null) ? size.getJSObject() : null,
                html,
                (anchor != null) ? anchor.getJSObject() : null,
                closeBox,
                (closeBoxCallback != null) ? closeBoxCallback : null));
                
        this.id = id;
    }

    /**
     *
     * Use addCloseListener to respond to popup close event. (Beware! This does not work as
     * expected. Instead pass the CloseListener in the constructor for proper binding. /Digpro)
     *
     * @param anchor - ...
     *
     * For explanation of other parameters see {@link Popup}.
     */
    public FramedCloud(String id, LonLat lonlat, Size size, String html,
        OpenLayersObjectWrapper anchor, boolean closeBox)
    {

        this(FramedCloudImpl.create(id,
                lonlat.getJSObject(),
                (size != null) ? size.getJSObject() : null,
                html,
                (anchor != null) ? anchor.getJSObject() : null,
                closeBox));

        this.id = id;
        // if size is not defined set Size to auto
        //
    }

    // TODO look into adding widgets to Popups
    /*
    public FramedCloud(
                       String id,
                       LonLat lonlat,
                       Size size,
                       Widget widget,
                       OpenLayersObjectWrapper anchor,
                       boolean closeBox) {

    this(FramedCloudImpl.create(
                        id,
                        lonlat.getJSObject(),
                        (size != null) ? size.getJSObject() : null,
                        "widget here",
                        (anchor != null) ? anchor.getJSObject(): null,
                        closeBox,
                        null));

    Element contentDiv = FramedCloudImpl.getContentDiv(this.getJSObject());
    //widget.setElement(contentDiv);
    }
     */
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy