import java.awt.*; 
import java.awt.event.*;
 
public class OpticalFiber1 extends Frame implements AdjustmentListener, ActionListener, ItemListener, MouseListener, Runnable, WindowListener{
private static final Color bgcolor = new Color(230,230,230);
    //About about;
    Instructions instructions;
    Panel instrFrame;
TitlePanel titlepanel;
ObliqueCanvas o_canvas;
ObliqueCanvasB o_canvasB;
ObliqueGraphCanvas og_canvas; // Magnitude of reflection and transmission coefficients
ObliqueGraphCanvasB og_canvasB; // Amplitude of reflection and transmision coefficients
ObliqueGraphCanvasC og_canvasC; // Power reflection and transmission coefficients (Reflectivity / Transmissivity)
ObliqueGraphCanvasD og_canvasD; // Standing Wave Pattern
Draw2DCanvasB draw2DB; // Draw 2D animations
Palette palette; // palette for 2D 
ObliqueOutputPanel outputpanel;
ObliqueOutputPanelB outputpanelB;
ObliqueInputPanel  inputpanel;
ObliqueControlPanel o_control;
ObliqueControlPanel2 o_control2;
ObliqueBoundaryControlPanel o_control3;
Oblique_State state;
TotalReflectionControlPanel trcp;
TotalReflectionControlPanel2 trcp2;
public Panel poutB;

private StartStopClock ssc;
private Thread tron;
private boolean isTronRunning;
private int SleepTime;

public void init(){
    setBackground(bgcolor);
    setLayout(null);
    titlepanel = new TitlePanel("Module 8.2","Multimode Step-Index","Optical Fiber");
    //add(titlepanel);
    //about = new About();
    instructions = new Instructions();
    state = new Oblique_State();
    o_canvas = new ObliqueCanvas(state);
    o_canvasB = new ObliqueCanvasB(state);
    og_canvas = new ObliqueGraphCanvas(state);
    og_canvasB = new ObliqueGraphCanvasB(state);
    og_canvasC = new ObliqueGraphCanvasC(state);
    og_canvasD = new ObliqueGraphCanvasD(state);
    outputpanel = new ObliqueOutputPanel(state);
    outputpanelB = new ObliqueOutputPanelB(state);
    inputpanel  = new ObliqueInputPanel(state);
    o_control = new ObliqueControlPanel();
    o_control2 = new ObliqueControlPanel2();
    o_control3 = new ObliqueBoundaryControlPanel();
    draw2DB = new Draw2DCanvasB(state);
    trcp = new TotalReflectionControlPanel();
    trcp2 = new TotalReflectionControlPanel2();
    palette = new Palette(state);
    
    instructions.setBounds(10,374,1214,315);
    instrFrame = new Panel();
    instrFrame.setBackground(Color.black);
    instrFrame.setBounds(9,373,1216,317);

    draw2DB.setBounds(9,60,606,576);
    palette.setBounds(594,61,20,172);
    palette.setVisible(false);
    draw2DB.setVisible(false);
    
    titlepanel.setBounds(9,9,300,71);
    
    o_canvas.setBounds(9,85,1216,283);
    o_canvasB.setBounds(9,60,606,576);
    og_canvas.setBounds(620,10,605,333);
    og_canvasB.setBounds(620,10,605,333);
    og_canvasC.setBounds(620,10,605,333);
    og_canvasD.setBounds(620,10,605,333);
    o_control.setBounds(315,11,299,43);
    o_control2.setBounds(9,606,225,30);
    
    trcp.setBounds(500,65,52,22);
    trcp.setVisible(false);
    
    trcp2.setBounds(30,65,52,22);
    trcp2.setVisible(false);
    
    o_control2.setVisible(false);
    outputpanelB.setVisible(true);
    
    o_control3.setBounds(390,60,225,30);
    o_control3.setVisible(false);
        
    og_canvasD.setVisible(false);
    
    outputpanel.setBounds(314,10,911,65);
    //outputpanelB.setBounds(10,374,1214,193);
    outputpanelB.setBounds(10,374,1214,315);
    inputpanel.setBounds(314,10,911,70);
    //inputpanel.setBounds(9,368,1216,101);
    
        ssc = new StartStopClock(this);
	//add(ssc);
	ssc.setBounds(615-148,600,148,36);
        //ssc.setBounds(16,424,56,190);
        ssc.setVisible(false);
        
    poutB = new Panel(); //Behind small output panel in boundary conditions
	    poutB.setBackground(Color.black);
	    //add(poutB);
	    poutB.setBounds(119,544,377,82);
            poutB.setVisible(false);
            
    Panel pcont = new Panel(); //Behind control panel
	    pcont.setBackground(Color.black);
	    //add(pcont);
	    pcont.setBounds(314,10,301,45);         
    
    Panel p0 = new Panel();
	    p0.setBackground(Color.cyan);
	    //add(p0);
	    p0.setBounds(3,3,1228,694);
	    
    Panel p00 = new Panel();
	    p00.setBackground(Color.black);
	    //add(p00);
	    p00.setBounds(0,0,1234,700);
    
            //if(state.this_year > line.magicyear || (state.this_year == line.magicyear && state.this_month > line.magicmonth)){
	    //state.LicenseExpired = true;
            //}
            //else
            //{ 	    
	    //add(about);
            add(instructions);
            add(outputpanelB);
            add(instrFrame);
            add(inputpanel);
            //add(trcp);
            //add(trcp2);
            add(titlepanel);
            //add(ssc);
            
	    //add(poutB);
            add(o_canvas);
            //add(o_control3);
            //add(o_canvasB);
            //add(o_control2);
            
            //add(palette);
            //add(draw2DB);
            //add(og_canvasD);
            //add(og_canvas);
            //add(og_canvasB);
            //add(og_canvasC);
            
	    //add(outputpanel);
	    //add(o_control);
            //add(pcont);
	    add(p0);
	    add(p00); 
            state.LicenseExpired = false;
            //}
        ssc.setStatus(0,360,2);//  Change here the third number to vary animation speed
	isTronRunning = false;
	SleepTime = 0;
	
	
    //Listeners
    instructions.bupdate.addActionListener(this);

    ssc.button1.addMouseListener(this);
    ssc.button2.addMouseListener(this);
	
    inputpanel.slider.addAdjustmentListener(this);
    inputpanel.slider2.addAdjustmentListener(this);	
    inputpanel.slider_scale.addAdjustmentListener(this);	
    
    inputpanel.b1.addActionListener(this);
    inputpanel.c1.addItemListener(this);
    inputpanel.c2.addItemListener(this);
    //inputpanel.Instructions.addActionListener(this);
    outputpanelB.Instructions.addActionListener(this);
    outputpanelB.Dispersion.addActionListener(this);
    outputpanelB.Propagation.addActionListener(this);
    
    trcp.show_hide.addActionListener(this);
    trcp.hide_show.addActionListener(this);
    trcp2.show_hide.addActionListener(this);
    trcp2.hide_show.addActionListener(this);
    
    
    o_control.c1.addItemListener(this);
    o_control.c2.addItemListener(this);
    
    o_control.menuA.addItemListener(this);
    o_control.menuB.addItemListener(this);
    
    o_control.c3.addItemListener(this);
    o_control.c4.addItemListener(this);
    o_control.c5.addItemListener(this);
    
    o_control2.c1.addItemListener(this);
    o_control2.c2.addItemListener(this);
    o_control2.c3.addItemListener(this);
    
    o_control3.c1.addItemListener(this);
    o_control3.c2.addItemListener(this);
    o_control3.c3.addItemListener(this);
    
   }

/*
   public void paint(Graphics g){
    
	Font licensefont = new Font("SanSerif",Font.BOLD,18); 	
	g.setColor(Color.white);	 	
	g.fillRect(0,0,945,765); 	
		
	if(state.LicenseExpired){
	    g.setFont(licensefont);
	
	    g.setColor(Color.red);
	    g.drawString("The software license has expired.", 50, 200);
	    g.setColor(Color.black);
	    g.drawString("Obtain updated files from www.amanogawa.com", 50, 230);
	} 
    }
*/

public void paint(Graphics g){
    
    Font licensefont = new Font("SanSerif",Font.BOLD,18); 
    Font fonto = new Font("SanSerif",Font.PLAIN,12);
    Font fontc = new Font("SanSerif",Font.BOLD,16);
    
	Graphics2D g2d = (Graphics2D)g;
        //g.setColor(Color.white);	
	//g.fillRect(0,0,1250,675);  	
		
	//if(state.LicenseExpired){
	//    g.setFont(licensefont);
	//
	//    g.setColor(Color.red);
	//    g.drawString("The software license has expired.", 50, 200);
	//    g.setColor(Color.black);
	//    g.drawString("Obtain updated files from www.amanogawa.com", 50, 230);
	//} 
        
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
        int annonuovo = 2006;
        int anno = 2006;
        
        if(anno > state.this_year){
            annonuovo = anno;
        }
        else{
            annonuovo = state.this_year;
        }
        //g.setColor(Color.red.darker());
        //g.setFont(fontc);
        //g.drawString("\u00a9",10,652);
        //g.setFont(fonto);
        //g.drawString("Amanogawa, "+annonuovo+" - All Rights Reserved",30,650);
}   

