package usda.weru.gis.gui;

import com.vividsolutions.jts.geom.Coordinate;
import java.text.DecimalFormat;
import java.text.Format;
import java.text.ParseException;
import javax.swing.text.DefaultFormatter;
import javax.swing.text.DefaultFormatterFactory;

/**
 *
 * @author Joseph A. Levin <joelevin@weru.ksu.edu>
 */
public class LatLonFormatterFactory extends DefaultFormatterFactory {

    private static final long serialVersionUID = 1L;

    /**
     *
     */
    public LatLonFormatterFactory() {
        super(new LatLonFormatter("#0.00000"));

    }

    private static class LatLonFormatter extends DefaultFormatter {

        private static final long serialVersionUID = 1L;

        private final String c_pattern;

        LatLonFormatter(String pattern) {
            c_pattern = pattern;

        }

        @Override
        public Object stringToValue(String string) throws ParseException {
            return super.stringToValue(string);
        }

        @Override
        public String valueToString(Object value) throws ParseException {
            if (value instanceof Coordinate) {
                Coordinate latlon = (Coordinate) value;
                Format numberFormat = new DecimalFormat(c_pattern);
                String lat = numberFormat.format(latlon.y);
                String lon = numberFormat.format(latlon.x);

                return lon + ", " + lat;
            } else {
                return null;
            }
        }

        @Override
        public Class<?> getValueClass() {
            return Coordinate.class;
        }

    }

}
