/*
 * DeHill.java
 *
 * Created on 2005. travanj 11, 19:20
 */
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

/**
 *
 * @author  alf
 */
public class DeHill
{
    private static JFrame frame;
    
    private static JPanel panel1;
    private static JPanel panel2;
    private static JTextArea otTxtArea; //mjesto za unos otvorenog teksta
    private static JTextArea sifratTxtArea; //mjesto za unos sifrata
    private static JButton deHillButton;
    private static JTextField a11TF;
    private static JTextField a12TF;
    private static JTextField a21TF;
    private static JTextField a22TF;
    private static JLabel a11Label;
    private static JLabel a12Label;
    private static JLabel a21Label;
    private static JLabel a22Label;
    
    private static char[] slova={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
    /** Creates a new instance of DeHill */
    public DeHill() 
    {
        frame = new JFrame();
        
        panel1 = new JPanel();
        a11Label = new JLabel("a11");
        a12Label = new JLabel("a12");
        a21Label = new JLabel("a21");
        a22Label = new JLabel("a22");
        
        a11TF = new JTextField();
        a12TF = new JTextField();
        a21TF = new JTextField();
        a22TF = new JTextField();
        
        panel1.setLayout(new GridLayout(2,4));
        panel1.add(a11Label);
        panel1.add(a11TF);
        panel1.add(a12Label);
        panel1.add(a12TF);
        panel1.add(a21Label);
        panel1.add(a21TF);
        panel1.add(a22Label);
        panel1.add(a22TF);
        
        panel2 = new JPanel();
        
        otTxtArea = new JTextArea("otvoreni tekst");
        sifratTxtArea = new JTextArea("sifrat");
        deHillButton = new JButton("DeHill");
        deHillButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e)
            {
                String sifrat = sifratTxtArea.getText();
                sifrat = sifrat.trim().toUpperCase();
                
                //sad uzmemo dva slova i sifrata, onda ga desifriramo
                // te ispisemo, te ponovimo postupak sok god ima slova u sifratu
                
                int i=0;
                int a11 = Integer.parseInt(a11TF.getText());
                int a12 = Integer.parseInt(a12TF.getText());
                int a21 = Integer.parseInt(a21TF.getText());
                int a22 = Integer.parseInt(a22TF.getText());
                
                while(i<sifrat.length())
                {
                    char tmp1,tmp2;
                    while(((tmp1=sifrat.charAt(i))==' ') || ((tmp1=sifrat.charAt(i))=='\n')){i++;}
                    i++;
                    while(((tmp2=sifrat.charAt(i))==' ') || ((tmp2=sifrat.charAt(i))=='\n')){i++;}
                    i++;
                    
                    int a,b; //numericke vrijednosti trenutno uzetih znakova iz sifrata
                    
                    int j=0;
                    while(tmp1!=slova[j]){j++;}
                    a=j;
                    j=0;
                    while(tmp2!=slova[j]){j++;}
                    b=j;
                    
                    otTxtArea.append(Character.toString(slova[(a*a11+b*a21)%26]));
                    otTxtArea.append(Character.toString(slova[(a*a12+b*a22)%26]));
                    
                }
            }
          });
        
        panel2.setLayout(new GridLayout(0,1));
        panel2.add(sifratTxtArea);
        panel2.add(otTxtArea);
        panel2.add(deHillButton);
        
        frame.getContentPane().setLayout(new GridLayout(0,1));
        frame.getContentPane().add(panel1);
        frame.getContentPane().add(panel2);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
    }
    
    
    
    
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
      new DeHill();
      System.out.println(slova.length);
    }
    
}
