//Trans_MultiGraphPanelA.java
//This is for frequency plots
import java.awt.*;

public class Trans_MultiGraphPanelAA extends Panel{
    private static final Color bgcolor = new Color(255,255,255);
    private static final Color tinta2 = new Color(236,236,221); // kaki
    private static final Color tinta = new Color(236,236,221);
    private Font titlefont;
    private Font labfont;
    private Label titlelabel, selectlabel;   
    private String titulo;
    public Choice c1;
    TransGraphCanvas tgc1, tgc2;
    TransGraphCanvas2 tgc3, tgc4;
    Trans_State state;
    
    public Trans_MultiGraphPanelAA(String titulo, Trans_State state){
	super();
	this.titulo=titulo;
	this.state = state;
        setLayout(null);
        
	setBackground(bgcolor);
	titlefont = new Font("SanSerif",Font.BOLD,state.font16);
        labfont = new Font("SanSerif",Font.PLAIN,state.font11);
        
	c1 = new Choice();
	c1.addItem(" Select a Plot");
	c1.addItem(" Standing Wave Pattern - | V | & | I |");
	c1.addItem(" Voltage Phasor");
	c1.addItem(" Current Phasor");
        
	c1.setBackground(bgcolor);
	c1.setForeground(Color.black);
	c1.setFont(labfont);
	titlelabel = new Label(titulo,Label.LEFT);
	titlelabel.setFont(titlefont);
        titlelabel.setForeground(Color.black);
	
	selectlabel = new Label("click to select plot",Label.CENTER);
	selectlabel.setFont(labfont);
	selectlabel.setBackground(bgcolor);
	selectlabel.setForeground(Color.blue);
	
	tgc1 = new TransGraphCanvas(state);
	tgc2 = new TransGraphCanvas(state);
	tgc3 = new TransGraphCanvas2(state);
	tgc4 = new TransGraphCanvas2(state);
	add(titlelabel);
	//add(selectlabel);
	add(c1);
	add(tgc1);
	add(tgc2);
	add(tgc3);
	add(tgc4);
	titlelabel.setBounds(state.s5,state.s5,state.s200,state.s20);
        selectlabel.setBounds(state.s200,state.s30,state.s100,state.s25);
	// CHANGE #1 6/18/2017 =================================================
        // MODIFY LINE BELOW
        //c1.setBounds(5,30,195,25);
        c1.setBounds(state.s5,state.s30,state.s250,state.s25);
        //======================================================================
        
	tgc1.setBounds(state.s5,state.s61,state.s795,state.s156);
	tgc2.setBounds(state.s5,state.s225,state.s795,state.s156);
	tgc3.setBounds(state.s5,state.s61,state.s795,state.s156);
	tgc4.setBounds(state.s5,state.s225,state.s795,state.s156);
	Panel pgraph1 = new Panel();
	    pgraph1.setBackground(tinta2);
	    //pgraph1.setBackground(bgcolor);
	    add(pgraph1);
	    pgraph1.setBounds(state.s5-1,state.s61-1,state.s795+2,state.s156+2);
	    
	Panel pgraph2 = new Panel();
	    pgraph2.setBackground(Color.black);
	    add(pgraph2);
	    pgraph2.setBounds(state.s5-2,state.s61-2,state.s795+4,state.s156+4);
	    
	Panel pgraph3 = new Panel();
	    pgraph3.setBackground(tinta2);
	    add(pgraph3);
	    pgraph3.setBounds(state.s5-1,state.s225-1,state.s795+2,state.s156+2);
	
	Panel pgraph4 = new Panel();
	    pgraph4.setBackground(Color.black);
	    add(pgraph4);
	    pgraph4.setBounds(state.s5-2,state.s225-2,state.s795+4,state.s156+4);
    }			
	
    
    public synchronized void plotVoltagePhasor(Trans_State state){
	state.ScanVoltage();
	String labella;
	
	labella ="";
        
        
	if (state.getYRangeMax(1)>=1.0 && state.getYRangeMax(1)<1.0E3|| state.getYRangeMax(1)==0.0){
	    tgc3.setTitle("   Re{ V(d) }  [ V ]                                  "+labella);    
	}
	else if(state.getYRangeMax(1)<1.0E6 && state.getYRangeMax(1)>=1.0E3  ){
	    tgc3.setTitle("   Re{ V(d) } [ k V ]                                "+labella); 
	   
	}
	else if(state.getYRangeMax(1)>=1.0E6  ){
	    tgc3.setTitle("   Re{ V(d) } [ M V ]                                "+labella); 
	   
	}
	else if(state.getYRangeMax(1)<1.0 && state.getYRangeMax(1)>=1.0E-3  ){
	    tgc3.setTitle("   Re{ V(d) } [ m V ]                                "+labella); 
	   
	}
	else if(state.getYRangeMax(1)<1.0E-3 && state.getYRangeMax(1)>=1.0E-6  ){
	    tgc3.setTitle("   Re{ V(d) } [ \u00b5 V ]                                "+labella); 
	    
	}
	else if(state.getYRangeMax(1)<1.0E-6 && state.getYRangeMax(1)>=1.0E-9  ){
	    tgc3.setTitle("   Re{ V(d) } [ n V ]                                "+labella); 
	    
	}
	else if(state.getYRangeMax(1)<1.0E-9 && state.getYRangeMax(1)>=1.0E-12  ){
	    tgc3.setTitle("   Re{ V(d) } [ p V ]                                "+labella); 
	    
	}
	else if(state.getYRangeMax(1)<1.0E-12 &&  state.getYRangeMax(1)>=1.0E-15){
	    tgc3.setTitle("   Re{ V(d) } [ f V ]                                "+labella); 
	   
	}
	else if(state.getYRangeMax(1)<1.0E-15){
	    tgc3.setTitle("   Re{ V(d) } [ a V ]                                "+labella); 
	   
	}
	
	tgc3.reset();
	tgc3.setDynamics(false);
	tgc3.setYRangeMax(state.getYRangeMax(1));
	tgc3.setYRangeMin(-state.getYRangeMax(1));
	tgc3.plot(state.x,state.y1, state.yV1, state.yV2);
	
	
	if (state.getYRangeMax(1)>=1.0 && state.getYRangeMax(1)<1.0E3|| state.getYRangeMax(1)==0.0){
	    tgc4.setTitle("   Im{ V(d) }  [ V ]                                   "+labella);    
	}
	else if(state.getYRangeMax(1)<1.0E6 && state.getYRangeMax(1)>=1.0E3  ){
	    tgc4.setTitle("   Im{ V(d) } [ k V ]                               "+labella);  
	}
	else if(state.getYRangeMax(1)>=1.0E6  ){
	    tgc4.setTitle("   Im{ V(d) } [ M V ]                               "+labella);  
	}
	else if(state.getYRangeMax(1)<1.0 && state.getYRangeMax(1)>=1.0E-3  ){
	    tgc4.setTitle("   Im{ V(d) } [ m V ]                               "+labella);  
	}
	else if(state.getYRangeMax(1)<1.0E-3 && state.getYRangeMax(1)>=1.0E-6  ){
	    tgc4.setTitle("   Im{ V(d) } [ \u00b5 V ]                               "+labella);  
	}
	else if(state.getYRangeMax(1)<1.0E-6 && state.getYRangeMax(1)>=1.0E-9  ){
	    tgc4.setTitle("   Im{ V(d) } [ n V ]                               "+labella);  
	}
	else if(state.getYRangeMax(1)<1.0E-9 && state.getYRangeMax(1)>=1.0E-12  ){
	    tgc4.setTitle("   Im{ V(d) } [ p V ]                               "+labella);  
	}
	else if(state.getYRangeMax(1)<1.0E-12 && state.getYRangeMax(1)>=1.0E-15){
	    tgc4.setTitle("   Im{ V(d) } [ f V ]                               "+labella);  
	}
	else if(state.getYRangeMax(1)<1.0E-15){
	    tgc4.setTitle("   Im{ V(d) } [ a V ]                               "+labella);  
	}
		
	tgc4.reset();
	tgc4.setDynamics(false);
	tgc4.setYRangeMax(state.getYRangeMax(1));
	tgc4.setYRangeMin(-state.getYRangeMax(1));
	tgc4.plot(state.x,state.y2, state.yV1, state.yV2);
    }
    
