Listing 1:  ajaxFunctions class

package ajaxDemoHello.model;

public class ajaxFunctions {

    public ajaxFunctions() {
    }

    public String sayHello() {
        String returnString="";
        returnString += "Hello from AJAX and DWR";
        return returnString;
    }
}


Listing 2: index.html file without any AJAX functionality.

<html>
   <head>
       <title>HelloWorld</title>
    </head>
    <body>
                Click Me
    </body>
</html>


Listing 3

<script type='text/javascript'>
     function displayHello(displaystring)
     {
           DWRUtil.setValue("message",displaystring);
     }
</script>


Listing 4

<html>
  <head>
    <title>HelloWorld</title>
  <script type='text/javascript' src='/ajaxDemo/dwr/interface/ajaxFunctions.js'></script>
  <script type='text/javascript' src='/ajaxDemo/dwr/engine.js'></script>
  <script type='text/javascript' src='/ajaxDemo/dwr/util.js'></script>
  <script type='text/javascript'>
    function displayHello(displaystring)
    {
         DWRUtil.setValue("message",displaystring);
    }
  </script>

  </head>
  <body>
        <a onClick='ajaxFunctions.sayHello(displayHello)'>Click Me:</a> <div id="message">
  </body>
</html>


Listing 5: dataFunctions.java

package com.thelinuxdog.model;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Jon Hoffman
 */
public class dataFunctions {
    String[][] data = {
        {"0","Jason Catcher", "c", ".307", ".345", "10", "87", "76", "0"},
        {"1", "Doug Catcher", "c", ".202", ".290", "1", "15", "25", "0"},
        {"2", "Kevin infielder", "1b,3b", ".320", ".410", "2", "95", "76", "2"},
        {"3", "David infielder", "1b" ,".302", ".378", "43", "140", "102", "0"},
        {"4", "Mark second", "2b", ".298", ".315", "10", "79", "89", "5"},
        {"5", "Alex second", "2b,ss", ".250", ".290", "2", "10", "22", "4"},
        {"6", "Alex short", "ss", ".210", ".250", "9", "45", "50", "2"},
        {"7", "Mike Third", "3b", ".289", ".330", "25", "70", "80", "0"},
        {"8", "Manny Left", "lf,rf", ".325", ".414", "42", "143", "101","1"},
        {"9", "Wily center", "lf,cf,rf", ".287", ".335", "25", "67", "56", "5"},
        {"10", "Coco center", "lf,cf,rf", ".298", ".367", "10","78", "45","22"},
        {"11", "Trot right", "cf,rf", ".289", ".330","15", "76", "67", "0"},
        {"12", "Curt Ace", "sp", "3.14", "1.21","21", "5", "0","212"},
        {"13", "Josh Ace", "sp", "3.25", "1.14", "20", "6", "0","189"},
        {"14", "Tim Starter", "sp", "4.19","1.45", "15", "7", "0", "140"},
        {"15", "Johnaton SuperCloser", "rp", "0.89", "0.50", "4", "0", "55", "110"}

    };

    /** Creates a new instance of dataFunctions */
    public dataFunctions() {
    }

    public List returnNames(String position)
    {
        List returnList = new ArrayList();
        for (int i=0; i<data.length; i++)
        {
            String[] pos = data[i][2].split(",");
            for (int j=0; j<pos.length; j++)
            {
                if (pos[j].equalsIgnoreCase(position))
                {
                    returnList.add(data[i][0]);
                    returnList.add(data[i][1]);
                }
            }
        }
        return returnList;
    }

    public String[] returnStats(String number)
    {
        String[] returnString = null;
        for (int i=0; i<data.length; i++)
        {
             if (data[i][0].equalsIgnoreCase(number))
                    returnString = data[i];

        }
        return returnString;
    }

}


Listing 6: ajaxFunctions.java

package com.thelinuxdog.model;

import java.util.List;


public class ajaxFunctions {
     public ajaxFunctions() {
    }

