Author: tmjee
Date: Sat Jun 17 01:27:50 2006
New Revision: 415008

URL: http://svn.apache.org/viewvc?rev=415008&view=rev
Log:
WW-1351
  - add a simple chat wabapp to showcase demonstrating SAF2's AJAX
    features


Added:
    struts/action2/trunk/apps/showcase/src/main/webapp/chat/
    struts/action2/trunk/apps/showcase/src/main/webapp/chat/chatLogin.ftl
    struts/action2/trunk/apps/showcase/src/main/webapp/chat/createRoom.ftl
    
struts/action2/trunk/apps/showcase/src/main/webapp/chat/messagesAvailableInRoom.ftl
    struts/action2/trunk/apps/showcase/src/main/webapp/chat/roomSelection.ftl
    struts/action2/trunk/apps/showcase/src/main/webapp/chat/roomsAvailable.ftl
    
struts/action2/trunk/apps/showcase/src/main/webapp/chat/sendMessageToRoomResult.ftl
    struts/action2/trunk/apps/showcase/src/main/webapp/chat/showRoom.ftl
    struts/action2/trunk/apps/showcase/src/main/webapp/chat/usersAvailable.ftl
    
struts/action2/trunk/apps/showcase/src/main/webapp/chat/usersAvailableInRoom.ftl

Added: struts/action2/trunk/apps/showcase/src/main/webapp/chat/chatLogin.ftl
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/chat/chatLogin.ftl?rev=415008&view=auto
==============================================================================
--- struts/action2/trunk/apps/showcase/src/main/webapp/chat/chatLogin.ftl 
(added)
+++ struts/action2/trunk/apps/showcase/src/main/webapp/chat/chatLogin.ftl Sat 
Jun 17 01:27:50 2006
@@ -0,0 +1,16 @@
+
+<html>
+       <head>
+               <title>Showcase - Chat - Login</title>
+               <@saf.head theme="ajax" />
+       </head>
+       <body>
+       <@saf.actionerror />
+       <@saf.actionmessage />
+       <@saf.fielderror />
+       <@saf.form action="login" namespace="/chat" method="POST">
+               <@saf.textfield name="name" label="Name" required="true" />
+               <@saf.submit/>
+       </@saf.form>
+       </body>
+</html>

Added: struts/action2/trunk/apps/showcase/src/main/webapp/chat/createRoom.ftl
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/chat/createRoom.ftl?rev=415008&view=auto
==============================================================================
--- struts/action2/trunk/apps/showcase/src/main/webapp/chat/createRoom.ftl 
(added)
+++ struts/action2/trunk/apps/showcase/src/main/webapp/chat/createRoom.ftl Sat 
Jun 17 01:27:50 2006
@@ -0,0 +1,2 @@
+<@saf.actionerror />
+<@saf.fielderror />

Added: 
struts/action2/trunk/apps/showcase/src/main/webapp/chat/messagesAvailableInRoom.ftl
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/chat/messagesAvailableInRoom.ftl?rev=415008&view=auto
==============================================================================
--- 
struts/action2/trunk/apps/showcase/src/main/webapp/chat/messagesAvailableInRoom.ftl
 (added)
+++ 
struts/action2/trunk/apps/showcase/src/main/webapp/chat/messagesAvailableInRoom.ftl
 Sat Jun 17 01:27:50 2006
@@ -0,0 +1,33 @@
+
+<table class="table">
+<tr class="tableHeader">
+       <td class="tableSenderColumn">Sender</td>
+       <td class="tableDateColumn">Date</td>
+       <td class="tableMessageColumn">Message</td>
+</tr>
+<@saf.iterator id="message" value="%{messagesAvailableInRoom}" status="stat">
+<tr class="tableContent">
+       <#if stat.odd>
+       <td class="tableSenderColumnOdd"> 
+       <#else>
+       <td clas="tableSenderColumnEven">
+       </#if>
+               <@saf.property value="%{#message.creator.name}" />
+       </td>
+       <#if stat.odd>
+       <td class="tableDateColumnOdd">
+       <#else>
+       <td class="tableDateColumnEven">
+       </#if>
+               <@saf.property value="%{#message.creationDate}" />
+       </td>
+       <#if stat.odd>
+       <td class="tableMessageColumnOdd">
+       <#else>
+       <td class="tableMessageColumnEven">
+       </#if>
+               <@saf.property value="%{#message.message}" />
+       </td>
+</tr>
+</@saf.iterator>
+</table>

