]> source.dussan.org Git - vaadin-framework.git/commitdiff
IE6 resize fix for Table footers
authorJohn Alhroos <john.ahlroos@itmill.com>
Tue, 20 Apr 2010 11:22:29 +0000 (11:22 +0000)
committerJohn Alhroos <john.ahlroos@itmill.com>
Tue, 20 Apr 2010 11:22:29 +0000 (11:22 +0000)
svn changeset:12696/svn branch:6.4

WebContent/VAADIN/themes/base/styles.css
WebContent/VAADIN/themes/base/table/table.css
WebContent/VAADIN/themes/reindeer/styles.css
WebContent/VAADIN/themes/runo/styles.css
src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java

index b1dc7f5c0f6643d26134046792dc4bb1794c3393..393f4dc1412a22c7546c586856d1090cc9652313 100644 (file)
@@ -1,5 +1,5 @@
-.v-theme-version:after {content:"6_4_0_dev-20100416";}
-.v-theme-version-6_4_0_dev-20100416 {display: none;}
+.v-theme-version:after {content:"6_4_0_dev-20100420";}
+.v-theme-version-6_4_0_dev-20100420 {display: none;}
 /* Automatically compiled css file from subdirectories. */
 
 .v-absolutelayout-wrapper {
@@ -1464,15 +1464,14 @@ div.v-progressindicator-indeterminate-disabled {
        padding: 0;
        border-right: 1px solid #aaa;
 }
-.v-table-footer-cell,
-.v-table-footer-cell-asc,
-.v-table-footer-cell-desc {
+.v-table-footer-cell{
        cursor: pointer;
 }
-.v-table-footer-container{
-       padding-left:6px;
+.v-table-footer-container{     
+       float:right;    
        padding-right:6px;
-       overfow: hidden;        
+       overflow:hidden;
+       white-space:nowrap;
 }
 .v-table-resizer {
        display: block;
index 269bd5b68427ef20e15e4a3e3cc2ac9dbe8123ae..45e55c3da91f3c8b4b0e9b8548e8683c9d686488 100644 (file)
        padding: 0;
        border-right: 1px solid #aaa;
 }
-.v-table-footer-cell,
-.v-table-footer-cell-asc,
-.v-table-footer-cell-desc {
+.v-table-footer-cell{
        cursor: pointer;
 }
-.v-table-footer-container{
-       padding-left:6px;
+.v-table-footer-container{     
+       float:right;    
        padding-right:6px;
-       overfow: hidden;        
+       overflow:hidden;
+       white-space:nowrap;
 }
 .v-table-resizer {
        display: block;
index 3cace6f8377ea197b87bb7795958df96f5da6a10..7ec6aaac5948db2cc1c0ae76e56a4d8d05f35afe 100644 (file)
@@ -1,5 +1,5 @@
-.v-theme-version:after {content:"6_4_0_dev-20100416";}
-.v-theme-version-6_4_0_dev-20100416 {display: none;}
+.v-theme-version:after {content:"6_4_0_dev-20100420";}
+.v-theme-version-6_4_0_dev-20100420 {display: none;}
 /* Automatically compiled css file from subdirectories. */
 
 .v-absolutelayout-wrapper {
@@ -1464,15 +1464,14 @@ div.v-progressindicator-indeterminate-disabled {
        padding: 0;
        border-right: 1px solid #aaa;
 }
-.v-table-footer-cell,
-.v-table-footer-cell-asc,
-.v-table-footer-cell-desc {
+.v-table-footer-cell{
        cursor: pointer;
 }
-.v-table-footer-container{
-       padding-left:6px;
+.v-table-footer-container{     
+       float:right;    
        padding-right:6px;
-       overfow: hidden;        
+       overflow:hidden;
+       white-space:nowrap;
 }
 .v-table-resizer {
        display: block;
index 09ca23bf5df6c9b69a5559748e1ba89e1858e6b7..d98adbe7da141b89d8182deb9887380aec4d47f9 100644 (file)
@@ -1,5 +1,5 @@
-.v-theme-version:after {content:"6_4_0_dev-20100416";}
-.v-theme-version-6_4_0_dev-20100416 {display: none;}
+.v-theme-version:after {content:"6_4_0_dev-20100420";}
+.v-theme-version-6_4_0_dev-20100420 {display: none;}
 /* Automatically compiled css file from subdirectories. */
 
 .v-absolutelayout-wrapper {
@@ -1464,15 +1464,14 @@ div.v-progressindicator-indeterminate-disabled {
        padding: 0;
        border-right: 1px solid #aaa;
 }
-.v-table-footer-cell,
-.v-table-footer-cell-asc,
-.v-table-footer-cell-desc {
+.v-table-footer-cell{
        cursor: pointer;
 }
-.v-table-footer-container{
-       padding-left:6px;
+.v-table-footer-container{     
+       float:right;    
        padding-right:6px;
-       overfow: hidden;        
+       overflow:hidden;
+       white-space:nowrap;
 }
 .v-table-resizer {
        display: block;
index 22e3d8588653395edd28a78d7fc68e8e9c82dd94..f5dcd07db4eea98919647b72154df9970bc74eb6 100644 (file)
@@ -467,8 +467,16 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
             return;
         }
 
-        int i;
+        // Add dummy column if row headers are present
         int colIndex = 0;
+        if (showRowHeaders) {
+            tFoot.enableColumn("0", colIndex);
+            colIndex++;
+        } else {
+            tFoot.removeCell("0");
+        }
+
+        int i;
         for (i = 0; i < strings.length; i++) {
             final String cid = strings[i];
             tFoot.enableColumn(cid, colIndex);
@@ -1972,9 +1980,6 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
          */
         public void setWidth(int w, boolean ensureDefinedWidth) {
 
-            // Account for 1px right border
-            w--;
-
             if (ensureDefinedWidth) {
                 // on column resize expand ratio becomes zero
                 expandRatio = 0;
@@ -1982,17 +1987,35 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
             if (width == w) {
                 return;
             }
-            if (width == -1) {
+            width = w;
+            if (width <= 0) {
                 // go to default mode, clip content if necessary
                 DOM.setStyleAttribute(captionContainer, "overflow", "");
             }
-            width = w;
             if (w == -1) {
                 DOM.setStyleAttribute(captionContainer, "width", "");
                 setWidth("");
             } else {
 
-                captionContainer.getStyle().setPropertyPx("width", w);
+                /*
+                 * Reduce width with one pixel for the right border since the
+                 * footers does not have any spacers between them.
+                 * 
+                 * IE6 will calculate the footer width wrong by 2 pixels due to
+                 * borders used so add it to border widths.
+                 */
+                int borderWidths = 1;
+                if (BrowserInfo.get().isIE6()) {
+                    borderWidths += 2;
+                }
+
+                // Set the container width (check for negative value)
+                if (w - borderWidths >= 0) {
+                    captionContainer.getStyle().setPropertyPx("width",
+                            w - borderWidths);
+                } else {
+                    captionContainer.getStyle().setPropertyPx("width", 0);
+                }
 
                 /*
                  * if we already have tBody, set the header width properly, if
@@ -2000,13 +2023,25 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
                  * unless TD width is not explicitly set.
                  */
                 if (scrollBody != null) {
-                    int tdWidth = width + scrollBody.getCellExtraWidth();
+                    /*
+                     * Reduce with one since footer does not have any spacers,
+                     * instead a 1 pixel border.
+                     */
+                    int tdWidth = width + scrollBody.getCellExtraWidth()
+                            - borderWidths;
                     setWidth(tdWidth + "px");
                 } else {
                     DeferredCommand.addCommand(new Command() {
                         public void execute() {
+
+                            int borderWidths = 1;
+                            if (BrowserInfo.get().isIE6()) {
+                                borderWidths += 2;
+                            }
+
                             int tdWidth = width
-                                    + scrollBody.getCellExtraWidth();
+                                    + scrollBody.getCellExtraWidth()
+                                    - borderWidths;
                             setWidth(tdWidth + "px");
                         }
                     });
@@ -2099,6 +2134,24 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
         }
     }
 
+    /**
+     * HeaderCell that is header cell for row headers.
+     * 
+     * Reordering disabled and clicking on it resets sorting.
+     */
+    public class RowHeadersFooterCell extends FooterCell {
+
+        RowHeadersFooterCell() {
+            super("0", "");
+        }
+
+        @Override
+        protected void handleCaptionEvent(Event event) {
+            // NOP: RowHeaders cannot be reordered
+            // TODO It'd be nice to reset sorting here
+        }
+    }
+
     /**
      * The footer of the table which can be seen in the bottom of the Table.
      */
@@ -2130,6 +2183,17 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler,
             setElement(div);
 
             setStyleName(CLASSNAME + "-footer-wrap");
+
+            availableCells.put("0", new RowHeadersFooterCell());
+        }
+
+        @Override
+        public void clear() {
+            for (String cid : availableCells.keySet()) {
+                removeCell(cid);
+            }
+            availableCells.clear();
+            availableCells.put("0", new RowHeadersFooterCell());
         }
 
         /*