    public synchronized void plotCurrentPhasor(Trans_State state){
	state.ScanCurrent();
	String labella;
	
        labella ="";
        
	if (state.getYRangeMax(2)>=1.0 && state.getYRangeMax(2)<1.0E3|| state.getYRangeMax(2)==0.0){
	    tgc3.setTitle("   Re{ I(d) }  [ A ]                                "+labella);    
	}
	else if(state.getYRangeMax(2)<1.0E6 && state.getYRangeMax(2)>=1.0E3  ){
	    tgc3.setTitle("   Re{ I(d) } [ k A ]                              "+labella); 
	   
	}
	else if(state.getYRangeMax(2)>=1.0E6  ){
	    tgc3.setTitle("   Re{ I(d) } [ M A ]                              "+labella); 
	   
	}
	else if(state.getYRangeMax(2)<1.0 && state.getYRangeMax(2)>=1.0E-3  ){
	    tgc3.setTitle("   Re{ I(d) } [ m A ]                              "+labella); 
	   
	}
	else if(state.getYRangeMax(2)<1.0E-3 && state.getYRangeMax(2)>=1.0E-6  ){
	    tgc3.setTitle("   Re{ I(d) } [ \u00b5 A ]                              "+labella); 
	    
	}
	else if(state.getYRangeMax(2)<1.0E-6 && state.getYRangeMax(2)>=1.0E-9  ){
	    tgc3.setTitle("   Re{ I(d) } [ n A ]                              "+labella); 
	    
	}
	else if(state.getYRangeMax(2)<1.0E-9 && state.getYRangeMax(2)>=1.0E-12  ){
	    tgc3.setTitle("   Re{ I(d) } [ p A ]                              "+labella); 
	    
	}
	else if(state.getYRangeMax(2)<1.0E-12 && state.getYRangeMax(2)>=1.0E-15  ){
	    tgc3.setTitle("   Re{ I(d) } [ f A ]                              "+labella); 
	   
	}
	else if(state.getYRangeMax(2)<1.0E-15  ){
	    tgc3.setTitle("   Re{ I(d) } [ a A ]                              "+labella); 
	   
	}
	
	tgc3.reset();
	tgc3.setDynamics(false);
	tgc3.setYRangeMax(state.getYRangeMax(2));
	tgc3.setYRangeMin(-state.getYRangeMax(2));
	tgc3.plot(state.x,state.y1, state.yV1, state.yV2);
	
	
	if (state.getYRangeMax(2)>=1.0 && state.getYRangeMax(2)<1.0E3|| state.getYRangeMax(2)==0.0){
	    tgc4.setTitle("   Im{ I(d) }  [ A ]                                 "+labella);    
	}
	else if(state.getYRangeMax(2)<1.0E6 && state.getYRangeMax(2)>=1.0E3  ){
	    tgc4.setTitle("   Im{ I(d) } [ k A ]                               "+labella);  
	}
	else if(state.getYRangeMax(2)>=1.0E6  ){
	    tgc4.setTitle("   Im{ I(d) } [ M A ]                               "+labella);  
	}
	else if(state.getYRangeMax(2)<1.0 && state.getYRangeMax(2)>=1.0E-3  ){
	    tgc4.setTitle("   Im{ I(d) } [ m A ]                               "+labella);  
	}
	else if(state.getYRangeMax(2)<1.0E-3 && state.getYRangeMax(2)>=1.0E-6  ){
	    tgc4.setTitle("   Im{ I(d) } [ \u00b5 A ]                               "+labella);  
	}
	else if(state.getYRangeMax(2)<1.0E-6 && state.getYRangeMax(2)>=1.0E-9  ){
	    tgc4.setTitle("   Im{ I(d) } [ n A ]                               "+labella);  
	}
	else if(state.getYRangeMax(2)<1.0E-9 && state.getYRangeMax(2)>=1.0E-12  ){
	    tgc4.setTitle("   Im{ I(d) } [ p A ]                               "+labella);  
	}
	else if(state.getYRangeMax(2)<1.0E-12 && state.getYRangeMax(2)>=1.0E-15){
	    tgc4.setTitle("   Im{ I(d) } [ f A ]                               "+labella);  
	}
	else if(state.getYRangeMax(2)<1.0E-15){
	    tgc4.setTitle("   Im{ I(d) } [ a A ]                               "+labella);  
	}
	
	tgc4.reset();
	tgc4.setDynamics(false);
	tgc4.setYRangeMax(state.getYRangeMax(2));
	tgc4.setYRangeMin(-state.getYRangeMax(2));
	tgc4.plot(state.x,state.y2, state.yV1, state.yV2);
    }
    
