package com.vividsolutions.jump.workbench.ui.plugin;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.io.WKTWriter;
import com.vividsolutions.jump.feature.Feature;
import com.vividsolutions.jump.io.FUTURE_JTS_WKTWriter;
import com.vividsolutions.jump.io.GMLGeometryWriter;
import com.vividsolutions.jump.util.Fmt;
import com.vividsolutions.jump.util.StringUtil;
import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
import com.vividsolutions.jump.workbench.plugin.PlugInContext;
import com.vividsolutions.jump.workbench.ui.AbstractFeatureTextWriter;
public class InstallStandardFeatureTextWritersPlugIn extends AbstractPlugIn {
public void initialize(PlugInContext context) throws Exception {
context.getWorkbenchContext().getFeatureTextWriterRegistry().register(
WKT_WRITER);
context.getWorkbenchContext().getFeatureTextWriterRegistry().register(
GML_WRITER);
context.getWorkbenchContext().getFeatureTextWriterRegistry().register(
COORDINATE_WRITER);
}
private static final AbstractFeatureTextWriter COORDINATE_WRITER = new AbstractFeatureTextWriter(
false, "CL", "Coordinate List") {
public String write(Feature feature) {
StringBuffer s = new StringBuffer();
String className = StringUtil.classNameWithoutQualifiers(feature
.getGeometry().getClass().getName());
s.append(className + "\n");
Coordinate[] coordinates = feature.getGeometry().getCoordinates();
for (int i = 0; i < coordinates.length; i++) {
s.append("[" + Fmt.fmt(i, 10) + "] ");
s.append(coordinates[i].x + ", " + coordinates[i].y + "\n");
}
return s.toString().trim();
}
};
private static final AbstractFeatureTextWriter GML_WRITER = new AbstractFeatureTextWriter(
false, "GML", "Geography Markup Language") {
public String write(Feature feature) {
return writer.write(feature.getGeometry());
}
private GMLGeometryWriter writer = new GMLGeometryWriter();
};
private static final AbstractFeatureTextWriter WKT_WRITER = new AbstractFeatureTextWriter(
true, "WKT", "Well-Known Text") {
public String write(Feature feature) {
return wktWriter.write(feature.getGeometry()).trim();
}
private FUTURE_JTS_WKTWriter wktWriter = new FUTURE_JTS_WKTWriter();
};
}