/* -*- 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_awt_XWindow_idl__
#define __com_sun_star_awt_XWindow_idl__

#include <com/sun/star/lang/XComponent.idl>

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

#include <com/sun/star/awt/XWindowListener.idl>

#include <com/sun/star/awt/XFocusListener.idl>

#include <com/sun/star/awt/XKeyListener.idl>

#include <com/sun/star/awt/XMouseListener.idl>

#include <com/sun/star/awt/XMouseMotionListener.idl>

#include <com/sun/star/awt/XPaintListener.idl>



 module com {  module sun {  module star {  module awt {


/** specifies the basic operations for a window component.

    <p>A window is a rectangular region on an output device with
    its own position, size, and internal coordinate system.
    A window is used for displaying data. In addition, the window
    receives events from the user.</p>
 */
published interface XWindow: com::sun::star::lang::XComponent
{

    /** sets the outer bounds of the window.

        @param X
        the x-coordinate of the window.

        @param Y
        the y-coordinate of the window.

        @param Width
        the width of the window.

        @param Height
        the height of the window.

        @param Flags
        Flags are of type PosSize and specify, which parameters
        are taken into account when setting the outer bounds of the window.
    */
    void setPosSize( [in] long X,
             [in] long Y,
             [in] long Width,
             [in] long Height,
             [in] short Flags );


    /** returns the outer bounds of the window.
     */
    com::sun::star::awt::Rectangle getPosSize();


    /** shows or hides the window depending on the parameter.
     */
    void setVisible( [in] boolean Visible );


    /** enables or disables the window depending on the parameter.
     */
    void setEnable( [in] boolean Enable );


    /** sets the focus to the window.
     */
    void setFocus();


    /** adds a window listener to the object.

        @param xListener
            the listener to add. If this listener also supports the XWindowListener2 interface,
            it will receive the additional events declared in XWindowListener2.
     */
    void addWindowListener( [in] com::sun::star::awt::XWindowListener xListener );


    /** removes the specified window listener from the listener list.
     */
    void removeWindowListener( [in] com::sun::star::awt::XWindowListener xListener );


    /** adds a focus listener to the object.
     */
    void addFocusListener( [in] com::sun::star::awt::XFocusListener xListener );


    /** removes the specified focus listener from the listener list.
     */
    void removeFocusListener( [in] com::sun::star::awt::XFocusListener xListener );


    /** adds a key listener to the object.
     */
    void addKeyListener( [in] com::sun::star::awt::XKeyListener xListener );


    /** removes the specified key listener from the listener list.
     */
    void removeKeyListener( [in] com::sun::star::awt::XKeyListener xListener );


    /** adds a mouse listener to the object.
     */
    void addMouseListener( [in] com::sun::star::awt::XMouseListener xListener );


    /** removes the specified mouse listener from the listener list.
     */
    void removeMouseListener( [in] com::sun::star::awt::XMouseListener xListener );


    /** adds a mouse motion listener to the object.
     */
    void addMouseMotionListener( [in] com::sun::star::awt::XMouseMotionListener xListener );


    /** removes the specified mouse motion listener from the listener list.
     */
    void removeMouseMotionListener( [in] com::sun::star::awt::XMouseMotionListener xListener );


    /** adds a paint listener to the object.
     */
    void addPaintListener( [in] com::sun::star::awt::XPaintListener xListener );


    /** removes the specified paint listener from the listener list.
     */
    void removePaintListener( [in] com::sun::star::awt::XPaintListener xListener );

};


}; }; }; };

#endif

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