import java.awt.event.MouseEvent;
import java.io.File;
import java.io.PrintWriter;
import java.util.Locale;
import java.util.Scanner;
import sk.upjs.jpaz2.Turtle;
import sk.upjs.jpaz2.WinPane;
public class KlikaciaPlocha extends WinPane {
        // 0. stlpec pre hodnotu x, 1. stlpec pre hodnotu y, a posledny pre polomer
        private double[][] bodky = new double[1000][3];
        private int pocetBodiek = 0;
        private Turtle kreslic = new Turtle();
        public KlikaciaPlocha() {
                add(kreslic);
                kreslic.setVisible(false);
        }
        public void pridajBodku(double x, double y, double r) {
                bodky[pocetBodiek][0] = x;
                bodky[pocetBodiek][1] = y;
                bodky[pocetBodiek][2] = r;
                pocetBodiek++;
                kreslic.setPosition(x, y);
                kreslic.dot(r);
        }
        public void ulozKlikyDoSuboru(String cesta) {
                ulozKlikyDoSuboru(new File(cesta));
        }
        public void ulozKlikyDoSuboru(File subor) {
                PrintWriter pw = null;
                try {
                        pw = new PrintWriter(subor);
                        for (int i = 0; i < pocetBodiek; i++) {
                                double x = bodky[i][0];
                                double y = bodky[i][1];
                                double r = bodky[i][2];
                                pw.println(x + " " + y + " " + r);
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        if (pw != null)
                                pw.close();
                }
        }
        public void nacitajKlikyZoSuboru(String cesta) {
                nacitajKlikyZoSuboru(new File(cesta));
        }
        public void nacitajKlikyZoSuboru(File subor) {
                // vymazeme plochu a bodky
                clear();
                pocetBodiek = 0;
                Scanner citac = null;
                try {
                        citac = new Scanner(subor);
                        // pocet ulozenych bodiek je rovnaky ako pocet riadkov
                        // v subore, takze kym existuje dalsi neprecitany
                        // riadok v subore, tak dovtedy citame
                        while (citac.hasNextLine()) {
                                // precitame jeden riadok - v nom su ulozene informacie
                                // o jednej bodke
                                String riadok = citac.nextLine();
                                // vytvorime si novy Scanner precitaneho riadku
                                // a precitame si potrebne parametre bodky
                                // POZOR NA NASTAVENIE POTREBNEHO LOCALE - IDEME
                                // CITAC REALNE CISLA
                                // citac vytvoreny zo String-u nemusime zatvarat
                                Scanner citacRiadku = new Scanner(riadok);
                                citacRiadku.useLocale(Locale.US);
                                double x = citacRiadku.nextDouble();
                                double y = citacRiadku.nextDouble();
                                double r = citacRiadku.nextDouble();
                                pridajBodku(x, y, r);
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        if (citac != null)
                                citac.close();
                }
        }
        @Override
        protected void onMouseClicked(int x, int y, MouseEvent detail) {
                pridajBodku(x, y, 2 + Math.random() * 3);
        }
}