/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you 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 .
 */

#ifndef __com_sun_star_ui_XDockingAreaAcceptor_idl__
#define __com_sun_star_ui_XDockingAreaAcceptor_idl__

#include <com/sun/star/uno/XInterface.idl>
#include <com/sun/star/awt/Rectangle.idl>
#include <com/sun/star/awt/XWindow.idl>


module com { module sun { module star { module ui {


/** this interface enables developer to implement different docking area
    acceptors which are used by the frame based layout manager.

    <p>
    A docking area acceptor is responsible to control the docking area of a
    container window. As OLE for example supports inplace and outplace editing,
    there are different parts of code responsible for the container window.
    This interface enables developer to make support implementations for these
    scenarios.

    @see com::sun::star::frame::XFrame
    </p>

    @since OOo 2.0
*/


interface XDockingAreaAcceptor : com::sun::star::uno::XInterface
{
    /** provide the container window where the layout manager can request border
        space for docking windows.

        <p>
        Additionally the layout manager uses this window to create its own child
        windows for docking purposes.
        </p>
    */
    com::sun::star::awt::XWindow getContainerWindow();

    /** method to ask an implementation if the provided space for docking windows
        is available or not.

        <p>
        The com::sun::star::awt::Rectangle parameter is
        filled by the caller with pixel data. The members of
        com::sun::star::awt::Rectangle must be filled
        as following:
        <ul>
            <li>X      = requested area on left side (in pixel)</li>
            <li>Y      = requested area on top side (in pixel)</li>
            <li>Width  = requested area on right side (in pixel)</li>
            <li>Height = requested area on bottom side (in pixel)</li>
        </ul>
        </p>
    */
    boolean requestDockingAreaSpace( [in] com::sun::star::awt::Rectangle RequestedSpace );

    /** method to brief an implementation that we need new border space.

        <p>
        The callee must size its document window so that we have the amount
        of space we have provided. The com::sun::star::awt::Rectangle
        parameter is filled by the caller with pixel data. The members of
        com::sun::star::awt::Rectangle must be filled as
        following:
        <ul>
            <li>X      = new area on left side (in pixel)</li>
            <li>Y      = new area on top side (in pixel)</li>
            <li>Width  = new area on right side (in pixel)</li>
            <li>Height = new area on bottom side (in pixel)</li>
        </ul>
        </p>
    */
    void setDockingAreaSpace( [in] com::sun::star::awt::Rectangle BorderSpace );
};

}; }; }; };


#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