    public void mouseClicked(MouseEvent evt){mouseHandler(evt);}
    public void mouseEntered(MouseEvent evt){;}
    public void mouseExited(MouseEvent evt){;}
    public void mousePressed(MouseEvent evt){;}
    public void mouseReleased(MouseEvent evt){;}
    
    
    private synchronized void mouseHandler(MouseEvent evt){
	if(evt.getSource()==ssc.button1){
            if(tron == null){
		start();
	    }
	    else {
		//tron.resume();
	    }
            ssc.IsStop = false;
            ssc.repaint();
	    isTronRunning = true;
	    //polarcanvas.reset();
	    //state.reset(); 
	    //ssc.reset();
	}
	if(evt.getSource()==ssc.button2){
	    isTronRunning = false;
            ssc.IsStop = true;
            ssc.repaint();
	}
    }
    
    public void start(){
	if(tron == null){
	    tron = new Thread(this);
	    tron.start();
	}
    }
	
    public void stop(){
	if(tron != null){
	    //tron.stop();
	    tron = null;
	}
    }
	
    public void run(){
	while(true){
	    try{
		   Thread.sleep(SleepTime);
	    }
	catch(InterruptedException e){e.printStackTrace();}   
	    if(isTronRunning){
		state.increment();
		
		ssc.increment();
		state.ignition();
                draw2DB.repaint();
	    }
	}
    }
	
