[Logo] IT Mill Toolkit Forum
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Moziila 2 table grid layout generates extra cells  XML
Forum Index -> Ajax Browsers
Author Message
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??
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.
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;
 }
 
Joonas Lehtinen


[Avatar]

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
 
Forum Index -> Ajax Browsers
Go to:   
Powered by JForum 2.1.7 © JForum Team