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);
}
}