Object widgetElement = widget.getElement();
Object td = dom.getParent(widgetElement);
// prepare row interval
if (rowIntervals[row] == null) {
Object trElement = dom.getParent(td);
Rectangle trBounds = state.getAbsoluteBounds(trElement);
container.absoluteToRelative(trBounds);
Interval trInterval = new Interval(trBounds.y, trBounds.height);
if (rowSpan == 1) {
rowIntervals[row] = trInterval;
} else {
Rectangle tdBounds = state.getAbsoluteBounds(td);
Interval spannedInterval = new Interval(trBounds.y, tdBounds.height);
spannedRowIntervals.put(new Interval(row, rowSpan), spannedInterval);
}
}
// prepare column interval
if (columnIntervals[column] == null) {
Rectangle tdBounds = state.getAbsoluteBounds(td);
container.absoluteToRelative(tdBounds);
Interval columnInterval = new Interval(tdBounds.x, tdBounds.width);
if (colSpan == 1) {
columnIntervals[column] = columnInterval;
} else {