Files
libreoffice/toolkit/source/layout/root.hxx
Kurt Zenker 672dde158f INTEGRATION: CWS layout_DEV300 (1.1.2); FILE ADDED
2008/02/08 18:44:44 jcn 1.1.2.1: Initial toolkit import from ee9a2fcc29d7e2f01cc80ef7c13bf7bc7d55ae7e.

    layout/source/awt -> toolkit/source/awt
    layout/source/core -> toolkit/source/layout
    layout/source/wrapper -> toolkit/source/vclcompat
    layout/inc/layout -> toolkit/inc/layout
    layout/source/inc -> toolkit/inc/layout
    layout/workben -> toolkit/workben/layout

That's ooo-build trunk r11539 @ ooh680-m5/src680-m245.
2008-03-06 10:48:47 +00:00

128 lines
4.8 KiB
C++

#ifndef CORE_ROOT_HXX
#define CORE_ROOT_HXX
#include <hash_map>
#include <com/sun/star/awt/XLayoutRoot.hpp>
#include <com/sun/star/awt/XToolkit.hpp>
#include <com/sun/star/awt/XWindow.hpp>
#include <com/sun/star/io/XInputStream.hpp>
#include <com/sun/star/lang/XComponent.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
#include <cppuhelper/implbase3.hxx>
#include <cppuhelper/interfacecontainer.h>
#include "proplist.hxx"
namespace layoutimpl
{
namespace css = ::com::sun::star;
css::uno::Reference< css::io::XInputStream >
getFileAsStream( const css::uno::Reference< css::lang::XMultiServiceFactory > &xFactory,
const rtl::OUString &rName );
/* Interface generation code -- to hook to a parser. */
/*
TODO: (ricardo) I think we should cut on LayoutRoot, stripping out its widget
proxy interface (just make it return the root widget). Would even make it easier
if there was interest to support multiple toplevel widgets in the same file.
We also need to make sure the code gets diposed well... There is no need to keep
these objects around after initialization...
*/
class LayoutWidget;
class LayoutRoot : public ::cppu::WeakImplHelper3<
css::awt::XLayoutRoot,
css::lang::XInitialization,
css::lang::XComponent>
{
protected:
::osl::Mutex maMutex;
typedef std::hash_map< rtl::OUString,
css::uno::Reference< css::awt::XLayoutConstrains >,
::rtl::OUStringHash > ItemHash;
ItemHash maItems;
sal_Bool mbDisposed;
css::uno::Reference< css::lang::XMultiServiceFactory > mxFactory;
::cppu::OInterfaceContainerHelper *mpListeners;
css::uno::Reference< css::awt::XWindow > mxWindow;
css::uno::Reference< css::awt::XLayoutContainer > mxContainer;
css::uno::Reference< css::awt::XToolkit > mxToolkit;
LayoutWidget *mpToplevel;
css::uno::Reference< css::awt::XLayoutUnit > mxLayoutUnit;
public:
LayoutRoot( const css::uno::Reference< css::lang::XMultiServiceFactory >& xFactory );
virtual ~LayoutRoot();
void addItem( const rtl::OUString &rName,
const css::uno::Reference< css::awt::XLayoutConstrains > &xRef );
void setWindow( css::uno::Reference< css::awt::XLayoutConstrains > xPeer )
{
mxWindow = css::uno::Reference< css::awt::XWindow >( xPeer, css::uno::UNO_QUERY );
}
// get XLayoutContainer
virtual css::uno::Reference< css::awt::XLayoutContainer > getLayoutContainer() throw (css::uno::RuntimeException);
// XInitialization
virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) throw (css::uno::Exception, css::uno::RuntimeException);
// XNameAccess
virtual css::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw (css::container::NoSuchElementException, css::lang::WrappedTargetException, css::uno::RuntimeException);
virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() throw (css::uno::RuntimeException);
virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw (css::uno::RuntimeException);
virtual css::uno::Type SAL_CALL getElementType() throw (css::uno::RuntimeException);
virtual sal_Bool SAL_CALL hasElements() throw (css::uno::RuntimeException);
// XComponent
virtual void SAL_CALL dispose() throw (css::uno::RuntimeException);
virtual void SAL_CALL addEventListener( const css::uno::Reference< css::lang::XEventListener >& xListener ) throw (css::uno::RuntimeException);
virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::lang::XEventListener >& aListener ) throw (css::uno::RuntimeException);
// generator
virtual LayoutWidget *create( rtl::OUString id, const rtl::OUString unoName, long attrbs, css::uno::Reference< css::awt::XLayoutContainer > xParent );
};
class LayoutWidget
{
friend class LayoutRoot;
public:
LayoutWidget() {}
LayoutWidget( css::uno::Reference< css::awt::XToolkit > xToolkit,
css::uno::Reference< css::awt::XLayoutContainer > xToplevel,
rtl::OUString unoName, long attrbs );
virtual ~LayoutWidget();
virtual void setProperties( const PropList &rProps );
virtual void setProperty( rtl::OUString const& attr, rtl::OUString const& value );
virtual bool addChild( LayoutWidget *pChild );
virtual void setChildProperties( LayoutWidget *pChild, const PropList &rProps );
inline css::uno::Reference< css::awt::XLayoutConstrains > getPeer()
{ return mxWidget; }
inline css::uno::Reference< css::awt::XLayoutContainer > getContainer()
{ return mxContainer; }
protected:
css::uno::Reference< css::awt::XLayoutConstrains > mxWidget;
css::uno::Reference< css::awt::XLayoutContainer > mxContainer;
};
} // namespace layoutimpl
#endif // CORE_ROOT_HXX