diff --git a/src/tse/lr5/TrianglesWindow.java b/src/tse/lr5/TrianglesWindow.java index c728713..131885f 100644 --- a/src/tse/lr5/TrianglesWindow.java +++ b/src/tse/lr5/TrianglesWindow.java @@ -1,7 +1,11 @@ package tse.lr5; +import java.awt.Color; +import java.awt.Point; import java.io.File; +import java.io.IOException; import javax.swing.JFrame; +import javax.swing.JOptionPane; /** * @author aNNiMON @@ -20,17 +24,79 @@ public class TrianglesWindow extends JFrame { pack(); } - public void execute() throws InterruptedException { - setVisible(true); - + public void execute() { File[] csvFiles = Utils.readFiles("lr5", ".csv"); + if (csvFiles == null) { + JOptionPane.showMessageDialog(this, "CSV-файлов не обнаружено! Сворачиваемся, ребята", + "Ошибка", JOptionPane.ERROR_MESSAGE); + return; + } System.out.println("Найдено " + csvFiles.length + " файлов."); - System.out.println("3"); - Thread.sleep(1000); - System.out.println("2"); - Thread.sleep(1000); - System.out.println("1"); - Thread.sleep(1000); + + setVisible(true); + try { + System.out.println("3"); + Thread.sleep(1000); + System.out.println("2"); + Thread.sleep(1000); + System.out.println("1"); + Thread.sleep(1000); + } catch (InterruptedException ex) { } System.out.println("Понеслась!!"); + + for (File file : csvFiles) { + startReadInNewThread(file); + } } + + private void startReadInNewThread(final File file) { + new Thread(new Runnable() { + + @Override + public void run() { + readCsvFile(file); + } + }).start(); + } + + private void readCsvFile(File file) { + CsvReader csvReader = new CsvReader<>(file); + csvReader.setReaderHandler(trianglesHandler); + try { + csvReader.readCsv(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } + + private final CsvReader.ReaderHandler trianglesHandler + = new CsvReader.ReaderHandler() { + + @Override + public void onStartRead(File file) { + System.out.println("Читаем файл " + file.getName()); + } + + @Override + public TrianglePaintable createObject(String[] params) { + if (params.length != 8) throw new RuntimeException("Неверное количество параметров"); + + Color fill = Color.decode(params[0]); + Color stroke = Color.decode(params[1]); + Point p1 = Utils.readPoint(params[2], params[3]); + Point p2 = Utils.readPoint(params[4], params[5]); + Point p3 = Utils.readPoint(params[6], params[7]); + TrianglePaintable obj = new TrianglePaintable(fill, stroke, p1, p2, p3); + panel.addPaintable(obj); + try { + Thread.sleep(500); + } catch (InterruptedException ex) { } + return obj; + } + + @Override + public void onFinishRead(File file) { + System.out.println("Чтение файла " + file.getName() + " завершено!"); + } + }; }