import java.io.*;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import java.awt.geom.*;
import java.awt.Graphics;
import java.awt.event.*;
import java.awt.font.*;
import java.awt.image.*;
import javax.swing.*;
import java.util.Locale;
import java.text.*;
import java.util.*;
import javax.swing.table.*;
import visad.*;
import visad.java3d.DisplayImplJ3D;
import visad.java2d.DisplayImplJ2D;
import java.rmi.RemoteException;

public class  SCO_menu1 extends JFrame implements ListSelectionListener  
{
  Container c;
  JPanel inputPanel;
  JPanel outputPanel;
  int oldindex;
  String fonksiyonismi;
  String fonksiyon;
  JList fonksiyonlistesi;
  JList fonksiyonsinirlistesi;
  JList grafiklistesi;
  JList kokbulmalistesi;
  JMenuBar menuBar;
  JMenu m1,m2,m3,m4,m5,m6;
  String fonksiyonisimleri[]={"boş kutu","Bir boyutlu fonksiyon y=f(x)",
  "İki boyutlu fonksiyon z=f(x,y)",
  "n boyutlu fonksiyon z=f(x[0],x[1],x[2],...)",
  "n boyutlu m adet fonksiyon z[0]=f(x[0],x[1],...),z[1]=f(x[0],x[1],...),.."};
  String fonksiyonsinirleri[]={"boş kutu","Fonksiyon sınırları : "};
  String grafikcizimleri[]={"boş kutu","iki boyutlu grafik çizimleri y=f(x) : ",
  "üç boyutlu grafik çizimleri z=f(x,y): "};
  String kokbulma[]={"boş kutu","İkiye bölme yöntemi"};
  double a[];
  public SCO_menu1()
  { 
	super("Sayısal Çözümleme");   
    a=new double[4];
    oldindex=100;
    a[0]=-1.0;
    a[1]=1.0;
    a[2]=-1.0;
    a[3]=1.0;
    c=getContentPane();
    inputPanel=new JPanel();
    outputPanel=new JPanel();
    outputPanel=new JPanel();
	fonksiyonlistesi=new JList(fonksiyonisimleri);
	fonksiyonsinirlistesi=new JList(fonksiyonsinirleri);
	grafiklistesi=new JList(grafikcizimleri);
    fonksiyonlistesi.setVisibleRowCount(4);
    fonksiyonsinirlistesi.setVisibleRowCount(2);
    grafiklistesi.setVisibleRowCount(3);
    fonksiyonlistesi.addListSelectionListener (this);
    fonksiyonsinirlistesi.addListSelectionListener (this);
    grafiklistesi.addListSelectionListener (this);
    
    kokbulmalistesi=new JList(kokbulma);
    kokbulmalistesi.setVisibleRowCount(4);
    kokbulmalistesi.addListSelectionListener (this);
    
    menuBar=new JMenuBar();
	setJMenuBar(menuBar);
	m1 = new JMenu("Fonksiyon tanımla");
    m1.getAccessibleContext().setAccessibleDescription("Fonksiyon tanımları bu menuden yapılır");    
    m1.add(new JScrollPane(fonksiyonlistesi));    
    menuBar.add(m1);
    
    m2 = new JMenu("Fonksiyon sınır değerleri"); 
    m2.getAccessibleContext().setAccessibleDescription("Fonksiyon sınırları bu menuden girilir");     
    m2.add(new JScrollPane(fonksiyonsinirlistesi)); 
    menuBar.add(m2);  
    
    m3 = new JMenu("Fonksiyon grafik çizimleri");
    m3.getAccessibleContext().setAccessibleDescription("Fonksiyon grafikleri çizer");    
    m3.add(new JScrollPane(grafiklistesi));    
    menuBar.add(m3); 
      
    m4 = new JMenu("fonksiyonların kökünü bulma");
    m4.getAccessibleContext().setAccessibleDescription("Fonksiyon kök değerlerini bulur");    
    m4.add(new JScrollPane(kokbulmalistesi));    
    menuBar.add(m4);
        
    c.add(inputPanel,BorderLayout.NORTH);
    c.add(outputPanel,BorderLayout.SOUTH);    
  }


public void valueChanged( ListSelectionEvent e) 
{
	
if(e.getSource()==fonksiyonlistesi)
    {   int index=fonksiyonlistesi.getSelectedIndex();
        if(index==1)
        {
	    g2 f2 = new g2("fa"," ");
	    f2.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {repaint();}
        });
        f2.pack();
        f2.setDefaultCloseOperation(f2.DISPOSE_ON_CLOSE);
        f2.setSize(new Dimension(350,400));
        f2.setVisible(true);
        }
        else if(index==2)
        {
	    g3 f3 = new g3("fb"," ");
	    f3.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {repaint();}
        });
        f3.pack();
        f3.setDefaultCloseOperation(f3.DISPOSE_ON_CLOSE);
        f3.setSize(new Dimension(350,400));
        f3.setVisible(true);
        }
        else if(index==3)
        {
	    g4 fN = new g4("fc"," ");
	    fN.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {repaint();}
        });
        fN.pack();
        fN.setDefaultCloseOperation(fN.DISPOSE_ON_CLOSE);
        fN.setSize(new Dimension(350,400));
        fN.setVisible(true);
        }
        else if(index==4 ) 
        {
	    g5 fiN = new g5("fd"," ");
	    fiN.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {repaint();}
        });
        fiN.pack();
        fiN.setDefaultCloseOperation(fiN.DISPOSE_ON_CLOSE);
        fiN.setSize(new Dimension(350,400));
        fiN.setVisible(true);
        }
    }
else if(e.getSource()==fonksiyonsinirlistesi)
    {int index=fonksiyonsinirlistesi.getSelectedIndex();
	if(index==1) {a=Text.readDoubleV("Fonksiyonun minimum ve maksimum değerlerini giriniz xmin[0] xmax[0] xmin[1] xmax[2]....");}
	}
else if(e.getSource()==grafiklistesi)
    {   int index=grafiklistesi.getSelectedIndex();
        if(index==1 )//&& index!=oldindex)
        {ce3 x1=new ce3(a[0],a[1],100,"iki boyutlu grafik");oldindex=index;}
        else if(index==2)
        {   try{
	        try{
               ce6 xy=new ce6(a[0],a[1],a[2],a[3],400);oldindex=index;
               } catch(RemoteException e1) {System.err.println("girdi hatası.");} 
               } catch(VisADException e1) {System.err.println("girdi hatası.");} 
      
	    }    
	}
else if(e.getSource()==kokbulmalistesi)
    {   int index=kokbulmalistesi.getSelectedIndex();
        if(index==1)
        {ce2 x2=new ce2(a[0],a[1],"kök bulma");}
    }    	
}

public static void main(String s[])
    {        
        SCO_menu1 f1 = new SCO_menu1();
        f1.pack();
        f1.setDefaultCloseOperation(f1.EXIT_ON_CLOSE);
        f1.setSize(new Dimension(1000,800));
        f1.setVisible(true);                
    }
}





