| Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/07/2008 21:53:35
|
rokklimber
Joined: 10/07/2008 21:48:50
Messages: 1
Offline
|
I am running the 5.2.4 version of itmill and i am getting extra table cells on the client end folowing colspan > 1 cells. Any idea how to debug this problem?? Is this issue fixed in other software versions??
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/07/2008 22:36:19
|
Marko Grönroos
Joined: 23/07/2007 15:34:05
Messages: 116
Offline
|
Hi!
Can you give us an example of the problem? I tried to see the problem in 5.2.x branch, but did not notice. There doesn't seem to be changes in client-side GridLayout after 5.2.4 so upgrading to 5.2.5 might not change the problem. There's probably not much to lose either.
Below is my test code and an example of how it renders in FF 2.
Code:
/* Create a 4 by 4 grid layout. */
final GridLayout grid = new GridLayout(4, 4);
grid.addStyleName("example-gridlayout");
/* Fill out the first row using the cursor. */
grid.addComponent(new Button("R/C 1"));
for (int i = 0; i < 3; i++) {
grid.addComponent(new Button("Col " + (grid.getCursorX() + 1)));
}
/* Fill out the first column using coordinates. */
for (int i = 1; i < 4; i++) {
grid.addComponent(new Button("Row " + i), 0, i);
}
/* Add some components of various shapes. */
Button button3x1 = new Button("3x1 button");
button3x1.setWidth("100%");
grid.addComponent(button3x1, 1, 1, 3, 1);
grid.addComponent(new Label("1x2 cell"), 1, 2, 1, 3);
final InlineDateField date = new InlineDateField("A 2x2 date field");
date.setResolution(DateField.RESOLUTION_DAY);
grid.addComponent(date, 2, 2, 3, 3);
main.addComponent(grid);
.
The row with the 3x1 button has two TD cells, as it should, so the problem does not seem to appear there.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/07/2008 22:05:32
|
Anonymous
|
Marko,
Thanks for your response. The problem I am experiencing adds extra cells to the right side of multicolumn cells. It could be that the cause is some sort of stylesheet collision that makes the client tools add extra rows because the UIDL does not contain the errant cells. Here is the html output sorry the styles don't show:
<table class="i-gridlayout-grid"><colgroup><col></colgroup><tbody><tr><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell i-gridlayout-firstcol i-gridlayout-firstrow" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><button class="i-button i-button-test-page-change" type="button"><span>UP</span></button></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell i-gridlayout-firstrow" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-spacer"></div></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell i-gridlayout-firstrow" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><button class="i-button i-button-test-heading" type="button"><span>1</span></button></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell i-gridlayout-firstrow" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><button class="i-button i-button-test-heading" type="button"><span>2</span></button></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell i-gridlayout-firstrow" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><button class="i-button i-button-test-heading" type="button"><span>3</span></button></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell i-gridlayout-firstrow" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><button class="i-button i-button-test-heading" type="button"><span>4</span></button></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell i-gridlayout-firstrow" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-spacer"></div></div></td></tr><tr><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell i-gridlayout-firstcol" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-col-head">A</div></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-spacer"></div></div></td><td rowspan="1" class="i-gridlayout-cell" colspan="4"></td><td></td><td></td><td></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-spacer"></div></div></td></tr><tr><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell i-gridlayout-firstcol" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-col-head">B</div></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-spacer"></div></div></td><td rowspan="1" class="i-gridlayout-cell" colspan="4"></td><td></td><td></td><td></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-spacer"></div></div></td></tr><tr><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell i-gridlayout-firstcol" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-col-head">C</div></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-spacer"></div></div></td><td rowspan="1" class="i-gridlayout-cell" colspan="4"></td><td></td><td></td><td></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-spacer"></div></div></td></tr><tr><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell i-gridlayout-firstcol" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-col-head">D</div></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-spacer"></div></div></td><td rowspan="1" class="i-gridlayout-cell" colspan="4"></td><td></td><td></td><td></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-spacer"></div></div></td></tr><tr><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell i-gridlayout-firstcol" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-col-head">E</div></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-spacer"></div></div></td><td rowspan="1" class="i-gridlayout-cell" colspan="4"></td><td></td><td></td><td></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-spacer"></div></div></td></tr><tr><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell i-gridlayout-firstcol" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><button class="i-button i-button-test-page-change" type="button"><span>DOWN</span></button></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-spacer"></div></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><button class="i-button i-button-test-heading" type="button"><span>1</span></button></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><button class="i-button i-button-test-heading" type="button"><span>2</span></button></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><button class="i-button i-button-test-heading" type="button"><span>3</span></button></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><button class="i-button i-button-test-heading" type="button"><span>4</span></button></div></td><td style="vertical-align: top;" rowspan="1" class="i-gridlayout-cell" colspan="1" align="left"><div style="text-align: left;" class="i-captionwrapper"><div class="i-caption"></div><div class="i-label i-label-test-spacer"></div></div></td></tr></tbody></table>
My example app source looks like:
Code:
import com.itmill.toolkit.Application;
import com.itmill.toolkit.ui.AbstractComponent;
import com.itmill.toolkit.ui.Button;
import com.itmill.toolkit.ui.GridLayout;
import com.itmill.toolkit.ui.Label;
import com.itmill.toolkit.ui.Window;
public class TestApp extends Application
{
private GridLayout grid = null;
public static final String cellStyle = "test-cell";
public static final String colHeadStyle = "test-col-head";
public static final String headingStyle = "test-heading";
public static final String spacerStyle = "test-spacer";
public static final String pageButtonStyle = "test-page-change";
@Override
public void init()
{
// create window
Window bigWindow = new Window("Test");
setMainWindow(bigWindow);
// add to application
addWindow(bigWindow);
createGrid();
Button refresh = new Button("Refresh");
bigWindow.addComponent(grid);
bigWindow.addComponent(refresh);
// add styles to app
setTheme("test-theme");
}
private void createGrid()
{
// create grid
grid = new GridLayout(7, 7);
// add upper row
Button up = new Button("UP");
up.setStyleName(pageButtonStyle);
grid.addComponent(up, 0, 0);
Label space = new Label();
space.setStyleName(spacerStyle);
grid.addComponent(space, 1, 0);
Button single = null;
for(int i = 1;i < grid.getColumns() - 2;i++)
{
single = new Button(Integer.toString(i));
single.setStyleName(headingStyle);
grid.addComponent(single, i + 1, 0);
}
space = new Label();
space.setStyleName(spacerStyle);
grid.addComponent(space, grid.getColumns() - 1, 0);
// middle rows
char rowChar = 'A';
for(int i = 1;i < grid.getRows() - 1;i++)
{
space = new Label(Character.toString(rowChar++));
space.setStyleName(colHeadStyle);
grid.addComponent(space, 0, i);
space = new Label();
space.setStyleName(spacerStyle);
grid.addComponent(space, 1, i);
space = new Label();
space.setStyleName(spacerStyle);
grid.addComponent(space, grid.getColumns() - 1, i);
}
// bottom row
Button dn = new Button("DOWN");
dn.setStyleName(pageButtonStyle);
grid.addComponent(dn, 0, grid.getRows() - 1);
space = new Label();
space.setStyleName(spacerStyle);
grid.addComponent(space, 1, grid.getRows() - 1);
for(int i = 1;i < grid.getColumns() - 2;i++)
{
single = new Button(Integer.toString(i));
single.setStyleName(headingStyle);
grid.addComponent(single, i + 1, grid.getRows() - 1);
}
space = new Label();
space.setStyleName(spacerStyle);
grid.addComponent(space, grid.getColumns() - 1, grid.getRows() - 1);
}
}
with a stylesheet theme that contains:
Code:
@IMPORT url("/test/ITMILL/themes/default/styles.css");
.i-captionwrapper
{
margin: 1px;
}
.i-button-test-heading
{
width: 100px;
height: 50px;
}
.i-label-test-spacer
{
width: 20px;
height: 48px;
background-color: black;
}
.i-label-test-cell
{
width: 100px;
height: 48px;
}
.i-label-test-col-head
{
width: 100px;
height: 48px;
background-color: navy;
text-align: center;
}
.i-button-test-page-change
{
width: 100px;
height: 50px;
}
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/07/2008 13:10:34
|
Joonas Lehtinen
![[Avatar]](/images/avatar/6512bd43d9caa6e02c990b0a82652dca.png)
Joined: 07/03/2007 17:31:51
Messages: 228
Location: Turku, Finland
Online
|
To me this seems to be a bug in grid-layout client-side implementation. Created a ticket: http://dev.itmill.com/ticket/1953
|
|
|
 |
|
|
|
|