/**
 * This program converts temperatures form Celsius to Fahrenheit.
 * @author
 * @version
 */
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.lang.*;

// This example demonstrates the use of JButton, JTextField
// and JLabel.
public class TempConverter implements ActionListener{
    JFrame converterFrame;
    JPanel converterPanel;
    JTextField tempCelsius;
    JLabel celsiusLabel, fahrenLabel;
    JButton convertTemp;

    // Constructor
    public TempConverter(){
            // Create the frame and container.
            converterFrame = new JFrame("Convert Temperature");
            converterPanel = new JPanel();
            converterPanel.setLayout(new GridLayout(2,2));

            // Add the widgets.
            addWidgets();

            // Add the panel to the frame.
            converterFrame.getContentPane().add(converterPanel, BorderLayout.CENTER);

            // Exit when the window is closed.
            converterFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            // Show the converter.
            converterFrame.pack();
            converterFrame.setVisible(true);
    }

    // Create and add the widgets for converter.
    private void addWidgets(){
            // Create widgets.
            tempCelsius = new JTextField(2);
            celsiusLabel = new JLabel("Celsius", SwingConstants.LEFT);
            convertTemp = new JButton("Convert");
            fahrenLabel = new JLabel("Fahrenheit", SwingConstants.LEFT);

            // Listen to events from the Convert button.
            convertTemp.addActionListener(this);

            // Add widgets to container.
            converterPanel.add(tempCelsius);
            converterPanel.add(celsiusLabel);
            converterPanel.add(convertTemp);
            converterPanel.add(fahrenLabel);

            celsiusLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
            fahrenLabel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
    }

    // Implementation of ActionListener interface.
    public void actionPerformed(ActionEvent event){

            // Parse degrees Celsius as a double and convert to Fahrenheit.
            int tempFahr = (int)((Double.parseDouble(tempCelsius.getText()))
                                    * 1.8 + 32);
            fahrenLabel.setText(tempFahr + " Fahrenheit");
    }

    // main method
    public static void main(String[] args){
            // Set the look and feel.
            try{
                UIManager.setLookAndFeel(
                    UIManager.getCrossPlatformLookAndFeelClassName());
            }
            catch(ClassNotFoundException e){ }
            catch(InstantiationException e){ }
            catch(IllegalAccessException e){ }
            catch(UnsupportedLookAndFeelException e){ }

            TempConverter converter = new TempConverter();
    }
}


