/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cz.vutbr.feec.utko.fojtoval.krypto.funkce;

import java.awt.Color;
import javax.swing.JTextPane;
import javax.swing.text.BadLocationException;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
import org.openide.util.Exceptions;

/**
 * Slouzi pro vzajemnou vymenu pismen v textu.
 * @author fojtoval
 */
public class VymenaPismen {

    private static String onabcd = "";

    /**
     * V zadanem textu (vstup) vymeni vsechna pismena parametr1 za pismena parametr2 a naopak.
     * @param parametr1 prvni pismeno k vymene
     * @param parametr2 druhe pismeno k vymene
     * @param vstup text, ve kterem se ma provest zmena
     * @param pane textova oblast, do ktere se vrati vysledek
     * @return
     */
    public static JTextPane vymenaPismen(String parametr1, String parametr2, String vstup, JTextPane pane) {
        char[] nabcd = Constant.abcd.clone();

        nabcd[(int)parametr1.charAt(0)-97] = parametr2.charAt(0);
        nabcd[(int)parametr2.charAt(0)-97] = parametr1.charAt(0);
        String nfina = "";

        StyledDocument doc = pane.getStyledDocument();
        javax.swing.text.Style style = doc.addStyle("StyleName", null);
        pane.setText("");

        for (int i = 0; i < vstup.length(); i++) {
            if ((parametr2.equalsIgnoreCase(nabcd[(int)vstup.charAt(i)-97]+"")) || (parametr1.equalsIgnoreCase(nabcd[(int)vstup.charAt(i)-97]+""))) {
                StyleConstants.setForeground(style, Color.red);
            } else {
                StyleConstants.setForeground(style, Color.black);
            }
            try {
                doc.insertString(doc.getLength(), nabcd[(int)vstup.charAt(i)-97]+"", style);
            } catch (BadLocationException ex) {
                     Exceptions.printStackTrace(ex);
            }
            nfina += nabcd[(int)vstup.charAt(i)-97];
        }
        
        for (int i = 0; i < 26; i++) {
            onabcd += nabcd[i];
        }

        return(pane);
        
    }

    /**
     * 
     * @return
     */
    public static String nastavLabel(){
        String s = VymenaPismen.onabcd;
        onabcd = "";
        return(s);
    }

}
