remove unused GSOC 2005 "Tabbed Document Windows for OOo"
this was #i54847# Change-Id: I312e3ea9b123976e9929f6601a931ff8a108d7b3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87113 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
This commit is contained in:
parent
9cd35a2896
commit
d4cfc4d628
16 changed files with 0 additions and 1286 deletions
|
@ -310,10 +310,6 @@ fpicker/source/office/iodlg.hxx:228
|
|||
void SvtFileDialog::displayIOException(const class rtl::OUString &,enum com::sun::star::ucb::IOErrorCode)
|
||||
enum com::sun::star::ucb::IOErrorCode _eCode
|
||||
5
|
||||
framework/inc/tabwin/tabwindow.hxx:142
|
||||
void framework::TabWindow::implts_SendNotification(enum framework::TabWindow::Notification,int,const class com::sun::star::uno::Sequence<struct com::sun::star::beans::NamedValue> &) const
|
||||
enum framework::TabWindow::Notification eNotify
|
||||
2
|
||||
framework/inc/uielement/macrosmenucontroller.hxx:63
|
||||
void framework::MacrosMenuController::addScriptItems(class PopupMenu *,unsigned short)
|
||||
unsigned short startItemId
|
||||
|
|
|
@ -154,8 +154,6 @@ editeng/inc/edtspell.hxx:105
|
|||
class __gnu_debug::_Safe_iterator<class __gnu_cxx::__normal_iterator<const struct editeng::MisspellRange *, class std::__cxx1998::vector<struct editeng::MisspellRange, class std::allocator<struct editeng::MisspellRange> > >, class std::__debug::vector<struct editeng::MisspellRange, class std::allocator<struct editeng::MisspellRange> >, struct std::random_access_iterator_tag> WrongList::end() const
|
||||
extensions/source/scanner/scanner.hxx:85
|
||||
void ScannerManager::SetData(void *)
|
||||
framework/inc/tabwin/tabwindow.hxx:64
|
||||
void framework::TabWindow::impl_initService()
|
||||
hwpfilter/source/mzstring.h:99
|
||||
class MzString & MzString::operator<<(unsigned char)
|
||||
hwpfilter/source/mzstring.h:101
|
||||
|
|
|
@ -32,7 +32,6 @@ blacklist:
|
|||
framework/inc/services/layoutmanager.hxx:
|
||||
# Don't propose hxx -> h change in URE libs
|
||||
- cppuhelper/interfacecontainer.hxx
|
||||
framework/inc/tabwin/tabwindow.hxx:
|
||||
# Don't propose hxx -> h change in URE libs
|
||||
- cppuhelper/interfacecontainer.hxx
|
||||
framework/inc/uielement/statusbarmanager.hxx:
|
||||
|
|
|
@ -54,8 +54,6 @@ $(eval $(call gb_Library_add_exception_objects,fwm,\
|
|||
framework/source/jobs/helponstartup \
|
||||
framework/source/jobs/shelljob \
|
||||
framework/source/register/register3rdcomponents \
|
||||
framework/source/tabwin/tabwindow \
|
||||
framework/source/tabwin/tabwinfactory \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
|
|
@ -31,8 +31,6 @@ namespace framework{
|
|||
#define SERVICENAME_JOB "com.sun.star.task.Job"
|
||||
#define SERVICENAME_PROTOCOLHANDLER "com.sun.star.frame.ProtocolHandler"
|
||||
#define SERVICENAME_POPUPMENUCONTROLLER "com.sun.star.frame.PopupMenuController"
|
||||
#define SERVICENAME_TABWINFACTORY "com.sun.star.frame.TabWindowFactory"
|
||||
#define SERVICENAME_TABWINDOW "com.sun.star.frame.TabWindow"
|
||||
#define SERVICENAME_STRINGABBREVIATION "com.sun.star.util.UriAbbreviation"
|
||||
|
||||
// used implementationnames by framework
|
||||
|
@ -56,8 +54,6 @@ namespace framework{
|
|||
#define IMPLEMENTATIONNAME_HELPONSTARTUP "com.sun.star.comp.framework.HelpOnStartup"
|
||||
#define IMPLEMENTATIONNAME_SHELLJOB "com.sun.star.comp.framework.ShellJob"
|
||||
#define IMPLEMENTATIONNAME_FWK_TASKCREATOR "com.sun.star.comp.framework.TaskCreator"
|
||||
#define IMPLEMENTATIONNAME_TABWINFACTORY "com.sun.star.comp.framework.TabWindowFactory"
|
||||
#define IMPLEMENTATIONNAME_TABWINDOW "com.sun.star.comp.framework.TabWindow"
|
||||
#define IMPLEMENTATIONNAME_SYSTEMEXEC "com.sun.star.comp.framework.SystemExecute"
|
||||
#define IMPLEMENTATIONNAME_URIABBREVIATION "com.sun.star.comp.framework.UriAbbreviation"
|
||||
#define IMPLEMENTATIONNAME_POPUPMENUDISPATCHER "com.sun.star.comp.framework.PopupMenuControllerDispatcher"
|
||||
|
|
|
@ -1,156 +0,0 @@
|
|||
/* -*- 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 INCLUDED_FRAMEWORK_INC_TABWIN_TABWINDOW_HXX
|
||||
#define INCLUDED_FRAMEWORK_INC_TABWIN_TABWINDOW_HXX
|
||||
|
||||
#include <macros/xinterface.hxx>
|
||||
#include <macros/xtypeprovider.hxx>
|
||||
#include <macros/xserviceinfo.hxx>
|
||||
|
||||
#include <com/sun/star/lang/XServiceInfo.hpp>
|
||||
#include <com/sun/star/lang/XTypeProvider.hpp>
|
||||
#include <com/sun/star/lang/XInitialization.hpp>
|
||||
#include <com/sun/star/awt/XWindow.hpp>
|
||||
#include <com/sun/star/awt/XTopWindow.hpp>
|
||||
#include <com/sun/star/lang/XComponent.hpp>
|
||||
#include <com/sun/star/awt/XSimpleTabController.hpp>
|
||||
#include <com/sun/star/awt/XTabListener.hpp>
|
||||
|
||||
#include <cppuhelper/basemutex.hxx>
|
||||
#include <cppuhelper/propshlp.hxx>
|
||||
#include <cppuhelper/interfacecontainer.hxx>
|
||||
#include <cppuhelper/weak.hxx>
|
||||
#include <rtl/ustring.hxx>
|
||||
#include <vcl/tabctrl.hxx>
|
||||
|
||||
namespace framework
|
||||
{
|
||||
|
||||
class TabWindow final : public css::lang::XTypeProvider ,
|
||||
public css::lang::XServiceInfo ,
|
||||
public css::lang::XInitialization ,
|
||||
public css::lang::XComponent ,
|
||||
public css::awt::XWindowListener ,
|
||||
public css::awt::XTopWindowListener ,
|
||||
public css::awt::XSimpleTabController ,
|
||||
private cppu::BaseMutex,
|
||||
public ::cppu::OBroadcastHelper ,
|
||||
public ::cppu::OPropertySetHelper , // => XPropertySet / XFastPropertySet / XMultiPropertySet
|
||||
public ::cppu::OWeakObject
|
||||
{
|
||||
public:
|
||||
TabWindow( const css::uno::Reference< css::uno::XComponentContext >& xContext );
|
||||
virtual ~TabWindow() override;
|
||||
|
||||
// XInterface, XTypeProvider, XServiceInfo
|
||||
FWK_DECLARE_XINTERFACE
|
||||
DECLARE_XSERVICEINFO_NOFACTORY
|
||||
FWK_DECLARE_XTYPEPROVIDER
|
||||
|
||||
using ::cppu::OPropertySetHelper::disposing;
|
||||
using ::cppu::OPropertySetHelper::getFastPropertyValue;
|
||||
|
||||
// XInitialization
|
||||
virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) override;
|
||||
|
||||
// XComponent
|
||||
virtual void SAL_CALL dispose() override;
|
||||
virtual void SAL_CALL addEventListener( const css::uno::Reference< css::lang::XEventListener >& xListener ) override;
|
||||
virtual void SAL_CALL removeEventListener( const css::uno::Reference< css::lang::XEventListener >& aListener ) override;
|
||||
|
||||
// XSimpleTabController
|
||||
virtual ::sal_Int32 SAL_CALL insertTab() override;
|
||||
virtual void SAL_CALL removeTab( ::sal_Int32 ID ) override;
|
||||
virtual void SAL_CALL setTabProps( ::sal_Int32 ID, const css::uno::Sequence< css::beans::NamedValue >& Properties ) override;
|
||||
virtual css::uno::Sequence< css::beans::NamedValue > SAL_CALL getTabProps( ::sal_Int32 ID ) override;
|
||||
virtual void SAL_CALL activateTab( ::sal_Int32 ID ) override;
|
||||
virtual ::sal_Int32 SAL_CALL getActiveTabID( ) override;
|
||||
virtual void SAL_CALL addTabListener( const css::uno::Reference< css::awt::XTabListener >& Listener ) override;
|
||||
virtual void SAL_CALL removeTabListener( const css::uno::Reference< css::awt::XTabListener >& Listener ) override;
|
||||
|
||||
// XEventListener
|
||||
virtual void SAL_CALL disposing( const css::lang::EventObject& aEvent ) override;
|
||||
|
||||
// XTopWindowListener
|
||||
virtual void SAL_CALL windowOpened( const css::lang::EventObject& e ) override;
|
||||
virtual void SAL_CALL windowClosing( const css::lang::EventObject& e ) override;
|
||||
virtual void SAL_CALL windowClosed( const css::lang::EventObject& e ) override;
|
||||
virtual void SAL_CALL windowMinimized( const css::lang::EventObject& e ) override;
|
||||
virtual void SAL_CALL windowNormalized( const css::lang::EventObject& e ) override;
|
||||
virtual void SAL_CALL windowActivated( const css::lang::EventObject& e ) override;
|
||||
virtual void SAL_CALL windowDeactivated( const css::lang::EventObject& e ) override;
|
||||
|
||||
// XWindowListener
|
||||
virtual void SAL_CALL windowResized( const css::awt::WindowEvent& aEvent ) override;
|
||||
virtual void SAL_CALL windowMoved( const css::awt::WindowEvent& aEvent ) override;
|
||||
virtual void SAL_CALL windowShown( const css::lang::EventObject& aEvent ) override;
|
||||
virtual void SAL_CALL windowHidden( const css::lang::EventObject& aEvent ) override;
|
||||
|
||||
private:
|
||||
DECL_LINK( Activate, TabControl*, void );
|
||||
DECL_LINK( Deactivate, TabControl*, bool );
|
||||
|
||||
// OPropertySetHelper
|
||||
|
||||
virtual sal_Bool SAL_CALL convertFastPropertyValue( css::uno::Any& aConvertedValue ,
|
||||
css::uno::Any& aOldValue ,
|
||||
sal_Int32 nHandle ,
|
||||
const css::uno::Any& aValue ) override;
|
||||
virtual void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle ,
|
||||
const css::uno::Any& aValue ) override;
|
||||
virtual void SAL_CALL getFastPropertyValue( css::uno::Any& aValue ,
|
||||
sal_Int32 nHandle ) const override;
|
||||
virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper() override;
|
||||
virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override;
|
||||
|
||||
static css::uno::Sequence< css::beans::Property > impl_getStaticPropertyDescriptor();
|
||||
|
||||
enum Notification
|
||||
{
|
||||
NOTIFY_INSERTED,
|
||||
NOTIFY_REMOVED,
|
||||
NOTIFY_CHANGED,
|
||||
NOTIFY_ACTIVATED,
|
||||
NOTIFY_DEACTIVATED
|
||||
};
|
||||
|
||||
void implts_LayoutWindows() const;
|
||||
void impl_SetTitle( const OUString& rTitle );
|
||||
TabControl* impl_GetTabControl( const css::uno::Reference< css::awt::XWindow >& xTabControlWindow ) const;
|
||||
void implts_SendNotification( Notification eNotify, sal_Int32 ID ) const;
|
||||
void implts_SendNotification( Notification eNotify, sal_Int32 ID, const css::uno::Sequence< css::beans::NamedValue >& rSeq ) const;
|
||||
|
||||
bool m_bInitialized : 1,
|
||||
m_bDisposed : 1;
|
||||
sal_Int32 m_nNextTabID;
|
||||
OUString m_aTitlePropName;
|
||||
OUString m_aPosPropName;
|
||||
css::uno::Reference< css::uno::XComponentContext > m_xContext;
|
||||
css::uno::Reference< css::awt::XTopWindow > m_xTopWindow;
|
||||
css::uno::Reference< css::awt::XWindow > m_xContainerWindow;
|
||||
css::uno::Reference< css::awt::XWindow > m_xTabControlWindow;
|
||||
::cppu::OMultiTypeInterfaceContainerHelper m_aListenerContainer; // container for ALL Listener
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // INCLUDED_FRAMEWORK_INC_TABWIN_TABWINDOW_HXX
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
|
@ -1,61 +0,0 @@
|
|||
/* -*- 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 INCLUDED_FRAMEWORK_INC_TABWIN_TABWINFACTORY_HXX
|
||||
#define INCLUDED_FRAMEWORK_INC_TABWIN_TABWINFACTORY_HXX
|
||||
|
||||
#include <macros/xserviceinfo.hxx>
|
||||
|
||||
#include <com/sun/star/lang/XServiceInfo.hpp>
|
||||
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
|
||||
#include <com/sun/star/lang/XSingleComponentFactory.hpp>
|
||||
#include <com/sun/star/awt/XToolkit2.hpp>
|
||||
|
||||
#include <cppuhelper/implbase.hxx>
|
||||
|
||||
namespace framework
|
||||
{
|
||||
|
||||
class TabWinFactory final : public ::cppu::WeakImplHelper< css::lang::XSingleComponentFactory, css::lang::XServiceInfo>
|
||||
{
|
||||
public:
|
||||
TabWinFactory( const css::uno::Reference< css::uno::XComponentContext >& xContext );
|
||||
virtual ~TabWinFactory() override;
|
||||
|
||||
// XInterface, XTypeProvider, XServiceInfo
|
||||
DECLARE_XSERVICEINFO_NOFACTORY
|
||||
/* Helper for registry */
|
||||
/// @throws css::uno::Exception
|
||||
static css::uno::Reference< css::uno::XInterface > SAL_CALL impl_createInstance ( const css::uno::Reference< css::lang::XMultiServiceFactory >& xServiceManager );
|
||||
static css::uno::Reference< css::lang::XSingleServiceFactory > impl_createFactory ( const css::uno::Reference< css::lang::XMultiServiceFactory >& xServiceManager );
|
||||
|
||||
// XSingleComponentFactory
|
||||
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceWithContext( const css::uno::Reference< css::uno::XComponentContext >& Context ) override;
|
||||
virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceWithArgumentsAndContext( const css::uno::Sequence< css::uno::Any >& Arguments, const css::uno::Reference< css::uno::XComponentContext >& Context ) override;
|
||||
|
||||
private:
|
||||
css::uno::Reference< css::uno::XComponentContext > m_xContext;
|
||||
css::uno::Reference< css::awt::XToolkit2 > m_xToolkit;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // INCLUDED_FRAMEWORK_INC_TABWIN_TABWINFACTORY_HXX
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
|
@ -27,8 +27,6 @@
|
|||
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
|
||||
#include <com/sun/star/beans/NamedValue.hpp>
|
||||
|
||||
#include <officecfg/Office/TabBrowse.hxx>
|
||||
|
||||
namespace framework{
|
||||
|
||||
/*-****************************************************************************************************
|
||||
|
@ -62,16 +60,6 @@ css::uno::Reference< css::frame::XFrame > TaskCreator::createTask( const OUStrin
|
|||
|
||||
try
|
||||
{
|
||||
if (
|
||||
( TargetHelper::matchSpecialTarget(sName, TargetHelper::ESpecialTarget::Blank ) ) ||
|
||||
( TargetHelper::matchSpecialTarget(sName, TargetHelper::ESpecialTarget::Default) )
|
||||
)
|
||||
{
|
||||
|
||||
o3tl::optional<OUString> x(officecfg::Office::TabBrowse::TaskCreatorService::ImplementationName::get(m_xContext));
|
||||
if (x) sCreator = *x;
|
||||
}
|
||||
|
||||
xCreator.set( m_xContext->getServiceManager()->createInstanceWithContext(sCreator, m_xContext), css::uno::UNO_QUERY_THROW);
|
||||
}
|
||||
catch(const css::uno::Exception&)
|
||||
|
|
|
@ -33,13 +33,11 @@
|
|||
)
|
||||
=================================================================================================================*/
|
||||
#include <jobs/helponstartup.hxx>
|
||||
#include <tabwin/tabwinfactory.hxx>
|
||||
#include <dispatch/systemexec.hxx>
|
||||
#include <jobs/shelljob.hxx>
|
||||
|
||||
COMPONENTGETFACTORY ( fwm,
|
||||
IFFACTORY( ::framework::HelpOnStartup ) else
|
||||
IFFACTORY( ::framework::TabWinFactory ) else
|
||||
IFFACTORY( ::framework::SystemExec ) else
|
||||
IFFACTORY( ::framework::ShellJob )
|
||||
)
|
||||
|
|
|
@ -1,854 +0,0 @@
|
|||
/* -*- 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 .
|
||||
*/
|
||||
|
||||
#include <tabwin/tabwindow.hxx>
|
||||
#include <properties.h>
|
||||
#include <services.h>
|
||||
|
||||
#include <com/sun/star/awt/Toolkit.hpp>
|
||||
#include <com/sun/star/awt/PosSize.hpp>
|
||||
#include <com/sun/star/awt/WindowDescriptor.hpp>
|
||||
#include <com/sun/star/beans/PropertyAttribute.hpp>
|
||||
#include <com/sun/star/lang/DisposedException.hpp>
|
||||
#include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
|
||||
#include <vcl/svapp.hxx>
|
||||
#include <vcl/window.hxx>
|
||||
#include <toolkit/helper/vclunohelper.hxx>
|
||||
#include <comphelper/sequenceashashmap.hxx>
|
||||
|
||||
// Defines
|
||||
|
||||
using namespace com::sun::star;
|
||||
|
||||
namespace framework
|
||||
{
|
||||
|
||||
// XInterface, XTypeProvider, XServiceInfo
|
||||
|
||||
DEFINE_XINTERFACE_11 ( TabWindow ,
|
||||
::cppu::OWeakObject ,
|
||||
DIRECT_INTERFACE( css::lang::XTypeProvider ),
|
||||
DIRECT_INTERFACE( css::lang::XServiceInfo ),
|
||||
DIRECT_INTERFACE( css::lang::XInitialization ),
|
||||
DIRECT_INTERFACE( css::lang::XComponent ),
|
||||
DIRECT_INTERFACE( css::awt::XWindowListener ),
|
||||
DIRECT_INTERFACE( css::awt::XTopWindowListener ),
|
||||
DIRECT_INTERFACE( css::awt::XSimpleTabController ),
|
||||
DERIVED_INTERFACE( css::lang::XEventListener, css::awt::XWindowListener ),
|
||||
DIRECT_INTERFACE( css::beans::XMultiPropertySet ),
|
||||
DIRECT_INTERFACE( css::beans::XFastPropertySet ),
|
||||
DIRECT_INTERFACE( css::beans::XPropertySet )
|
||||
)
|
||||
|
||||
DEFINE_XTYPEPROVIDER_11 ( TabWindow ,
|
||||
css::lang::XTypeProvider ,
|
||||
css::lang::XServiceInfo ,
|
||||
css::lang::XInitialization ,
|
||||
css::lang::XComponent ,
|
||||
css::awt::XWindowListener ,
|
||||
css::awt::XTopWindowListener ,
|
||||
css::awt::XSimpleTabController ,
|
||||
css::lang::XEventListener ,
|
||||
css::beans::XMultiPropertySet ,
|
||||
css::beans::XFastPropertySet ,
|
||||
css::beans::XPropertySet
|
||||
)
|
||||
|
||||
PRIVATE_DEFINE_XSERVICEINFO_BASE ( TabWindow ,
|
||||
::cppu::OWeakObject ,
|
||||
SERVICENAME_TABWINDOW ,
|
||||
IMPLEMENTATIONNAME_TABWINDOW
|
||||
)
|
||||
|
||||
DEFINE_INIT_SERVICE ( TabWindow, {} )
|
||||
|
||||
TabWindow::TabWindow( const css::uno::Reference< css::uno::XComponentContext >& xContext )
|
||||
: ::cppu::OBroadcastHelperVar< ::cppu::OMultiTypeInterfaceContainerHelper, ::cppu::OMultiTypeInterfaceContainerHelper::keyType >( m_aMutex )
|
||||
, ::cppu::OPropertySetHelper ( *static_cast< ::cppu::OBroadcastHelper* >(this) )
|
||||
, m_bInitialized( false )
|
||||
, m_bDisposed( false )
|
||||
, m_nNextTabID( 1 )
|
||||
, m_aTitlePropName( "Title" )
|
||||
, m_aPosPropName( "Position" )
|
||||
, m_xContext( xContext )
|
||||
, m_aListenerContainer( m_aMutex )
|
||||
{
|
||||
}
|
||||
|
||||
TabWindow::~TabWindow()
|
||||
{
|
||||
}
|
||||
|
||||
// Helper
|
||||
|
||||
void TabWindow::implts_LayoutWindows() const
|
||||
{
|
||||
const sal_Int32 nTabControlHeight = 30;
|
||||
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
SolarMutexClearableGuard aLock;
|
||||
css::uno::Reference< css::awt::XDevice > xDevice( m_xTopWindow, css::uno::UNO_QUERY );
|
||||
css::uno::Reference< css::awt::XWindow > xWindow( m_xTopWindow, css::uno::UNO_QUERY );
|
||||
css::uno::Reference< css::awt::XWindow > xTabControlWindow( m_xTabControlWindow );
|
||||
css::uno::Reference< css::awt::XWindow > xContainerWindow( m_xContainerWindow );
|
||||
aLock.clear();
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
// Convert relative size to output size.
|
||||
if ( xWindow.is() && xDevice.is() )
|
||||
{
|
||||
css::awt::Rectangle aRectangle = xWindow->getPosSize();
|
||||
css::awt::DeviceInfo aInfo = xDevice->getInfo();
|
||||
css::awt::Size aSize ( aRectangle.Width - aInfo.LeftInset - aInfo.RightInset ,
|
||||
aRectangle.Height - aInfo.TopInset - aInfo.BottomInset );
|
||||
|
||||
css::awt::Size aContainerWindowSize;
|
||||
css::awt::Size aTabControlSize;
|
||||
|
||||
aContainerWindowSize.Width = aSize.Width;
|
||||
aTabControlSize.Width = aSize.Width;
|
||||
|
||||
aContainerWindowSize.Height = std::max( sal_Int32( 0 ), aSize.Height - nTabControlHeight );
|
||||
aTabControlSize.Height = nTabControlHeight;
|
||||
|
||||
xContainerWindow->setPosSize( 0, 0,
|
||||
aContainerWindowSize.Width, aContainerWindowSize.Height,
|
||||
css::awt::PosSize::POSSIZE );
|
||||
xTabControlWindow->setPosSize( 0, std::max( nTabControlHeight, sal_Int32( aSize.Height - nTabControlHeight)),
|
||||
aTabControlSize.Width, aTabControlSize.Height,
|
||||
css::awt::PosSize::POSSIZE );
|
||||
}
|
||||
}
|
||||
|
||||
TabControl* TabWindow::impl_GetTabControl( const css::uno::Reference< css::awt::XWindow >& rTabControlWindow ) const
|
||||
{
|
||||
VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( rTabControlWindow );
|
||||
if ( pWindow )
|
||||
return static_cast<TabControl *>(pWindow.get());
|
||||
else
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void TabWindow::impl_SetTitle( const OUString& rTitle )
|
||||
{
|
||||
if ( m_xTopWindow.is() )
|
||||
{
|
||||
VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow(
|
||||
css::uno::Reference< css::awt::XWindow >(
|
||||
m_xTopWindow, css::uno::UNO_QUERY ));
|
||||
if ( pWindow )
|
||||
pWindow->SetText( rTitle );
|
||||
}
|
||||
}
|
||||
|
||||
void TabWindow::implts_SendNotification( Notification eNotify, sal_Int32 ID ) const
|
||||
{
|
||||
::cppu::OInterfaceContainerHelper* pContainer = m_aListenerContainer.getContainer(
|
||||
cppu::UnoType<css::awt::XTabListener>::get());
|
||||
if (pContainer!=nullptr)
|
||||
{
|
||||
::cppu::OInterfaceIteratorHelper pIterator(*pContainer);
|
||||
while (pIterator.hasMoreElements())
|
||||
{
|
||||
try
|
||||
{
|
||||
switch ( eNotify )
|
||||
{
|
||||
case NOTIFY_INSERTED:
|
||||
static_cast<css::awt::XTabListener*>(pIterator.next())->inserted( ID );
|
||||
break;
|
||||
case NOTIFY_REMOVED:
|
||||
static_cast<css::awt::XTabListener*>(pIterator.next())->removed( ID );
|
||||
break;
|
||||
case NOTIFY_ACTIVATED:
|
||||
static_cast<css::awt::XTabListener*>(pIterator.next())->activated( ID );
|
||||
break;
|
||||
case NOTIFY_DEACTIVATED:
|
||||
static_cast<css::awt::XTabListener*>(pIterator.next())->deactivated( ID );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch( const css::uno::RuntimeException& )
|
||||
{
|
||||
pIterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void TabWindow::implts_SendNotification( Notification eNotify, sal_Int32 ID, const css::uno::Sequence< css::beans::NamedValue >& rSeq ) const
|
||||
{
|
||||
::cppu::OInterfaceContainerHelper* pContainer = m_aListenerContainer.getContainer(
|
||||
cppu::UnoType<css::awt::XTabListener>::get());
|
||||
if (pContainer!=nullptr)
|
||||
{
|
||||
::cppu::OInterfaceIteratorHelper pIterator(*pContainer);
|
||||
while (pIterator.hasMoreElements())
|
||||
{
|
||||
try
|
||||
{
|
||||
switch ( eNotify )
|
||||
{
|
||||
case NOTIFY_CHANGED:
|
||||
static_cast<css::awt::XTabListener*>(pIterator.next())->changed( ID, rSeq );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch( const css::uno::RuntimeException& )
|
||||
{
|
||||
pIterator.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Links
|
||||
|
||||
IMPL_LINK( TabWindow, Activate, TabControl*, pTabControl, void )
|
||||
{
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
SolarMutexClearableGuard aLock;
|
||||
|
||||
sal_Int32 nPageId = pTabControl->GetCurPageId();
|
||||
|
||||
const OUString& aTitle = pTabControl->GetPageText( sal_uInt16( nPageId ));
|
||||
impl_SetTitle( aTitle );
|
||||
aLock.clear();
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
implts_SendNotification( NOTIFY_ACTIVATED, nPageId );
|
||||
}
|
||||
|
||||
IMPL_LINK( TabWindow, Deactivate, TabControl*, pTabControl, bool )
|
||||
{
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
SolarMutexClearableGuard aLock;
|
||||
sal_Int32 nPageId = pTabControl->GetCurPageId();
|
||||
aLock.clear();
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
implts_SendNotification( NOTIFY_DEACTIVATED, nPageId );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// XInitialization
|
||||
|
||||
void SAL_CALL TabWindow::initialize( const css::uno::Sequence< css::uno::Any >& aArguments )
|
||||
{
|
||||
const OUString aTopWindowArgName( "TopWindow" );
|
||||
const OUString aSizeArgName( "Size" );
|
||||
|
||||
css::awt::Size aDefaultSize( 500, 500 );
|
||||
css::awt::Size aSize( aDefaultSize );
|
||||
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
SolarMutexResettableGuard aLock;
|
||||
bool bInitalized( m_bInitialized );
|
||||
css::uno::Reference< css::uno::XComponentContext > xContext( m_xContext );
|
||||
aLock.clear();
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
if ( !bInitalized )
|
||||
{
|
||||
css::beans::PropertyValue aPropValue;
|
||||
css::uno::Reference< css::awt::XTopWindow > xTopWindow;
|
||||
css::uno::Reference< css::awt::XToolkit2 > xToolkit;
|
||||
css::awt::WindowDescriptor aDescriptor;
|
||||
|
||||
if ( xContext.is() )
|
||||
{
|
||||
try
|
||||
{
|
||||
xToolkit = css::awt::Toolkit::create( xContext );
|
||||
}
|
||||
catch ( const css::uno::RuntimeException& )
|
||||
{
|
||||
throw;
|
||||
}
|
||||
catch ( const css::uno::Exception& )
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
for ( int i = 0; i < aArguments.getLength(); i++ )
|
||||
{
|
||||
if ( aArguments[i] >>= aPropValue )
|
||||
{
|
||||
if ( aPropValue.Name == aTopWindowArgName )
|
||||
aPropValue.Value >>= xTopWindow;
|
||||
else if ( aPropValue.Name == aSizeArgName )
|
||||
{
|
||||
aPropValue.Value >>= aSize;
|
||||
if ( aSize.Width <= 0 )
|
||||
aSize.Width = aDefaultSize.Width;
|
||||
if ( aSize.Height <= 0 )
|
||||
aSize.Height = aDefaultSize.Height;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( xToolkit.is() )
|
||||
{
|
||||
if ( !xTopWindow.is() )
|
||||
{
|
||||
// describe top window properties.
|
||||
aDescriptor.Type = css::awt::WindowClass_TOP;
|
||||
aDescriptor.ParentIndex = -1;
|
||||
aDescriptor.Parent.clear();
|
||||
aDescriptor.Bounds = css::awt::Rectangle( 0, 0, aSize.Width, aSize.Height );
|
||||
aDescriptor.WindowAttributes = 0;
|
||||
|
||||
try
|
||||
{
|
||||
xTopWindow.set( xToolkit->createWindow( aDescriptor ), css::uno::UNO_QUERY );
|
||||
}
|
||||
catch ( const css::uno::RuntimeException& )
|
||||
{
|
||||
throw;
|
||||
}
|
||||
catch ( const css::uno::Exception& )
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
if ( xTopWindow.is() )
|
||||
{
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
aLock.reset();
|
||||
m_bInitialized = true;
|
||||
aLock.clear();
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
css::uno::Reference< css::awt::XWindow > xWindow( xTopWindow, css::uno::UNO_QUERY );
|
||||
xWindow->addWindowListener( css::uno::Reference< css::awt::XWindowListener >(
|
||||
static_cast< ::cppu::OWeakObject* >( this ), css::uno::UNO_QUERY_THROW ));
|
||||
|
||||
xTopWindow->addTopWindowListener( css::uno::Reference< css::awt::XTopWindowListener >(
|
||||
static_cast< ::cppu::OWeakObject* >( this ), css::uno::UNO_QUERY_THROW ));
|
||||
|
||||
css::uno::Reference< css::awt::XWindow > xContainerWindow;
|
||||
css::uno::Reference< css::awt::XWindow > xTabControl;
|
||||
|
||||
// describe container window properties.
|
||||
aDescriptor.Type = css::awt::WindowClass_SIMPLE;
|
||||
aDescriptor.ParentIndex = -1;
|
||||
aDescriptor.Parent.set( xTopWindow, css::uno::UNO_QUERY );
|
||||
aDescriptor.Bounds = css::awt::Rectangle(0,0,0,0);
|
||||
aDescriptor.WindowAttributes = 0;
|
||||
|
||||
xContainerWindow.set( xToolkit->createWindow( aDescriptor ), css::uno::UNO_QUERY );
|
||||
|
||||
// create a tab control window properties
|
||||
aDescriptor.Type = css::awt::WindowClass_SIMPLE;
|
||||
aDescriptor.WindowServiceName = "tabcontrol";
|
||||
aDescriptor.ParentIndex = -1;
|
||||
aDescriptor.Parent.set( xTopWindow, css::uno::UNO_QUERY );
|
||||
aDescriptor.Bounds = css::awt::Rectangle( 0,0,0,0 );
|
||||
aDescriptor.WindowAttributes = 0;
|
||||
|
||||
xTabControl.set( xToolkit->createWindow( aDescriptor ), css::uno::UNO_QUERY );
|
||||
|
||||
if ( xContainerWindow.is() && xTabControl.is() )
|
||||
{
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
aLock.reset();
|
||||
m_xTopWindow = xTopWindow;
|
||||
m_xContainerWindow = xContainerWindow;
|
||||
m_xTabControlWindow = xTabControl;
|
||||
aLock.clear();
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
xWindow->setPosSize( 0, 0, aSize.Width, aSize.Height, css::awt::PosSize::POSSIZE );
|
||||
|
||||
SolarMutexGuard aGuard;
|
||||
VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( xWindow );
|
||||
if( pWindow )
|
||||
pWindow->Show();
|
||||
|
||||
pWindow = VCLUnoHelper::GetWindow( xContainerWindow );
|
||||
if ( pWindow )
|
||||
pWindow->Show( true, ShowFlags::NoFocusChange | ShowFlags::NoActivate );
|
||||
|
||||
pWindow = VCLUnoHelper::GetWindow( xTabControl );
|
||||
if ( pWindow )
|
||||
{
|
||||
pWindow->Show( true, ShowFlags::NoFocusChange | ShowFlags::NoActivate );
|
||||
TabControl* pTabControl = static_cast<TabControl *>(pWindow.get());
|
||||
pTabControl->SetActivatePageHdl( LINK( this, TabWindow, Activate ));
|
||||
pTabControl->SetDeactivatePageHdl( LINK( this, TabWindow, Deactivate ));
|
||||
}
|
||||
|
||||
implts_LayoutWindows();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// XComponent
|
||||
|
||||
void SAL_CALL TabWindow::dispose()
|
||||
{
|
||||
// Send message to all listener and forget her references.
|
||||
css::uno::Reference< css::lang::XComponent > xThis = this;
|
||||
css::lang::EventObject aEvent( xThis );
|
||||
|
||||
m_aListenerContainer.disposeAndClear( aEvent );
|
||||
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
SolarMutexResettableGuard aLock;
|
||||
css::uno::Reference< css::awt::XWindow > xTabControlWindow( m_xTabControlWindow );
|
||||
css::uno::Reference< css::awt::XWindow > xContainerWindow( m_xContainerWindow );
|
||||
css::uno::Reference< css::awt::XTopWindow > xTopWindow( m_xTopWindow );
|
||||
m_xTabControlWindow.clear();
|
||||
m_xContainerWindow.clear();
|
||||
m_xTopWindow.clear();
|
||||
aLock.clear();
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
if ( xTabControlWindow.is() )
|
||||
xTabControlWindow->dispose();
|
||||
|
||||
if ( xContainerWindow.is() )
|
||||
xContainerWindow->dispose();
|
||||
|
||||
css::uno::Reference< css::lang::XComponent > xComponent( xTopWindow, css::uno::UNO_QUERY );
|
||||
if ( xComponent.is() )
|
||||
xComponent->dispose();
|
||||
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
aLock.reset();
|
||||
m_bDisposed = true;
|
||||
aLock.clear();
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::addEventListener( const css::uno::Reference< css::lang::XEventListener >& xListener )
|
||||
{
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
{
|
||||
SolarMutexGuard aLock;
|
||||
if (m_bDisposed)
|
||||
return;
|
||||
}
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
m_aListenerContainer.addInterface( cppu::UnoType<css::lang::XEventListener>::get(), xListener );
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::removeEventListener( const css::uno::Reference< css::lang::XEventListener >& xListener )
|
||||
{
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
{
|
||||
SolarMutexGuard aLock;
|
||||
if (m_bDisposed)
|
||||
return;
|
||||
}
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
m_aListenerContainer.removeInterface( cppu::UnoType<css::lang::XEventListener>::get(), xListener );
|
||||
}
|
||||
|
||||
// XEventListener
|
||||
|
||||
void SAL_CALL TabWindow::disposing( const css::lang::EventObject& )
|
||||
{
|
||||
}
|
||||
|
||||
// XWindowListener
|
||||
|
||||
void SAL_CALL TabWindow::windowResized( const css::awt::WindowEvent& )
|
||||
{
|
||||
implts_LayoutWindows();
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::windowMoved( const css::awt::WindowEvent& )
|
||||
{
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::windowShown( const css::lang::EventObject& )
|
||||
{
|
||||
SolarMutexGuard g;
|
||||
|
||||
TabControl* pTabControl = impl_GetTabControl( m_xTabControlWindow );
|
||||
if ( pTabControl )
|
||||
pTabControl->Show();
|
||||
|
||||
if ( m_xContainerWindow.is() )
|
||||
{
|
||||
VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( m_xContainerWindow );
|
||||
if ( pWindow )
|
||||
pWindow->Show();
|
||||
}
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::windowHidden( const css::lang::EventObject& )
|
||||
{
|
||||
SolarMutexGuard g;
|
||||
if ( m_xContainerWindow.is() )
|
||||
{
|
||||
VclPtr<vcl::Window> pWindow = VCLUnoHelper::GetWindow( m_xContainerWindow );
|
||||
if ( pWindow )
|
||||
pWindow->Hide();
|
||||
}
|
||||
|
||||
TabControl* pTabControl = impl_GetTabControl( m_xTabControlWindow );
|
||||
if ( pTabControl )
|
||||
pTabControl->Hide();
|
||||
}
|
||||
|
||||
// XTopWindowListener
|
||||
|
||||
void SAL_CALL TabWindow::windowOpened( const css::lang::EventObject& )
|
||||
{
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::windowClosing( const css::lang::EventObject& )
|
||||
{
|
||||
css::uno::Reference< css::lang::XComponent > xComponent = this;
|
||||
if ( xComponent.is() )
|
||||
xComponent->dispose();
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::windowClosed( const css::lang::EventObject& )
|
||||
{
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::windowMinimized( const css::lang::EventObject& )
|
||||
{
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::windowNormalized( const css::lang::EventObject& )
|
||||
{
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::windowActivated( const css::lang::EventObject& )
|
||||
{
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::windowDeactivated( const css::lang::EventObject& )
|
||||
{
|
||||
}
|
||||
|
||||
// XSimpleTabController
|
||||
|
||||
::sal_Int32 SAL_CALL TabWindow::insertTab()
|
||||
{
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
SolarMutexClearableGuard aLock;
|
||||
|
||||
if ( m_bDisposed )
|
||||
throw css::lang::DisposedException();
|
||||
|
||||
sal_Int32 nNextTabID( m_nNextTabID++ );
|
||||
|
||||
TabControl* pTabControl = impl_GetTabControl( m_xTabControlWindow );
|
||||
if ( pTabControl )
|
||||
pTabControl->InsertPage( sal_uInt16( nNextTabID ), OUString() );
|
||||
aLock.clear();
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
implts_SendNotification( NOTIFY_INSERTED, nNextTabID );
|
||||
|
||||
return nNextTabID;
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::removeTab( ::sal_Int32 ID )
|
||||
{
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
SolarMutexClearableGuard aLock;
|
||||
|
||||
if ( m_bDisposed )
|
||||
throw css::lang::DisposedException();
|
||||
|
||||
TabControl* pTabControl = impl_GetTabControl( m_xTabControlWindow );
|
||||
if ( pTabControl )
|
||||
{
|
||||
sal_uInt16 nPos = pTabControl->GetPagePos( sal_uInt16( ID ));
|
||||
if ( nPos == TAB_PAGE_NOTFOUND )
|
||||
throw css::lang::IndexOutOfBoundsException();
|
||||
pTabControl->RemovePage( sal_uInt16( ID ));
|
||||
sal_uInt16 nCurTabId = pTabControl->GetCurPageId();
|
||||
aLock.clear();
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
implts_SendNotification( NOTIFY_REMOVED, ID );
|
||||
|
||||
// activate new tab if old tab was active!
|
||||
nPos = pTabControl->GetPagePos( nCurTabId );
|
||||
if ( nPos != TAB_PAGE_NOTFOUND && nCurTabId != ID )
|
||||
activateTab( nCurTabId );
|
||||
}
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::setTabProps( ::sal_Int32 ID, const css::uno::Sequence< css::beans::NamedValue >& Properties )
|
||||
{
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
SolarMutexClearableGuard aLock;
|
||||
|
||||
if ( m_bDisposed )
|
||||
throw css::lang::DisposedException();
|
||||
|
||||
TabControl* pTabControl = impl_GetTabControl( m_xTabControlWindow );
|
||||
if ( pTabControl )
|
||||
{
|
||||
sal_uInt16 nPos = pTabControl->GetPagePos( sal_uInt16( ID ));
|
||||
if ( nPos == TAB_PAGE_NOTFOUND )
|
||||
throw css::lang::IndexOutOfBoundsException();
|
||||
|
||||
comphelper::SequenceAsHashMap aSeqHashMap( Properties );
|
||||
|
||||
OUString aTitle = pTabControl->GetPageText( sal_uInt16( ID ));
|
||||
sal_Int32 nNewPos = nPos;
|
||||
|
||||
aTitle = aSeqHashMap.getUnpackedValueOrDefault< OUString >(
|
||||
m_aTitlePropName, aTitle );
|
||||
pTabControl->SetPageText( sal_uInt16( ID ), aTitle );
|
||||
nNewPos = aSeqHashMap.getUnpackedValueOrDefault< sal_Int32 >(
|
||||
m_aPosPropName, nNewPos );
|
||||
if ( nNewPos != sal_Int32( nPos ))
|
||||
{
|
||||
nPos = sal_uInt16( nNewPos );
|
||||
if ( nPos >= pTabControl->GetPageCount() )
|
||||
nPos = TAB_APPEND;
|
||||
|
||||
pTabControl->RemovePage( sal_uInt16( ID ));
|
||||
pTabControl->InsertPage( sal_uInt16( ID ), aTitle, nPos );
|
||||
}
|
||||
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
aLock.clear();
|
||||
|
||||
css::uno::Sequence< css::beans::NamedValue > aNamedValueSeq = getTabProps( ID );
|
||||
implts_SendNotification( NOTIFY_CHANGED, ID, aNamedValueSeq );
|
||||
}
|
||||
}
|
||||
|
||||
css::uno::Sequence< css::beans::NamedValue > SAL_CALL TabWindow::getTabProps( ::sal_Int32 ID )
|
||||
{
|
||||
SolarMutexGuard g;
|
||||
|
||||
if ( m_bDisposed )
|
||||
throw css::lang::DisposedException();
|
||||
|
||||
css::uno::Sequence< css::beans::NamedValue > aNamedValueSeq;
|
||||
|
||||
TabControl* pTabControl = impl_GetTabControl( m_xTabControlWindow );
|
||||
if ( pTabControl )
|
||||
{
|
||||
sal_uInt16 nPos = pTabControl->GetPagePos( sal_uInt16( ID ));
|
||||
if ( nPos == TAB_PAGE_NOTFOUND )
|
||||
throw css::lang::IndexOutOfBoundsException();
|
||||
|
||||
const OUString& aTitle = pTabControl->GetPageText( sal_uInt16( ID ));
|
||||
nPos = pTabControl->GetPagePos( sal_uInt16( ID ));
|
||||
|
||||
css::uno::Sequence< css::beans::NamedValue > aSeq
|
||||
{
|
||||
{ m_aTitlePropName, css::uno::makeAny( aTitle ) },
|
||||
{ m_aPosPropName, css::uno::makeAny( sal_Int32( nPos )) }
|
||||
};
|
||||
return aSeq;
|
||||
}
|
||||
|
||||
return aNamedValueSeq;
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::activateTab( ::sal_Int32 ID )
|
||||
{
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
SolarMutexClearableGuard aLock;
|
||||
|
||||
if ( m_bDisposed )
|
||||
throw css::lang::DisposedException();
|
||||
|
||||
TabControl* pTabControl = impl_GetTabControl( m_xTabControlWindow );
|
||||
if ( pTabControl )
|
||||
{
|
||||
sal_uInt16 nPos = pTabControl->GetPagePos( sal_uInt16( ID ));
|
||||
if ( nPos == TAB_PAGE_NOTFOUND )
|
||||
throw css::lang::IndexOutOfBoundsException();
|
||||
|
||||
sal_Int32 nOldID = pTabControl->GetCurPageId();
|
||||
OUString aTitle = pTabControl->GetPageText( sal_uInt16( ID ));
|
||||
pTabControl->SetCurPageId( sal_uInt16( ID ));
|
||||
pTabControl->SelectTabPage( sal_uInt16( ID ));
|
||||
impl_SetTitle( aTitle );
|
||||
|
||||
aLock.clear();
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
if ( nOldID != TAB_PAGE_NOTFOUND )
|
||||
implts_SendNotification( NOTIFY_DEACTIVATED, nOldID );
|
||||
implts_SendNotification( NOTIFY_ACTIVATED, ID );
|
||||
}
|
||||
}
|
||||
|
||||
::sal_Int32 SAL_CALL TabWindow::getActiveTabID()
|
||||
{
|
||||
SolarMutexGuard g;
|
||||
|
||||
if ( m_bDisposed )
|
||||
throw css::lang::DisposedException();
|
||||
|
||||
TabControl* pTabControl = impl_GetTabControl( m_xTabControlWindow );
|
||||
if ( pTabControl )
|
||||
{
|
||||
sal_uInt16 nID = pTabControl->GetCurPageId();
|
||||
if ( nID == TAB_PAGE_NOTFOUND )
|
||||
return -1;
|
||||
else
|
||||
return sal_Int32( nID );
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::addTabListener(
|
||||
const css::uno::Reference< css::awt::XTabListener >& xListener )
|
||||
{
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
{
|
||||
SolarMutexGuard aLock;
|
||||
if (m_bDisposed)
|
||||
return;
|
||||
}
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
m_aListenerContainer.addInterface(
|
||||
cppu::UnoType<css::awt::XTabListener>::get(), xListener );
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::removeTabListener( const css::uno::Reference< css::awt::XTabListener >& xListener )
|
||||
{
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
{
|
||||
SolarMutexGuard aLock;
|
||||
if (m_bDisposed)
|
||||
return;
|
||||
}
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
m_aListenerContainer.removeInterface(
|
||||
cppu::UnoType<css::awt::XTabListener>::get(), xListener );
|
||||
}
|
||||
|
||||
// OPropertySetHelper
|
||||
|
||||
// XPropertySet helper
|
||||
sal_Bool SAL_CALL TabWindow::convertFastPropertyValue( css::uno::Any& aConvertedValue ,
|
||||
css::uno::Any& aOldValue ,
|
||||
sal_Int32 nHandle ,
|
||||
const css::uno::Any& aValue )
|
||||
{
|
||||
// Initialize state with sal_False !!!
|
||||
// (Handle can be invalid)
|
||||
bool bReturn = false;
|
||||
|
||||
switch( nHandle )
|
||||
{
|
||||
case TABWINDOW_PROPHANDLE_PARENTWINDOW :
|
||||
bReturn = PropHelper::willPropertyBeChanged(
|
||||
css::uno::makeAny( m_xContainerWindow ),
|
||||
aValue,
|
||||
aOldValue,
|
||||
aConvertedValue);
|
||||
break;
|
||||
|
||||
case TABWINDOW_PROPHANDLE_TOPWINDOW :
|
||||
bReturn = PropHelper::willPropertyBeChanged(
|
||||
css::uno::makeAny( m_xTopWindow ),
|
||||
aValue,
|
||||
aOldValue,
|
||||
aConvertedValue);
|
||||
break;
|
||||
}
|
||||
|
||||
// Return state of operation.
|
||||
return bReturn;
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::setFastPropertyValue_NoBroadcast( sal_Int32,
|
||||
const css::uno::Any&)
|
||||
{
|
||||
}
|
||||
|
||||
void SAL_CALL TabWindow::getFastPropertyValue( css::uno::Any& aValue ,
|
||||
sal_Int32 nHandle ) const
|
||||
{
|
||||
switch( nHandle )
|
||||
{
|
||||
case TABWINDOW_PROPHANDLE_PARENTWINDOW:
|
||||
aValue <<= m_xContainerWindow;
|
||||
break;
|
||||
case TABWINDOW_PROPHANDLE_TOPWINDOW:
|
||||
aValue <<= m_xTopWindow;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
::cppu::IPropertyArrayHelper& SAL_CALL TabWindow::getInfoHelper()
|
||||
{
|
||||
// Define static member to give structure of properties to baseclass "OPropertySetHelper".
|
||||
// "impl_getStaticPropertyDescriptor" is a non exported and static function, who will define a static propertytable.
|
||||
// "true" say: Table is sorted by name.
|
||||
static ::cppu::OPropertyArrayHelper ourInfoHelper( impl_getStaticPropertyDescriptor(), true );
|
||||
|
||||
return ourInfoHelper;
|
||||
}
|
||||
|
||||
css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL TabWindow::getPropertySetInfo()
|
||||
{
|
||||
// Create structure of propertysetinfo for baseclass "OPropertySetHelper".
|
||||
// (Use method "getInfoHelper()".)
|
||||
static css::uno::Reference< css::beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
|
||||
|
||||
return xInfo;
|
||||
}
|
||||
|
||||
css::uno::Sequence< css::beans::Property > TabWindow::impl_getStaticPropertyDescriptor()
|
||||
{
|
||||
// Create property array to initialize sequence!
|
||||
// Table of all predefined properties of this class. It's used from OPropertySetHelper-class!
|
||||
// Don't forget to change the defines (see begin of this file), if you add, change or delete a property in this list!!!
|
||||
// It's necessary for methods of OPropertySetHelper.
|
||||
// ATTENTION:
|
||||
// YOU MUST SORT FOLLOW TABLE BY NAME ALPHABETICAL !!!
|
||||
|
||||
return
|
||||
{
|
||||
css::beans::Property( TABWINDOW_PROPNAME_PARENTWINDOW,
|
||||
TABWINDOW_PROPHANDLE_PARENTWINDOW,
|
||||
cppu::UnoType<css::awt::XWindow>::get(),
|
||||
css::beans::PropertyAttribute::READONLY ),
|
||||
css::beans::Property( TABWINDOW_PROPNAME_TOPWINDOW,
|
||||
TABWINDOW_PROPHANDLE_TOPWINDOW,
|
||||
cppu::UnoType<css::awt::XWindow>::get(),
|
||||
css::beans::PropertyAttribute::READONLY )
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
|
@ -1,139 +0,0 @@
|
|||
/* -*- 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 .
|
||||
*/
|
||||
|
||||
#include <services.h>
|
||||
#include <tabwin/tabwinfactory.hxx>
|
||||
#include <tabwin/tabwindow.hxx>
|
||||
|
||||
#include <com/sun/star/awt/Toolkit.hpp>
|
||||
#include <com/sun/star/awt/XTopWindow.hpp>
|
||||
#include <com/sun/star/awt/WindowAttribute.hpp>
|
||||
|
||||
#include <vcl/svapp.hxx>
|
||||
|
||||
// Defines
|
||||
|
||||
using namespace com::sun::star::uno;
|
||||
using namespace com::sun::star::lang;
|
||||
using namespace com::sun::star::beans;
|
||||
using namespace com::sun::star::util;
|
||||
|
||||
namespace framework
|
||||
{
|
||||
|
||||
// XInterface, XTypeProvider, XServiceInfo
|
||||
|
||||
DEFINE_XSERVICEINFO_ONEINSTANCESERVICE_2( TabWinFactory ,
|
||||
::cppu::OWeakObject ,
|
||||
SERVICENAME_TABWINFACTORY ,
|
||||
IMPLEMENTATIONNAME_TABWINFACTORY
|
||||
)
|
||||
|
||||
DEFINE_INIT_SERVICE ( TabWinFactory, {} )
|
||||
|
||||
TabWinFactory::TabWinFactory( const css::uno::Reference< css::uno::XComponentContext >& xContext ) :
|
||||
m_xContext( xContext )
|
||||
{
|
||||
}
|
||||
|
||||
TabWinFactory::~TabWinFactory()
|
||||
{
|
||||
}
|
||||
|
||||
css::uno::Reference< css::uno::XInterface > SAL_CALL TabWinFactory::createInstanceWithContext(
|
||||
const css::uno::Reference< css::uno::XComponentContext >& xContext )
|
||||
{
|
||||
css::uno::Sequence< css::uno::Any > aArgs;
|
||||
|
||||
return createInstanceWithArgumentsAndContext( aArgs, xContext );
|
||||
}
|
||||
|
||||
css::uno::Reference< css::uno::XInterface > SAL_CALL TabWinFactory::createInstanceWithArgumentsAndContext(
|
||||
const css::uno::Sequence< css::uno::Any >& Arguments, const css::uno::Reference< css::uno::XComponentContext >& )
|
||||
{
|
||||
const OUString aTopWindowArgName( "TopWindow");
|
||||
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
SolarMutexResettableGuard aLock;
|
||||
css::uno::Reference< css::awt::XToolkit2 > xToolkit = m_xToolkit;
|
||||
css::uno::Reference< css::uno::XComponentContext > xContext( m_xContext );
|
||||
aLock.clear();
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
|
||||
css::uno::Reference< css::uno::XInterface > xReturn;
|
||||
css::uno::Reference< css::awt::XTopWindow > xTopWindow;
|
||||
css::beans::PropertyValue aPropValue;
|
||||
|
||||
for ( sal_Int32 i = 0; i < Arguments.getLength(); i++ )
|
||||
{
|
||||
if ( Arguments[i] >>= aPropValue )
|
||||
{
|
||||
if ( aPropValue.Name == aTopWindowArgName )
|
||||
aPropValue.Value >>= xTopWindow;
|
||||
}
|
||||
}
|
||||
|
||||
if ( !xToolkit.is() && xContext.is() )
|
||||
{
|
||||
xToolkit = css::awt::Toolkit::create( xContext );
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
aLock.reset();
|
||||
m_xToolkit = xToolkit;
|
||||
aLock.clear();
|
||||
/* SAFE AREA ----------------------------------------------------------------------------------------------- */
|
||||
}
|
||||
|
||||
if ( !xTopWindow.is() )
|
||||
{
|
||||
// describe window properties.
|
||||
css::awt::WindowDescriptor aDescriptor;
|
||||
aDescriptor.Type = css::awt::WindowClass_TOP;
|
||||
aDescriptor.ParentIndex = -1;
|
||||
aDescriptor.Parent.clear();
|
||||
aDescriptor.Bounds = css::awt::Rectangle(0,0,0,0);
|
||||
aDescriptor.WindowAttributes = css::awt::WindowAttribute::BORDER|
|
||||
css::awt::WindowAttribute::SIZEABLE|
|
||||
css::awt::WindowAttribute::MOVEABLE|
|
||||
css::awt::WindowAttribute::CLOSEABLE|
|
||||
css::awt::WindowAttribute::MINSIZE;
|
||||
|
||||
// create a parent window
|
||||
xTopWindow.set( xToolkit->createWindow( aDescriptor ), css::uno::UNO_QUERY );
|
||||
}
|
||||
|
||||
if ( xTopWindow.is() )
|
||||
{
|
||||
TabWindow* pTabWindow = new TabWindow( xContext );
|
||||
|
||||
css::uno::Sequence< css::uno::Any > aArgs( 1 );
|
||||
|
||||
aPropValue.Name = aTopWindowArgName;
|
||||
aPropValue.Value <<= xTopWindow;
|
||||
aArgs[0] <<= aPropValue;
|
||||
pTabWindow->initialize( aArgs );
|
||||
|
||||
xReturn.set( static_cast< OWeakObject* >( pTabWindow ), css::uno::UNO_QUERY );
|
||||
}
|
||||
|
||||
return xReturn;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
|
@ -28,7 +28,4 @@
|
|||
<implementation name="com.sun.star.comp.framework.SystemExecute">
|
||||
<service name="com.sun.star.frame.ProtocolHandler"/>
|
||||
</implementation>
|
||||
<implementation name="com.sun.star.comp.framework.TabWindowFactory">
|
||||
<service name="com.sun.star.frame.TabWindowFactory"/>
|
||||
</implementation>
|
||||
</component>
|
||||
|
|
|
@ -46,7 +46,6 @@ officecfg_XCSFILES := \
|
|||
Office/ReportDesign \
|
||||
Office/Scripting \
|
||||
Office/Security \
|
||||
Office/TabBrowse \
|
||||
Office/TableWizard \
|
||||
Office/TypeDetection \
|
||||
Office/UI \
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
* 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 .
|
||||
-->
|
||||
<!DOCTYPE oor:component-schema SYSTEM "../../../../component-schema.dtd">
|
||||
<oor:component-schema xmlns:oor="http://openoffice.org/2001/registry" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" oor:package="org.openoffice.Office" oor:name="TabBrowse" xml:lang="en-US">
|
||||
<info>
|
||||
<desc>Contain all needed properties for the tabbed document interface of OOo.</desc>
|
||||
</info>
|
||||
<templates/>
|
||||
<component>
|
||||
<group oor:name="TaskCreatorService">
|
||||
<info>
|
||||
<desc>The TaskCreatorService is used to create new document windows.
|
||||
It must be replaced if the logic behind creation of such windows should be changed.</desc>
|
||||
</info>
|
||||
<prop oor:name="ImplementationName" oor:type="xs:string">
|
||||
<info>
|
||||
<desc>Because there can exists more than one implementations of such TaskCreatorService,
|
||||
the actual one must be specified with its UNO implementation name.
|
||||
Otherwise it's not guaranteed, which implementation is really used at runtime.</desc>
|
||||
</info>
|
||||
</prop>
|
||||
</group>
|
||||
</component>
|
||||
</oor:component-schema>
|
|
@ -158,7 +158,6 @@ postprocess_FILES_main := \
|
|||
$(postprocess_XCS)/Office/Recovery.xcs \
|
||||
$(postprocess_XCS)/Office/Scripting.xcs \
|
||||
$(postprocess_XCS)/Office/Security.xcs \
|
||||
$(postprocess_XCS)/Office/TabBrowse.xcs \
|
||||
$(postprocess_XCS)/Office/TableWizard.xcs \
|
||||
$(postprocess_XCS)/Office/TypeDetection.xcs \
|
||||
$(postprocess_XCS)/Office/UI/BaseWindowState.xcs \
|
||||
|
|
|
@ -5079,8 +5079,6 @@ framework/inc/services/layoutmanager.hxx
|
|||
framework/inc/services/mediatypedetectionhelper.hxx
|
||||
framework/inc/services/uriabbreviation.hxx
|
||||
framework/inc/stdtypes.h
|
||||
framework/inc/tabwin/tabwindow.hxx
|
||||
framework/inc/tabwin/tabwinfactory.hxx
|
||||
framework/inc/targets.h
|
||||
framework/inc/taskcreatordefs.hxx
|
||||
framework/inc/threadhelp/gate.hxx
|
||||
|
@ -5268,8 +5266,6 @@ framework/source/services/substitutepathvars.cxx
|
|||
framework/source/services/taskcreatorsrv.cxx
|
||||
framework/source/services/uriabbreviation.cxx
|
||||
framework/source/services/urltransformer.cxx
|
||||
framework/source/tabwin/tabwindow.cxx
|
||||
framework/source/tabwin/tabwinfactory.cxx
|
||||
framework/source/uiconfiguration/CommandImageResolver.cxx
|
||||
framework/source/uiconfiguration/CommandImageResolver.hxx
|
||||
framework/source/uiconfiguration/ImageList.cxx
|
||||
|
|
Loading…
Reference in a new issue