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

org.gwtopenmaps.openlayers.client.control.DragFeatureOptions 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.control;

import org.gwtopenmaps.openlayers.client.control.DragFeature.DragFeatureListener;
import org.gwtopenmaps.openlayers.client.util.JSObject;
import org.gwtopenmaps.openlayers.client.util.JStringArray;

/**
 * Options for the DragFeature. Use this to set the listeners that will handle
 * the drag events.
 *
 * @author Rafael Ceravolo - LOGANN
 * @author Jon Britton - SpiffyMap Ltd
 */
public class DragFeatureOptions extends ControlOptions {

    /**
     * To restrict dragging to a limited set of geometry types, send a list of strings 
     * corresponding to the geometry class names (from OL docs).
     * @param geometryTypes 
     */
    public void setGeometryTypes(String[] geometryTypes) {
        JStringArray array = JStringArray.create(geometryTypes);
        getJSObject().setProperty("geometryTypes", array.getJSObject());
    }

    /**
     * If set to true, mouse dragging will continue even if the mouse cursor leaves the 
     * map viewport (from OL docs).
     * @param documentDrag 
     */
    public void setDocumentDrag(boolean documentDrag) {
        getJSObject().setProperty("documentDrag", documentDrag);
    }

    /**
     * Triggers when a feature has just started being dragged.
     * @param listener 
     */
    public void onStart(DragFeatureListener listener) {
        createAndSetCallback(listener, "onStart");
    }

    /**
     * Continually trigged while a feature is being dragged.
     * @param listener 
     */
    public void onDrag(DragFeatureListener listener) {
        createAndSetCallback(listener, "onDrag");
    }

    /**
     * Triggers when a feature completed dragged (the users releases the mouse).
     * @param listener 
     */
    public void onComplete(DragFeatureListener listener) {
        createAndSetCallback(listener, "onComplete");
    }

    /** Creates a JS callback for a event type */
    private void createAndSetCallback(DragFeatureListener listener, String name) {
        JSObject callback = DragFeatureImpl.createDragCallback(listener);
        getJSObject().setProperty(name, callback);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy