/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package armyc2.c2sd.renderer.test3;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Environment;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import armyc2.c2sd.graphics2d.Point;
import armyc2.c2sd.graphics2d.Point2D;
import armyc2.c2sd.renderer.utilities.IPointConversion;
import java.util.ArrayList;
import armyc2.c2sd.renderer.utilities.RendererSettings;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import sec.web.render.PointConverter;
import armyc2.c2sd.renderer.test3.R;
/**
*
* @author Michael Deutch
*/
public class MyView extends View {
public static String linetype = "";
public static String extents="";
public static String Rev="";
public MyView(Context context) {
super(context);
this.context = context;
// TODO Auto-generated constructor stub
}
private static ArrayList<Point> _points = new ArrayList();
private static Context context = null;
/**
* assumes utility extents have been set before call
* @param event
*/
private static void displayGeo(MotionEvent event)
{
double sizeSquare = Math.abs(utility.rightLongitude - utility.leftLongitude);
if (sizeSquare > 180) {
sizeSquare = 360 - sizeSquare;
}
double scale = 541463 * sizeSquare;
Point2D ptPixels = null;
Point2D ptGeo = null;
IPointConversion converter = null;
converter = new PointConverter(utility.leftLongitude, utility.upperLatitude, scale);
Point pt=new Point((int) event.getAxisValue(MotionEvent.AXIS_X), (int) event.getAxisValue(MotionEvent.AXIS_Y));
Point2D pt2d=new Point2D.Double(pt.x,pt.y);
ptGeo=converter.PixelsToGeo(pt2d);
int n = Log.i("onTouchEvent", "longitude = " + Double.toString(ptGeo.getX()));
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int rev = RendererSettings.getInstance().getSymbologyStandard();
if(Rev.isEmpty()==false)
{
if(Rev.equalsIgnoreCase("B"))
rev=0;
else rev=1;
}
int qty = utility.GetAutoshapeQty(linetype, rev);
if (event.getAction() == event.ACTION_DOWN) {
_points.add(new Point((int) event.getAxisValue(MotionEvent.AXIS_X), (int) event.getAxisValue(MotionEvent.AXIS_Y)));
//int n = Log.i("onTouchEvent", "longitude = " + Double.toString(ptGeo.longitude));
displayGeo(event);
if (_points.size() >= qty || _points.size() >= 4) {
invalidate();
}
}
return true;
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
if (_points==null || _points.size() < 1) {
return;
}
super.onDraw(canvas);
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.WHITE);
canvas.drawPaint(paint);
utility.set_displayPixelsWidth(canvas.getWidth());
utility.set_displayPixelsHeight(canvas.getHeight());
//utility.SetExtents(50, 51, 5, 4);
utility.SetExtents(50, 55, 10, 4);
if(extents.isEmpty()==false)
{
String ex[]=extents.split(",");
double left=Double.parseDouble(ex[0]);
double right=Double.parseDouble(ex[1]);
double top=Double.parseDouble(ex[2]);
double bottom=Double.parseDouble(ex[3]);
utility.SetExtents(left, right, top, bottom);
}
//utility.SetExtents(178, -178, 32, 28);
utility.DoubleClickGE(_points, linetype, canvas, context);
String kmlStr=utility.DoubleClickSECRenderer(_points, linetype, canvas);
String fileName="temp";
//String body="put this in file";
this.writeToFile(fileName, kmlStr);
_points.clear();
}
private void writeToFile(String fileName, String body)
{
FileOutputStream fos = null;
try {
//final File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/KML/" );
final File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
if (!dir.exists())
{
dir.mkdirs();
}
final File myFile = new File(dir, fileName + ".kml");
if (!myFile.exists())
{
myFile.createNewFile();
}
//fos = new FileOutputStream(myFile);
//fos.write(body.getBytes());
//fos.close();
WriteKMLFile(myFile,body);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void WriteKMLFile(File file,String str) {
try {
//File dir = new File("C:\\KML");
//File file = new File(dir, "temp.kml");
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file));
//header
bufferedWriter.write("<?xml version='1.0' encoding='UTF-8'?>");
bufferedWriter.newLine();
bufferedWriter.write("<kml xmlns='http://www.opengis.net/kml/2.2'>");
bufferedWriter.newLine();
bufferedWriter.write("<Document>");
bufferedWriter.newLine();
//KML string
bufferedWriter.write(str);
bufferedWriter.newLine();
//footer
bufferedWriter.write("</Document>");
bufferedWriter.newLine();
bufferedWriter.write("</kml>");
bufferedWriter.close();
bufferedWriter = null;
} catch (IOException exc) {
//ErrorLogger.LogException(_className ,"WriteFile",
//new RendererException("Failed inside WriteFile", exc));
//String s = exc.toString();
exc.printStackTrace();
}
}
}