Hi all.

I'm trying to build a component-ized calendar that will be the centerpiece
of a new application I'm working on.  I built one this morning in JSP and
was able to do it with very little code.  I kept it simple and I'm hoping I
can retro-fit the logic into a wicket page cleanly, without too much
trouble.  I'm a little stuck because in my JSP, I simply loop through the
days and print until Saturday is reached, then I break to a new table row
and continue.  Doing this in Wicket seems tough because if I use a ListView,
I can't be as flexible as far as throwing in a new row while looping and
outputting table cells.

Here's the rough idea I came up with today in JSP, can someone give me some
pointers?

<%@ page contentType="text/html" pageEncoding="UTF-8" %>
<%@ page import="java.util.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd";>
<%
  //get parameters to change date
  String monthParam = request.getParameter("month");
  String yearParam = request.getParameter("year");
  
  //create calendar object
  Calendar cal = Calendar.getInstance();
  cal.setFirstDayOfWeek(Calendar.SUNDAY); //set first day to Sunday
  
  if (monthParam != null)
    cal.set(Calendar.MONTH, (Integer.valueOf(monthParam)-1));
  
  if (yearParam != null)
    cal.set(Calendar.YEAR, Integer.valueOf(yearParam));

  //get total number of days in month
  int numDaysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

  //get current month name in English
  String monthName = cal.getDisplayName(Calendar.MONTH, Calendar.LONG,
Locale.ENGLISH);

  //get current year
  int year = cal.get(Calendar.YEAR);
  
  //get array of day names
  String[] headers = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
%>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Calendarama!</title>
  </head>
  <body>
    <table border="1">
      <tr>
        <!-- print month and year -->
        <th colspan="7" align="center"><%= monthName + " " + year %></th>
      </tr>
      <tr>
        <!-- loop and print days -->
        <%
          for (int i=0; i<7; i++)
          {
        %>
        <td><%= headers[i] %></td>
        <%
          }
        %>
      </tr>
      <!-- DRAW CALENDAR -->
      <tr>
        <%
          for (int i=1; i<=numDaysInMonth; i++)
          {
            //re-set calendar day in context of loop
            cal.set(Calendar.DAY_OF_MONTH, i);

            //get the day number of the week
            int day = cal.get(Calendar.DAY_OF_WEEK);

            //days without numbers count
            int blankDays = 0;
        
            //blank days before 1st of month?
            if (i == 1 && day > 1)
            {
              blankDays = day - i; //get count

              //loop through count and print blank day
              for (int x=1; x<=blankDays; x++)
              {
        %>
          <td width="100" height="100">&nbsp;</td>
        <%
              }
            }
        %>
          <td width="100" height="100" valign="top"><%= i %></td>
        <%
            if (day == Calendar.SATURDAY)
            {
        %>
          </tr>
          <tr>
        <%
            }              
            
            //blank days after last day of month?
            if (i == numDaysInMonth && day < 7)
            {
              blankDays = 7 - day; //get count

              //loop through count and print blank day
              for (int x=1; x<=blankDays; x++)
              {
        %>
          <td width="100" height="100">&nbsp;</td>
        <%
              }
            }
          }
        %>
      </tr>
    </table>
  </body>
</html>

-- 
View this message in context: 
http://www.nabble.com/Trying-to-create-a-calendar---need-some-guidance-tp20138860p20138860.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to