Package org.gwtopenmaps.openlayers.client.layer

Source Code of org.gwtopenmaps.openlayers.client.layer.Vector

/**
*
* Copyright 2014 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.layer;

import org.gwtopenmaps.openlayers.client.Bounds;
import org.gwtopenmaps.openlayers.client.OpenLayersObjectWrapper;
import org.gwtopenmaps.openlayers.client.Style;
import org.gwtopenmaps.openlayers.client.StyleMap;
import org.gwtopenmaps.openlayers.client.event.EventHandler;
import org.gwtopenmaps.openlayers.client.event.EventObject;
import org.gwtopenmaps.openlayers.client.event.EventType;
import org.gwtopenmaps.openlayers.client.event.VectorAfterFeatureModifiedListener;
import org.gwtopenmaps.openlayers.client.event.VectorAfterFeatureModifiedListener.AfterFeatureModifiedEvent;
import org.gwtopenmaps.openlayers.client.event.VectorBeforeFeatureAddedListener;
import org.gwtopenmaps.openlayers.client.event.VectorBeforeFeatureAddedListener.BeforeFeatureAddedEvent;
import org.gwtopenmaps.openlayers.client.event.VectorBeforeFeatureModifiedListener;
import org.gwtopenmaps.openlayers.client.event.VectorBeforeFeatureModifiedListener.BeforeFeatureModifiedEvent;
import org.gwtopenmaps.openlayers.client.event.VectorFeatureAddedListener;
import org.gwtopenmaps.openlayers.client.event.VectorFeatureAddedListener.FeatureAddedEvent;
import org.gwtopenmaps.openlayers.client.event.VectorFeatureModifiedListener;
import org.gwtopenmaps.openlayers.client.event.VectorFeatureModifiedListener.FeatureModifiedEvent;
import org.gwtopenmaps.openlayers.client.event.VectorFeatureRemovedListener;
import org.gwtopenmaps.openlayers.client.event.VectorFeatureRemovedListener.FeatureRemovedEvent;
import org.gwtopenmaps.openlayers.client.event.VectorFeatureSelectedListener;
import org.gwtopenmaps.openlayers.client.event.VectorFeatureSelectedListener.FeatureSelectedEvent;
import org.gwtopenmaps.openlayers.client.event.VectorFeatureUnselectedListener;
import org.gwtopenmaps.openlayers.client.event.VectorFeatureUnselectedListener.FeatureUnselectedEvent;
import org.gwtopenmaps.openlayers.client.event.VectorVertexModifiedListener;
import org.gwtopenmaps.openlayers.client.event.VectorVertexModifiedListener.VertexModifiedEvent;
import org.gwtopenmaps.openlayers.client.feature.VectorFeature;
import org.gwtopenmaps.openlayers.client.filter.Filter;
import org.gwtopenmaps.openlayers.client.protocol.Protocol;
import org.gwtopenmaps.openlayers.client.util.JObjectArray;
import org.gwtopenmaps.openlayers.client.util.JSObject;

/**
*
* @author Erdem Gunay
* @author Edwin Commandeur - Atlis EJS
* @author Curtis Jensen
* @author Lukas Johansson
*/
public class Vector extends Layer {

    private VectorOptions vectorOptions;

    protected Vector(JSObject vector) {
        super(vector);
    }

    public Vector(String name) {
        this(VectorImpl.create(name));
    }

    public Vector(String name, VectorOptions options) {
        this(VectorImpl.create(name, options.getJSObject()));
        this.vectorOptions = options;
    }

    /**
     * Get the VectorOptions.
     *
     * @return The VectorOptions.
     */
    public VectorOptions getVectorOptions() {
        return this.vectorOptions;
    }

    public void addFeatures(VectorFeature[] features) {
        JObjectArray a = new JObjectArray(features);
        VectorImpl.addFeatures(getJSObject(), a.getJSObject());

        /*
         * Solution without relay (see VectorImpl): for(int i = 0, max =
         * features.length; i < max; i++){ addFeature(features[i]); }
         */
    }

    public void addFeature(VectorFeature f) {
        VectorImpl.addFeature(getJSObject(), f.getJSObject());
    }

    @Override
    public boolean redraw() {
        return VectorImpl.redraw(this.getJSObject());
    }

    public void drawFeature(VectorFeature vector) {
        VectorImpl.drawFeature(this.getJSObject(), vector.getJSObject());
    }

    public void drawFeature(VectorFeature vector, Style style) {
        VectorImpl.drawFeature(this.getJSObject(), vector.getJSObject(),
                style.getJSObject());
    }

    public void eraseFeatures() {
        VectorImpl.eraseFeatures(this.getJSObject());
    }

