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
package org.litesoft.GWT.client.widgets.nonpublic;

import org.litesoft.GWT.client.widgets.nonpublic.external.*;

public abstract class AbstractSplitterDragger
        extends AbstractDragger
{
    private AbstractSizeableOneDimensionalPanel mSplitPanel;
    protected final int mIndex;

    public AbstractSplitterDragger( AbstractSizeableOneDimensionalPanel pSplitPanel, int pIndex )
    {
        mSplitPanel = pSplitPanel;
        mIndex = pIndex;
    }

    public void start( MouseEvent e )
    {
        if ( mSplitPanel.getWidgetCount() > (mIndex + 1) )
        {
            super.start( e );
        }
    }

    protected ISizeableWidget getSizeableAt( int pIndex )
    {
        return (ISizeableWidget) mSplitPanel.getWidget( pIndex );
    }

    /**
     * @return false to prevent additional dragging
     */
    protected boolean adjustSizesBy( ISizeableDimensionHelper pPrevHelper, ISizeableDimensionHelper pNextHelper, int pDelta )
    {
        return (pDelta == 0) || ((pDelta < 0) ? //
                                 shrinkExpandSizesBy( pPrevHelper, pNextHelper, -pDelta ) : //
                                 shrinkExpandSizesBy( pNextHelper, pPrevHelper, pDelta ));
    }

    private boolean shrinkExpandSizesBy( ISizeableDimensionHelper pShrinkingHelper, ISizeableDimensionHelper pExpandingHelper,
                                         int pDelta )
    {
        int maxShrinkability = pShrinkingHelper.getDimensionMaxShrinkability();
        if ( maxShrinkability <= 1 )
        {
            return false;
        }
        if ( pDelta >= maxShrinkability )
        {
            pDelta = maxShrinkability - 1;
        }

        int shrinkingCurSize = pShrinkingHelper.getDimension();
        int expandingCurSize = pExpandingHelper.getDimension();
        //System.out.println( "Split Pair Panel:shrink (" + shrinkingCurSize + ") Expand (" +
        //                    expandingCurSize + ") SizesBy: " + pDelta );
        int shrinkingNewSize = shrinkingCurSize - pDelta;
        pShrinkingHelper.setDimension( shrinkingNewSize );
        if ( pShrinkingHelper.getDimension() != shrinkingNewSize )
        {
            return false;
        }
        int expandingNewSize = expandingCurSize + pDelta;
        pExpandingHelper.setDimension( expandingNewSize );
        return true;
    }
}

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

Diff revisions: vs.
Revision Author Commited Message
2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000