import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.*;

 public class digitizer extends JApplet implements ActionListener
 {
 private JButton B[];
 private JLabel l[];
 JLabel altbar;
 private JTextField t[];
 private JTextArea ta;
 private String S[]={"girdi sayfası","grafik digitizer sayfası"};
 private Container c;
 private JPanel J[]; 
 scanP fp;
 double xmin,xmax,ymin,ymax;
 String resim,dosya;
 JTabbedPane jtp;
 
 public void init()
 {
	 xmin=0.0;
	 xmax=10.0;
	 ymin=0.0;
	 ymax=10.0;
	 resim="kalp.JPG";
	 dosya="a.txt";
 //super("verilen bir grafikteki verilerin digital değerlerini okur");
 c=getContentPane();
 c.setLayout(new BorderLayout(5,5));
 B=new JButton[2];
 l=new JLabel[8];
 t=new JTextField[6];
 altbar=new JLabel();
 ta=new JTextArea(toString());
 jtp=new JTabbedPane();
 J=new JPanel[3];
 J[0]=new JPanel();
 J[0].setLayout(new GridLayout(4,4));
 J[1]=new JPanel();
 J[2]=new JPanel(); 
 B[0]=new JButton("JFileChoser resim okuma");
 B[1]=new JButton("JFileChoser çıktı dosya");
 l[0]=new JLabel("minimum x");
 l[1]=new JLabel("minimum y");
 l[2]=new JLabel("maksimum x");
 l[3]=new JLabel("maksimum y");
 l[4]=new JLabel("grafik (girdi) dosyası");
 l[5]=new JLabel("çıktı koordinat dosyası");
 l[6]=new JLabel("grafik (girdi) dosyası");
 l[7]=new JLabel("çıktı koordinat dosyası");
 t[0]=new JTextField(""+xmin);
 t[1]=new JTextField(""+ymin);
 t[2]=new JTextField(""+xmax);
 t[3]=new JTextField(""+ymax);
 t[4]=new JTextField(resim);
 t[5]=new JTextField(dosya);
 for(int i=0;i<5;i++) t[i].addActionListener(this);
 for(int i=0;i<2;i++) B[i].addActionListener(this);
 J[0].add(l[0]);
 J[0].add(t[0]);
 J[0].add(l[1]);
 J[0].add(t[1]);
 J[0].add(l[2]);
 J[0].add(t[2]);
 J[0].add(l[3]);
 J[0].add(t[3]);
 J[0].add(l[4]);
 J[0].add(t[4]);
 J[0].add(l[5]);
 J[0].add(t[5]);
 J[0].add(l[6]);
 J[0].add(B[0]);
 J[0].add(l[7]);
 J[0].add(B[1]);
 J[1].add(J[0],BorderLayout.NORTH);
 J[1].add(ta,BorderLayout.CENTER);
 jtp.addTab(S[0],J[1]);
 fp=new scanP(resim,dosya,xmin,xmax,ymin,ymax);
 //fp.setSize(1000,600);
 //J[2].setLayout(new FlowLayout());
 J[2].add(fp,BorderLayout.CENTER);
 //J[2].add(fp.jp,BorderLayout.SOUTH);
 jtp.addTab(S[1],fp);
 c.add(jtp);
 }
 
 public String toString()
 {String s;
 s="               Turhan ÇOBAN EGE Üniversitesi, Mühendislik Fak. Makina Müh.\n";
 s+="=========================================================================================\n";
 s+="Komut yapısı : fareye ilk iki basış sırası ile minimum ve maksimum noktayı tanımlar.\n";
 s+="Bu işlemden sonra fare ile (sol düğme) basılan her nokta  verilen xmin,xmax,ymin,ymax  \n";
 s+="değerlerine göre double değerlere dönüştürülür. Ekranın arka planına istenilen bir resim \n";
 s+="yerleştirilir. Bu resimdeki verilerden yararlanılarak basılan noktaların gerçek değerlere \n";
 s+="dönüştürülmüş eşdeğerleri hesaplanır ve bizim tarafımızdan verilen bir çıktı dosyasına \n";
 s+="kaydedilir. farenin sağ düğmesine basıldığında program durur ve o ana kadar alınan veri dosyaya \n";
 s+=" kaydedilir ve ekrana yansıtılır.\n";
 s+="=========================================================================================\n";
 return s;
 }
 
 public void actionPerformed(ActionEvent e)
 {
 if(e.getSource()==t[0])
 {	 Double V0=new Double(t[0].getText());
     xmin=V0.doubleValue();
 }
 else if(e.getSource()==t[1])
 {	 Double V0=new Double(t[1].getText());
     ymin=V0.doubleValue();
 }
 else if(e.getSource()==t[2])
 {	 Double V0=new Double(t[2].getText());
     xmax=V0.doubleValue();
 }
 else if(e.getSource()==t[3])
 {	 Double V0=new Double(t[3].getText());
     ymax=V0.doubleValue();
 }
 else if(e.getSource()==t[4])
 {	 resim=t[4].getText();
    fp.setResimismi(resim);}
 else if(e.getSource()==t[5])
 {	 dosya=t[4].getText();
     fp.setDosyaismi(dosya);
 }
 else if(e.getSource()==B[0])
 {	 File file=new File("kalp.jpg");
	 JFileChooser fc=new JFileChooser();
     if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {file = fc.getSelectedFile();resim=file.getName();} 
     t[4].setText(resim);
     fp.setResimismi(resim);
 }
 else if(e.getSource()==B[1])
 {	 File file=new File("a.txt");
	 JFileChooser fc=new JFileChooser();
     if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {file = fc.getSelectedFile();dosya=file.getName();} 
     t[5].setText(dosya);
     fp.setDosyaismi(dosya);  
 }
 System.out.println("xmin = "+xmin+"xmax="+xmax+"ymin="+ymin+"ymax="+ymax);
 fp.setMinMax(xmin,xmax,ymin,ymax);
 repaint();
 }
    
 
    public static void main(String s[])
    {
        JFrame f = new JFrame("digitiser çizim programı");
        JApplet applet = new digitizer();
        applet.init();
        f.add(applet);
        f.pack();
        f.setSize(800,1000);
        f.setVisible(true);
    }    
 }

