//NewGuideOutputPanel12.java
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;

public class NewGuideOutputPanel12 extends Panel{ // implements ItemListener{
	NewGuide_State state;
	private static final Color bgcolor = new Color(236,236,221);
	private Font labfont;
	private Font titlefont;
	Label titlelabel;
	public Choice c1;
	public TitleCanvas11 tcanvas11;

    // NEW not used ... see if works now with Cheerpj
    //public NewOutputCanvasW rwocW;
    //public NewOutputCanvasZ rwocZ;
    
	//public ScrollPane pane1, pane2;
	public Checkbox ch1, ch2;
        
	public NewGuideOutputPanel12(NewGuide_State state){
	    super();
	    setLayout(null);
	    this.state = state;
	    setBackground(bgcolor);
            
            labfont=new Font("SanSerif",Font.PLAIN,state.font12);
            titlefont=new Font("SanSerif",Font.BOLD,state.font16);	
	    state.microFlag12 = false;
	    
	    titlelabel = new Label("    Current Data",Label.LEFT);
	    //add(titlelabel);
	    titlelabel.setBounds(state.s5,state.s5,state.s95,state.s15);    
	    titlelabel.setFont(titlefont);
	    
	    //pane1 = new ScrollPane();
	    //pane1.setBounds(state.s4,state.s29,state.s200+state.s87,state.s163);
	    //add(pane1);
	    //pane2  = new ScrollPane();
	    //pane2.setBounds(state.s4,state.s29,state.s200+state.s87,state.s163);
	    //add(pane2);
	    
	    //Panel pp1 = new Panel();
	    //pp1.setBackground(Color.black);
	    //add(pp1);
	    //pp1.setBounds(state.s4,state.s29,state.s200+state.s88,state.s164);
    	    
	    //c1 = new Choice();
	    //c1.addItem("  Polar (radians) ");
	    //c1.addItem("  Polar (degrees) ");
	    //c1.addItem("  Cartesian ");
	    //add(c1);
	    //c1.setBounds(state.s132,state.s2,state.s160,state.s25);
            //c1.setFont(new Font("SanSerif",Font.PLAIN,state.font11));
	    
	    CheckboxGroup chgroup1 = new CheckboxGroup();
	    ch1 = new Checkbox("A",true,chgroup1);
	    ch2 = new Checkbox("B",false,chgroup1);
	
	    ch1.setBackground(bgcolor);
	    ch2.setBackground(bgcolor);
	
	    ch1.setFont(labfont);
	    ch2.setFont(labfont);
	
	    add(ch1);
	    add(ch2);
            
	    ch1.setBounds(state.s12,state.s5,state.s35,state.s16);
	    ch2.setBounds(state.s52,state.s5,state.s35,state.s16);
	    
	    //tcanvas11 = new TitleCanvas11(state);
	    //add(tcanvas11);
	    //tcanvas11.setBounds(0,0,state.s300,state.s25);
	    
	    //rwocW = new NewOutputCanvasW(state);
	    //pane1.add(rwocW);
	    //pane1.setBackground(Color.white);
	    //rwocW.setBounds(0,state.s50,state.s200+state.s60,(int)(state.sfactor*18000));
	    
	    //rwocZ = new NewOutputCanvasZ(state);
	    //pane2.add(rwocZ);
	    //pane2.setBackground(Color.white);
	    //rwocZ.setBounds(0,state.s50,state.s200+state.s60,(int)(state.sfactor*18000));
	    
	    //pane1.setVisible(false);
	    //pane2.setVisible(true);
	    //Listeners
	    //c1.addItemListener(this);
	    //ch1.addItemListener(this);
            //ch2.addItemListener(this);
	}
    
    /*
    public void itemStateChanged(ItemEvent evt){
	ItemSelectable ie = evt.getItemSelectable();
	    if(evt.getSource()==c1){
		if(ie.getSelectedObjects()[0]=="  Cartesian "){
		    pane1.setVisible(true);
		    pane2.setVisible(false);
		}
		else if(ie.getSelectedObjects()[0]=="  Polar (radians) "){
		    pane1.setVisible(false);
		    pane2.setVisible(true);
		    state.microFlag12 = false;
		    rwocZ.repaint();
		}
		else if(ie.getSelectedObjects()[0]=="  Polar (degrees) "){
		    pane1.setVisible(false);
		    pane2.setVisible(true);
		    state.microFlag12 = true;
		    rwocZ.repaint();
		}
	    }
    }
*/
}

