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>
+
+