litesoft
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
package org.litesoft.GWT.client.widgets.nonpublic;
import org.litesoft.core.util.*;
import com.google.gwt.user.client.*;
import com.google.gwt.user.client.ui.*;
public class TwoDimensionalChildHelper
{
private Element mTBody;
private int mColsPerRow;
private Cell[] mEmptyRow;
private Row[] mRows = NO_ROWS;
public TwoDimensionalChildHelper( Element pTBody, int pColsPerRow )
{
UtilsCommon.assertNotNull( "TBODY", mTBody = pTBody );
if ( (mColsPerRow = pColsPerRow) < 1 )
{
throw new IllegalArgumentException(
"Must have at least 1 column, but was given: " + pColsPerRow );
}
}
public void add( Widget pWidget )
{
if ( pWidget != null )
{
Cell zCell = findEmptyCell();
}
}
private Cell findEmptyCell()
{
return null; // todo...
}
private Cell getCell( int pRow, int pCol )
{
return null; // todo...
}
private class Row
{
private int mIndex;
private Element mTR;
private Cell[] mCells;
public Row( int pIndex )
{
mIndex = pIndex;
DOM.appendChild( mTBody, mTR = DOM.createTR() );
mCells = new Cell[mColsPerRow];
for ( int i = 0; i < mCells.length; i++ )
{
mCells[i] = new Cell( this, i );
}
}
public int getIndex()
{
return mIndex;
}
public Element getTR()
{
return mTR;
}
}
private class Cell
{
private Row mRow;
private int mIndex;
private int mAdditionalRightCells = 0;
private int mAdditionalDownCells = 0;
private Cell mSpannedFrom = null;
private Element mTD = null;
private Widget mContent = null;
public Cell( Row pRow, int pIndex )
{
mRow = pRow;
mIndex = pIndex;
int zRowIndex = mRow.getIndex();
if ( zRowIndex != 0 )
{
Cell zPotentialSpanFromCell = getCell( zRowIndex - 1, mIndex );
while ( zPotentialSpanFromCell.mSpannedFrom != null )
{
zPotentialSpanFromCell = zPotentialSpanFromCell.mSpannedFrom;
}
if ( zPotentialSpanFromCell.coverageIncludes( zRowIndex, pIndex ) )
{
mSpannedFrom = zPotentialSpanFromCell;
}
}
}
public Row getRow()
{
return mRow;
}
private boolean coverageIncludes( int pRow, int pCol )
{
int zRowIndex = mRow.getIndex();
return (zRowIndex <= pRow) && (pRow <= (zRowIndex + mAdditionalDownCells)) && (mIndex <= pCol) &&
(pCol <= (mIndex + mAdditionalRightCells));
}
}
private static final Row[] NO_ROWS = new Row[0];
}
|
Revision |
Author |
Commited |
Message |
2
|
GeorgeS
|
Sun 07 Feb, 2010 12:50:58 +0000 |
|