class TitleCanvas11 extends Canvas{
	private Font normalfont = new Font("Serif",Font.PLAIN,12);
	private Font subfont    = new Font("Serif",Font.PLAIN,10);
	private Font normalfontB = new Font("Serif",Font.BOLD,12);
	private Font symbolfont=new Font("Serif",Font.PLAIN,16);
	private Font symbolfont2=new Font("Serif",Font.PLAIN,14);
	NewGuide_State state;
	
        public TitleCanvas11(NewGuide_State state){
	    super();
	    this.state = state;
	}
	
	public void paint(Graphics g){

	    //NEW
	    symbolfont = new Font("Serif",Font.PLAIN,state.font16);
	    
            Graphics2D g2d = (Graphics2D)g;
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
                
	    g.setFont(symbolfont);
	    g.setColor(Color.blue);   
	    
	    MaestroG.subscripter3("I ( z )","","",g,state.font14,state.s10,state.s17);
	}
}

class NewOutputCanvasW extends Canvas{
	private Font normalfont, normalfont2;
	private Font subfont,symbolfont;
	NewGuide_State state;
	
        public NewOutputCanvasW(NewGuide_State state){
	    super();
	    this.state = state;
	}
	
	public void paint(Graphics g){
            normalfont = new Font("Serif",Font.PLAIN,state.font12);
            subfont = new Font("SanSerif",Font.PLAIN,state.font10);
            normalfont2 = new Font("Serif",Font.PLAIN,state.font12);
            symbolfont = new Font("Serif",Font.PLAIN,state.font14);
	
            Graphics2D g2d = (Graphics2D)g;
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
                
	    int x, y, dx, dxx, dy, dyy;
	    double v_normalized, f_normalized;
	    double wavelength_factor = state.wavelength/state.DipoleLength_meters;
	    String stmp;
	    String lambda;
	    FontMetrics fm;
	    fm = g.getFontMetrics();
	    
            x = state.s10;
	    y = state.s12;
	    dx = state.s80;
	    dxx = state.s15;
	    dy = state.s12;
	    dyy = dy+state.s2;
	    int intfac = state.s1;
	    
	    lambda="\u03bb";
	    g.setFont(normalfont2);
	    g.getFontMetrics();
	    
	    g.setColor(Color.black);
	    
            if(state.currentMAX >=1.0){
                g.setFont(normalfont2);
                g.getFontMetrics();
	    
                for(int i=0;i<state.NsectionsLarge;i++){
		    
                    if(state.IsA)
		    {
			g.setColor(Color.blue);
			g.drawString(MaestroA.rounder(1.0e3*(state.zposLarge[i]+state.DipoleLength_meters/2),3)+" [ mm ]    "
				 +MaestroA.rounder(state.zLambda[i],5)+"   "+lambda,x,y);
		    
			g.setColor(Color.red);
			g.drawString(""+i,state.s200+state.s35,y);
			y+=dyy;
			g.setColor(Color.black);
			g.drawString(state.currentLarge[i].toString(Complex.CARTESIAN,6)+" [ A ]",x,y);
			g.setColor(Color.red);
			g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
			y+=dyy+state.s4;
		    }
		    else if(state.IsB)
		    {
			g.setColor(Color.blue);
			g.drawString(MaestroA.rounder(1.0e3*(state.zposLarge2[i]+state.DipoleLength2_meters/2),3)+" [ mm ]    "
				 +MaestroA.rounder(state.zLambda2[i],5)+"   "+lambda,x,y);
		    
			g.setColor(Color.red);
			g.drawString(""+i,state.s200+state.s35,y);
			y+=dyy;
			g.setColor(Color.black);
			g.drawString(state.currentLarge2[i].toString(Complex.CARTESIAN,6)+" [ A ]",x,y);
			g.setColor(Color.red);
			g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
			y+=dyy+state.s4;
		    }
                }
	    
            }
            else if(state.currentMAX < 1.0 && state.currentMAX >= 1.0e-3){
                g.setFont(normalfont2);
                g.getFontMetrics();
                
                for(int i=0;i<state.NsectionsLarge;i++){
                    if(state.IsA)
                    {
                        g.setColor(Color.blue);
                        g.drawString(MaestroA.rounder(1.0e3*state.zposLarge[i],3)+" [ mm ]    "
                                     +MaestroA.rounder(state.zLambda[i],5)+"   "+lambda,x,y);

                        g.setColor(Color.red);
                        g.drawString(""+i,state.s200+state.s35,y);
                        y+=dyy;
                        g.setColor(Color.black);
                        g.drawString((Complex.Multiply(state.currentLarge[i],1.0e3)).toString(Complex.CARTESIAN,6)+" [ mA ]",x,y);
                        g.setColor(Color.red);
                        g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
                        y+=dyy+state.s4;
                    }
                    else if(state.IsB){
                        g.setColor(Color.blue);
                        g.drawString(MaestroA.rounder(1.0e3*state.zposLarge2[i],3)+" [ mm ]    "
                                     +MaestroA.rounder(state.zLambda2[i],5)+"   "+lambda,x,y);

                        g.setColor(Color.red);
                        g.drawString(""+i,state.s200+state.s35,y);
                        y+=dyy;
                        g.setColor(Color.black);
                        g.drawString((Complex.Multiply(state.currentLarge2[i],1.0e3)).toString(Complex.CARTESIAN,6)+" [ mA ]",x,y);
                        g.setColor(Color.red);
                        g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
                        y+=dyy+state.s4;
                    }
                }
            }
            else if(state.currentMAX < 1.0e-3 && state.currentMAX >= 1.0e-6){
                g.setFont(normalfont2);
                g.getFontMetrics();
                
                for(int i=0;i<state.NsectionsLarge;i++){
		
                    if(state.IsA){
                        g.setColor(Color.blue);
                        g.drawString(MaestroA.rounder(1.0e3*state.zposLarge[i],3)+" [ mm ]    "
                                     +MaestroA.rounder(state.zLambda[i],5)+"   "+lambda,x,y);

                        g.setColor(Color.red);
                        g.drawString(""+i,state.s200+state.s35,y);
                        y+=dyy;
                        g.setColor(Color.black);
                        g.drawString((Complex.Multiply(state.currentLarge[i],1.0e6)).toString(Complex.CARTESIAN,6)+" [ \u00b5A ]",x,y);
                        g.setColor(Color.red);
                        g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
                        y+=dyy+state.s4;
                    }
                    if(state.IsB){
                        g.setColor(Color.blue);
                        g.drawString(MaestroA.rounder(1.0e3*state.zposLarge2[i],3)+" [ mm ]    "
                                     +MaestroA.rounder(state.zLambda2[i],5)+"   "+lambda,x,y);

                        g.setColor(Color.red);
                        g.drawString(""+i,state.s200+state.s35,y);
                        y+=dyy;
                        g.setColor(Color.black);
                        g.drawString((Complex.Multiply(state.currentLarge2[i],1.0e6)).toString(Complex.CARTESIAN,6)+" [ \u00b5A ]",x,y);
                        g.setColor(Color.red);
                        g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
                        y+=dyy+state.s4;
                    }
                }
            }
            else if(state.currentMAX < 1.0e-6 && state.currentMAX >= 1.0e-9){
                g.setFont(normalfont2);
                g.getFontMetrics();
                
                for(int i=0;i<state.NsectionsLarge;i++){
		
                    if(state.IsA){
                        g.setColor(Color.blue);
                        g.drawString(MaestroA.rounder(1.0e3*state.zposLarge[i],3)+" [ mm ]    "
                                     +MaestroA.rounder(state.zLambda[i],5)+"   "+lambda,x,y);

                        g.setColor(Color.red);
                        g.drawString(""+i,state.s200+state.s35,y);
                        y+=dyy;
                        g.setColor(Color.black);
                        g.drawString((Complex.Multiply(state.currentLarge[i],1.0e9)).toString(Complex.CARTESIAN,6)+" [ nA ]",x,y);
                        g.setColor(Color.red);
                        g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
                        y+=dyy+state.s4;
                    }
                    if(state.IsB){
                        g.setColor(Color.blue);
                        g.drawString(MaestroA.rounder(1.0e3*state.zposLarge2[i],3)+" [ mm ]    "
                                     +MaestroA.rounder(state.zLambda2[i],5)+"   "+lambda,x,y);

                        g.setColor(Color.red);
                        g.drawString(""+i,state.s200+state.s35,y);
                        y+=dyy;
                        g.setColor(Color.black);
                        g.drawString((Complex.Multiply(state.currentLarge2[i],1.0e9)).toString(Complex.CARTESIAN,6)+" [ nA ]",x,y);
                        g.setColor(Color.red);
                        g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
                        y+=dyy+state.s4;
                    }
                }
            }
            else if(state.currentMAX < 1.0e-9){
                g.setFont(normalfont2);
                g.getFontMetrics();
                
                for(int i=0;i<state.NsectionsLarge;i++){
		
                    if(state.IsA){
                        g.setColor(Color.blue);
                        g.drawString(MaestroA.rounder(1.0e3*state.zposLarge[i],3)+" [ mm ]    "
                                     +MaestroA.rounder(state.zLambda[i],5)+"   "+lambda,x,y);

                        g.setColor(Color.red);
                        g.drawString(""+i,state.s200+state.s35,y);
                        y+=dyy;
                        g.setColor(Color.black);
                        g.drawString((Complex.Multiply(state.currentLarge[i],1.0e12)).toString(Complex.CARTESIAN,6)+" [ pA ]",x,y);
                        g.setColor(Color.red);
                        g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
                        y+=dyy+state.s4;
                    }
                    if(state.IsB){
                        g.setColor(Color.blue);
                        g.drawString(MaestroA.rounder(1.0e3*state.zposLarge2[i],3)+" [ mm ]    "
                                     +MaestroA.rounder(state.zLambda2[i],5)+"   "+lambda,x,y);

                        g.setColor(Color.red);
                        g.drawString(""+i,state.s200+state.s35,y);
                        y+=dyy;
                        g.setColor(Color.black);
                        g.drawString((Complex.Multiply(state.currentLarge2[i],1.0e12)).toString(Complex.CARTESIAN,6)+" [ pA ]",x,y);
                        g.setColor(Color.red);
                        g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
                        y+=dyy+state.s4;
                    }
                }
            }
	}
}

