Package com.rim.samples.device.ui.wireframelayoutdemo

Source Code of com.rim.samples.device.ui.wireframelayoutdemo.JustifiedVerticalFieldManager

/*
* JustifiedVerticalFieldManager.java
*
* Copyright � 1998-2011 Research In Motion Limited
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Note: For the sake of simplicity, this sample application may not leverage
* resource bundles and resource strings.  However, it is STRONGLY recommended
* that application developers make use of the localization features available
* within the BlackBerry development platform to ensure a seamless application
* experience across a variety of languages and geographies.  For more information
* on localizing your application, please refer to the BlackBerry Java Development
* Environment Development Guide associated with this release.
*/

package com.rim.samples.device.ui.wireframelayoutdemo;

import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.Manager;

/**
* A Manager class which divides its available height between two fields
*/
public class JustifiedVerticalFieldManager extends Manager {
    private final Field _topField;
    private final Field _bottomField;
    private final boolean _giveTopFieldPriority;

    /**
     * Creates a new JustifiedVerticalFieldManager
     *
     * @param topField
     *            Field to be positioned at the top
     * @param bottomField
     *            Field to be positioned at the bottom
     * @param giveTopFieldPriority
     *            True is the top field is to be given all of its preferred
     *            width, false otherwise
     */
    public JustifiedVerticalFieldManager(final Field topField,
            final Field bottomField, final boolean giveTopFieldPriority) {
        super(USE_ALL_HEIGHT);

        _topField = topField;
        _bottomField = bottomField;

        add(_topField);
        add(_bottomField);

        _giveTopFieldPriority = giveTopFieldPriority;
    }

    /**
     * @see Manager#sublayout(int, int)
     */
    protected void sublayout(final int width, final int height) {
        Field firstField;
        Field secondField;
        if (_giveTopFieldPriority) {
            firstField = _topField;
            secondField = _bottomField;
        } else {
            firstField = _bottomField;
            secondField = _topField;
        }

        int maxWidth = 0;

        final int firstFieldLeftMargin = firstField.getMarginLeft();
        final int firstFieldRightMargin = firstField.getMarginRight();
        final int secondFieldLeftMargin = secondField.getMarginLeft();
        final int secondFieldRightMargin = secondField.getMarginRight();

        final int bottomFieldMarginBottom = _bottomField.getMarginBottom();
        final int topFieldMarginTop = _topField.getMarginTop();

        int availableHeight = height;
        availableHeight -= topFieldMarginTop;
        availableHeight -=
                Math.max(_topField.getMarginBottom(), _bottomField
                        .getMarginTop());
        availableHeight -= bottomFieldMarginBottom;

        layoutChild(firstField, width - firstFieldLeftMargin
                - firstFieldRightMargin, availableHeight);
        maxWidth =
                Math.max(maxWidth, firstFieldLeftMargin + firstField.getWidth()
                        + firstFieldRightMargin);
        availableHeight -= firstField.getHeight();

        layoutChild(secondField, width - secondFieldLeftMargin
                - secondFieldRightMargin, availableHeight);

        maxWidth =
                Math.max(maxWidth, secondFieldLeftMargin
                        + secondField.getWidth() + secondFieldRightMargin);
        availableHeight -= secondField.getHeight();

        setPositionChild(_topField, 0, topFieldMarginTop);
        setPositionChild(_bottomField, 0, height - _bottomField.getHeight()
                - bottomFieldMarginBottom);

        setExtent(width, height);
    }
}
TOP

Related Classes of com.rim.samples.device.ui.wireframelayoutdemo.JustifiedVerticalFieldManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.