//CIS  790          L.A.T.T.C              PROF. AUCIELLO
// Programmed by Joseph Auciello, CIS Professor, LA Trade Technical College.
// astr1.java
/* 

	Topics:
		1.	declaring an indexable string.
		2.	'str.length()' = length function.
		3.	'str.charAt'   = substring pointer.
		4.	'str.substring(11,17)' returns
                         "winter"
		5.	locating a character in a string --
			'str.indexOf('d').'
                6.      Case conversions.
                7.      Casting -- string to char (wow!)
                8.      inputting strings
                9.      Hash Codes
               10.      Error Trapping

*/

import corejava.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.awt.Font;
import java.awt.Color;
import java.lang.String;
import java.net.*;
import java.util.*;


public class astr1 extends Applet
{  TextField inputField1, inputField2, inputField3, inputField4, inputField5;
   Button button1;                           // ...... button.
   int i = 1;
   double dintrate;

   public void start()
     { Label namelabel1 = new Label("Enter String s1:",Label.RIGHT);
       add (namelabel1);                     // def and add label.
       inputField1      = new TextField(16); // create, add, and
       add (inputField1);                    // initialize input field1.
       inputField1.setText("ABC's of Strings");

       Label namelabel2 = new Label("Index position:",Label.RIGHT);
       add (namelabel2);                     // def and add label.
       inputField2      = new TextField(4);  // create, add, and
       add (inputField2);                    // initialize input field1.
       inputField2.setText("0");

       Label namelabel3= new Label("Begin:",Label.RIGHT);
       add (namelabel3);                     // def and add label.
       inputField3     = new TextField(4);   // create, add, and
       add (inputField3);                     // initialize input field1.
       inputField3.setText("0");

       Label namelabel4 = new Label("End:",Label.RIGHT);
       add (namelabel4);                     // def and add label.
       inputField4      = new TextField(4);  // create, add, and
       add (inputField4);                    // initialize input field1.
       inputField4.setText("1");

       Label namelabel5 = new Label("Specified substring:",Label.RIGHT);
       add (namelabel5);                     // def and add label.
       inputField5      = new TextField(1);  // create, add, and
       add (inputField5);                    // initialize input field1.
       inputField5.setText("1");


       button1          = new Button("Click Here");  // def button.
       add(button1);
     } // end init()

   public void paint(Graphics g)
     { Font fonts1   = new Font("Helvetica",Font.BOLD,16);
       g.setFont(fonts1);
       g.setColor(new Color(255,25,245));  // base color
       g.drawString("A  STRING  IS  AN  INDEXABLE  SET  OF  CHARACTERS.",10,226);


       Font fonts2   = new Font("Helvetica",Font.BOLD,12);
       g.setFont(fonts2);
       g.setColor(new Color(240,25,25));
       g.drawString("CIS 790     JAVA PROGRAMMING      PROF. AUCIELLO",20, 291);

       g.setColor(new Color(25,25,245));  // base color



       try
          { String s1    = inputField1.getText();
            int l1       = s1.length();
            String s2    = inputField2.getText();
            int int1     = Integer.parseInt(s2);
            String s3    = inputField3.getText();
            int beg      = Integer.parseInt(s3);
            String s4    = inputField4.getText();
            int end      = Integer.parseInt(s4);
            String s5    = inputField5.getText();
            
            g.drawString("String s1 = " + s1,20,74);
            g.drawString("s1.length() = " + l1, 20,88);
            g.drawString("s1.charAt(" + int1 + ") = " + s1.charAt(int1), 20,102);
            g.drawString("s1.substring(" + beg  + "," + end + ") = "+ s1.substring(beg,end),20,116);
            g.drawString("s1.indexOf("+s5+") = " + s1.indexOf(s5),20,130);
            g.drawString("What does '-1' mean? -- hint: Boolean ",220,130);
            g.drawString("s1.toUpperCase() = " + s1.toUpperCase(),20,144);
            g.drawString("s1.toLowerCase() = " + s1.toLowerCase(),20,158);
            g.drawString("Unicode value of " + s5 + " = " + s5.hashCode(),20,172);
            g.drawString("Converting UNICODE character  to a Hash Code",220,172);
            g.drawString("(char)" + s5.hashCode() + " = " + (char)s5.hashCode(), 20,186);
            g.drawString("Converting Decimal Number     to UNICODE character",220,186);
            char c5 = s5.charAt(0);   // very interesting code.
            g.drawString("value of(" + c5 + ") = " + (int)c5, 20,200);
            g.drawString("Converting UNICODE character  to Decimal Number", 220,200);
          }

       catch (Exception e)                                    
          { String err = e.toString();
            g.drawString("In Error-Trapping Routine. ",20,265);
            g.drawString("" + err,20,277);
          } // catch
     }  // end paint()

    public boolean action(Event event, Object arg)
     {   repaint();
         return true;
     }  
}  // end class

//  ===================== END   OF   PROGRAM  ===========================