Added: struts/action2/trunk/apps/showcase/src/main/webapp/chat/roomSelection.ftl
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/chat/roomSelection.ftl?rev=415008&view=auto
==============================================================================
--- struts/action2/trunk/apps/showcase/src/main/webapp/chat/roomSelection.ftl 
(added)
+++ struts/action2/trunk/apps/showcase/src/main/webapp/chat/roomSelection.ftl 
Sat Jun 17 01:27:50 2006
@@ -0,0 +1,163 @@
+
+
+<html>
+       <head>
+               <title>Showcase - Chat - Room Selection</title>
+               <@saf.head theme="ajax" />
+               <style type="text/css">
+                       div.box {
+                               border: 1px solid red;
+                               margin: 5px;
+                       }
+                       
+                       div.box h3 {
+                               color: white;
+                               background: red;
+                               margin: 3px;
+                               padding: 2px;
+                       }
+                       
+                       div.nobox {
+                               margin: 5px;
+                       }
+                       
+                       table.table {
+                               border: 1px solid red;
+                               width: 98%;
+                               margin: 5px;
+                       }
+                       
+                       table.table tr.tableHeader {
+                               color: white;
+                               background: red;
+                               margin: 3px;
+                               padding: 2px;
+                               font-size: medium; 
+                               font-weight: bold;
+                       }
+                       
+                       table.table td.tableOperationColumnOdd {
+                               background: gray;
+                               color: white;
+                               width: 20%
+                       }
+                       
+                       table.table td.tableNameColumnOdd {
+                               background: gray;
+                               color: white;
+                               width: 20%;
+                       }
+                       
+                       table.table td.tableDescriptionColumnOdd {
+                               background: gray;
+                               color: white;
+                               width: 40%;
+                       }
+                       
+                       table.table td.tableDateCreatedColumnOdd {
+                               background: gray;
+                               color: white;
+                               width: 20%;
+                       }
+                       
+                       table.table td.tableOperationColumnEven {
+                               background: white;
+                               color: gray;
+                               width: 20%
+                       }
+                       
+                       table.table td.tableNameColumnEven {
+                               background: white;
+                               color: gray;
+                               width: 20%;
+                       }
+                       
+                       table.table td.tableDescriptionColumnEven {
+                               background: white;
+                               color: gray;
+                               width: 40%;
+                       }
+                       
+                       table.table td.tableDateCreatedColumnEven {
+                               background: white;
+                               color: gray;
+                               width: 20%;
+                       }
+
+                       div.container {
+                               padding-left: 200px;
+                               float: left;
+                       }
+                       
+                       div.left {
+                               width: 200px;
+                               margin-left: -200px;
+                               float: left;
+                       }
+                       
+                       div.right {
+                               width: 200px;
+                               margin-right: -200px;
+                               float: right;
+                       }
+                       
+                       div.center {
+                               width: 100%;
+                       }
+                       
+               </style>
+       </head>
+       <body>
+               <div class="container">
+               
+               
+               <div class="left">
+               <div class="box">
+                       <h3>Operations</h3>
+                       <@saf.url id="url" action="logout" namespace="/chat" />
+                       <ul>
+                               <li><@saf.a href="%{#url}">Logout</@saf.a></li>
+                       </ul>
+               </div>
+               <#if (actionErrors?size gt 0)>
+               <div class="box">
+                       <h3>Action Errors</h3>
+                       <@saf.actionerrors />
+               </div>
+               </#if>
+               <div class="box">
+               <h3>Users Available In Chat</h3>
+               <@saf.div id="usersAvailable" delay="1" updateFreq="[EMAIL 
PROTECTED]@UPDATE_FREQ}" 
+                         theme="ajax" href="/chat/ajax/usersAvailable.action"
+                         class="box">
+                               Initial Loading Users ...
+               </@saf.div>
+               </div>
+               </div>
+               
+               
+               <div class="center">
+               <div class="box">
+               <h3>Rooms Available In Chat</h3>
+               <@saf.div id="roomsAvailable" listenTopics="topicRoomCreated" 
+                                 delay="1" updateFreq="[EMAIL 
PROTECTED]@UPDATE_FREQ}"
+                                 theme="ajax" 
href="/chat/ajax/roomsAvailable.action" >
+                            Initial Loading Rooms ...
+               </@saf.div>
+               </div>
+               
+               <div id="createRoom" class="box">
+               <h3>Create Room In Chat</h3>
+                       <div id="createRoomResult"></div>
+                       <@saf.form id="createRoomId" action="createRoom" 
namespace="/chat/ajax" method="POST" theme="ajax">
+                               <@saf.textfield label="Room Name" 
required="true" name="name" />
+                               <@saf.textarea theme="xhtml" label="Room 
Description" required="true" name="Description" />
+                               <@saf.submit value="%{'Create Room'}" 
resultDivId="createRoomResult" notifyTopics="topicRoomCreated" theme="ajax" 
align="left" />
+                       </@saf.form>
+               </div>
+               </div>
+               
+               </div>
+       </body>
+</html>
+

