summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArtur Signell <artur@vaadin.com>2012-02-03 20:27:38 +0200
committerArtur Signell <artur@vaadin.com>2012-02-03 20:27:38 +0200
commite1447fd91931ed49c38b1c110cd1e4166d568336 (patch)
treee947238df5e8a89f9433207398385edd9fee2c56
parent51afd1f48d98ee1536665ac5c21d5fb0f992ff6b (diff)
downloadvaadin-framework-e1447fd91931ed49c38b1c110cd1e4166d568336.tar.gz
vaadin-framework-e1447fd91931ed49c38b1c110cd1e4166d568336.zip
#8324 Corrected paintable hierarchy as VScrollTableRow is no longer a
paintable
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java79
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VScrollTablePaintable.java8
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VTreeTable.java46
3 files changed, 73 insertions, 60 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java
index aeab9f8ffb..c9be032063 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java
@@ -106,7 +106,7 @@ import com.vaadin.terminal.gwt.client.ui.label.VLabel;
*/
public class VScrollTable extends FlowPanel implements HasWidgets,
ScrollHandler, VHasDropHandler, FocusHandler, BlurHandler, Focusable,
- ActionOwner {
+ ActionOwner, Container {
public enum SelectMode {
NONE(0), SINGLE(1), MULTI(2);
@@ -4321,8 +4321,7 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
}
}
- public class VScrollTableRow extends Panel implements ActionOwner,
- Container {
+ public class VScrollTableRow extends Panel implements ActionOwner {
private static final int TOUCHSCROLL_TIMEOUT = 70;
private static final int DRAGMODE_MULTIROW = 2;
@@ -5279,29 +5278,6 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
return paintableId;
}
- public RenderSpace getAllocatedSpace(Widget child) {
- int w = 0;
- int i = getColIndexOf(child);
- HeaderCell headerCell = tHead.getHeaderCell(i);
- if (headerCell != null) {
- if (initializedAndAttached) {
- w = headerCell.getWidth();
- } else {
- // header offset width is not absolutely correct value,
- // but a best guess (expecting similar content in all
- // columns ->
- // if one component is relative width so are others)
- w = headerCell.getOffsetWidth() - getCellExtraWidth();
- }
- }
- return new RenderSpace(w, 0) {
- @Override
- public int getHeight() {
- return (int) getRowHeight();
- }
- };
- }
-
private int getColIndexOf(Widget child) {
com.google.gwt.dom.client.Element widgetCell = child
.getElement().getParentElement().getParentElement();
@@ -5331,16 +5307,6 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
}
- public boolean requestLayout(Set<Widget> children) {
- // row size should never change and system wouldn't event
- // survive as this is a kind of fake paitable
- return true;
- }
-
- public void updateCaption(VPaintableWidget component, UIDL uidl) {
- // NOP, not rendered
- }
-
public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
// Should never be called,
// Component container interface faked here to get layouts
@@ -6706,4 +6672,45 @@ public class VScrollTable extends FlowPanel implements HasWidgets,
return this;
}
+ public void replaceChildComponent(Widget oldComponent, Widget newComponent) {
+ VScrollTableRow row = (VScrollTableRow) oldComponent.getParent();
+ row.replaceChildComponent(oldComponent, newComponent);
+
+ }
+
+ public boolean hasChildComponent(Widget child) {
+ VScrollTableRow row = (VScrollTableRow) child.getParent();
+ return row.hasChildComponent(child);
+ }
+
+ public boolean requestLayout(Set<Widget> children) {
+ // row size should never change
+ return true;
+ }
+
+ public RenderSpace getAllocatedSpace(Widget child) {
+ // Called by widgets attached to a row
+ VScrollTableRow row = (VScrollTableRow) child.getParent();
+ int w = 0;
+ int i = row.getColIndexOf(child);
+ HeaderCell headerCell = tHead.getHeaderCell(i);
+ if (headerCell != null) {
+ if (initializedAndAttached) {
+ w = headerCell.getWidth();
+ } else {
+ // header offset width is not absolutely correct value,
+ // but a best guess (expecting similar content in all
+ // columns ->
+ // if one component is relative width so are others)
+ w = headerCell.getOffsetWidth()
+ - scrollBody.getCellExtraWidth();
+ }
+ }
+ return new RenderSpace(w, 0) {
+ @Override
+ public int getHeight() {
+ return (int) scrollBody.getRowHeight();
+ }
+ };
+ }
}
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTablePaintable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTablePaintable.java
index 0c41ed1aa3..058b8f15b3 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTablePaintable.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTablePaintable.java
@@ -12,8 +12,9 @@ import com.vaadin.terminal.gwt.client.ApplicationConnection;
import com.vaadin.terminal.gwt.client.BrowserInfo;
import com.vaadin.terminal.gwt.client.UIDL;
import com.vaadin.terminal.gwt.client.Util;
+import com.vaadin.terminal.gwt.client.VPaintableWidget;
-public class VScrollTablePaintable extends VAbstractPaintableWidget {
+public class VScrollTablePaintable extends VAbstractPaintableWidgetContainer {
/*
* (non-Javadoc)
@@ -251,4 +252,9 @@ public class VScrollTablePaintable extends VAbstractPaintableWidget {
public VScrollTable getWidgetForPaintable() {
return (VScrollTable) super.getWidgetForPaintable();
}
+
+ public void updateCaption(VPaintableWidget component, UIDL uidl) {
+ // NOP, not rendered
+ }
+
}
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VTreeTable.java b/src/com/vaadin/terminal/gwt/client/ui/VTreeTable.java
index 0eddca0ed3..f0c284c2d0 100644
--- a/src/com/vaadin/terminal/gwt/client/ui/VTreeTable.java
+++ b/src/com/vaadin/terminal/gwt/client/ui/VTreeTable.java
@@ -223,29 +223,6 @@ public class VTreeTable extends VScrollTable {
}
}
- @Override
- public RenderSpace getAllocatedSpace(Widget child) {
- if (widgetInHierarchyColumn == child) {
- final int hierarchyAndIconWidth = getHierarchyAndIconWidth();
- final RenderSpace allocatedSpace = super
- .getAllocatedSpace(child);
- return new RenderSpace() {
- @Override
- public int getWidth() {
- return allocatedSpace.getWidth()
- - hierarchyAndIconWidth;
- }
-
- @Override
- public int getHeight() {
- return allocatedSpace.getHeight();
- }
-
- };
- }
- return super.getAllocatedSpace(child);
- }
-
private int getHierarchyAndIconWidth() {
int consumedSpace = treeSpacer.getOffsetWidth();
if (treeSpacer.getParentElement().getChildCount() > 2) {
@@ -824,4 +801,27 @@ public class VTreeTable extends VScrollTable {
int newTotalRows = uidl.getIntAttribute("totalrows");
setTotalRows(newTotalRows);
}
+
+ @Override
+ public RenderSpace getAllocatedSpace(Widget child) {
+ VTreeTableRow row = (VTreeTableRow) child.getParent();
+ if (row.widgetInHierarchyColumn == child) {
+ final int hierarchyAndIconWidth = row.getHierarchyAndIconWidth();
+ final RenderSpace allocatedSpace = super.getAllocatedSpace(child);
+ return new RenderSpace() {
+ @Override
+ public int getWidth() {
+ return allocatedSpace.getWidth() - hierarchyAndIconWidth;
+ }
+
+ @Override
+ public int getHeight() {
+ return allocatedSpace.getHeight();
+ }
+
+ };
+ }
+ return super.getAllocatedSpace(child);
+ }
+
}