]> source.dussan.org Git - vaadin-framework.git/commitdiff
trying to simplyfy things to make it work, but still no succes. Propably gotta go...
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 20 Jun 2007 12:15:47 +0000 (12:15 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Wed, 20 Jun 2007 12:15:47 +0000 (12:15 +0000)
svn changeset:1774/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/ITable.java

index e172756d746aed9ddaff9bb0445ff33bcd7c9ff6..1a85ca9903f8168987db93934e2bd247d0dedf3b 100644 (file)
@@ -62,13 +62,15 @@ public class ITable extends Composite implements Paintable, ScrollListener {
        private int totalRows;
        private HashMap columnWidths = new HashMap();
        
-       private int rowHeight = 25;
+       private int rowHeight = 0;
        private RowRequestHandler rowRequestHandler;
        
        public ITable() {
                headerContainer.add(tHead);
                DOM.setStyleAttribute(headerContainer.getElement(), "overflow", "hidden");
                
+               tBody.setStyleName("itable-tbody");
+               
                bodyContent.add(preSpacer);
                bodyContent.add(tBody);
                bodyContent.add(postSpacer);
@@ -122,7 +124,7 @@ public class ITable extends Composite implements Paintable, ScrollListener {
                                        updateSpacers();
                                        bodyContainer.setScrollPosition(getRowHeight()*(firstRowInViewPort -1));
                                        colWidthsInitialized = true;
-                                       if(totalRows > lastRendered) {
+                                       if(totalRows - 1 > lastRendered) {
                                                // fetch cache rows
                                                rowRequestHandler.setReqFirstRow(lastRendered+1);
                                                rowRequestHandler.setReqRows((int) (pageLength*CACHE_RATE));
@@ -173,7 +175,7 @@ public class ITable extends Composite implements Paintable, ScrollListener {
                        while(it.hasNext()) {
                                appendRow( (UIDL) it.next() );
                                if(colWidthsInitialized)
-                                       resizePostSpacer(-1);
+                                       updateSpacers();
                        }
 //                     lastRendered = firstRow + reqRows - 1;
                        if(firstRendered == -1) {
@@ -184,7 +186,7 @@ public class ITable extends Composite implements Paintable, ScrollListener {
                        int rowsAdded = 0;
                        while(it.hasNext()){
                                tBody.insertRow(rowsAdded);
-                               resizePreSpacer(-1);
+                               updateSpacers();
                                updateRow( (UIDL) it.next(), rowsAdded);
                        }
                        firstRendered = firstRow;
@@ -196,8 +198,6 @@ public class ITable extends Composite implements Paintable, ScrollListener {
                        updateBody(uidl, firstRow, reqRows);
                }
                trimBody();
-               if(colWidthsInitialized)
-                       updateSpacers();
        }
        
        /**
@@ -205,7 +205,9 @@ public class ITable extends Composite implements Paintable, ScrollListener {
         * @return height in pixels
         */
        private int getRowHeight() {
-               return tBody.getOffsetHeight()/getRenderedRowCount();
+               if(rowHeight == 0)
+                       rowHeight = tBody.getOffsetHeight()/getRenderedRowCount();
+               return rowHeight;
        }
 
        /**
@@ -217,22 +219,23 @@ public class ITable extends Composite implements Paintable, ScrollListener {
                int toBeRemovedFromTheEnd = lastRendered - (int) (firstRowInViewPort + CACHE_RATE*pageLength + pageLength);
                if(toBeRemovedFromTheBeginning > 0) {
                        // remove extra rows from the beginning of the table
-                       firstRendered =+ toBeRemovedFromTheBeginning;
                        while(toBeRemovedFromTheBeginning > 0) {
                                tBody.removeRow(0);
+                               firstRendered++;
                                toBeRemovedFromTheBeginning--;
-                               resizePreSpacer(1);
+                               updateSpacers();
                        }
                }
                if(toBeRemovedFromTheEnd > 0) {
                        // remove extra rows from the end of the table
-                       lastRendered =- toBeRemovedFromTheEnd;
                        while(toBeRemovedFromTheEnd > 0) {
                                tBody.removeRow(tBody.getRowCount() - 1);
                                toBeRemovedFromTheEnd--;
-                               resizePostSpacer(1);
+                               lastRendered--;
+                               updateSpacers();
                        }
                }
+//             bodyContainer.setScrollPosition(getRowHeight()*firstRowInViewPort);
        }
        
        private void appendRow(UIDL uidl) {
@@ -320,22 +323,12 @@ public class ITable extends Composite implements Paintable, ScrollListener {
        }
        
        private void updateSpacers() {
-               rowHeight = getRowHeight();
-               int preSpacerHeight = (firstRendered - 1)*rowHeight;
-               int postSpacerHeight = (totalRows - lastRendered)*rowHeight;
+               int preSpacerHeight = (firstRendered)*getRowHeight();
+               int postSpacerHeight = (totalRows - 1 - lastRendered)*getRowHeight();
                preSpacer.setHeight(preSpacerHeight+"px");
                postSpacer.setHeight(postSpacerHeight + "px");
-               bodyContainer.setScrollPosition((firstRowInViewPort-1)*rowHeight);
        }
        
-       private void resizePreSpacer(int rows) {
-               preSpacer.setHeight((preSpacer.getOffsetHeight() + rows*rowHeight) + "px");
-       }
-
-       private void resizePostSpacer(int rows) {
-               postSpacer.setHeight((postSpacer.getOffsetHeight() + rows*rowHeight) + "px");
-       }
-
        private int getRenderedRowCount() {
                return lastRendered-firstRendered;
        }