    public void removeFeature(VectorFeature feature) {
        VectorImpl.removeFeature(getJSObject(), feature.getJSObject());
    }

    public void removeFeatures(VectorFeature[] features) {
        JSObject[] o = new JSObject[features.length];
        for (int i = 0; i < features.length; i++) {
            o[i] = features[i].getJSObject();
        }

        VectorImpl.removeFeature(getJSObject(),
                new JObjectArray(o).getJSObject());
    }

    public int getNumberOfFeatures() {
        return VectorImpl.getNumberOfFeatures(getJSObject());
    }

    public int getNumberOfSelectedFeatures() {
        return VectorImpl.getNumberOfSelectedFeatures(getJSObject());
    }

    public OpenLayersObjectWrapper getProtocol() {
        return Protocol.narrowToOpenLayersObjectWrapper(
                getJSObject().getProperty(
                        "protocol"));
    }

    public void setStyle(Style style) {
        VectorImpl.setStyle(getJSObject(), style.getJSObject());
    }

    public Style getStyle() {
        return Style.narrowToOpenLayersStyle(VectorImpl.getStyle(getJSObject()));
    }

    public void setStyleMap(StyleMap styleMap) {
        VectorImpl.setStyleMap(getJSObject(), styleMap.getJSObject());
    }

    public StyleMap getStyleMap() {
        return StyleMap.narrowToOpenLayersStyleMap(VectorImpl.getStyleMap(
                getJSObject()));
    }

    /**
     * @return Array of VectorFeature objects or null if layer does not contain
     * any features
     */
    public VectorFeature[] getFeatures() {
        int nr = getNumberOfFeatures();
        if (nr < 1) {
            return null;
        } else {
            VectorFeature[] vfs = new VectorFeature[nr];
            for (int i = 0; i < nr; i++) {
                VectorFeature vf = VectorFeature.narrowToVectorFeature(
                        VectorImpl.getFeature(
                                getJSObject(), i));
                vfs[i] = vf;
            }

            return vfs;
        }
    }

    /**
     * Destroy all features in the vector layer
     */
    public void destroyFeatures() {
        VectorImpl.destroyFeatures(getJSObject());
    }

    public VectorFeature getFeatureById(String id) {
        return VectorFeature.narrowToVectorFeature(VectorImpl.getFeatureById(
                getJSObject(), id));
    }

    /**
     * Gets an array of all selected features.
     *
     * @return Array of VectorFeature objects or null if layer does not contain
     * any features
     */
    public VectorFeature[] getSelectedFeatures() {
        int nr = getNumberOfSelectedFeatures();
        if (nr < 1) {
            return null;
        } else {
            VectorFeature[] vfs = new VectorFeature[nr];
            for (int i = 0; i < nr; i++) {
                VectorFeature vf = VectorFeature.narrowToVectorFeature(
                        VectorImpl.getSelectedFeature(
                                getJSObject(), i));
                vfs[i] = vf;
            }

            return vfs;
        }
    }

    public void addVectorFeatureModifiedListener(
            final VectorFeatureModifiedListener listener) {
        eventListeners.addListener(this, listener,
                EventType.VECTOR_FEATURE_MODIFIED,
                new EventHandler() {

                    @Override
                    public void onHandle(EventObject eventObject) {
                        FeatureModifiedEvent e = new FeatureModifiedEvent(
                                eventObject);
                        listener.onFeatureModified(e);
                    }

                });
    }

    public void addVectorFeatureAddedListener(
            final VectorFeatureAddedListener listener) {
        eventListeners.addListener(this, listener,
                EventType.VECTOR_FEATURE_ADDED,
                new EventHandler() {

                    @Override
                    public void onHandle(EventObject eventObject) {
                        FeatureAddedEvent e = new FeatureAddedEvent(eventObject);
                        listener.onFeatureAdded(e);
                    }

                });
    }

    public void addVectorFeatureRemovedListener(
            final VectorFeatureRemovedListener listener) {
        eventListeners.addListener(this, listener,
                EventType.VECTOR_FEATURE_REMOVED,
                new EventHandler() {

                    @Override
                    public void onHandle(EventObject eventObject) {
                        FeatureRemovedEvent e = new FeatureRemovedEvent(
                                eventObject);
                        listener.onFeatureRemoved(e);
                    }

                });
    }

    public void addVectorFeatureSelectedListener(
            final VectorFeatureSelectedListener listener) {
        eventListeners.addListener(this, listener,
                EventType.VECTOR_FEATURE_SELECTED,
                new EventHandler() {

                    @Override
                    public void onHandle(EventObject eventObject) {
                        FeatureSelectedEvent e = new FeatureSelectedEvent(
                                eventObject);
                        listener.onFeatureSelected(e);
                    }

                });
    }