Added: 
struts/action2/trunk/apps/showcase/src/main/webapp/chat/roomsAvailable.ftl
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/chat/roomsAvailable.ftl?rev=415008&view=auto
==============================================================================
--- struts/action2/trunk/apps/showcase/src/main/webapp/chat/roomsAvailable.ftl 
(added)
+++ struts/action2/trunk/apps/showcase/src/main/webapp/chat/roomsAvailable.ftl 
Sat Jun 17 01:27:50 2006
@@ -0,0 +1,44 @@
+
+<table class="table">
+<tr class="tableHeader">
+       <td>Operation</td>
+       <td>Name</td>
+       <td>Description</td>
+       <td>Date Created</td>
+</tr>
+<@saf.iterator id="room" value="%{availableRooms}" status="stat">
+<tr class="tableContent">
+       <#if stat.isOdd()>
+       <td class="tableOperationColumnOdd">
+       <#else>
+       <td class="tableOperationColumnEven">
+       </#if>
+       <@saf.url id="url" action="enterRoom" namespace="/chat">
+               <@saf.param name="roomName" value="%{#room.name}" />
+       </@saf.url>
+       <@saf.a href="%{url}">Enter</@saf.a>
+       </td>
+       <#if stat.odd>
+       <td class="tableNameColumnOdd">
+       <#else>
+       <td class="tableNameColumnEven">
+       </#if>
+       <@saf.property value="%{#room.name}" />
+       </td>
+       <#if stat.odd>
+       <td class="tableDescriptionColumnOdd">
+       <#else>
+       <td class="tableDescriptionColumnEven">
+       </#if>
+       <@saf.property value="%{#room.description}" />
+       </td>
+       <#if stat.odd>
+       <td class="tableDateCreatedColumnOdd">
+       <#else>
+       <td class="tableDateCreateColumnEven">
+       </#if>
+       <@saf.property value="%{#room.creationDate}" />
+       </td>
+</tr>
+</@saf.iterator>
+</table>

Added: 
struts/action2/trunk/apps/showcase/src/main/webapp/chat/sendMessageToRoomResult.ftl
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/chat/sendMessageToRoomResult.ftl?rev=415008&view=auto
==============================================================================
--- 
struts/action2/trunk/apps/showcase/src/main/webapp/chat/sendMessageToRoomResult.ftl
 (added)
+++ 
struts/action2/trunk/apps/showcase/src/main/webapp/chat/sendMessageToRoomResult.ftl
 Sat Jun 17 01:27:50 2006
@@ -0,0 +1,2 @@
+
+<@saf.fielderror />