     public String displayNames(String pos) {
        String returnString = "";
        dataFunctions df = new dataFunctions();
        List names = df.returnNames(pos);
        returnString += "<form name=playerform>";
        returnString += "<select name=player\
		 onChange='ajaxFunctions.displayStats(displayStatsJS,this.options[this.selectedIndex].value)'>";
        returnString += "<option value=1000>Select Player</option>";
        for (int i=0; i<(names.size()/2); i++)
        {
            int key=i*2;
            returnString += "<option value="+ names.get(key) +">" + names.get(key+1) + "</option>";
        }
        returnString += "</select>";
        return returnString;
    }

    public String displayStats(String num) {

        String returnString = "";
        if (!num.equalsIgnoreCase("1000"))
        {
            String fieldsPitchers[] = {"#","name","positions", "ERA", "WHIP", "W","L","Saves","K"};
            String fieldsHitters[] = {"#","name","positions","AVG","OBP","HR","R","RBI","SB"};
            dataFunctions df = new dataFunctions();
            String[] stats = df.returnStats(num);
            returnString += "<table width=90% border=0><tr>";

            for (int i=0; i<9; i++)
            {
                if(stats[2].startsWith("sp") || stats[2].startsWith("rp"))
                    returnString += "<th>" + fieldsPitchers[i] + "</th>";
                else
                    returnString += "<th>" + fieldsHitters[i] + "</th>";;
            }
            returnString += "</tr><tr>";
            for (int i=0; i<stats.length; i++)
                returnString += "<th>" + stats[i] + "</th>";
            returnString += "</tr></table>";
        }
        return returnString;
    }
}


Listing 7: index.jsp

<html>
    <head>
        <title>stats</title>
        <script type='text/javascript' src='/ajaxdemo1/dwr/interface/ajaxFunctions.js'></script>
        <script type='text/javascript' src='/ajaxdemo1/dwr/engine.js'></script>
        <script type='text/javascript' src='/ajaxdemo1/dwr/util.js'></script>
        <script type='text/javascript'>

            function displayNamesJS(data)
            {
                DWRUtil.setValue("names",data);
            }

            function displayStatsJS(data)
            {
                DWRUtil.setValue("stats",data);
            }
        </script>
    </head>
    <body>
        <table width=90% border=1>
            <tr>
            <th width=30% valign=top>
                <table width=90% border=0>
                    <tr><th><a onClick='ajaxFunctions.displayNames?(displayNamesJS,"sp")'>Starting
					 Pitcher</a></th></tr>
                    <tr><th><a onClick='ajaxFunctions.displayNames?(displayNamesJS,"rp")'>Relief
					 Pitcher</a></th></tr>
                    <tr><th><a
					 onClick='ajaxFunctions.displayNames?(displayNamesJS,"c")'>Catcher</a></th></tr>
                    <tr><th><a onClick='ajaxFunctions.displayNames?(displayNamesJS,"1b")'>First
					 Basemen</a></th></tr>
                    <tr><th><a onClick='ajaxFunctions.displayNames?(displayNamesJS,"2b")'>Second
					 Basemen</a></th></tr>
                    <tr><th><a onClick='ajaxFunctions.displayNames?(displayNamesJS,"3b")'>Third
					 Basemen</a></th></tr>
                    <tr><th><a
					 onClick='ajaxFunctions.displayNames?(displayNamesJS,"ss")'>Shortstop</a></th></tr>
                    <tr><th><a onClick='ajaxFunctions.displayNames?(displayNamesJS,"lf")'>Left
					 Fielder</a></th></tr>
                    <tr><th><a onClick='ajaxFunctions.displayNames?(displayNamesJS,"cf")'>Center
					 Fielder</a></th></tr>
                    <tr><th><a onClick='ajaxFunctions.displayNames?(displayNamesJS,"rf")'>Right
					 Fielder</a></th></tr>
                </table>
            </th>
            <th width=70% valign=top>
                <table width=90% border=0>
                    <tr><th><div id=names /></th></tr>
                    <tr><th><hr width=100%></th></tr>
                    <tr><th><div id=stats /></th></tr>
                </table>
            </th>

        </table>


    </body>
</html>