/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package de.cismet.cismap.commons.gui.piccolo; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.GeometryCollection; import com.vividsolutions.jts.geom.LineString; import com.vividsolutions.jts.geom.LinearRing; import com.vividsolutions.jts.geom.Point; import com.vividsolutions.jts.geom.Polygon; import java.util.ArrayList; /** * DOCUMENT ME! * * @author nh * @version $Revision$, $Date$ */ public class CoordinateContainer { //~ Static fields/initializers --------------------------------------------- public static final String POINT = "POINT"; // NOI18N public static final String LINESTRING = "LINESTRING"; // NOI18N public static final String LINEARRING = "LINEARRING"; // NOI18N public static final String POLYGON = "POLYGON"; // NOI18N public static final String MULTIPOLYGON = "MULTIPOLYGON"; // NOI18N //~ Instance fields -------------------------------------------------------- private Geometry geo; private GeometryCollection geoColl; private String type; private Coordinate[] coordArr; private float[] xp; private float[] yp; //~ Constructors ----------------------------------------------------------- /** * Creates a new CoordinateContainer object. * * @param geo DOCUMENT ME! */ public CoordinateContainer(final Geometry geo) { if (geo instanceof Point) { type = POINT; } else if (geo instanceof LineString) { type = LINESTRING; } else if (geo instanceof LinearRing) { type = LINEARRING; } else if (geo instanceof Polygon) { type = POLYGON; } this.geo = geo; } /** * Creates a new CoordinateContainer object. * * @param geoColl DOCUMENT ME! */ public CoordinateContainer(final GeometryCollection geoColl) { type = MULTIPOLYGON; this.geoColl = geoColl; } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! */ public void removeCoordinate() { } /** * DOCUMENT ME! */ public void duplicateCoordinate() { } /** * DOCUMENT ME! */ public void insertCoordinate() { } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public Coordinate[] getCoordinates() { // TODO nur f\u00FCr einfache Typen ??? return geo.getCoordinates(); } /** * DOCUMENT ME! * * @param index DOCUMENT ME! * * @return DOCUMENT ME! */ public Coordinate[] getSubCoordiantes(final int index) { // TODO soll ein bestimmtes Coordinate-Array zur\u00FCckgeben, z.B. das // 3. Polygon eines Multipolygons oder das 5. Loch eines Polygons return new Coordinate[1]; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public ArrayList<Coordinate[]> getAllCoordinates() { return new ArrayList(); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public Coordinate[] getMergedCoordinates() { // TODO falls komplexer Geometrietyp, dann koordinaten aus Coordinate-Array // in einem einzigen Array hintereinander zusammengefasst // falls einfacher Geometrietyp, dann selbes Ergebnis wie getCoordinates() return new Coordinate[1]; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public float[] getXp() { return xp; } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public float[] getYp() { return yp; } /** * DOCUMENT ME! * * @param index DOCUMENT ME! * @param newValue DOCUMENT ME! */ public void moveCoordinate(final int index, final Coordinate newValue) { // TODO zus\u00E4tzliche Methode mit 2 Indizes ?? } /** * DOCUMENT ME! */ public void syncGeometry() { // TODO vielleicht ab sofort \u00FCberfl\u00FCssig, da alles konsitent gehalten wird ?? } /** * DOCUMENT ME! * * @param coordinateArr DOCUMENT ME! * * @return DOCUMENT ME! */ private Coordinate[] transformCoordinateArr(final Coordinate[] coordinateArr) { // TODO ben\u00F6tigt Offsets !!! return new Coordinate[1]; } }