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
package org.litesoft.render;

import org.litesoft.logger.nonpublic.*;

public abstract class AbstractSimpleSizableRenderHelper extends AbstractSizableRenderHelper
{
    protected AbstractSimpleSizableRenderHelper( Object pRectangularRenderableObject, //
                                                 RenderAccessor pRenderAccessor, //
                                                 RenderParticipatingAdapter pParticipatingAdapter, //
                                                 RenderDimensionAdapter pDimensionAdapter )
    {
        super( pRectangularRenderableObject, pRenderAccessor, RenderSizingApproach.Settable,
               pParticipatingAdapter, pDimensionAdapter );

        mDetermineNaturalSize = new DetermineNaturalSizeRHP( mRROname, this, //
                                                             mDetermineRectSizeNow );

        mDetermineCurrentSize = new DetermineCurrentSizeRHP( mRROname, this, //
                                                             mDetermineRectSizeNow, //
                                                             mDetermineNaturalSize );
        mMutateSize = new MutateSizeRHP( mRROname, this, //
                                         mDetermineCurrentSize );
    }

    /**
     * Get the "Minimum" Size.
     * <p/>
     * Renderable Objects that are not Sizable will return their "Natural" Size.
     *
     * @return null means that is not "yet" available.
     */
    public Integer getMinimumSize()
    {
        Integer zCurrentSize = getCurrentSize(); // Dependency
        Integer zNaturalSize = getNaturalSize(); // Default
        Integer zMinimumSize = LLgetMinimumSize();
        if ( zCurrentSize == null )
        {
            return null;
        }
        return (zMinimumSize != null) ? zMinimumSize : zNaturalSize;
    }

    /**
     * Get the "Minimum" Size RHP.
     * <p/>
     * Note: RHPs are Instance Equality Managed, so for the same underlying dependency the same RHP must be returned!
     *
     * @return !null RHP, where its callbacks will be notified when it is complete.
     */
    public RenderHelperProcess unavailableMinimumSizeRHP()
    {
        return unavailableCurrentSizeRHP();
    }

    /**
     * Request "this" RederableRect and its' children be layed out.
     * <p/>
     * Note: RHPs are Instance Equality Managed, so for the same underlying dependency the same RHP must be returned!
     *
     * @return null if no layout process is needed,
     *         otherwise the returned RHP's callbacks will be notified when it is complete.
     */
    public RenderHelperProcess layoutFromHereDown()
    {
        if ( null == getNaturalSize() )
        {
            return unavailableNaturalSizeRHP();
        }
        setLayedOut();
        return null;
    }

    protected RenderProcessResult sizingError( MutateSizeRHP pMutateSizeRHP, int pExpectedSize, int pActualSize )
    {
        if ( ++mDorkedCount < 20 )
        {
            logSizingError( LOGGER.error, pExpectedSize, pActualSize, "" );
            defer( pMutateSizeRHP, 50 ); // Will it Settle...?
            return RenderProcessResult.Requeued;
        }
        logSizingError( LOGGER.fatal, pExpectedSize, pActualSize, "" );
        return RenderProcessResult.Terminated;
    }

    protected void sizingOK()
    {
        mDorkedCount = 0;
    }

    private int mDorkedCount = 0;

    /**
     * Set the Size - pCurrentSize != pNewSize
     */
    protected RenderProcessResult LLLsetSize( MutateSizeRHP pMutateSizeRHP, int pCurrentSize, int pNewSize )
    {
        setSizingChange( pCurrentSize, pNewSize );
        getDimensionAdapter().setSize( getRectangularRenderableObject(), pNewSize ); // Set our Size
        // Make us wait until we get the size!
        deferPending( pMutateSizeRHP, unavailableCurrentSizeRHP() );
        return RenderProcessResult.Requeued;
    }

    public String toString()
    {
        return toString( "SimpleSizable" );
    }
}

Commits for litesoft/trunk/Java/core/Anywhere/src/org/litesoft/render/AbstractSimpleSizableRenderHelper.java

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