For my homework for the Tapestry, I have to show the diamond on the table from an array of strings. Here is what I still have:
code index.java
public class Index { @Property private Integer number; @Property private String [] table; public Index() { number = 9; int temp = 0; String tmp = "-"; table = new String[number * number]; if(singleCell == null) singleCell=""; for (int i = 0; i < number; i++) { for (int j = 0; j < number; j++) { table[temp] = tmp; temp++; } } } @OnEvent(component="diamond") Object onDiamondLink() { String swapValue = "*"; int sum = number / 2 ; int x1 = number-1; int sumY = number / 2; int y1 = number+1; int temp = x1 + sumY; for (int i = 0; i < table.length; i++) { table[i] = "-"; } for (int i = 0; i < table.length; i++) { if( i == sum) { table[i] = swapValue; sum = sum + x1; } if ( i == sumY ) { table[i] = swapValue; sumY = sumY + y1; } } System.out.println("link diamond is activate"); return null; } public boolean isStartRow(){ return (myIndex%9 ==0); } public boolean isEndRow(){ return (myIndex%9 == 8); } public String getStartTR(){ return "<tr >"; } public String getEndTR(){ return "</tr>"; }
code index.tml:
<t:actionlink t:id="diamond" >Diamond table</t:actionlink> <br/> <h1>Result:</h1> <table border="1" > <t:loop t:source="table" t:value="singleCell" index="MyIndex"> <t:if test="startRow"> <t:outputraw value="startTR"/> </t:if> <td width="20px"> ${singleCell} </td> <t:if test="endRow"> <t:outputraw value="endTR"/> </t:if> </t:loop> </table>
This code generates this output:
- - - - * - - - - - - - * - * - - - - - * - - - * - - - * - - - - - * - * - - - - - - - * - - - - - - - * - * - - - - - * - - - * - - - * - - - - - * - * - - - -
I need the correct result:
- - - - * - - - - - - - * - * - - - - - * - - - * - - - * - - - - - * - * - - - - - - - * - * - - - - - * - - - * - - - * - - - - - * - * - - - - - - - * - - - -
Any ideas would be a big help.
source share