Subversion Repository Public Repository

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
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt
package org.litesoft.GWT.client.widgets.nonpublic;

import org.litesoft.core.typeutils.*;

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 )
    {
        Objects.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];
}

Commits for litesoft/trunk/Java/GWT/Client/src/org/litesoft/GWT/client/widgets/nonpublic/TwoDimensionalChildHelper.java

Diff revisions: vs.
Revision Author Commited Message
804 Diff Diff GeorgeS picture GeorgeS Wed 15 Aug, 2012 12:48:51 +0000
151 Diff Diff GeorgeS picture GeorgeS Thu 17 Mar, 2011 04:16:22 +0000
49 Diff Diff GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text

2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000