/*
Buffer.java - Cory Goldfuss - November 14, 2000
Program takes a string from the user and applies
different options to the string depending on what he
or she chooses.
*/
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Buffer extends Applet implements ActionListener, ItemListener
{
public int numvowels = 0;
public int numcons = 0;
public int numdigits = 0;
public String input;
public String reversed;
public boolean DROME = false;
public void init()
{
// Take out this line if you don't use symantec.itools.net.RelativeURL or symantec.itools.awt.util.StatusScroller
//symantec.itools.lang.Context.setApplet(this);
// This code is automatically generated by Visual Cafe when you add
// components to the visual environment. It instantiates and initializes
// the components. To modify the code, only use code syntax that matches
// what Visual Cafe can generate, or Visual Cafe may be unable to back
// parse your Java file into its visual environment.
//{{INIT_CONTROLS
setLayout(null);
setBackground(new java.awt.Color(45,149,210));
setSize(426,266);
add(inputFld);
inputFld.setBackground(java.awt.Color.lightGray);
inputFld.setBounds(12,48,403,24);
instructLbl.setText("Enter some words below, and select what you would like to know!");
instructLbl.setAlignment(java.awt.Label.CENTER);
add(instructLbl);
instructLbl.setBackground(java.awt.Color.white);
instructLbl.setFont(new Font("Dialog", Font.BOLD, 12));
instructLbl.setBounds(12,12,397,33);
showVowels.setLabel("Vowels");
add(showVowels);
showVowels.setFont(new Font("Dialog", Font.BOLD, 12));
showVowels.setBounds(12,96,72,24);
showCons.setLabel("Consonants");
add(showCons);
showCons.setFont(new Font("Dialog", Font.BOLD, 12));
showCons.setBounds(12,132,96,24);
showDigits.setLabel("Digits");
add(showDigits);
showDigits.setFont(new Font("Dialog", Font.BOLD, 12));
showDigits.setBounds(12,168,72,24);
showReverse.setLabel("Reverse String!");
add(showReverse);
showReverse.setFont(new Font("Dialog", Font.BOLD, 12));
showReverse.setBounds(12,204,108,24);
vowelLbl.setAlignment(java.awt.Label.CENTER);
add(vowelLbl);
vowelLbl.setBounds(108,96,48,24);
conLbl.setAlignment(java.awt.Label.CENTER);
add(conLbl);
conLbl.setBounds(108,132,48,24);
digLbl.setAlignment(java.awt.Label.CENTER);
add(digLbl);
digLbl.setBounds(96,168,48,24);
add(reverseLbl);
reverseLbl.setBounds(132,204,276,24);
resetBtn.setLabel("Start Over");
add(resetBtn);
resetBtn.setBackground(java.awt.Color.white);
resetBtn.setFont(new Font("Dialog", Font.BOLD, 12));
resetBtn.setBounds(204,132,97,40);
resetBtn.setVisible(false);
egg.setText("Hey!!! That word is a Palindrome!!");
egg.setAlignment(java.awt.Label.CENTER);
add(egg);
egg.setBackground(java.awt.Color.pink);
egg.setFont(new Font("Dialog", Font.BOLD, 12));
egg.setBounds(12,228,204,31);
egg.setVisible(false);
//}}
inputFld.addActionListener( this );
resetBtn.addActionListener( this );
showVowels.addItemListener( this );
showCons.addItemListener( this );
showDigits.addItemListener( this );
showReverse.addItemListener( this );
}
//{{DECLARE_CONTROLS
java.awt.TextField inputFld = new java.awt.TextField();
java.awt.Label instructLbl = new java.awt.Label();
java.awt.Checkbox showVowels = new java.awt.Checkbox();
java.awt.Checkbox showCons = new java.awt.Checkbox();
java.awt.Checkbox showDigits = new java.awt.Checkbox();
java.awt.Checkbox showReverse = new java.awt.Checkbox();
java.awt.Label vowelLbl = new java.awt.Label();
java.awt.Label conLbl = new java.awt.Label();
java.awt.Label digLbl = new java.awt.Label();
java.awt.Label reverseLbl = new java.awt.Label();
java.awt.Button resetBtn = new java.awt.Button();
java.awt.Label egg = new java.awt.Label();
//}}
public void actionPerformed( ActionEvent e ){
input = ( inputFld.getText() );
resetBtn.setVisible( true ); // Don't allow reset until input
for( int i = 0; i < input.length(); i++){
char ch = Character.toLowerCase(input.charAt(i));
if (Character.isLetter(ch) && isVowel(ch) == false){
numcons++;
}
if (isVowel(ch)){
numvowels++;
}
if (Character.isDigit(ch)){
numdigits++;
}
}
if ( e.getSource() == resetBtn){ // reset
numvowels = 0;
numcons = 0;
numdigits = 0;
reversed = "";
reverseLbl.setText(reversed);
input = "";
inputFld.setText(input);
vowelLbl.setText("");
conLbl.setText("");
digLbl.setText("");
egg.setVisible( false );
}
}// end actionPerformed
public void itemStateChanged( ItemEvent e ){
StringBuffer temp = new StringBuffer( input );
reversed = temp.reverse().toString();
int status = e.getStateChange();
String choice = e.getItem().toString();
if ( input.equalsIgnoreCase(reversed) ){
DROME = true;
}
if ( choice.equalsIgnoreCase( "Vowels" ) ){
if (status == ItemEvent.SELECTED){
vowelLbl.setText(Integer.toString(numvowels));
}
else{
vowelLbl.setText("");
}
}
if ( choice.equalsIgnoreCase( "Consonants" ) ){
if ( status == ItemEvent.SELECTED ){
conLbl.setText(Integer.toString(numcons));
}
else{
conLbl.setText("");
}
}
if ( choice.equalsIgnoreCase( "Digits" ) ){
if ( status == ItemEvent.SELECTED ){
digLbl.setText(Integer.toString(numdigits));
}
else{
digLbl.setText("");
}
}
if ( choice.equalsIgnoreCase( "Reverse String!" ) ){
if ( status == ItemEvent.SELECTED ){
reverseLbl.setText(reversed);
if ( DROME == true ){
egg.setVisible( true );
}
}
else{
reverseLbl.setText("");
}
}
}
public boolean isVowel( char ch ){ //tests for vowels
if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u'){
return true;
}
else{
return false;
}
}
}