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