//FrequencyInputPanel.java
/* A Java class for
 * LineImpedance.java
 * Electromagnetic Transmission Line Applet
 * Applet without Smith Chart - Prepared by Umberto Ravaioli 
 * for 6th edition of Fundamentals of Applied Electromagnetics Book
 * May 2009 - All Rights Reserved
 */   

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

public class FrequencyInputPanel extends Panel implements ChangeListener {
    private Trans_State state;
    //private static final Color bgcolor = new Color(160,200,200);
    //private static final Color bgcolor = new Color(236,236,236);
    private static final Color bgcolor = Color.white;
    
    //private Font labfont=TheFonts.sanSerif12;
    //private Font normalfont = TheFonts.sanSerif14;
    public int ScrollMax = 4990;//3999; 
    public int offset = 20;
    private Label titlelabel;
    private Label lab1, lab2, lab3, lab4, lab5, lab6, lab7;
    private Label ulab1, ulab2, ulab3, ulab4, ulab5, ulab6;
    public TextField text1, text2, text3, text4, text5, text6, text7, text8;
    public JSlider slider1, slider2;
    public Checkbox ch1, ch2, ch3, cg1, cg2, cg3, cg4, cg5, cg6;
    public CheckboxGroup cgrp, cgauge;
    public  Button b1, b2, b3, b5;
    public  Button bupdate;
    public Panel ps1, ps2;
  
    public FrequencyInputPanel(Trans_State state){
	super();
	setLayout(null);
	setBackground(bgcolor);
	this.state = state;
        
        //setFont(labfont);
        setFont(new Font("SanSerif",Font.PLAIN,state.font11));
	slider2 = new JSlider(0,ScrollMax); //changes frequency
	slider2.setValue(3000);
	
        slider1 = new JSlider(0,1000);
	slider1.setValue(0);
	
        add(slider2);
        add(slider1);
	
	lab1 = new Label("f = 1.0 GHz",Label.LEFT);
	add(lab1);
	lab1.setBounds(state.s10,state.s10,state.s105,state.s16);
	
	lab2 = new Label("frequency",Label.LEFT);
	//add(lab2);
	lab2.setBounds(state.s520,state.s7,state.s80,state.s20);   // JAN
	
        lab3 = new Label("[ range: 1.0 Hz to 200.0 GHz ]",Label.LEFT);
	//add(lab3);
	lab3.setBounds(state.s450,state.s18,state.s200,state.s15);
	
	//slider for frequency
        /*
        if(state.IsMac){
            slider2.setBounds(state.s134,state.s3,state.s383-state.s28,state.s15);
        }
        else{
            slider2.setBounds(state.s120,state.s3,state.s383,state.s15);
        }
        if(state.IsMac){
            slider1.setBounds(state.s134,state.s18+1,state.s355,state.s15);
        }
        else{
            slider1.setBounds(state.s120,state.s18+1,state.s383,state.s15);
        }
        
        slider2.setBlockIncrement(10);
	slider2.setBackground(new Color(245,255,235));
        slider1.setBackground(Color.white);
        
        */
        // REDO SLIDERS
        //slider for frequency
        if(state.IsMac){
            slider2.setBounds(state.s134,state.s3,state.s383-state.s28,state.s14);
        }
        else{
            slider2.setBounds(state.s120,state.s3,state.s383,state.s14);
        }
        if(state.IsMac){
            slider1.setBounds(state.s134,state.s21,state.s355,state.s14);
        }
        else{
            slider1.setBounds(state.s120,state.s21,state.s383,state.s14);
        }
        
        //slider2.setBlockIncrement(10);
	slider2.setBackground(new Color(245,255,235));
        slider1.setBackground(Color.white);
        
        
	slider2.addChangeListener(this);
        slider1.addChangeListener(this);

	/*
	Panel pslide1 = new Panel();
		pslide1.setBackground(Color.black);
		pslide1.setBounds(state.s120-1,state.s3-1,state.s383+2,state.s14+2);
		add(pslide1);
                
        Panel pslide2 = new Panel();
		pslide2.setBackground(Color.black);
		pslide2.setBounds(state.s120-1,state.s21-1,state.s383+2,state.s14+2);
		add(pslide2);
	*/
                
        // update button
	bupdate = new Button("Instructions");
        //bupdate.setBackground(new Color(240,240,255));
        bupdate.setBackground(Color.white);
        
	add(bupdate);
        int buttonx = state.s520;
        int buttony = state.s7;
        int buttonwide = state.s90;
        int buttonheight = state.s22;
        
        bupdate.setBounds(buttonx,buttony,buttonwide,buttonheight);	
        Panel ps7 = new Panel();
	    ps7.setBackground(Color.lightGray);
	    add(ps7);
	    ps7.setBounds(buttonx-1,buttony-1,buttonwide+2,buttonheight+2);
	    
	Panel ps8 = new Panel();
	    ps8.setBackground(Color.black);
	    add(ps8);
	    ps8.setBounds(buttonx-2,buttony-2,buttonwide+4,buttonheight+4);
                	
    }
    
