]> source.dussan.org Git - vaadin-framework.git/commitdiff
#7387 Render block elements in TreeTable hierarchy column correctly: draw the expand...
authorJohannes Dahlström <johannes.dahlstrom@vaadin.com>
Mon, 9 Jul 2012 10:13:27 +0000 (10:13 +0000)
committerJohannes Dahlström <johannes.dahlstrom@vaadin.com>
Mon, 9 Jul 2012 10:13:27 +0000 (10:13 +0000)
svn changeset:23994/svn branch:6.8

WebContent/VAADIN/themes/base/treetable/treetable.css
WebContent/VAADIN/themes/reindeer/table/table.css
src/com/vaadin/terminal/gwt/client/ui/VTreeTable.java

index 1bc21b890c2a6dac328c608a1ef4c459884a9928..662839a4a29acac2c71948446f20e56044d60fb8 100644 (file)
@@ -4,13 +4,13 @@
     height: 10px;
     /* defines the amount of indent per level */
     width: 18px;
-}
-.v-ie7 .v-treetable-treespacer{
-       height: 100%; /* #7388 */
+    position: absolute;
+    left: 0;
+    top: 5px;
 }
 
 .v-treetable-node-closed {
-    background: url(../treetable/img/arrow-right.png) right center no-repeat;
+    background: url(../treetable/img/arrow-right.png) right top no-repeat;
 }
 
 .v-ie6 .v-treetable-node-closed {
@@ -18,7 +18,7 @@
 } 
 
 .v-treetable-node-open {
-    background: url(../treetable/img/arrow-down.png) right center no-repeat;
+    background: url(../treetable/img/arrow-down.png) right top no-repeat;
 }
 
 .v-ie6 .v-treetable-node-open {
     z-index: 10;
 }
 
+.v-treetable .v-table-cell-wrapper {
+       position: relative;
+}
+
 .v-treetable .v-table-body .v-table-table .v-table-row-animating {
        zoom:1;
        z-index:1;
index 2e6c597160d8ce85c3382cfa9b9018cb77e4ed74..cab7d6a01f44c573dd5c2b854ec1936782996699 100644 (file)
     text-shadow: #f3f5f8 0 1px 0;
     line-height: normal;
 }
-.v-table-generated-row .v-table-cell-content {
-    padding-top: 1px;
-    padding-bottom: 2px;
+.v-table-generated-row .v-table-cell-wrapper {
+    padding-top: 4px;
+    padding-bottom: 5px;
 }
 .v-table-cell-content:last-child {
        border-right-color: transparent;
index 324efcb67dd079b6d376323bceb9c53f2a07bae7..9899ec25e4b387877040daf6b0358387752c568d 100644 (file)
@@ -173,7 +173,7 @@ public class VTreeTable extends VScrollTable {
     }
 
     class VTreeTableScrollBody extends VScrollTable.VScrollTableBody {
-        private int identWidth = -1;
+        private int indentWidth = -1;
 
         VTreeTableScrollBody() {
             super();
@@ -241,7 +241,7 @@ public class VTreeTable extends VScrollTable {
                     container.insertFirst(treeSpacer);
                     depth = rowUidl.hasAttribute("depth") ? rowUidl
                             .getIntAttribute("depth") : 0;
-                    setIdent();
+                    setIndent();
                     isTreeCellAdded = true;
                     return true;
                 }
@@ -278,18 +278,19 @@ public class VTreeTable extends VScrollTable {
 
             }
 
-            private void setIdent() {
-                if (getIdentWidth() > 0 && depth != 0) {
-                    treeSpacer.getStyle().setWidth(
-                            (depth + 1) * getIdentWidth(), Unit.PX);
+            private void setIndent() {
+                if (getIndentWidth() > 0) {
+                    treeSpacer.getParentElement().getStyle()
+                            .setPaddingLeft(getIndent(), Unit.PX);
+                    treeSpacer.getStyle().setWidth(getIndent(), Unit.PX);
                 }
             }
 
             @Override
             protected void onAttach() {
                 super.onAttach();
-                if (getIdentWidth() < 0) {
-                    detectIdent(this);
+                if (getIndentWidth() < 0) {
+                    detectIndent(this);
                 }
             }
 
@@ -326,6 +327,19 @@ public class VTreeTable extends VScrollTable {
                 return consumedSpace;
             }
 
+            @Override
+            protected void setCellWidth(int cellIx, int width) {
+                if (cellIx == colIndexOfHierarchy + (showRowHeaders ? 1 : 0)) {
+                    // take indentation padding into account if this is the
+                    // hierarchy column
+                    width -= getIndent();
+                }
+                super.setCellWidth(cellIx, width);
+            }
+
+            private int getIndent() {
+                return (depth + 1) * getIndentWidth();
+            }
         }
 
         protected class VTreeTableGeneratedRow extends VTreeTableRow {
@@ -452,20 +466,20 @@ public class VTreeTable extends VScrollTable {
             }
         }
 
-        private int getIdentWidth() {
-            return identWidth;
+        private int getIndentWidth() {
+            return indentWidth;
         }
 
-        private void detectIdent(VTreeTableRow vTreeTableRow) {
-            identWidth = vTreeTableRow.treeSpacer.getOffsetWidth();
-            if (identWidth == 0) {
-                identWidth = -1;
+        private void detectIndent(VTreeTableRow vTreeTableRow) {
+            indentWidth = vTreeTableRow.treeSpacer.getOffsetWidth();
+            if (indentWidth == 0) {
+                indentWidth = -1;
                 return;
             }
             Iterator<Widget> iterator = iterator();
             while (iterator.hasNext()) {
                 VTreeTableRow next = (VTreeTableRow) iterator.next();
-                next.setIdent();
+                next.setIndent();
             }
         }