javauis/lcdui_qt/src/javax/microedition/lcdui/SpacerLayouter.java
author hgs
Thu, 05 Aug 2010 16:07:57 +0300
changeset 57 59b3b4473dc8
parent 23 98ccebc37403
child 67 63b81d807542
permissions -rw-r--r--
v2.2.9_1

/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
package javax.microedition.lcdui;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;

/**
 * Class responsible for correct layout of Spacer item.
 */
class SpacerLayouter extends ItemLayouter
{

    /**
     * Constructor.
     *
     * @param aFormLayouter FormLayouter used for layouting.
     */
    SpacerLayouter(FormLayouter aFormLayouter)
    {
        super(aFormLayouter);
    }

    /**
     * Creates LayoutObject for the given Item.
     *
     * @param item Item to layout
     * @return LayoutObject
     */
    LayoutObject getLayoutObject(Item item)
    {
    	LayoutObject lo = formLayouter.getLayoutObject(item);
    	if(lo == null)
    	{
        	lo = new LayoutObject(item, eswtGetControl(formComposite, item));
    	}
		return lo;
    }

    /**
     * eSWT specific calls to implement getControl.
     *
     * @param parent for the control.
     * @param item Spacer item.
     */
    Control eswtGetControl(Composite parent, Item item)
    {
        Composite composite = new Composite(parent, SWT.NONE);
        composite.setSize(item.getMinimumWidth(), item.getMinimumHeight());
        return composite;
    }

    /**
     * Returns true if this eSWT control is suitable to be used for updating.
     *
     * @param item Item.
     * @param control eSWT control.
     * @return true if this control is suitable for update
     */
    boolean eswtIsSpecificControl(Item item, Control control)
    {
	    return (control instanceof Composite);
    }

    /**
     * Updates the values of Spacer. (Not used because of Spacer specific use)
     *
     * @param item Item.
     * @param control eSWT control.
     * @param reason reason to update.
     */
    void eswtUpdateItem(Item item, Control control, int aReason, Object param)
    {
		/*if(control instanceof  Composite)
		{
			control.setSize(item.getMinimumWidth(), item.getMinimumHeight());
		}*/

   		if(!(control instanceof  Composite))
		{
			return;
		}
			
    	Spacer spacer = (Spacer)item;
		int reason = aReason & Item.UPDATE_SIZE_MASK;

		switch(reason)
		{
		case Item.UPDATE_NONE:
			break;

		case Spacer.UPDATE_MINIMUMSIZE:
		{
			Control sCtrl = eswtFindSpecificControl(spacer, control);
			sCtrl.setSize(item.getMinimumWidth(), item.getMinimumHeight());
			break;
		}

		default:
		{
			break;
		}
		}
    }

}