    public void addVectorFeatureUnselectedListener(
            final VectorFeatureUnselectedListener listener) {
        eventListeners.addListener(this, listener,
                EventType.VECTOR_FEATURE_UNSELECTED,
                new EventHandler() {

                    @Override
                    public void onHandle(EventObject eventObject) {
                        FeatureUnselectedEvent e = new FeatureUnselectedEvent(
                                eventObject);
                        listener.onFeatureUnselected(e);
                    }

                });
    }

    public void addVectorBeforeFeatureAddedListener(
            final VectorBeforeFeatureAddedListener listener) {
        eventListeners.addListener(this, listener,
                EventType.VECTOR_BEFORE_FEATURE_ADDED,
                new EventHandler() {

                    @Override
                    public void onHandle(EventObject eventObject) {
                        BeforeFeatureAddedEvent e = new BeforeFeatureAddedEvent(
                                eventObject);
                        listener.onBeforeFeatureAdded(e);
                    }

                });
    }

    /**
     * Add Listener for AfterModifiedEvent
     *
     * @param listener
     */
    public void addVectorAfterFeatureModifiedListener(
            final VectorAfterFeatureModifiedListener listener) {
        eventListeners.addListener(this, listener,
                EventType.VECTOR_AFTER_FEATURE_MODIFIED,
                new EventHandler() {

                    @Override
                    public void onHandle(EventObject eventObject) {
                        // TODO Auto-generated method stub
                        AfterFeatureModifiedEvent e = new AfterFeatureModifiedEvent(
                                eventObject);
                        listener.onAfterFeatureModified(e);
                    }

                });
    }

    /**
     * Add Listener for BeforeModifiedEvent
     *
     * @param listener
     */
    public void addVectorBeforeFeatureModifiedListener(
            final VectorBeforeFeatureModifiedListener listener) {
        eventListeners.addListener(this, listener,
                EventType.VECTOR_BEFORE_FEATURE_MODIFIED,
                new EventHandler() {

                    @Override
                    public void onHandle(EventObject eventObject) {
                        // TODO Auto-generated method stub
                        BeforeFeatureModifiedEvent e = new BeforeFeatureModifiedEvent(
                                eventObject);
                        listener.onBeforeFeatureModified(e);
                    }

                });
    }

    /**
     * Add Listener for VertexModifiedEvent
     *
     * @param listener
     */
    public void addVectorVertexModifiedListener(
            final VectorVertexModifiedListener listener) {
        eventListeners.addListener(this, listener,
                EventType.VECTOR_FEATURE_VERTEX_MODIFIED,
                new EventHandler() {

                    @Override
                    public void onHandle(EventObject eventObject) {
                        // TODO Auto-generated method stub
                        VertexModifiedEvent e = new VertexModifiedEvent(
                                eventObject);
                        listener.onVertexModifiedEvent(e);
                    }

                });
    }

    /**
     * Calculates the max extent which includes all of the features of this
     * vetor layer.
     *
     * @return The bounds of the max extend calculated
     */
    public Bounds getDataExtent() {
        return Bounds.narrowToBounds(VectorImpl.getDataExtentImp(getJSObject()));
    }

    /**
     * Set a filter, or unset the filter if passed filter is null.
     *
     * @param filter The filter to set
     */
    public void setFilter(final Filter filter) {
        if (filter != null) {
            getJSObject().setProperty("filter", filter.getJSObject());
        } else {
            getJSObject().unsetProperty("filter");
        }
    }

    /**
     * This causes text and geometry to be rendered in the same container. Can
     * be used to fix weird overlapping of texts.
     *
     * @see
     * http://osgeo-org.1560.n6.nabble.com/Problems-with-labels-td4991177.html
     */
    public void setTextRootRendererToVectorRootRenderer() {
        getJSObject().getProperty("renderer").setProperty("textRoot",
                getJSObject().getProperty("renderer").getProperty("vectorRoot"));
    }

    public VectorFeature getFeatureByFid(String featureFID) {
        return VectorFeature.narrowToVectorFeature(VectorImpl.getFeatureByFid(
                getJSObject(), featureFID));
    }

    public void removeAllFeatures() {
        VectorImpl.removeAllFeatures(getJSObject());
    }

    @Override
    protected <L extends Layer> LayerCreator<L> getLayerCreator() {
        return new LayerCreator<L>() {

            public L createLayer(JSObject jsObject) {
                return (L) new Vector(jsObject);
            }
        };
    }

}
TOP

Related Classes of org.gwtopenmaps.openlayers.client.layer.Vector

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.