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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
// This Source Code is in the Public Domain per: http://unlicense.org
package org.litesoft.GWT.client.widgets.nonpublic;

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

import com.google.gwt.user.client.ui.*;

public abstract class AbstractSizeableVerticalSplitPairPanel extends AbstractSizeableVerticalPanel
{
    private VerticalSplitterDragger mDragger;

    @Override
    protected void initialize()
    {
        super.initialize();
        LLstretchableVertically();
    }

    public AbstractSizeableVerticalSplitPairPanel add( Widget pTopWidget, Widget pBottomWidget )
    {
        add( pTopWidget );
        add( pBottomWidget );
        return this;
    }

    @Override
    protected boolean aboutToAdopt( Widget pWidget, int pBeforeIndex )
    {
        if ( pWidget instanceof Splitter )
        {
            throw new IllegalArgumentException( "Attempt to add Splitter directly" );
        }
        if ( !getSizeableWidget( pWidget ).getHeightHelper().isStretchable() )
        {
            throw new IllegalArgumentException( "Attempt to add widget to Vertical Split Pair Panel that does NOT support Vertical Stretchability" );
        }
        if ( !isOur( pWidget ) && (getWidgetCount() == 3) )
        {
            throw new IllegalArgumentException( "Vertical Split Pair Panel only supports TWO Vertical Stretchables" );
        }
        return super.aboutToAdopt( pWidget, pBeforeIndex );
    }

    @Override
    protected void justAdopted( Widget pWidget, int pWidgetIndex )
    {
        super.justAdopted( pWidget, pWidgetIndex );

        // Since we only support 2 real widgets, they could be disordered in regards to the splitter
        dropSplitters();
        if ( getWidgetCount() == 2 )
        {
            LLadopt( createSplitter( 1 ), 1 );
        }
    }

    @Override
    protected void justDisowned( Widget pWidget, int pWidgetIndex )
    {
        super.justDisowned( pWidget, pWidgetIndex );

        // Since we only support 2 real widgets, any disowned should remove the splitter
        dropSplitters();
    }

    private void dropSplitters()
    {
        for ( int i = getWidgetCount(); --i >= 0; )
        {
            Widget widget = getWidget( i );
            if ( widget instanceof Splitter )
            {
                LLdisown( widget, i );
            }
        }
    }

    protected Widget createSplitter( int pIndex )
    {
        Splitter result = new Splitter( "litesoft-SplitterForVerticalPair" );
        result.stretchableHorizontally();
        mDragger = new VerticalSplitterDragger( this, pIndex );
        result.addController( new DragController( new MousePerformanceFilter( new MouseDragHandler( mDragger ) ) ) );
        return result;
    }

    private class VerticalSplitterDragger extends AbstractSplitterDragger
    {
        public VerticalSplitterDragger( AbstractSizeableOneDimensionalPanel panel, int pIndex )
        {
            super( panel, pIndex );
        }

        @Override
        protected boolean dragBy( int pDeltaX, int pDeltaY )
        {
            return adjustSizesBy( getSizeableAt( mIndex - 1 ).getHeightHelper(), //
                                  getSizeableAt( mIndex + 1 ).getHeightHelper(), //
                                  pDeltaY );
        }
    }

    @Override
    public void setWidth( String width )
    {
        super.setWidth( width ); // for stacktrace Debugging
    }

    @Override
    public void setHeight( String height )
    {
        super.setHeight( height ); // for stacktrace Debugging
    }

    private boolean mFavorFirstWidget;

    protected void setFavorFirstWidget()
    {
        mFavorFirstWidget = true;
    }

    public boolean setFirstWidgetHeight( int pPixels )
    {
        if ( (pPixels > 20) && anyChildren() )
        {
            int zDimension = getHeightHelper().getDimension();
            if ( (zDimension > 20) && (zDimension != pPixels) )
            {
                mDragger.dragBy( 0, pPixels - zDimension );
                return true;
            }
        }
        return false;
    }

    @Override
    protected void distributeToChildrenChangedHeight()
    {
        if ( anyChildren() )
        {
            getHelper().distributeDimensionToChild( this, getHeightHelper(), mFavorFirstWidget ? getFirstWidget() : getLastWidget() );
        }
    }
}

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

Diff revisions: vs.
Revision Author Commited Message
947 Diff Diff GeorgeS picture GeorgeS Fri 06 Jun, 2014 23:36:56 +0000

Correct Spelling of package!

295 Diff Diff markcmarkc Sun 26 Jun, 2011 10:17:39 +0000
49 Diff Diff GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text

23 Diff Diff GeorgeS picture GeorgeS Wed 24 Feb, 2010 00:34:32 +0000
2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000