    public void paint(Graphics g){
	slider1.requestFocusInWindow();
	slider2.requestFocusInWindow();
    }
    
    
    public void stateChanged(ChangeEvent evt){
	if(evt.getSource()==slider2){
            slider1.setValue(0);

	    /*
            if(state.frequency >= 1.0E9){
                slider2.setBlockIncrement(10);
            }
            else{
                slider2.setBlockIncrement(10);
            }
	    */
            
	    if(slider2.getValue()>=ScrollMax){
		state.frequency=state.frequency_maximum;
		lab1.setText("f = 200.0 GHz");
                slider1.setEnabled(false);
	    }
	    else{
		slider1.setEnabled(true);    
		if(slider2.getValue() == 0){
		    state.frequency = 1.0;
		    lab1.setText("f = 1.0 Hz");
		} 
		if(slider2.getValue() < 1000 && slider2.getValue()>0){
		    state.frequency = slider2.getValue();
		    lab1.setText("f = "+MaestroA.rounder(state.frequency,3)+" Hz");
		}   
		    
		if(slider2.getValue() == 1000){
		    state.frequency = 1.0e3;
		    lab1.setText("f = 1.0 kHz");
		}
                
                if(slider2.getValue() < 2000 && slider2.getValue()>1000){
		    state.frequency = (slider2.getValue()-1000)*1.0e3;
		    lab1.setText("f = "+MaestroA.rounder(state.frequency/1.0e3,3)+" kHz");
		} 
                
                if(slider2.getValue() == 2000){
		    state.frequency = 1.0e6;
		    lab1.setText("f = 1.0 MHz");
		}
		
		if(slider2.getValue() > 2000 && slider2.getValue() < 3000 ){
		    state.frequency = (slider2.getValue() - 2000) * 1.0e6;
		    lab1.setText("f = "+MaestroA.rounder(state.frequency/1.0e6,3)+" MHz");
		}
		
		if(slider2.getValue() == 3000){
		    state.frequency = 1.0e9;
		    lab1.setText("f = 1.0 GHz");
		}
		
		if(slider2.getValue() > 3000 && slider2.getValue() <= 4990 ){
		    state.frequency = (slider2.getValue() - 3000) * 1.0e8 + 1.0e9;
		    lab1.setText("f = "+MaestroA.rounder(state.frequency/1.0e9,3)+" GHz");
                    //System.out.println(slider2.getValue());
		}
	    }
	    
	    state.ignition();
	    
	}

        if(evt.getSource()==slider1){
                if(slider2.getValue()==0){
		    state.frequency = slider2.getValue()+1.0+slider1.getValue()*0.001;
		    lab1.setText("f = "+MaestroA.rounder(state.frequency,6)+" Hz");
		} 
		if(slider2.getValue() < 1000 && slider2.getValue()>0){
		    state.frequency = slider2.getValue()+slider1.getValue()*0.001;
		    lab1.setText("f = "+MaestroA.rounder(state.frequency,6)+" Hz");
		}   
		if(slider2.getValue()==1000){
		    state.frequency = (slider2.getValue()-1000)*1.0e3 +1.0e3+slider1.getValue();
		    lab1.setText("f = "+MaestroA.rounder(state.frequency/1.0e3,6)+" kHz");
		} 
		    
                if(slider2.getValue() < 2000 && slider2.getValue()>1000){
		    state.frequency = (slider2.getValue()-1000)*1.0e3 +slider1.getValue();
		    lab1.setText("f = "+MaestroA.rounder(state.frequency/1.0e3,6)+" kHz");
		} 
		
		if(slider2.getValue() == 2000 ){
		    state.frequency = (slider2.getValue() - 2000) * 1.0e6 + 1.0e6+ slider1.getValue()*1000.0;
		    lab1.setText("f = "+MaestroA.rounder(state.frequency/1.0e6,6)+" MHz");
		}
		if(slider2.getValue() > 2000 && slider2.getValue() < 3000 ){
		    state.frequency = (slider2.getValue() - 2000) * 1.0e6 +slider1.getValue()*1000.0;
		    lab1.setText("f = "+MaestroA.rounder(state.frequency/1.0e6,6)+" MHz");
		}
                if(slider2.getValue() == 3000){
		    state.frequency = (slider2.getValue() - 3000) * 1.0e9 +1.0e9+slider1.getValue()*1.0e5;
		    lab1.setText("f = "+MaestroA.rounder(state.frequency/1.0e9,6)+" GHz");
		}
		if(slider2.getValue() > 3000 && slider2.getValue() <= 4990 ){
		    state.frequency = (slider2.getValue() - 3000) * 1.0e8 +1.0e9+slider1.getValue()*1.0e5;
		    lab1.setText("f = "+MaestroA.rounder(state.frequency/1.0e9,6)+" GHz");
		}
	    
	    state.ignition();
	}	
    }        
}