    public synchronized void plotVoltageCurrent(Trans_State state){
	state.ScanVoltageCurrent();
	String labella1, labella2;
	
        labella1 ="";
        labella2 ="";
        
	//tgc1.setTitle("\u2223 V(d) \u2223   [ V ]");
	if (state.getYRangeMax(1)>=1.0 && state.getYRangeMax(1)<1.0E3 || state.getYRangeMax(1)==0.0){
	    tgc3.setTitle("   | V (d) |  [ V ]                                        "+labella1);    
	}
	else if(state.getYRangeMax(1)<1.0E6 && state.getYRangeMax(1)>=1.0E3  ){
	    tgc3.setTitle("   | V (d) | [ k V ]                                      "+labella1);  
	}
	else if(state.getYRangeMax(1)>=1.0E6  ){
	    tgc3.setTitle("   | V (d) | [ M V ]                                      "+labella1);  
	}
	
	else if(state.getYRangeMax(1)<1.0 && state.getYRangeMax(1)>=1.0E-3  ){
	    tgc3.setTitle("   | V (d) | [ m V ]                                      "+labella1);  
	}
	else if(state.getYRangeMax(1)<1.0E-3 && state.getYRangeMax(1)>=1.0E-6  ){
	    tgc3.setTitle("   | V (d) | [ \u00b5 V ]                                      "+labella1);  
	}
	else if(state.getYRangeMax(1)<1.0E-6 && state.getYRangeMax(1)>=1.0E-9  ){
	    tgc3.setTitle("   | V (d) | [ n V ]                                      "+labella1);  
	}
	else if(state.getYRangeMax(1)<1.0E-9 && state.getYRangeMax(1)>=1.0E-12  ){
	    tgc3.setTitle("   | V (d) | [ p V ]                                      "+labella1);  
	}
	else if(state.getYRangeMax(1)<1.0E-12 && state.getYRangeMax(1)>=1.0E-15){
	    tgc3.setTitle("   | V (d) | [ f V ]                                      "+labella1);  
	}
	else if(state.getYRangeMax(1)<1.0E-15){
	    tgc3.setTitle("   | V (d) | [ a V ]                                      "+labella1);  
	}
	
	tgc3.reset();
	tgc3.setDynamics(false);
	//tgc1.setIsVoltage(true);
	tgc3.setYRangeMax(state.getYRangeMax(1));
	tgc3.setYRangeMin(0.0);
	tgc3.plot(state.x,state.y1, state.yV1, state.yV2);
	
	//tgc2.setTitle("\u2223 I(d) \u2223   [ A ]");
	    //tgc2.setTitle("   | I (d) |  [ A ]                                       2 |V+|/ Zo");
	if (state.getYRangeMax(2)>=1.0 && state.getYRangeMax(2)<1.0E3 || state.getYRangeMax(2)==0.0){
	    tgc4.setTitle("   | I (d) |  [ A ]                                     "+labella2);    
	}
	else if(state.getYRangeMax(2)<1.0E6 && state.getYRangeMax(2)>=1.0E3  ){
	    tgc4.setTitle("   | I (d) | [ k A ]                                   "+labella2);  
	}
	else if(state.getYRangeMax(2)>=1.0E6  ){
	    tgc4.setTitle("   | I (d) | [ M A ]                                   "+labella2);  
	}
	else if(state.getYRangeMax(2)<1.0 && state.getYRangeMax(2)>=1.0E-3  ){
	    tgc4.setTitle("   | I (d) | [ m A ]                                   "+labella2);  
	}
	else if(state.getYRangeMax(2)<1.0E-3 && state.getYRangeMax(2)>=1.0E-6  ){
	    tgc4.setTitle("   | I (d) | [ \u00b5 A ]                                   "+labella2);  
	}
	else if(state.getYRangeMax(2)<1.0E-6 && state.getYRangeMax(2)>=1.0E-9  ){
	    tgc4.setTitle("   | I (d) | [ n A ]                                   "+labella2);  
	}
	else if(state.getYRangeMax(2)<1.0E-9 && state.getYRangeMax(2)>=1.0E-12  ){
	    tgc4.setTitle("   | I (d) | [ p A ]                                   "+labella2);  
	}
	else if(state.getYRangeMax(2)<1.0E-12 && state.getYRangeMax(2)>=1.0E-15 ){
	    tgc4.setTitle("   | I (d) | [ f A ]                                   "+labella2);  
	}
	else if(state.getYRangeMax(2)<1.0E-15 ){
	    tgc4.setTitle("   | I (d) | [ a A ]                                   "+labella2);  
	}
	
	tgc4.reset();
	tgc4.setDynamics(false);
	tgc4.setYRangeMax(state.getYRangeMax(2));
	tgc4.setYRangeMin(0.0);
	//tgc2.setIsVoltage(false);
	tgc4.plot(state.x,state.y2, state.yV1, state.yV2);
    
    }
}
