/*
* The Unified Mapping Platform (JUMP) is an extensible, interactive GUI for
* visualizing and manipulating spatial features with geometry and attributes.
*
* Copyright (C) 2003 Vivid Solutions
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place - Suite 330, Boston, MA 02111-1307, USA.
*
* For more information, contact:
*
* Vivid Solutions Suite #1A 2328 Government Street Victoria BC V8T 5G5 Canada
*
* (250)385-6040 www.vividsolutions.com
*/
package com.vividsolutions.jump.workbench.ui;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.util.Assert;
import com.vividsolutions.jump.feature.Feature;
import com.vividsolutions.jump.workbench.model.Layer;
import com.vividsolutions.jump.workbench.ui.renderer.FeatureSelectionRenderer;
/**
* A collection of selected {@link Feature Features}
*/
public class FeatureSelection extends AbstractSelection {
public List items(Geometry geometry) {
ArrayList items = new ArrayList();
items.add(geometry);
return items;
}
public FeatureSelection(SelectionManager selectionManager) {
super(selectionManager);
}
public Collection indices(Geometry geometry, Collection items) {
//An enhancement to allow selection to work with datasets not stored in
//memory. In collaboration with Michael Michaud
//[michael.michaud@free.fr].
//[Jon Aquino 2004-04-27]
Assert.isTrue(items.size() == 1 || items.isEmpty());
return items.isEmpty() ? Collections.EMPTY_SET : Collections.singleton(new Integer(0));
}
public String getRendererContentID() {
return FeatureSelectionRenderer.CONTENT_ID;
}
protected boolean selectedInAncestors(Layer layer, Feature feature,
Geometry item) {
Assert.isTrue(getParent() == null);
return false;
}
protected void unselectInDescendants(Layer layer, Feature feature,
Collection items) {
Assert.isTrue(getChild() instanceof PartSelection);
Assert.isTrue(getChild().getChild() instanceof LineStringSelection);
getChild().unselectItems(layer, feature);
getChild().getChild().unselectItems(layer, feature);
}
}