Package org.geomajas.gwt.client.map

Source Code of org.geomajas.gwt.client.map.MapModelSelectedFeaturesTest

/*
* This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
*
* Copyright 2008-2011 Geosparc nv, http://www.geosparc.com/, Belgium.
*
* The program is available in open source according to the GNU Affero
* General Public License. All contributions in this program are covered
* by the Geomajas Contributors License Agreement. For full licensing
* details, see LICENSE.txt in the project root.
*/

package org.geomajas.gwt.client.map;

import org.geomajas.configuration.client.ClientVectorLayerInfo;
import org.geomajas.configuration.VectorLayerInfo;
import org.geomajas.geometry.Bbox;
import org.geomajas.gwt.client.map.event.FeatureDeselectedEvent;
import org.geomajas.gwt.client.map.event.FeatureSelectedEvent;
import org.geomajas.gwt.client.map.event.FeatureSelectionHandler;
import org.geomajas.gwt.client.map.feature.Feature;
import org.geomajas.gwt.client.map.layer.VectorLayer;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

/**
* Tests for the handling of the FeatureSelectedEvent and FeatureDeselectedEvent.
*
* @author Joachim Van der Auwera
*/
public class MapModelSelectedFeaturesTest {

  private MapModel mapModel;
  private VectorLayer layer1, layer2;
  private int selectedCount, deselectedCount;
  private String lastFeatureId;

  @Before
  public void setUp() {
    mapModel = new MapModel("test");

    VectorLayerInfo serverLayerInfo1 = new VectorLayerInfo();
    ClientVectorLayerInfo layerInfo1 = new ClientVectorLayerInfo();
    layerInfo1.setLayerInfo(serverLayerInfo1);
    layerInfo1.setMaxExtent(new Bbox(0, 0, 200, 100));
    layerInfo1.setId("layer1");
    layerInfo1.setServerLayerId("layer1");
    layer1 = new VectorLayer(mapModel, layerInfo1);

    VectorLayerInfo serverLayerInfo2 = new VectorLayerInfo();
    ClientVectorLayerInfo layerInfo2 = new ClientVectorLayerInfo();
    layerInfo2.setLayerInfo(serverLayerInfo2);
    layerInfo2.setMaxExtent(new Bbox(0, 0, 250, 125));
    layerInfo2.setId("layer2");
    layerInfo2.setServerLayerId("layer2");
    layer2 = new VectorLayer(mapModel, layerInfo2);

    mapModel.getLayers().add(layer1);
    mapModel.getLayers().add(layer2);

    selectedCount = 0;
    deselectedCount = 0;
    lastFeatureId = null;
    layer1.addFeatureSelectionHandler(new FeatureSelectionHandler() {
      public void onFeatureSelected(FeatureSelectedEvent event) {
        selectedCount++;
        lastFeatureId = event.getFeature().getId();
      }

      public void onFeatureDeselected(FeatureDeselectedEvent event) {
        deselectedCount++;
        lastFeatureId = event.getFeature().getId();
      }
    });
  }

  @Test
  public void testSelectDeselectFeature() {
    org.geomajas.layer.feature.Feature dto1 = new org.geomajas.layer.feature.Feature();
    dto1.setId("feat1");
    Feature feature1 = new Feature(dto1, layer1);

    org.geomajas.layer.feature.Feature dto2 = new org.geomajas.layer.feature.Feature();
    dto2.setId("feat2");
    Feature feature2 = new Feature(dto2, layer1);

    Assert.assertFalse(feature1.isSelected());
    Assert.assertFalse(feature2.isSelected());
    Assert.assertEquals(0, selectedCount);
    Assert.assertEquals(0, deselectedCount);
    Assert.assertNull(lastFeatureId);

    layer1.selectFeature(feature1);
    Assert.assertTrue(feature1.isSelected());
    Assert.assertFalse(feature2.isSelected());
    Assert.assertEquals(1, selectedCount);
    Assert.assertEquals(0, deselectedCount);
    Assert.assertEquals("feat1", lastFeatureId);
    lastFeatureId = null;

    layer1.selectFeature(feature2);
    Assert.assertTrue(feature1.isSelected());
    Assert.assertTrue(feature2.isSelected());
    Assert.assertEquals(2, selectedCount);
    Assert.assertEquals(0, deselectedCount);
    Assert.assertEquals("feat2", lastFeatureId);

    layer1.deselectFeature(feature1);
    Assert.assertFalse(feature1.isSelected());
    Assert.assertTrue(feature2.isSelected());
    Assert.assertEquals(2, selectedCount);
    Assert.assertEquals(1, deselectedCount);
    Assert.assertEquals("feat1", lastFeatureId);
  }

  @Test
  public void testDeselectLayer() {
    org.geomajas.layer.feature.Feature dto1 = new org.geomajas.layer.feature.Feature();
    dto1.setId("feat1");
    Feature feature1 = new Feature(dto1, layer1);

    org.geomajas.layer.feature.Feature dto2 = new org.geomajas.layer.feature.Feature();
    dto2.setId("feat2");
    Feature feature2 = new Feature(dto2, layer1);

    Assert.assertFalse(feature1.isSelected());
    Assert.assertFalse(feature2.isSelected());
    Assert.assertEquals(0, selectedCount);
    Assert.assertEquals(0, deselectedCount);

    mapModel.selectLayer(layer1);
    Assert.assertFalse(feature1.isSelected());
    Assert.assertFalse(feature2.isSelected());
    Assert.assertEquals(0, selectedCount);
    Assert.assertEquals(0, deselectedCount);

    layer1.selectFeature(feature1);
    layer1.selectFeature(feature2);
    Assert.assertTrue(feature1.isSelected());
    Assert.assertTrue(feature2.isSelected());
    Assert.assertEquals(2, selectedCount);
    Assert.assertEquals(0, deselectedCount);

    mapModel.selectLayer(layer1);
    Assert.assertTrue(feature1.isSelected());
    Assert.assertTrue(feature2.isSelected());
    Assert.assertEquals(2, selectedCount);
    Assert.assertEquals(0, deselectedCount);

    mapModel.selectLayer(layer2);
    Assert.assertTrue(feature1.isSelected());
    Assert.assertTrue(feature2.isSelected());
    Assert.assertEquals(2, selectedCount);
    Assert.assertEquals(0, deselectedCount);
  }
}
TOP

Related Classes of org.geomajas.gwt.client.map.MapModelSelectedFeaturesTest

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.