blob: f8cb963489c4e0c636ca714852dc11308e7c0492 [file] [log] [blame]
/**************************************************************
*
* 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
*
* 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.
*
*************************************************************/
#ifndef __com_sun_star_frame_XLayoutManager_idl__
#define __com_sun_star_frame_XLayoutManager_idl__
#ifndef __com_sun_star_uno_XInterface_idl__
#include <com/sun/star/uno/XInterface.idl>
#endif
#ifndef __com_sun_star_frame_XFrame_idl__
#include <com/sun/star/frame/XFrame.idl>
#endif
#ifndef __com_sun_star_awt_Point_idl__
#include <com/sun/star/awt/Point.idl>
#endif
#ifndef __com_sun_star_awt_Size_idl__
#include <com/sun/star/awt/Size.idl>
#endif
#ifndef __com_sun_star_awt_XWindow_idl__
#include <com/sun/star/awt/XWindow.idl>
#endif
#ifndef __com_sun_star_ui_XUIElement_idl__
#include <com/sun/star/ui/XUIElement.idl>
#endif
#ifndef __com_sun_star_ui_DockingArea_idl__
#include <com/sun/star/ui/DockingArea.idl>
#endif
#ifndef __com_sun_star_ui_XDockingAreaAcceptor_idl__
#include <com/sun/star/ui/XDockingAreaAcceptor.idl>
#endif
//=============================================================================
module com { module sun { module star { module frame {
//=============================================================================
/** central interface to query for, create, destroy and manipulate user
interface elements which are bound to a layout manager.
<p>
Every user interface element which is controlled by a layout manager has
a unique identifier called resource URL.
A resourcce URL must meet the following syntax:
"private:resource/$type/$name". It is only allowed to use ascii characters
for type and name.
Currently the following user interface element types are defined:
<ul>
<li><b>menubar</b>A configurable user interface element representing
a menu bar.</li>
<li><b>popupmenu</b>A configurable user interface element representing
a popup menu.</li>
<li><b>toolbar</b>A configurable user interface element a tool
bar.</li>
<li><b>statusbar</b>A configurable user interfave element representing
a status bar.</li>
<li><b>floater</b>A basic user interface element representing a
floating window.</li>
</ul>
@see com::sun::star::ui::UIElementTypes
@see com::sun::star::frame::XFrame
</p>
@since OpenOffice 2.0
*/
published interface XLayoutManager : com::sun::star::uno::XInterface
{
/** attaches a <type scope="com::sun::star::frame">XFrame</type> to a layout manager.
@param Frame
specifies the frame that should be attached to the layout manager
<p>
A layout manager needs a <type scope="com::sun::star::frame">XFrame</type> to be
able to work. Without a it no user interface elements can be created.
</p>
*/
void attachFrame( [in] com::sun::star::frame::XFrame Frame );
/** resets the layout manager and remove all of its internal user interface
elements.
<p>
This call should be handled with care as all user interface elements will
be destroyed and the layout manager is reseted to a state after a
<member>attachFrame</member> has been made. That means an attached frame
which has been set by <member>attachFrame</member> is not released.
The layout manager itself calls reset after a component has been attached
or reattached to a frame.
</p>
*/
void reset();
/** provides the current docking area size of the layout manager.
@return
The <type scope="com::sun::star::awt">Rectangle</type> contains pixel values. The
members of <type scope="com::sun::star::awt">Rectangle</type> are filled as following:
<ul>
<li>X = docking area on left side (in pixel)</li>
<li>Y = docking area on top side (in pixel)</li>
<li>Width = docking area on right side (in pixel)</li>
<li>Height = docking area on bottom side (in pixel)</li>
</ul>
*/
com::sun::star::awt::Rectangle getCurrentDockingArea();
/** retrieves the current docking area acceptor that controls the border space of the frame's
container window.
@return
current docking area acceptor which controls the border space of frame's container window.
<p>
A docking area acceptor retrieved by this method is owned by the layout manager. It is not
allowed to dispose this object, it will be destroyed on reference count!
</p>
*/
com::sun::star::ui::XDockingAreaAcceptor getDockingAreaAcceptor();
/** sets a docking area acceptor that controls the border space of the frame's container window.
@param xDockingAreaAcceptor
a docking area acceptor which controls the border space of frame's container window.
<p>
A docking area acceptor decides if the layout manager can use requested border space for
docking windows. If the acceptor denies the requested space the layout manager automatically
set all docked windows into floating state and will not use this space for docking.<br/>
After setting a docking area acceptor the object is owned by the layout manager. It is not
allowed to dispose this object, it will be destroyed on reference count!
</p>
*/
void setDockingAreaAcceptor( [in] com::sun::star::ui::XDockingAreaAcceptor xDockingAreaAcceptor );
/** creates a new user interface element.
@param ResourceURL
specifies which user interface element should be created. A resourcce URL must meet the following
syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
*/
void createElement( [in] string ResourceURL );
/** destroys a user interface element.
@param ResourceURL
specifies which user interface element should be destroyed. A resourcce URL must meet
the following syntax: "private:resource/$type/$name". It is only allowed to use ascii
characters for type and name.
*/
void destroyElement( [in] string ResourceURL );
/** request to make a user interface element visible if it is not in hidden state.
@param ResourceURL
specifies which user interface element should be made visible. A resourcce URL must
meet the following syntax: "private:resource/$type/$name". It is only allowed to use
ascii characters for type and
name.
@return
returns <TRUE/> if the user interface element could be made visible, otherwise
<FALSE/> will be returned.
<p>
If a user interface element should forced to the visible state
<member>XLayoutManager::showElement</member> should be used. This function can be
used for context dependent elements which should respect a the current visibility
state.
</p>
*/
boolean requestElement( [in] string ResourceURL );
/** retrieves a user interface element which has been created before.
@param ResourceURL
specifies which user interface element should be retrieved. A resourcce URL must meet the following
syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
<p>
The layout manager instance is owner of the returned user interface element. That means that the life time of
the user interface element is controlled by the layout manager. It can be disposed at every time!
</p>
*/
com::sun::star::ui::XUIElement getElement( [in] string ResourceURL );
/** retrieves all user interface elements which are currently instanciated.
@return
a sequence of user interface elements providing <type scope="com::sun::star::ui">XUIElement</type>
interface.
<p>
The layout manager instance is owner of the returned user interface elements. That means that the life time of
the user interface elements is controlled by the layout manager. They can be disposed at every time!
</p>
*/
sequence< com::sun::star::ui::XUIElement > getElements();
/** shows a user interface element.
@param ResourceURL
specifies which user interface element should be shown. A resourcce URL must meet the following
syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
@return
returns <TRUE/> if the user interface element has been shown, otherwise <FALSE/> will be returned.
*/
boolean showElement( [in] string ResourceURL );
/** hides a user interface element.
@param ResourceURL
specifies which user interface element should be hidden. A resourcce URL must meet the following
syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
@return
returns <TRUE/> if the user interface element has been hidden, otherwise <FALSE/> will be returned.
*/
boolean hideElement( [in] string ResourceURL );
/** docks a window based user interface element to a specified docking area.
@param ResourceURL
specifies which user interface element should be docked. A resourcce URL must meet the following
syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
@param DockingArea
specifies on which docking area the window based user interface element should docked.
@param Pos
specifies the position inside the docking area.
@return
returns <TRUE/> if the user interface element has been docked, otherwise <FALSE/> will be returned.
@see com::sun::star::ui::DockingArea
*/
boolean dockWindow( [in] string ResourceURL, [in] com::sun::star::ui::DockingArea DockingArea, [in] com::sun::star::awt::Point Pos );
/** docks all windows which are member of the provided user interface element type.
@param nElementType
specifies which user interface element type should be docked.
@return
returns <TRUE/> if all user interface elements of the requested type could be
docked, otherwise <FALSE/> will be returned.
@see com::sun::star::ui::UIElementType
*/
boolean dockAllWindows( [in] short nElementType );
/** forces a window based user interface element to float.
@param ResourceURL
specifies which user interface element should be float. A resourcce URL must meet the following
syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
@return
returns <TRUE/> if the user interface element has been docked, otherwise <FALSE/> will be returned.
*/
boolean floatWindow( [in] string ResourceURL );
/** locks a window based user interface element if it's in a docked state.
@param ResourceURL
specifies which user interface element should be locked. A resourcce URL must meet the following
syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
@return
returns <TRUE/> if the user interface element has been locked, otherwise <FALSE/> will be returned.
*/
boolean lockWindow( [in] string ResourceURL );
/** unlocks a window based user interface element if it's in a docked state.
@param ResourceURL
specifies which user interface element should be unlocked. A resourcce URL must
meet the following syntax: "private:resource/$type/$name". It is only allowed
to use ascii characters for type and name.
@return
returns <TRUE/> if the user interface element has been unlocked, otherwise
<FALSE/> will be returned.
*/
boolean unlockWindow( [in] string ResourceURL );
/** sets a new size for a window based user interface element.
@param ResourceURL
specifies which user interface element should be resized. A resourcce URL must meet the following
syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
@param Size
specifies the new size in pixel.
<p>
It is up to the layout manager to decide if the user interface element can be resized. The new size can be retrieved
by calling <member>getElementSize</member>.
</p>
*/
void setElementSize( [in] string ResourceURL, [in] com::sun::star::awt::Size Size );
/** sets a new position for a window based user interface element.
@param ResourceURL
specifies which user interface element should be moved. A resourcce URL must meet the following
syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
@param Pos
specifies the new position in pixel.
<p>
It is up to the layout manager to decide if the user interface element can be moved. The new position can be retrieved
by calling <member>getElementPos</member>.
</p>
*/
void setElementPos( [in] string ResourceURL, [in] com::sun::star::awt::Point Pos );
/** sets a new position and size for a window based user interface element.
@param ResourceURL
specifies which user interface element should be moved and resized. A resourcce URL must meet the following
syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
@param Pos
specifies the new position in pixel.
@param Size
specifies the new position in pixel.
<p>
It is up to the layout manager to decide if the user interface element can be moved and resized. The new position and size can
be retrieved by calling <member>getElementPos</member> and <member>getElementSize</member>.
</p>
*/
void setElementPosSize( [in] string ResourceURL, [in] com::sun::star::awt::Point Pos, [in] com::sun::star::awt::Size Size );
/** retrieves the current visibility state of a window based user interface element.
@param ResourceURL
specifies for which user interface element the visibility state should be retrieved. A resource URL must meet
the following syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
@return
<TRUE/> if the user interface element is visible, otherwise <FALSE/>.
*/
boolean isElementVisible( [in] string ResourceURL );
/** retrieves the current floating state of a window based user interface element.
@param ResourceURL
specifies for which user interface element the floating state should be retrieved. A resource URL must meet
the following syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
@return
<TRUE/> if the user interface element is floating, otherwise <FALSE/>.
*/
boolean isElementFloating( [in] string ResourceURL );
/** retrieves the current docking state of a window based user interface element.
@param ResourceURL
specifies for which user interface element the docking state should be retrieved. A resource URL must meet
the following syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
@return
<TRUE/> if the user interface element is docked, otherwise <FALSE/>.
*/
boolean isElementDocked( [in] string ResourceURL );
/** retrieves the current lock state of a window based user interface element.
@param ResourceURL
specifies for which user interface element the lock state should be retrieved. A resource URL must meet
the following syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
@return
<TRUE/> if the user interface element is locked, otherwise <FALSE/>.
*/
boolean isElementLocked( [in] string ResourceURL );
/** retrieves the current size of a window based user interface element.
@param ResourceURL
specifies for which user interface element the current size should be retrieved. A resource URL must meet
the following syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
@return
the size in pixel of the user interface element. A non-window based user interface element provides a zero size.
*/
com::sun::star::awt::Size getElementSize( [in] string ResourceURL );
/** retrieves the current pixel position of a window based user interface element.
@param ResourceURL
specifies for which user interface element the current position should be retrieved. A resource URL must meet
the following syntax: "private:resource/$type/$name". It is only allowed to use ascii characters for type and
name.
@return
the size in pixel of the user interface element. A non-window based user interface element provides a zero size.
*/
com::sun::star::awt::Point getElementPos( [in] string ResourceURL );
/** prohibit all layout updates until unlock is called again.
<p>
This call can be used to speed up the creation process of serveral user interface elements. Otherwise the layout manager
would calculate the layout for every creation.
</p>
*/
void lock();
/** permit layout updates again.
<p>
This function should be called to permit layout updates. The layout manager starts to calculate the new layout after
this call.
</p>
*/
void unlock();
/** forces a complete new layouting of all user interface elements.
*/
void doLayout();
/** sets the layout manager to invisible state and hides all user interface elements.
<p>
A layout manager can be set to invisible state to force it to hide all of its
user interface elements. If another component wants to use the window for its
own user interface elements it can use this function. This function is normally
used to implement inplace editing.
</p>
@param Visible
provide <FALSE/> to make layout manager invisible otherwise this must be
set to <TRUE/>.
*/
void setVisible( [in] boolean Visible );
/** retrieves the visibility state of a layout manager.
<p>
A layout manager can be set to invisible state to force it to hide all of its
user interface elements. If another component wants to use the window for its
own user interface elements it can use this function. This function is normally
used to implement inplace editing.
</p>
*/
boolean isVisible();
};
}; }; }; };
#endif