blob: de74b58c46f46f1c3542908709ab12d4f2f0e996 [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 _TPLCOMP_HXX
#define _TPLCOMP_HXX
#include <osl/mutex.hxx>
//ASDBG #ifndef _USR_UNO_HXX
//ASDBG #include <usr/uno.hxx>
//ASDBG #endif
//ASDBG #ifndef _USR_LSTCOMP_HXX
//ASDBG #include <usr/iterhlp.hxx>
//ASDBG #endif
//ASDBG #ifndef _USR_SERVICES_HXX
//ASDBG #include <usr/services.hxx>
//ASDBG #endif
#include <com/sun/star/chaos/XCommandExecutor.hpp>
#include <com/sun/star/chaos/XStatusCallback.hpp>
#include <com/sun/star/chaos/UnknownCommandException.hpp>
#include <com/sun/star/chaos/StatusCallbackEvent.hpp>
#include <com/sun/star/chaos/XURLContent.hpp>
#include <com/sun/star/chaos/XExplorerExchange.hpp>
#include <com/sun/star/beans/PropertyValues.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/beans/PropertyState.hpp>
#include <com/sun/star/beans/XPropertySetInfo.hpp>
#include <com/sun/star/beans/XMultiPropertySet.hpp>
#include <com/sun/star/beans/XFastPropertySet.hpp>
#include <com/sun/star/beans/XVetoableChangeListener.hpp>
#include <com/sun/star/beans/XPropertyState.hpp>
#include <com/sun/star/beans/XPropertyStateChangeListener.hpp>
#include <com/sun/star/beans/PropertyAttribute.hpp>
#include <com/sun/star/beans/XPropertiesChangeListener.hpp>
#include <com/sun/star/beans/XPropertyChangeListener.hpp>
#include <com/sun/star/beans/XPropertyAccess.hpp>
#include <com/sun/star/beans/XPropertyContainer.hpp>
#include <com/sun/star/beans/PropertyStateChangeEvent.hpp>
#include <com/sun/star/beans/PropertyChangeEvent.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <cppuhelper/weak.hxx>
#include <cppuhelper/interfacecontainer.hxx>
class CntAnchor;
class TplAnchorListener;
// -----------------
// - TplComponent -
// -----------------
class TplComponent : public ::com::sun::star::chaos::XURLContent, public ::com::sun::star::chaos::XCommandExecutor,
public ::com::sun::star::beans::XPropertySet, public ::com::sun::star::chaos::XExplorerExchange,
public ::cppu::OWeakObject, public ::com::sun::star::lang::XServiceInfo
{
private:
void HandleNewEvt( const ::rtl::OUString& rCommand,
const ::com::sun::star::uno::Any& rAny );
void CreatePopupMenu( ::com::sun::star::uno::Any& rAny ) const;
protected:
::rtl::OUString maURL;
::rtl::OUString maName;
::osl::Mutex aMutex;
::cppu::OInterfaceContainerHelper maListeners;
TplAnchorListener* mpListener;
short mnOpenMode;
public:
SFX_DECL_XINTERFACE_XTYPEPROVIDER_XSERVICEINFO
TplComponent();
~TplComponent();
// interface ::com::sun::star::ucb::XContent
virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent() throw ( ::com::sun::star::uno::RuntimeException )
{ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > aRef; return aRef; }
virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & Parent ) throw ( ::com::sun::star::uno::RuntimeException )
{}
// interface ::com::sun::star::chaos::XURLContent
virtual ::rtl::OUString SAL_CALL getURL() throw ( ::com::sun::star::uno::RuntimeException )
{ return maURL; }
virtual sal_Bool SAL_CALL initialize( const ::com::sun::star::uno::Reference< ::com::sun::star::chaos::XURLContent > & aParent, const ::rtl::OUString& aURL ) throw ( ::com::sun::star::uno::RuntimeException );
// interface ::com::sun::star::chaos::XCommandExecutor
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL queryCommands() throw ( ::com::sun::star::uno::RuntimeException );
virtual void SAL_CALL cancel( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & rCommandId ) throw ( ::com::sun::star::uno::RuntimeException )
{}
virtual void SAL_CALL execute( const ::rtl::OUString& rCommand, const ::com::sun::star::uno::Any& rArgs,
const ::com::sun::star::uno::Reference< ::com::sun::star::chaos::XStatusCallback > & rCallback ) throw ( ::com::sun::star::uno::RuntimeException );
// interface ::com::sun::star::beans::XPropertySet
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw ( ::com::sun::star::uno::RuntimeException );
virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw ( ::com::sun::star::uno::RuntimeException );
virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& aPropertyName ) throw ( ::com::sun::star::uno::RuntimeException );
virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName,
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & aListener ) throw ( ::com::sun::star::uno::RuntimeException );
virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName,
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & aListener ) throw ( ::com::sun::star::uno::RuntimeException );
virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& aPropertyName,
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & aListener ) throw ( ::com::sun::star::uno::RuntimeException );
virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& aPropertyName,
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & aListener ) throw ( ::com::sun::star::uno::RuntimeException );
// interface ::com::sun::star::chaos::XExplorerExchange
virtual ::com::sun::star::uno::Any SAL_CALL createDataObject( sal_uInt16& nSourceOptions ) throw ( ::com::sun::star::uno::RuntimeException );
virtual sal_uInt16 SAL_CALL insertDataObject( const ::com::sun::star::uno::Any& pSotDataObjectPtr,
sal_uInt16 nUserAction,
sal_uInt16 nSourceOptions ) throw ( ::com::sun::star::uno::RuntimeException );
virtual sal_Bool SAL_CALL queryInsertDataObject( const ::com::sun::star::uno::Any& pSotDataObjectPtr,
sal_uInt16 nUserAction,
sal_uInt16 nSourceOptions,
sal_uInt16& nResultingAction,
sal_uInt16& nDefaultAction ) throw ( ::com::sun::star::uno::RuntimeException );
// -------------------------------------------------------------
void CreateNewChild( CntAnchor* pAnchor,
const String& rTitle );
void RemoveChild( CntAnchor* pAnchor );
void StopListening( CntAnchor* pAnchor );
void HandleOpenEvt();
};
// ------------------------
// - TplContentsComponent -
// ------------------------
class TplContentsListener;
class TplContentsComponent : public TplComponent
{
private:
::com::sun::star::uno::Reference< ::com::sun::star::chaos::XURLContent > _xParent;
TplContentsListener* _pListener;
SvDataObjectRef _xObject;
sal_uInt16 _nLayout;
void HandleOpenEvt( const ::com::sun::star::uno::Reference< ::com::sun::star::chaos::XStatusCallback > & rJob,
const ::com::sun::star::chaos::StatusCallbackEvent& rEvt );
void HandleNewEvt( const ::rtl::OUString& rCommand,
const ::com::sun::star::uno::Any& rAny );
void HandleInitEvt();
void CreateFileName( String& rName,
String& rDirURL );
void CreateNewTpl( const String& rFilter,
const String& rParentDir,
const String& rFileName,
const String& rDocName );
protected:
void CreatePopupMenu( ::com::sun::star::uno::Any& rAny ) const;
public:
SFX_DECL_XINTERFACE_XTYPEPROVIDER_XSERVICEINFO
TplContentsComponent();
~TplContentsComponent();
virtual sal_Bool SAL_CALL initialize( const ::com::sun::star::uno::Reference< ::com::sun::star::chaos::XURLContent > & aParent, const ::rtl::OUString& aURL ) throw ( ::com::sun::star::uno::RuntimeException );
// interface ::com::sun::star::chaos::XCommandExecutor
virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL queryCommands() throw ( ::com::sun::star::uno::RuntimeException );
virtual void SAL_CALL execute( const ::rtl::OUString& rCommand, const ::com::sun::star::uno::Any& rArgs,
const ::com::sun::star::uno::Reference< ::com::sun::star::chaos::XStatusCallback > & rCallback ) throw ( ::com::sun::star::uno::RuntimeException );
// interface ::com::sun::star::beans::XPropertySet
virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw ( ::com::sun::star::uno::RuntimeException );
virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& aPropertyName ) throw ( ::com::sun::star::uno::RuntimeException );
virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw ( ::com::sun::star::uno::RuntimeException );
// interface ::com::sun::star::chaos::XExplorerExchange
virtual ::com::sun::star::uno::Any SAL_CALL createDataObject( sal_uInt16& nSourceOptions ) throw ( ::com::sun::star::uno::RuntimeException );
virtual sal_uInt16 SAL_CALL insertDataObject( const ::com::sun::star::uno::Any& pSotDataObjectPtr,
sal_uInt16 nUserAction,
sal_uInt16 nSourceOptions ) throw ( ::com::sun::star::uno::RuntimeException );
virtual sal_Bool SAL_CALL queryInsertDataObject( const ::com::sun::star::uno::Any& pSotDataObjectPtr,
sal_uInt16 nUserAction,
sal_uInt16 nSourceOptions,
sal_uInt16& nResultingAction,
sal_uInt16& nDefaultAction ) throw ( ::com::sun::star::uno::RuntimeException );
// -------------------------------------------------------------
void CreateNewChild( CntAnchor* pAnchor );
void HandleDeleteEvt();
void SetURL( const ::rtl::OUString& rURL);
void SetName( const ::rtl::OUString& rNewName );
};
#endif