Added: struts/action2/trunk/apps/showcase/src/main/webapp/chat/showRoom.ftl
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/chat/showRoom.ftl?rev=415008&view=auto
==============================================================================
--- struts/action2/trunk/apps/showcase/src/main/webapp/chat/showRoom.ftl (added)
+++ struts/action2/trunk/apps/showcase/src/main/webapp/chat/showRoom.ftl Sat 
Jun 17 01:27:50 2006
@@ -0,0 +1,158 @@
+
+<html>
+       <head>
+               <title>Showcase - Chat - Show Room </title>
+               <@saf.head theme="ajax" />
+               <style type="text/css">
+                       div.box {
+                               border: 1px solid red;
+                               margin: 5px;
+                       }
+                       
+                       div.box h3 {
+                               color: white;
+                               background: red;
+                               margin: 3px;
+                               padding: 2px;
+                       }
+                       
+                       div.nobox {
+                               margin: 5px;
+                       }
+                       
+                       table.table {
+                               border: 1px solid red;
+                               width: 98%;
+                               margin: 5px;
+                       }
+                       
+                       table.table tr.tableHeader {
+                               color: white;
+                               background: red;
+                               margin: 3px;
+                               padding: 2px;
+                               font-size: medium; 
+                               font-weight: bold;
+                       }
+
+                       table.table td.tableSenderColumnOdd {
+                               background: gray;
+                               color: white;
+                               width: 20%
+                       }
+                       
+                       table.table td.tableDateColumnOdd {
+                               background: gray;
+                               color: white;
+                               width: 20%;
+                       }
+                       
+                       table.table td.tableMessageColumnOdd {
+                               background: gray;
+                               color: white;
+                               width: 60%;
+                       }
+                       
+                       table.table td.tableSenderColumnEven {
+                               background: white;
+                               color: gray;
+                               width: 20%
+                       }
+                       
+                       table.table td.tableDateColumnEven {
+                               background: white;
+                               color: gray;
+                               width: 20%;
+                       }
+                       
+                       table.table td.tableMessageColumnEven {
+                               background: white;
+                               color: gray;
+                               width: 60%;
+                       }
+                       
+                       div.container {
+                               padding-left: 200px;
+                               padding-right: 200px;
+                               float: left;
+                       }
+                       
+                       div.left {
+                               width: 200px;
+                               margin-left: -200px;
+                               float: left;
+                       }
+                       
+                       div.right {
+                               width: 200px;
+                               margin-right: -200px;
+                               float: right;
+                       }
+                       
+                       div.center {
+                               width: 100%;
+                       }
+                       
+               </style>
+       </head>
+       <body>
+               <div class="container">
+               <div class="left">
+               <div class="box">
+                       <h3>Operation</h3>
+                       <@saf.url id="url" action="exitRoom" namespace="/chat">
+                               <@saf.param name="roomName" value="%{roomName}" 
/>
+                       </@saf.url>
+                       <ul>
+                               <li><@saf.a href="%{#url}">Exit 
Room</@saf.a></li>
+                       </ul>
+               </div>
+               <div class="box">
+               <h3>Users Available In Chat</h3>
+               <@saf.div id="usersAvailable" 
href="/chat/ajax/usersAvailable.action" 
+                                 theme="ajax" delay="1" updateFreq="[EMAIL 
PROTECTED]@UPDATE_FREQ}">
+                       Initial Users Available ...
+               </@saf.div>
+               </div>
+               </div>
+
+               <div class="right">
+               <div class="box">
+               <h3>Users Available In Room [${roomName?default('')}]</h3>
+               <@saf.url id="url" 
value="/chat/ajax/usersAvailableInRoom.action" includeContext="false">
+                       <@saf.param name="roomName" value="%{roomName}" />
+               </@saf.url>
+               <@saf.div id="usersAvailableInRoom" href="%{#url}" 
includeContext="false"
+                                 theme="ajax" delay="1" updateFreq="[EMAIL 
PROTECTED]@UPDATE_FREQ}">
+                       Initial Users Available In Room ...
+               </@saf.div>
+               </div>
+               </div>
+               
+               <div class="center">
+               <div class="box">
+               <h3>Messages Posted In Room [${roomName?default('')}]</h3>
+               <@saf.url id="url" 
value="/chat/ajax/messagesAvailableInRoom.action" includeContext="false">
+                       <@saf.param name="roomName" value="%{roomName}" />      
        
+               </@saf.url>
+               <@saf.div id="messagesInRoom" href="%{#url}" 
includeContext="false"
+                                 theme="ajax" delay="1" updateFreq="[EMAIL 
PROTECTED]@UPDATE_FREQ}" 
+                                 listenTopics="topicMessageSend">
+                       Initial Messages In Room ...
+               </@saf.div>
+               </div>
+               
+               <div class="box">
+               <h3>Send Messages</h3>
+               <@saf.form id="sendMessageForm" action="sendMessageToRoom" 
namespace="/chat/ajax" method="POST" theme="ajax">
+                       <div id="sendMessageResult"></div>
+                       <@saf.textarea label="Message"name="message" 
theme="xhtml" />
+                       <@saf.hidden name="roomName" value="%{roomName}" />
+                       <@saf.submit id="submit" theme="ajax" 
resultDivId="sendMessageResult" notifyTopics="topicMessageSend" 
value="%{'Send'}" />
+               </@saf.form>
+               </div>
+               </div>
+               </div>
+       
+       </body>
+</html>

Added: 
struts/action2/trunk/apps/showcase/src/main/webapp/chat/usersAvailable.ftl
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/chat/usersAvailable.ftl?rev=415008&view=auto
==============================================================================
--- struts/action2/trunk/apps/showcase/src/main/webapp/chat/usersAvailable.ftl 
(added)
+++ struts/action2/trunk/apps/showcase/src/main/webapp/chat/usersAvailable.ftl 
Sat Jun 17 01:27:50 2006
@@ -0,0 +1,6 @@
+
+<ul>
+<#list availableUsers as user>
+       <li>${user.name}</li>
+</#list>
+</ul>

Added: 
struts/action2/trunk/apps/showcase/src/main/webapp/chat/usersAvailableInRoom.ftl
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/chat/usersAvailableInRoom.ftl?rev=415008&view=auto
==============================================================================
--- 
struts/action2/trunk/apps/showcase/src/main/webapp/chat/usersAvailableInRoom.ftl
 (added)
+++ 
struts/action2/trunk/apps/showcase/src/main/webapp/chat/usersAvailableInRoom.ftl
 Sat Jun 17 01:27:50 2006
@@ -0,0 +1,8 @@
+
+<ul>
+<@saf.iterator id="member" value="%{usersAvailableInRoom}">
+       <li><@saf.property value="%{#member.name}" /></li>
+</@saf.iterator>
+</ul>
+
+


Reply via email to