class NewOutputCanvasZ extends Canvas{
	private Font normalfont = new Font("Serif",Font.PLAIN,12);
	private Font subfont    = new Font("SanSerif",Font.PLAIN,10);
	private Font symbolfont=new Font("Serif",Font.PLAIN,14);
	NewGuide_State state;

    BufferedImage angle_img;
	
        public NewOutputCanvasZ(NewGuide_State state){
	    super();
	    this.state = state;
	    getImages();
	}


    private void getImages() {
        // read in the angle image, because CHEERPJ does not render this
	//  symbol in any font!  (java to javascript converter)
        try {
            //angle_img = ImageIO.read(getClass().getResource("angle.png"));
	    BufferedImage img =
		ImageIO.read(getClass().getResource("angle.png"));
	    int targetWidth = (int) (state.sfactor * img.getWidth());
	    int targetHeight = (int) (state.sfactor * img.getHeight());
	    angle_img =
		new BufferedImage(targetWidth, targetHeight, BufferedImage.TYPE_INT_RGB);
	    Graphics2D graphics2D = angle_img.createGraphics();
	    graphics2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
					RenderingHints.VALUE_INTERPOLATION_BILINEAR);
	    graphics2D.drawImage(img, 0, 0, targetWidth, targetHeight, 0, 0,
				 img.getWidth(), img.getHeight(), null);
	    graphics2D.dispose();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
	
	public void paint(Graphics g){
            normalfont = new Font("Serif",Font.PLAIN,state.font12);
            subfont = new Font("SanSerif",Font.PLAIN,state.font10);
            symbolfont = new Font("Serif",Font.PLAIN,state.font14);
	
            Graphics2D g2d = (Graphics2D)g;
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
            
	    int x, y, dx, dxx, dy, dyy;
	    double v_normalized;
	    double wavelength_factor = state.wavelength/state.DipoleLength_meters;
	    FontMetrics fm;
	    x = state.s10;
	    y = state.s12;
	    dx = state.s80;
	    dxx = state.s15;
	    g.setFont(normalfont);
	    fm = g.getFontMetrics();
	    dy = state.s12;
	    dyy = dy+state.s2;
	    int intfac = state.s1;
	    
	    String lambda;
	    
	    lambda="\u03bb";
	    g.setFont(normalfont);
	    g.getFontMetrics();
	    
	    g.setColor(Color.black);
	    
	    if(state.currentMAX >=1.0){
	    
	    for(int i=0;i<state.NsectionsLarge;i++){
		
		if(state.IsA){
		    g.setColor(Color.blue);
		    
		    g.drawString(MaestroA.rounder(1.0e3*state.zposLarge[i],3)+" [ mm ]    "
				 +MaestroA.rounder(state.zLambda[i],5)+"   "+lambda,x,y);
		        
		    g.setColor(Color.red);
		    g.drawString(""+i,state.s200+state.s35,y);
		    y+=dyy;
		    g.setColor(Color.black);
		    //if(!state.microFlag12){
		    //g.drawString(state.currentLarge[i].toString(Complex.POLAR_RADIAN,6)+" [ A ]",x,y);
		    //}
		    //if(state.microFlag12){
		    //g.drawString(state.currentLarge[i].toString(Complex.POLAR_DEGREE,6)+" [ A ]",x,y);
		    //}
		    // NEW for CHEERPJ: Complex.toString() for POLAR_RADIAN or POLAR_DEGREE returns string with
		    //  angle symbol ('\u221e') which CHEERPJ doesn't render
		    String str;
		    if(!state.microFlag12){
			str = state.currentLarge[i].toString(Complex.POLAR_RADIAN,6)+" [ A ]";
		    } else {
			str = state.currentLarge[i].toString(Complex.POLAR_DEGREE,6)+" [ A ]";
		    }
		    
		    if (!str.contains(String.valueOf('\u221e'))) {
			g.drawString(str,x,y);
		    } else {
			int idx;
			String s1, s2;
			idx = str.indexOf(String.valueOf('\u221e'));
			s2 = str.substring(idx+1, str.length()-1);
			s1 = str.substring(0,idx-1);
			MaestroG.TxtImgTxt(s1,angle_img,s2,g,12,x,y,this);
		    }

		    
		    g.setColor(Color.red);
		    g.drawLine(x,y+dyy/2-state.s2,x+state.s200+state.s50,y+dyy/2-state.s2);
		    y+=dyy+state.s4;
		}
		if(state.IsB){
		    g.setColor(Color.blue);
		    
		    g.drawString(MaestroA.rounder(1.0e3*state.zposLarge2[i],3)+" [ mm ]    "
				 +MaestroA.rounder(state.zLambda2[i],5)+"   "+lambda,x,y);
		        
		    g.setColor(Color.red);
		    g.drawString(""+i,state.s200+state.s35,y);
		    y+=dyy;
		    g.setColor(Color.black);
		    //if(!state.microFlag12){
		    //g.drawString(state.currentLarge2[i].toString(Complex.POLAR_RADIAN,6)+" [ A ]",x,y);
		    //}
		    //if(state.microFlag12){
		    //g.drawString(state.currentLarge2[i].toString(Complex.POLAR_DEGREE,6)+" [ A ]",x,y);
		    //}
		    // NEW for CHEERPJ: Complex.toString() for POLAR_RADIAN or POLAR_DEGREE returns string with
		    //  angle symbol ('\u221e') which CHEERPJ doesn't render
		    String str;
		    if(!state.microFlag12){
			str = state.currentLarge2[i].toString(Complex.POLAR_RADIAN,6)+" [ A ]";
		    } else {
			str = state.currentLarge2[i].toString(Complex.POLAR_DEGREE,6)+" [ A ]";
		    }
		    
		    if (!str.contains(String.valueOf('\u221e'))) {
			g.drawString(str,x,y);
		    } else {
			int idx;
			String s1, s2;
			idx = str.indexOf(String.valueOf('\u221e'));
			s2 = str.substring(idx+1, str.length()-1);
			s1 = str.substring(0,idx-1);
			MaestroG.TxtImgTxt(s1,angle_img,s2,g,12,x,y,this);
		    }

		    
		    g.setColor(Color.red);
		    g.drawLine(x,y+dyy/2-state.s2,x+state.s200+state.s50,y+dyy/2-state.s2);
		    y+=dyy+state.s4;
		}
	    }
	    
	    }
	  else if(state.currentMAX < 1.0 && state.currentMAX >= 1.0e-3){
	    
	    for(int i=0;i<state.NsectionsLarge;i++){
		
		if(state.IsA){
		    g.setColor(Color.blue);
		    
		    g.drawString(MaestroA.rounder(1.0e3*state.zposLarge[i],3)+" [ mm ]    "
				 +MaestroA.rounder(state.zLambda[i],5)+"   "+lambda,x,y);
		    
		    g.setColor(Color.red);
		    g.drawString(""+i,state.s200+state.s35,y);
		    y+=dyy;
		    g.setColor(Color.black);
		    
		    //if(!state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge[i],1.0e3)).toString(Complex.POLAR_RADIAN,6)+" [ mA ]",x,y);
		    //}
		    //if(state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge[i],1.0e3)).toString(Complex.POLAR_DEGREE,6)+" [ mA ]",x,y);
		    //}
		    // NEW for CHEERPJ: Complex.toString() for POLAR_RADIAN or POLAR_DEGREE returns string with
		    //  angle symbol ('\u221e') which CHEERPJ doesn't render
		    String str;
		    if(!state.microFlag12){
			str = (Complex.Multiply(state.currentLarge[i],1.0e3)).toString(Complex.POLAR_RADIAN,6)+" [ mA ]";
		    } else {
			str = (Complex.Multiply(state.currentLarge[i],1.0e3)).toString(Complex.POLAR_DEGREE,6)+" [ mA ]";
		    }
		    
		    if (!str.contains(String.valueOf('\u221e'))) {
			g.drawString(str,x,y);
		    } else {
			int idx;
			String s1, s2;
			idx = str.indexOf(String.valueOf('\u221e'));
			s2 = str.substring(idx+1, str.length()-1);
			s1 = str.substring(0,idx-1);
			MaestroG.TxtImgTxt(s1,angle_img,s2,g,12,x,y,this);
		    }

		    
		    g.setColor(Color.red);
		    g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
		    y+=dyy+state.s4;
		}
		if(state.IsB){
		    g.setColor(Color.blue);
		    
		    g.drawString(MaestroA.rounder(1.0e3*state.zposLarge2[i],3)+" [ mm ]    "
				 +MaestroA.rounder(state.zLambda2[i],5)+"   "+lambda,x,y);
		    
		    g.setColor(Color.red);
		    g.drawString(""+i,state.s200+state.s35,y);
		    y+=dyy;
		    g.setColor(Color.black);
		    
		    //if(!state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge2[i],1.0e3)).toString(Complex.POLAR_RADIAN,6)+" [ mA ]",x,y);
		    //}
		    //if(state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge2[i],1.0e3)).toString(Complex.POLAR_DEGREE,6)+" [ mA ]",x,y);
		    //}
		    // NEW for CHEERPJ: Complex.toString() for POLAR_RADIAN or POLAR_DEGREE returns string with
		    //  angle symbol ('\u221e') which CHEERPJ doesn't render
		    String str;
		    if(!state.microFlag12){
			str = (Complex.Multiply(state.currentLarge2[i],1.0e3)).toString(Complex.POLAR_RADIAN,6)+" [ mA ]";
		    } else {
			str = (Complex.Multiply(state.currentLarge2[i],1.0e3)).toString(Complex.POLAR_DEGREE,6)+" [ mA ]";
		    }
		    
		    if (!str.contains(String.valueOf('\u221e'))) {
			g.drawString(str,x,y);
		    } else {
			int idx;
			String s1, s2;
			idx = str.indexOf(String.valueOf('\u221e'));
			s2 = str.substring(idx+1, str.length()-1);
			s1 = str.substring(0,idx-1);
			MaestroG.TxtImgTxt(s1,angle_img,s2,g,12,x,y,this);
		    }

		    
		    g.setColor(Color.red);
		    g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
		    y+=dyy+state.s4;
		}
	    }
	   }
	   else if(state.currentMAX < 1.0e-3 && state.currentMAX >= 1.0e-6){
	    
	    for(int i=0;i<state.NsectionsLarge;i++){
		
		if(state.IsA){  
		    g.setColor(Color.blue);
		    
		    g.drawString(MaestroA.rounder(1.0e3*state.zposLarge[i],3)+" [ mm ]    "
				 +MaestroA.rounder(state.zLambda[i],5)+"   "+lambda,x,y);
		    	    
		    g.setColor(Color.red);
		    g.drawString(""+i,state.s200+state.s35,y);
		    y+=dyy;
		    g.setColor(Color.black);
		    
		    //if(!state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge[i],1.0e6)).toString(Complex.POLAR_RADIAN,6)+" [ \u00b5A ]",x,y);
		    //}
		    //if(state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge[i],1.0e6)).toString(Complex.POLAR_DEGREE,6)+" [ \u00b5A ]",x,y);
		    //}
		    // NEW for CHEERPJ: Complex.toString() for POLAR_RADIAN or POLAR_DEGREE returns string with
		    //  angle symbol ('\u221e') which CHEERPJ doesn't render
		    String str;
		    if(!state.microFlag12){
			str = (Complex.Multiply(state.currentLarge[i],1.0e6)).toString(Complex.POLAR_RADIAN,6)+" [ \u00b5A ]";
		    } else {
			str = (Complex.Multiply(state.currentLarge[i],1.0e6)).toString(Complex.POLAR_DEGREE,6)+" [ \u00b5A ]";
		    }
		    
		    if (!str.contains(String.valueOf('\u221e'))) {
			g.drawString(str,x,y);
		    } else {
			int idx;
			String s1, s2;
			idx = str.indexOf(String.valueOf('\u221e'));
			s2 = str.substring(idx+1, str.length()-1);
			s1 = str.substring(0,idx-1);
			MaestroG.TxtImgTxt(s1,angle_img,s2,g,12,x,y,this);
		    }

		    
		    g.setColor(Color.red);
		    g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
		    y+=dyy+state.s4;
		}
		if(state.IsB){  
		    g.setColor(Color.blue);
		    
		    g.drawString(MaestroA.rounder(1.0e3*state.zposLarge2[i],3)+" [ mm ]    "
				 +MaestroA.rounder(state.zLambda2[i],5)+"   "+lambda,x,y);
		    	    
		    g.setColor(Color.red);
		    g.drawString(""+i,state.s200+state.s35,y);
		    y+=dyy;
		    g.setColor(Color.black);
		    
		    //if(!state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge2[i],1.0e6)).toString(Complex.POLAR_RADIAN,6)+" [ \u00b5A ]",x,y);
		    //}
		    //if(state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge2[i],1.0e6)).toString(Complex.POLAR_DEGREE,6)+" [ \u00b5A ]",x,y);
		    //}
		    // NEW for CHEERPJ: Complex.toString() for POLAR_RADIAN or POLAR_DEGREE returns string with
		    //  angle symbol ('\u221e') which CHEERPJ doesn't render
		    String str;
		    if(!state.microFlag12){
			str = (Complex.Multiply(state.currentLarge2[i],1.0e6)).toString(Complex.POLAR_RADIAN,6)+" [ \u00b5A ]";
		    } else {
			str = (Complex.Multiply(state.currentLarge2[i],1.0e6)).toString(Complex.POLAR_DEGREE,6)+" [ \u00b5A ]";
		    }
		    	    
		    if (!str.contains(String.valueOf('\u221e'))) {
			g.drawString(str,x,y);
		    } else {
			int idx;
			String s1, s2;
			idx = str.indexOf(String.valueOf('\u221e'));
			s2 = str.substring(idx+1, str.length()-1);
			s1 = str.substring(0,idx-1);
			MaestroG.TxtImgTxt(s1,angle_img,s2,g,12,x,y,this);
		    }

		    
		    g.setColor(Color.red);
		    g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
		    y+=dyy+state.s4;
		}
		
	    }
	   }
	   else if(state.currentMAX < 1.0e-6 && state.currentMAX >= 1.0e-9){
	    
	    for(int i=0;i<state.NsectionsLarge;i++){
		
		if(state.IsA){    
		    g.setColor(Color.blue);
		    
		    g.drawString(MaestroA.rounder(1.0e3*state.zposLarge[i],3)+" [ mm ]    "
				 +MaestroA.rounder(state.zLambda[i],5)+"   "+lambda,x,y);
		    
		    g.setColor(Color.red);
		    g.drawString(""+i,state.s200+state.s35,y);
		    y+=dyy;
		    g.setColor(Color.black);
		    
		    //if(!state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge[i],1.0e9)).toString(Complex.POLAR_RADIAN,6)+" [ nA ]",x,y);
		    //}
		    //if(state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge[i],1.0e9)).toString(Complex.POLAR_DEGREE,6)+" [ nA ]",x,y);
		    //}
		    // NEW for CHEERPJ: Complex.toString() for POLAR_RADIAN or POLAR_DEGREE returns string with
		    //  angle symbol ('\u221e') which CHEERPJ doesn't render
		    String str;
		    if(!state.microFlag12){
			str = (Complex.Multiply(state.currentLarge[i],1.0e9)).toString(Complex.POLAR_RADIAN,6)+" [ nA ]";
		    } else {
			str = (Complex.Multiply(state.currentLarge[i],1.0e9)).toString(Complex.POLAR_DEGREE,6)+" [ nA ]";
		    }
		    
		    if (!str.contains(String.valueOf('\u221e'))) {
			g.drawString(str,x,y);
		    } else {
			int idx;
			String s1, s2;
			idx = str.indexOf(String.valueOf('\u221e'));
			s2 = str.substring(idx+1, str.length()-1);
			s1 = str.substring(0,idx-1);
			MaestroG.TxtImgTxt(s1,angle_img,s2,g,12,x,y,this);
		    }

		    
		    g.setColor(Color.red);
		    g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
		    y+=dyy+state.s4;
		}
		if(state.IsB){    
		    g.setColor(Color.blue);
		    
		    g.drawString(MaestroA.rounder(1.0e3*state.zposLarge2[i],3)+" [ mm ]    "
				 +MaestroA.rounder(state.zLambda2[i],5)+"   "+lambda,x,y);
		    
		    g.setColor(Color.red);
		    g.drawString(""+i,state.s200+state.s35,y);
		    y+=dyy;
		    g.setColor(Color.black);
		    
		    //if(!state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge2[i],1.0e9)).toString(Complex.POLAR_RADIAN,6)+" [ nA ]",x,y);
		    //}
		    //if(state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge2[i],1.0e9)).toString(Complex.POLAR_DEGREE,6)+" [ nA ]",x,y);
		    //}
		    // NEW for CHEERPJ: Complex.toString() for POLAR_RADIAN or POLAR_DEGREE returns string with
		    //  angle symbol ('\u221e') which CHEERPJ doesn't render
		    String str;
		    if(!state.microFlag12){
			str = (Complex.Multiply(state.currentLarge2[i],1.0e9)).toString(Complex.POLAR_RADIAN,6)+" [ nA ]";
		    } else {
			str = (Complex.Multiply(state.currentLarge2[i],1.0e9)).toString(Complex.POLAR_DEGREE,6)+" [ nA ]";
		    }
		    
		    if (!str.contains(String.valueOf('\u221e'))) {
			g.drawString(str,x,y);
		    } else {
			int idx;
			String s1, s2;
			idx = str.indexOf(String.valueOf('\u221e'));
			s2 = str.substring(idx+1, str.length()-1);
			s1 = str.substring(0,idx-1);
			MaestroG.TxtImgTxt(s1,angle_img,s2,g,12,x,y,this);
		    }

		    
		    g.setColor(Color.red);
		    g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
		    y+=dyy+state.s4;
		}
	    }
	   }
	   else if(state.currentMAX < 1.0e-9){
	    
	    for(int i=0;i<state.NsectionsLarge;i++){
		
		if(state.IsA){    
		    g.setColor(Color.blue);
		    
		    g.drawString(MaestroA.rounder(1.0e3*state.zposLarge[i],3)+" [ mm ]    "
				 +MaestroA.rounder(state.zLambda[i],5)+"   "+lambda,x,y);
		    
		    g.setColor(Color.red);
		    g.drawString(""+i,state.s200+state.s35,y);
		    y+=dyy;
		    g.setColor(Color.black);
		    
		    //if(!state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge[i],1.0e12)).toString(Complex.POLAR_RADIAN,6)+" [ pA ]",x,y);
		    //}
		    //if(state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge[i],1.0e12)).toString(Complex.POLAR_DEGREE,6)+" [ pA ]",x,y);
		    //}
		    // NEW for CHEERPJ: Complex.toString() for POLAR_RADIAN or POLAR_DEGREE returns string with
		    //  angle symbol ('\u221e') which CHEERPJ doesn't render
		    String str;
		    if(!state.microFlag12){
			str = (Complex.Multiply(state.currentLarge[i],1.0e12)).toString(Complex.POLAR_RADIAN,6)+" [ pA ]";
		    } else {
			str = (Complex.Multiply(state.currentLarge[i],1.0e12)).toString(Complex.POLAR_DEGREE,6)+" [ pA ]";
		    }
		    
		    if (!str.contains(String.valueOf('\u221e'))) {
			g.drawString(str,x,y);
		    } else {
			int idx;
			String s1, s2;
			idx = str.indexOf(String.valueOf('\u221e'));
			s2 = str.substring(idx+1, str.length()-1);
			s1 = str.substring(0,idx-1);
			MaestroG.TxtImgTxt(s1,angle_img,s2,g,12,x,y,this);
		    }

		    
		    g.setColor(Color.red);
		    g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
		    y+=dyy+4;
		}
		if(state.IsB){    
		    g.setColor(Color.blue);
		    
		    g.drawString(MaestroA.rounder(1.0e3*state.zposLarge2[i],3)+" [ mm ]    "
				 +MaestroA.rounder(state.zLambda2[i],5)+"   "+lambda,x,y);
		    
		    g.setColor(Color.red);
		    g.drawString(""+i,state.s200+state.s35,y);
		    y+=dyy;
		    g.setColor(Color.black);
		    
		    //if(!state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge2[i],1.0e12)).toString(Complex.POLAR_RADIAN,6)+" [ pA ]",x,y);
		    //}
		    //if(state.microFlag12){
		    //g.drawString((Complex.Multiply(state.currentLarge2[i],1.0e12)).toString(Complex.POLAR_DEGREE,6)+" [ pA ]",x,y);
		    //}
		    // NEW for CHEERPJ: Complex.toString() for POLAR_RADIAN or POLAR_DEGREE returns string with
		    //  angle symbol ('\u221e') which CHEERPJ doesn't render
		    String str;
		    if(!state.microFlag12){
			str = (Complex.Multiply(state.currentLarge2[i],1.0e12)).toString(Complex.POLAR_RADIAN,6)+" [ pA ]";
		    } else {
			str = (Complex.Multiply(state.currentLarge2[i],1.0e12)).toString(Complex.POLAR_DEGREE,6)+" [ pA ]";
		    }
		    
		    if (!str.contains(String.valueOf('\u221e'))) {
			g.drawString(str,x,y);
		    } else {
			int idx;
			String s1, s2;
			idx = str.indexOf(String.valueOf('\u221e'));
			s2 = str.substring(idx+1, str.length()-1);
			s1 = str.substring(0,idx-1);
			MaestroG.TxtImgTxt(s1,angle_img,s2,g,12,x,y,this);
		    }

		    
		    g.setColor(Color.red);
		    g.drawLine(x,y+dyy/2-state.s2,x+state.s250,y+dyy/2-state.s2);
		    y+=dyy+4;
		}
	    }
	   }
	}
}
