<%--
  This page won't actually work, as it is simply designed to display jsp syntax highlighting.
--%>
<%@ page info="A Page to Test Kate Jsp Syntax Highlighting" language="java" errorPage="/test-error-page.jsp"%>
<%@ include file="/include/myglobalvars.jsp"%> --%>
<%@ page import="java.util.*,
                 java.io.*,
                 java.math.*" %>
<%@ taglib uri="/WEB-INF/lib/si_taglib.tld" prefix="si"%>
<jsp:useBean id="aPageBean" scope="page" class="my.package.MyPageBean"/>
<jsp:useBean id="aRequestBean" scope="request" class="my.package.MyRequestBean"/>
<%
  // We can decipher our expected parameters here.
  String parm1 = noNull(request.getParameter(PARAMETER_1)).trim();
  String parm2 = noNull(request.getParameter(PARAMETER_2)).trim();
  String parm3 = noNull(request.getParameter(PARAMETER_3)).trim();
  String parm4 = noNull(request.getParameter(PARAMETER_4)).trim();
  String parm5 = noNull(request.getParameter(PARAMETER_5)).trim();

  // A sample collection of Integers to display some code folding.
  List intList = getIntList(10);


%>
<html>
  <title>A Sample Jsp</title>
  <head>
  <script language="javascript"><!--
    function doAlert1() {
      alert("This is the first javascript example.");
    }

    function doAlert2() {
      alert("This is the second javascript example.");
    }
  //--></script>
  </head>
  <body>
    <%-- The top label table. --%>
    <table width="400" cellpadding="0" cellspacing="0" border="0">
      <tr>
        <td><font size="3"><b>The following parameters were detected:</b></font></td>
      </tr>
    </table>

    <%-- Display the parameters which might have been passed in. --%>
    <table width="400" cellpadding="0" cellspacing="0" border="0">
      <%-- Label; Actual Parameter String; Value Detected --%>
      <tr>
        <td><b>PARAMETER_1</b></td>
        <td align="center"><%=PARAMETER_1%></td>
        <td align="right">&quot;<%=parm1%>&quot;</td>
      </tr>

      <%-- Label; Actual Parameter String; Value Detected --%>
      <tr>
        <td><b>PARAMETER_2</b></td>
        <td align="center"><%=PARAMETER_2%></td>
        <td align="right">&quot;<%=parm2%>&quot;</td>
      </tr>

      <%-- Label; Actual Parameter String; Value Detected --%>
      <tr>
        <td><b>PARAMETER_3</b></td>
        <td align="center"><%=PARAMETER_3%></td>
        <td align="right">&quot;<%=parm3%>&quot;</td>
      </tr>

      <%-- Label; Actual Parameter String; Value Detected --%>
      <tr>
        <td><b>PARAMETER_4</b></td>
        <td align="center"><%=PARAMETER_4%></td>
        <td align="right">&quot;<%=parm4%>&quot;</td>
      </tr>

      <%-- Label; Actual Parameter String; Value Detected --%>
      <tr>
        <td><b>PARAMETER_5</b></td>
        <td align="center"><%=PARAMETER_5%></td>
        <td align="right">&quot;<%=parm5%>&quot;</td>
      </tr>
    </table>

    <br><br>

    <%-- Display our list of random Integers (shows code folding). --%>
    <table width="400" cellpadding="0" cellspacing="0" border="0">
<%
  if (intList != null && intList.size() > 0) {
%>
      <tr><td><b>Here are the elements of intList...</b></td></tr>
<%
    Iterator intListIt = intList.iterator();
    while (intListIt.hasNext()) {
      Integer i = (Integer) intListIt.next();
%>
      <tr><td><%=i.toString()%></td></tr>
<%
    }
  } else {
%>
      <tr><td><font color="blue"><b><i>Oooops, we forgot to initialize intList!</i></b></font></td></tr>
<%
  }
%>
    </table>

    <br><br>

    <%-- We can call javascript functions. --%>
    <table width="400" cellpadding="0" cellspacing="0" border="0">
      <tr><td colspan="2"><b>Test our javascript...</b></td></tr>
      <tr>
        <td><input type="button" name="button1" value="Alert 1" onmouseup="javascript:doAlert1()"></td>
        <td><input type="button" name="button2" value="Alert 2" onmouseup="javascript:doAlert2()"></td>
      </tr>
    </table>

    <br><br>
    <%-- If we actually had defined a tag library. --%>
    <table width="400" cellpadding="0" cellspacing="0" border="0">
      <tr><td>
      <my:SampleTag prop1="first" prop2="third">
        <my:SampleTagChild nameProp="value1"/>
        <my:SampleTagChild nameProp="value2"/>
      </my:SampleTag>
      </td></tr>
    </table>

    <br><br>
    <%-- Expression language. --%>
    <table width="400" cellpadding="0" cellspacing="0" border="0">
      <c:if test="${!empty param.aParam}">
        <c:set var="myParam" scope="session" value="${param.aParam}"/>
      </c:if>

      <tr><td>myParam's value: &quot;<c:out value="${myParam}" default=="Default"/>&quot;</td></tr>
    </table>
  </body>
</html>
<%!
  /* A place for class variables and functions... */

  // Define some sample parameter names that this page might understand.
  private static final String PARAMETER_1            = "p1";
  private static final String PARAMETER_2            = "p2";
  private static final String PARAMETER_3            = "p3";
  private static final String PARAMETER_4            = "p4";
  private static final String PARAMETER_5            = "p5";

  // Returns str trimmed, or an empty string if str is null.
  private static String noNull(String str) {
    String retStr;
    if (str == null)
      retStr = "";
    else
      retStr = str.trim();

    return retStr;
  }

  // Returns a list of Integers with listSize elements.
  private static List getIntList(int listSize) {
    ArrayList retList = new ArrayList(listSize);
    for (int i = 0; i < listSize; i++)
      retList.add(new Integer( (int) (Math.random() * 100) ));

    return retList;
  }
%>