INTViewer provides a mechanism to allow users to select a coordinate reference system.
The ICoordinateSystemChooserService and ICoordinateSystemChooser interfaces must be implemented to add a CoordinateSystemChooserService. Implementations of ICoordinateSystemChooserService provide a factory method to create ICoordinateSystemChooser instances and also let the platform know how to map epsg codes to coordinate system names. Implementations of ICoordinateSystemChooser describe how a coordinate system is choosen.
public class GisCoordinateSystemChooserService implements ICoordinateSystemChooserService { @Override public ICoordinateSystemChooser createChooser(String epsgCode) { return new GisCoordinateSystemChooser(epsgCode); } @Override public String getCoordinateSystemName(String epsgCode) { String name = ... if (name == null) name = "Unknown epsgCode (" + epsgCode + "); return name; }}public class GisCoordinateSystemChooser implements ICoordinateSystemChooser { private final String epsgCode; public GisCoordinateSystemChooser(String epsgCode) { this.epsgCode = epsgCode; } @Override public void display(final ICoordinateSystemSelectionListener l) { String epsgCode = ... if (epsgCode != null) // user selected a epsgCode l.coordinateSystemSelected(epsgCode); }}public void addAliasEPSGCode(String uniqueProjectionName, String aliasEPSGCode, cgRect areaOfUse) { // ignored}public String getAliasEPSGCode(String uniqueProjectionName, cgRect areaOfUse) { // ignored}To register a coordinate system chooser service add the following to the layer.xml of the plugin that will provide the service.
<folder name="CoordinateSystemChooserService"> <file name="com-interactive-gis-plugins-GisCoordinateSystemChooserService.instance"/></folder>