diff options
Diffstat (limited to 'configmgr/source/api2/confignotifier.hxx')
-rw-r--r-- | configmgr/source/api2/confignotifier.hxx | 200 |
1 files changed, 0 insertions, 200 deletions
diff --git a/configmgr/source/api2/confignotifier.hxx b/configmgr/source/api2/confignotifier.hxx deleted file mode 100644 index 2c0507e7304c..000000000000 --- a/configmgr/source/api2/confignotifier.hxx +++ /dev/null @@ -1,200 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: confignotifier.hxx,v $ - * $Revision: 1.11 $ - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef CONFIGMGR_CONFIGNOTIFIER_HXX_ -#define CONFIGMGR_CONFIGNOTIFIER_HXX_ - -#include "configexcept.hxx" -#include "configpath.hxx" -#include "datalock.hxx" -#include "utility.hxx" -#include <boost/utility.hpp> -#include <vos/ref.hxx> -#include <com/sun/star/lang/DisposedException.hpp> -#include <com/sun/star/uno/Sequence.hxx> - -namespace com { namespace sun { namespace star { - namespace beans - { - class XPropertyChangeListener; - class XVetoableChangeListener; - class XPropertiesChangeListener; - class PropertyVetoException; - } - namespace lang - { - class XEventListener; - struct EventObject; - } - namespace container { class XContainerListener; } - namespace util { class XChangesListener; } - namespace uno { class RuntimeException; } -} } } -namespace osl { class Mutex; } - -namespace configmgr -{ - namespace configuration - { -// --------------------------------------------------------------------------------------------------- - class NodeRef; - class ValueRef; - class NodeChange; - class NodeChanges; - } -// --------------------------------------------------------------------------------------------------- - namespace configapi - { -// --------------------------------------------------------------------------------------------------- - class Broadcaster; - class NotifierImpl; - class ApiTreeImpl; - - namespace css = ::com::sun::star; -// --------------------------------------------------------------------------------------------------- - /// manages collections of event listeners observing a config tree, thread-safe - class Notifier - { - friend class Broadcaster; - friend class BroadcasterHelper; - vos::ORef<NotifierImpl> m_aImpl; - ApiTreeImpl const*const m_pTree; - public: - /// construct this around the given Implementation, for the given tree - explicit Notifier(vos::ORef<NotifierImpl> const & aImpl, ApiTreeImpl const* pTree); - Notifier(Notifier const& aOther); - ~Notifier(); - - // --------------------------------------------------------------------------------------------------- - /// create a broadcaster for a single change (either local or (possibly) nested) - Broadcaster makeBroadcaster(configuration::NodeChange const& aChange, bool bLocal) const; - /// create a broadcaster for a collection of changes (either local or (possibly) nested) - Broadcaster makeBroadcaster(configuration::NodeChanges const& aChange, bool bLocal) const; - - // --------------------------------------------------------------------------------------------------- - bool checkAlive(uno::XInterface* pObject) const throw(css::lang::DisposedException); - - // --------------------------------------------------------------------------------------------------- - /// Add a <type scope='com::sun::star::lang'>XEventListener</type> observing <var>aNode</var>. - void add(configuration::NodeRef const& aNode, uno::Reference< css::lang::XEventListener > const& xListener) const; - - /// Add a <type scope='com::sun::star::container'>XContainerListener</type> observing <var>aNode</var>. - void add(configuration::NodeRef const& aNode, uno::Reference< css::container::XContainerListener > const& xListener) const; - - /// Add a <type scope='com::sun::star::util'>XChangesListener</type> observing <var>aNode</var> and its descendants. - void add(configuration::NodeRef const& aNode, uno::Reference< css::util::XChangesListener > const& xListener) const; - - /// Add a <type scope='com::sun::star::beans'>XPropertyChangeListener</type> observing all children of <var>aNode</var>. - void addForAll(configuration::NodeRef const& aNode, uno::Reference< css::beans::XPropertyChangeListener > const& xListener) const; - /// Add a <type scope='com::sun::star::beans'>XPropertyChangeListener</type> observing only the child named <var>aName</var> of <var>aNode</var>. - void addForOne(configuration::NodeRef const& aNode, uno::Reference< css::beans::XPropertyChangeListener > const& xListener, rtl::OUString const& aName) const; - /// Add a <type scope='com::sun::star::beans'>XVetoableChangeListener</type> constraining all children of <var>aNode</var>. - void addForAll(configuration::NodeRef const& aNode, uno::Reference< css::beans::XVetoableChangeListener > const& xListener) const; - /// Add a <type scope='com::sun::star::beans'>XVetoableChangeListener</type> constraining only the child named <var>aName</var> of <var>aNode</var>. - void addForOne(configuration::NodeRef const& aNode, uno::Reference< css::beans::XVetoableChangeListener > const& xListener, rtl::OUString const& aName) const; - - /** Add a <type scope='com::sun::star::beans'>XPropertiesChangeListener</type> - observing the properties of <var>aNode</var> (optimally only those given by <var>aNames</var>. - */ - void add(configuration::NodeRef const& aNode, uno::Reference< css::beans::XPropertiesChangeListener > const& xListener, uno::Sequence<rtl::OUString> const& aNames) const; - - // --------------------------------------------------------------------------------------------------- - /// Remove a <type scope='com::sun::star::lang'>XEventListener</type> observing <var>aNode</var>. - void remove(configuration::NodeRef const& aNode, uno::Reference< css::lang::XEventListener > const& xListener) const; - - /// Remove a <type scope='com::sun::star::container'>XContainerListener</type> observing <var>aNode</var>. - void remove(configuration::NodeRef const& aNode, uno::Reference< css::container::XContainerListener > const& xListener) const; - - /// Remove a <type scope='com::sun::star::util'>XChangesListener</type> observing <var>aNode</var> and its descendants. - void remove(configuration::NodeRef const& aNode, uno::Reference< css::util::XChangesListener > const& xListener) const; - - /// Remove a <type scope='com::sun::star::beans'>XPropertyChangeListener</type> observing <var>aNode</var>. - void removeForAll(configuration::NodeRef const& aNode, uno::Reference< css::beans::XPropertyChangeListener > const& xListener) const; - /// Remove a <type scope='com::sun::star::beans'>XPropertyChangeListener</type> observing the child named <var>aName</var> of <var>aNode</var>. - void removeForOne(configuration::NodeRef const& aNode, uno::Reference< css::beans::XPropertyChangeListener > const& xListener, rtl::OUString const& aName) const; - /// Remove a <type scope='com::sun::star::beans'>XVetoableChangeListener</type> constraining <var>aNode</var>. - void removeForAll(configuration::NodeRef const& aNode, uno::Reference< css::beans::XVetoableChangeListener > const& xListener) const; - /// Remove a <type scope='com::sun::star::beans'>XVetoableChangeListener</type> constraining the child named <var>aName</var> of <var>aNode</var>. - void removeForOne(configuration::NodeRef const& aNode, uno::Reference< css::beans::XVetoableChangeListener > const& xListener, rtl::OUString const& aName) const; - - /// Remove a <type scope='com::sun::star::beans'>XVetoableChangeListener</type> constraining <var>aNode</var>. - void remove(configuration::NodeRef const& aNode, uno::Reference< css::beans::XVetoableChangeListener > const& xListener) const; - /** Remove a <type scope='com::sun::star::beans'>XPropertiesChangeListener</type> - observing any properties of <var>aNode</var>. - */ - void remove(configuration::NodeRef const& aNode, uno::Reference< css::beans::XPropertiesChangeListener > const& xListener) const; - // --------------------------------------------------------------------------------------------------- - private: - void operator=(Notifier const& aOther); - }; -// --------------------------------------------------------------------------------------------------- - -// Thin Wrappers around Notifiers: Provide guarding and convenient access - // Guarding and locking implementations - class NodeAccess; - class TreeElement; - - /// guards a NodeAccess; provides a simple lock for non-data access, does not check for disposed state - class DisposeGuardImpl: private boost::noncopyable - { - public: - DisposeGuardImpl(Notifier const& rNotifier) throw(); - ~DisposeGuardImpl() throw (); - }; - - /// wraps a Notifier (from a node or tree); provides a simple lock for notifier access, does not check for disposed state - class GuardedNotifier - { - UnoApiLock m_aLock; - Notifier m_aNotifier; - DisposeGuardImpl m_aImpl; - public: - GuardedNotifier(NodeAccess& rNode) throw(); - public: - Notifier const& get() const { return m_aNotifier; } - - Notifier const& operator *() const { return get(); } - Notifier const* operator->() const { return &get(); } - }; - - /// guards a Node or Tree provides a simple lock for non-data access, does (!) check for disposed state - class DisposeGuard - { - DisposeGuardImpl m_aImpl; - UnoApiLock m_aLock; - public: - DisposeGuard(NodeAccess& rNode) throw(css::lang::DisposedException); - }; - -// --------------------------------------------------------------------------------------------------- - } -} - -#endif // CONFIGMGR_CONFIGNOTIFIER_HXX_ |