import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class p2a extends Applet implements ActionListener {
   Label	blankLbl;
   Label	inLabel;
   TextField	inText;
   Label	outLabel;
   TextField	outText;
   Button	transBtn;

   public void init() {

      // create user interface items
      blankLbl = new Label();
      inLabel = new Label  ("Domain with percents:");
      inText = new TextField ("", 40);
      outLabel = new Label ("Domain as plain text:");
      outText = new TextField ("", 40);
      transBtn = new Button ("TRANSLATE");

      // add items into applet
      setLayout (new GridLayout (3, 2));
      add (inLabel);
      add (inText);
      add (transBtn);
      add (blankLbl);
      add (outLabel);
      add (outText);

      // register event handlers
      transBtn.addActionListener (this);

      // request that input get focus
      inText.requestFocus();

      // paint in initial config
      repaint();
   }


   public void actionPerformed (ActionEvent e) {
      int	i;
      int	len;
      String	pct;
      String	plain;

      // get percented text
      pct = inText.getText();

      // clear plain text
      plain = "";

      // get length
      len = pct.length();

      // for each char
      for (i = 0; i < len; i++) {
	 char	c;

	 // get current char
	 c = pct.charAt(i);

	 // if it's a percent AND we're not at the end
	 if (c == '%' && i < len - 1) {
	    int	h;

	    // take next one, as hex digit
	    h = Character.digit (pct.charAt(++i), 16);

	    // if there is a next one
	    if (i < len - 1) {

	       // multiply by 16
	       h *= 16;

	       // add value of next char, as hex digit
	       h += Character.digit (pct.charAt(++i), 16);
	    }

	    // convert to char
	    c = (char) h;
	 }

	 // tack it onto plaintext version
	 plain += c;
      }

      // put plaintext version in output
      outText.setText (plain);

      // show it
      repaint();
   }
}