    public void pause(boolean tmp){
	 if(tmp){
		isTronRunning = false;
		//tron.suspend();
	 }
	 else {
		isTronRunning = true;
		//tron.resume();
	 }
    }
   
    public void adjustmentValueChanged(AdjustmentEvent evt){
        
        o_canvas.repaint();
        o_canvasB.repaint();
	og_canvas.setRefPoint(state.theta1*1800/Math.PI);
	og_canvas.repaint();
        og_canvasB.setRefPoint(state.theta1*1800/Math.PI);
	og_canvasB.repaint();
        og_canvasC.setRefPoint(state.theta1*1800/Math.PI);
	og_canvasC.repaint();
        outputpanel.pwocA.repaint();
        outputpanel.pwocB.repaint();
        outputpanel.pwocB2.repaint();
        outputpanel.pwocC.repaint();
        outputpanel.pwocC2.repaint();
        outputpanelB.pwocD.repaint();
        outputpanelB.pwocE.repaint();
        outputpanelB.pwocF.repaint();
        
        state.ignition();
        og_canvasD.plot(state.x_swp,state.xarrayTot_M);
        og_canvasD.repaint();
    }
    
    public void actionPerformed(ActionEvent evt){
        if(evt.getSource()==outputpanelB.Instructions){
                instructions.setVisible(true);
                //instrFrame.setVisible(false);
                outputpanelB.setVisible(false);
        }
        
        if(evt.getSource()==outputpanelB.Dispersion){
                outputpanelB.Dispersion.setVisible(false);
                outputpanelB.Propagation.setVisible(true);
                outputpanelB.pwocD.setVisible(false);
                outputpanelB.pwocE.setVisible(true);
                outputpanelB.pwocF.setVisible(true);
                outputpanelB.pwocD.repaint();
                outputpanelB.pwocE.repaint();
                outputpanelB.pwocF.repaint();
                
                outputpanelB.sliderT.setVisible(true);
                outputpanelB.pT.setVisible(true); 
                outputpanelB.Tlabel.setVisible(true);
        }
        if(evt.getSource()==outputpanelB.Propagation){
                outputpanelB.Dispersion.setVisible(true);
                outputpanelB.Propagation.setVisible(false);
                outputpanelB.pwocD.setVisible(true);
                outputpanelB.pwocE.setVisible(false);
                outputpanelB.pwocF.setVisible(false);
                outputpanelB.pwocD.repaint();
                outputpanelB.pwocE.repaint();
                outputpanelB.pwocF.repaint();
                
                outputpanelB.sliderT.setVisible(false);
                outputpanelB.pT.setVisible(false);
                outputpanelB.Tlabel.setVisible(false);
        }
        
        if(evt.getSource()==instructions.bupdate){
                //about.setVisible(false);
                instructions.setVisible(false);
                //instrFrame.setVisible(false);
                outputpanelB.setVisible(true);
                
                if(state.ShowWhich == 1){
                    o_control.menuA.select(" Vector Diagrams");
                    
                    instructions.setVisible(false);
                    //instrFrame.setVisible(false);
                    outputpanelB.setVisible(true);
                    state.ShowWhich = 1;
		    o_canvas.setVisible(true);
                    o_canvasB.setVisible(false);
                    draw2DB.setVisible(false);
                    palette.setVisible(false);
                    o_control2.setVisible(false);
                    o_control3.setVisible(false);
                    state.Plot2D = false;
                    
                    poutB.setVisible(false);
                    ssc.setVisible(false);
                    
                    if(state.theta1_deg > state.totalR_angle){
                        trcp.setVisible(true);
                        trcp2.setVisible(true);
                    }
                    else{
                        trcp.setVisible(false);
                        trcp2.setVisible(false);
                    }
                }
                else if(state.ShowWhich == 2){
                    o_control.menuA.select(" Transverse Field");
                    
                    state.ShowWhich = 2;
                    instructions.setVisible(false);
                    //instrFrame.setVisible(false);
                    outputpanelB.setVisible(true);
                    o_canvas.setVisible(false);
                    o_canvasB.setVisible(false);
                    draw2DB.setVisible(true);
                    palette.setVisible(true);
                    o_control2.setVisible(true);
                    o_control3.setVisible(false);
                    state.Plot2D = true;
                    state.ignition();
                    draw2DB.repaint();
                    poutB.setVisible(false);
                    ssc.setVisible(true);
                    trcp.setVisible(false);
                    trcp2.setVisible(false);
                }
                else if(state.ShowWhich == 3){
                    o_control.menuA.select(" Boundary Conditions");
                    
                    state.ShowWhich = 3;
                    o_canvas.setVisible(false);
                    o_canvasB.setVisible(true);
                    draw2DB.setVisible(false);
                    palette.setVisible(false);
                    o_control2.setVisible(false);
                    o_control3.setVisible(true);
                    state.Plot2D = false;
                    poutB.setVisible(true);
                    ssc.setVisible(false);
                    trcp.setVisible(false);
                    trcp2.setVisible(false);
                    instructions.setVisible(false);
                    //instrFrame.setVisible(false);
                    outputpanelB.setVisible(true);
                }
                
        }
        
        if(evt.getSource() == trcp.show_hide){
            o_canvas.ShowTR = true;
            o_canvas.repaint();
            trcp.show_hide.setVisible(false);
            trcp.hide_show.setVisible(true);
        }
        if(evt.getSource() == trcp.hide_show){
            o_canvas.ShowTR = false;
            o_canvas.repaint();
            trcp.show_hide.setVisible(true);
            trcp.hide_show.setVisible(false);
        }
        
        if(evt.getSource() == trcp2.show_hide){
            o_canvas.ShowREF = true;
            o_canvas.repaint();
            trcp2.show_hide.setVisible(false);
            trcp2.hide_show.setVisible(true);
        }
        if(evt.getSource() == trcp2.hide_show){
            o_canvas.ShowREF = false;
            o_canvas.repaint();
            trcp2.show_hide.setVisible(true);
            trcp2.hide_show.setVisible(false);
        }
        
	if(evt.getSource() == inputpanel.b1){
	  state.ignition();
          o_canvas.repaint();
          o_canvasB.repaint();
	  outputpanel.pwocA.repaint();
	  outputpanel.pwocB.repaint();
          outputpanel.pwocB2.repaint();
          outputpanel.pwocC.repaint();
          outputpanel.pwocC2.repaint();
          outputpanelB.pwocD.repaint();
          outputpanelB.pwocE.repaint();
          outputpanelB.pwocF.repaint();
          outputpanelB.repaint();
          
          inputpanel.repaint();
          //inputpanel.panelcanvas.repaint();
          
          if(state.theta1_deg > state.totalR_angle){
                trcp.setVisible(true);
                trcp2.setVisible(true);
          }
          else{
                trcp.setVisible(false);
                trcp2.setVisible(false);
          }
          
          if(inputpanel.c1.getState()){
              inputpanel.text1.setVisible(true);
              inputpanel.text2.setVisible(true);
              inputpanel.text3.setVisible(true);
              
              inputpanel.text1b.setVisible(false);
              inputpanel.text2b.setVisible(false);
              inputpanel.text3b.setVisible(false);
              
              
          }
          
          if(inputpanel.c2.getState()){
              inputpanel.text1b.setVisible(true);
              inputpanel.text2b.setVisible(true);
              inputpanel.text3b.setVisible(true);
              
              inputpanel.text1.setVisible(false);
              inputpanel.text2.setVisible(false);
              inputpanel.text3.setVisible(false);
              
              
          }
          
	  if(o_control.c1.getState()){
                state.plotE = true;
                state.scan_coefficients();
		og_canvas.setNoRange(false);
		og_canvas.plot(state.x_deg,state.refCM_array);
		og_canvas.setRefPoint(state.theta1*1800/Math.PI);
                og_canvasB.setNoRange(false);
		og_canvasB.plot(state.x_deg,state.refCR_array,state.refCI_array);
		og_canvasB.setRefPoint(state.theta1*1800/Math.PI);
                og_canvasC.setYRangeMax(1.0);
                og_canvasC.setYRangeMin(0.0);
                og_canvasC.plot(state.x_deg,state.ref_array);
		og_canvasC.setRefPoint(state.theta1*1800/Math.PI);
                
                og_canvasD.plot(state.x_swp,state.xarrayTot_M);
          }
	    else{
		state.plotE = false;
                state.scan_coefficients();
                og_canvas.setNoRange(false);
		og_canvas.plot(state.x_deg,state.transCM_array);
		og_canvas.setRefPoint(state.theta1*1800/Math.PI);
                og_canvasB.setNoRange(false);
		og_canvasB.plot(state.x_deg,state.transCR_array,state.transCI_array);
		og_canvasB.setRefPoint(state.theta1*1800/Math.PI);
                og_canvasC.setYRangeMax(1.0);
                og_canvasC.setYRangeMin(0.0);
                og_canvasC.plot(state.x_deg,state.trans_array);
		og_canvasC.setRefPoint(state.theta1*1800/Math.PI);
                
                og_canvasD.plot(state.x_swp,state.xarrayTot_M);
	    }

          og_canvas.repaint();
          og_canvasB.repaint();
          og_canvasC.repaint();
          og_canvasD.repaint();
	}
    }
    
    public void itemStateChanged(ItemEvent evt){
        
            ItemSelectable ie = evt.getItemSelectable();
	    
            if(evt.getSource()== o_control.menuA){
		if(ie.getSelectedObjects()[0]==" Vector Diagrams"){
                    instructions.setVisible(false);
                    //instrFrame.setVisible(false);
                    outputpanelB.setVisible(true);
                    state.ShowWhich = 1;
		    o_canvas.setVisible(true);
                    o_canvasB.setVisible(false);
                    draw2DB.setVisible(false);
                    palette.setVisible(false);
                    o_control2.setVisible(false);
                    o_control3.setVisible(false);
                    state.Plot2D = false;
                    poutB.setVisible(false);
                    ssc.setVisible(false);
                    
                    if(state.theta1_deg > state.totalR_angle){
                        trcp.setVisible(true);
                        trcp2.setVisible(true);
                    }
                    else{
                        trcp.setVisible(false);
                        trcp2.setVisible(false);
                    }
		}
		
                //else if(ie.getSelectedObjects()[0]==" \u22a5 Field Amplitude"){
                else if(ie.getSelectedObjects()[0]==" Transverse Field"){
		    state.ShowWhich = 2;
                    instructions.setVisible(false);
                    //instrFrame.setVisible(false);
                    outputpanelB.setVisible(true);
                    o_canvas.setVisible(false);
                    o_canvasB.setVisible(false);
                    draw2DB.setVisible(true);
                    palette.setVisible(true);
                    o_control2.setVisible(true);
                    o_control3.setVisible(false);
                    state.Plot2D = true;
                    state.ignition();
                    draw2DB.repaint();
                    poutB.setVisible(false);
                    ssc.setVisible(true);
                    trcp.setVisible(false);
                    trcp2.setVisible(false);
		}
                
                else if(ie.getSelectedObjects()[0]==" Boundary Conditions"){
		    state.ShowWhich = 3;
                    o_canvas.setVisible(false);
                    o_canvasB.setVisible(true);
                    draw2DB.setVisible(false);
                    palette.setVisible(false);
                    o_control2.setVisible(false);
                    o_control3.setVisible(true);
                    state.Plot2D = false;
                    outputpanelB.setVisible(true);
                    poutB.setVisible(true);
                    ssc.setVisible(false);
                    trcp.setVisible(false);
                    trcp2.setVisible(false);
                    instructions.setVisible(false);
                    //instrFrame.setVisible(false);
                    
		}
                
                else if(ie.getSelectedObjects()[0]==" Instructions"){
		    //about.setVisible(true);
                    instructions.setVisible(true);
                    instrFrame.setVisible(true);
                    outputpanelB.setVisible(false);
                    
                    o_canvas.setVisible(false);
                    o_canvasB.setVisible(false);
                    draw2DB.setVisible(false);
                    palette.setVisible(false);
                    o_control2.setVisible(false);
                    o_control3.setVisible(false);
                    state.Plot2D = false;
                    trcp.setVisible(false);
                    trcp2.setVisible(false);
                    poutB.setVisible(false);
                    ssc.setVisible(false);
		}
	    }
            
            //ItemSelectable ie = evt.getItemSelectable();
            if(evt.getSource()== o_control.menuB){
		if(ie.getSelectedObjects()[0]=="  Reflection"){
                    
                    og_canvas.setTitle("Magnetic Field - Reflection Coefficient Magnitude", Color.blue);
                    og_canvas.setYLabel("| \u0393 ( H ) |");
                    og_canvas.setNoRange(false);
                    og_canvas.plot(state.x_deg,state.refCM_array);
                    og_canvas.setRefPoint(state.theta1*1800/Math.PI);

                    og_canvasB.setTitle("Magnetic Field - Reflection Coefficient", Color.blue);
                    og_canvasB.setYLabel("\u0393 ( H )");
                    og_canvasB.setNoRange(false);
                    og_canvasB.plot(state.x_deg,state.refCR_array,state.refCI_array);
                    og_canvasB.setRefPoint(state.theta1*1800/Math.PI);

                    og_canvasC.setTitle("Reflectivity", Color.black);
                    og_canvasC.setYLabel(" R ");
                    og_canvasC.setYRangeMax(1.0);
                    og_canvasC.setYRangeMin(0.0);
                    og_canvasC.plot(state.x_deg,state.ref_array);
                    og_canvasC.setRefPoint(state.theta1*1800/Math.PI);

                    og_canvas.repaint();
                    og_canvasB.repaint();
                    og_canvasC.repaint();

                    og_canvasD.plot(state.x_swp,state.xarrayTot_M);
                    og_canvasD.repaint();
		}
		if(ie.getSelectedObjects()[0]==" Transmission"){
                    
                    og_canvas.setTitle("Electric Field - Transmission Coefficient Magnitude", Color.magenta.darker());
                    og_canvas.setYLabel("| \u03c4 ( E ) |");
                    og_canvas.setNoRange(false);
                    og_canvas.plot(state.x_deg,state.transCM_array);
                    og_canvas.setRefPoint(state.theta1*1800/Math.PI);

                    og_canvasB.setTitle("Electric Field - Transmission Coefficient", Color.magenta.darker());
                    og_canvasB.setYLabel("\u03c4 ( E )");
                    og_canvasB.setNoRange(false);
                    og_canvasB.plot(state.x_deg,state.transCR_array,state.transCI_array);
                    og_canvasB.setRefPoint(state.theta1*1800/Math.PI);

                    og_canvasC.setTitle("Transmissivity", Color.black);
                    og_canvasC.setYLabel(" T ");
                    og_canvasC.setYRangeMax(1.0);
                    og_canvasC.setYRangeMin(0.0);
                    og_canvasC.plot(state.x_deg,state.trans_array);
                    og_canvasC.setRefPoint(state.theta1*1800/Math.PI);
                    og_canvas.repaint();
                    og_canvasB.repaint();
                    og_canvasC.repaint();

                    og_canvasD.plot(state.x_swp,state.xarrayTot_M);
                    og_canvasD.repaint();
		}
                
                if(ie.getSelectedObjects()[0]==" \u22a5 Standing Wave"){
		    og_canvasD.setVisible(true);
            
                    //hide input controls for other plots
                    
                    inputpanel.labpa.setVisible(false);
                    inputpanel.labpb.setVisible(false);
                    inputpanel.labpc.setVisible(false);
                    inputpanel.labpd.setVisible(false);
                    
                    if(state.isPolarizationParallel){
                        state.ignition();
                        og_canvasD.setLabels("Magnetic Field - Standing Wave Pattern (Normal to Interface)","| H | / Ho","z-coordinate");
                        og_canvasD.plot(state.x_swp,state.xarrayTot_M);
                        og_canvasD.setTitle("", Color.blue);
                    }
                    else{
                        state.ignition();
                        og_canvasD.setLabels("Electric Field - Standing Wave Pattern (Normal to Interface)","| E | / Eo","z-coordinate");
                        og_canvasD.plot(state.x_swp,state.xarrayTot_M);
                        og_canvasD.setTitle("", Color.magenta.darker());
                    }
                    og_canvasD.repaint();
		}
                
	    }
    
        //----------------------------------------------------------------------
	
        //----------------------------------------------------------------------
        
        //----------------------------------------------------------------------
        
        //----------------------------------------------------------------------
        
        //----------------------------------------------------------------------
        
        //----------------------------------------------------------------------
	
        //----------------------------------------------------------------------
        
        //----------------------------------------------------------------------
        
        //----------------------------------------------------------------------
        
        //----------------------------------------------------------------------
            
        if(evt.getSource() == inputpanel.c1){
              inputpanel.text1.setVisible(true);
              inputpanel.text2.setVisible(true);
              inputpanel.text3.setVisible(true);
              
              inputpanel.text1b.setVisible(false);
              inputpanel.text2b.setVisible(false);
              inputpanel.text3b.setVisible(false);
              
              state.Show_index = false;
              outputpanel.repaint();
              
              o_canvas.repaint();
              o_canvasB.repaint();
              outputpanel.pwocA.repaint();
              outputpanel.pwocB.repaint();
              outputpanel.pwocB2.repaint();
              outputpanel.pwocC.repaint();
              outputpanel.pwocC2.repaint();
              outputpanelB.pwocD.repaint();
              outputpanelB.pwocE.repaint();
              outputpanelB.pwocF.repaint();
              outputpanelB.repaint();
        }
        if(evt.getSource() == inputpanel.c2){
              inputpanel.text1b.setVisible(true);
              inputpanel.text2b.setVisible(true);
              inputpanel.text3b.setVisible(true);
              
              inputpanel.text1.setVisible(false);
              inputpanel.text2.setVisible(false);
              inputpanel.text3.setVisible(false);
              
              state.Show_index = true;
              outputpanel.repaint();
              o_canvas.repaint();
              o_canvasB.repaint();
              outputpanel.pwocA.repaint();
              outputpanel.pwocB.repaint();
              outputpanel.pwocB2.repaint();
              outputpanel.pwocC.repaint();
              outputpanel.pwocC2.repaint();
              outputpanelB.pwocD.repaint();
              outputpanelB.pwocE.repaint();
              outputpanelB.pwocF.repaint();
              outputpanelB.repaint();
        }     
            
        if(evt.getSource() == o_control2.c1){//Incident
            state.Incident = true;
            state.Reflected = false;
            state.Total = false;
            state.ignition();
            draw2DB.repaint();
        }
        if(evt.getSource() == o_control2.c2){//Reflected
            state.Incident = false;
            state.Reflected = true;
            state.Total = false;
            state.ignition();
            draw2DB.repaint();
        }
        if(evt.getSource() == o_control2.c3){//Total
            state.Incident = false;
            state.Reflected = false;
            state.Total = true;
            state.ignition();
            draw2DB.repaint();
        }
            
        
        //----------------------------------------------------------------------
        if(evt.getSource() == o_control.c3){//Vectors
            o_canvas.setVisible(true);
            o_canvas.setVisible(false);
            draw2DB.setVisible(false);
            palette.setVisible(false);
            o_control2.setVisible(false);
            state.Plot2D = false;
            
            ssc.setVisible(false);
        }
        if(evt.getSource() == o_control.c4){//Fields Distribution
            o_canvas.setVisible(false);
            o_canvas.setVisible(false);
            draw2DB.setVisible(true);
            palette.setVisible(true);
            o_control2.setVisible(true);
            state.Plot2D = true;
            state.ignition();
            draw2DB.repaint();
            
            ssc.setVisible(true);
        }
        if(evt.getSource() == o_control.c5){//Standing Wave
            og_canvasD.setVisible(true);
            
            //hide input controls for other plots
            inputpanel.labpa.setVisible(false);
            inputpanel.labpb.setVisible(false);
            inputpanel.labpc.setVisible(false);
            inputpanel.labpd.setVisible(false);
            
            state.IsScalePlot = true;
            
            if(state.isPolarizationParallel){
                state.ignition();
                og_canvasD.setLabels("Magnetic Field - Standing Wave Pattern (Normal to Interface)","| H | / Ho","z-coordinate");
                og_canvasD.plot(state.x_swp,state.xarrayTot_M);
                og_canvasD.setTitle("", Color.blue);
            }
            else{
                state.ignition();
                og_canvasD.setLabels("Electric Field - Standing Wave Pattern (Normal to Interface)","| E | / Eo","z-coordinate");
                og_canvasD.plot(state.x_swp,state.xarrayTot_M);
                og_canvasD.setTitle("", Color.magenta.darker());
            }
            og_canvasD.repaint();
        }
        //----------------------------------------------------------------------
	if(evt.getSource() == o_control.c1){//Reflection Coefficient
            
            //show input controls for plots
            state.IsScalePlot = false;
            inputpanel.labpa.setVisible(true);
            inputpanel.labpb.setVisible(true);
            inputpanel.labpc.setVisible(true);
            inputpanel.labpd.setVisible(true);
            
            }
            
            og_canvasD.setVisible(false);
            
                og_canvas.repaint();
                og_canvasB.repaint();
                og_canvasC.repaint();
                
                og_canvasD.plot(state.x_swp,state.xarrayTot_M);
                og_canvasD.repaint();
	}
	//----------------------------------------------------------------------
        
        //-------------------------------------------------Choose display of BC
        
        
    }

 
