2000-09-18 16:07:07 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-11 00:00:46 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2010-02-12 15:01:35 +01:00
|
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-11 00:00:46 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-11 00:00:46 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-11 00:00:46 +00:00
|
|
|
* 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.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-11 00:00:46 +00:00
|
|
|
* 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).
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
2008-04-11 00:00:46 +00:00
|
|
|
* 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.
|
2000-09-18 16:07:07 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
2006-09-17 04:06:50 +00:00
|
|
|
|
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
|
|
#include "precompiled_svx.hxx"
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
#include "fmresids.hrc"
|
|
|
|
#include "fmexpl.hrc"
|
|
|
|
#include "fmexpl.hxx"
|
|
|
|
|
|
|
|
#include "fmhelp.hrc"
|
2007-06-27 17:12:20 +00:00
|
|
|
#include <svx/fmglob.hxx>
|
2000-09-18 16:07:07 +00:00
|
|
|
#include "fmservs.hxx"
|
2007-06-27 17:12:20 +00:00
|
|
|
#include <svx/fmmodel.hxx>
|
2000-09-18 16:07:07 +00:00
|
|
|
#include "fmexch.hxx"
|
|
|
|
#include "fmundo.hxx"
|
|
|
|
#include "fmpgeimp.hxx"
|
|
|
|
|
2007-06-27 17:12:20 +00:00
|
|
|
#include <svx/svxids.hrc>
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
#include "fmprop.hrc"
|
2007-06-27 17:12:20 +00:00
|
|
|
#include <svx/dialmgr.hxx>
|
2000-09-18 16:07:07 +00:00
|
|
|
#include "svditer.hxx"
|
2007-06-27 17:12:20 +00:00
|
|
|
#include <svx/svdouno.hxx>
|
2000-09-18 16:07:07 +00:00
|
|
|
#include <fmundo.hxx>
|
2007-06-27 17:12:20 +00:00
|
|
|
#include <svx/svdobj.hxx>
|
2000-09-18 16:07:07 +00:00
|
|
|
#include <vcl/msgbox.hxx>
|
|
|
|
#include <sfx2/dispatch.hxx>
|
|
|
|
#include <sfx2/objsh.hxx>
|
2000-09-21 11:31:31 +00:00
|
|
|
#include <sfx2/viewsh.hxx>
|
|
|
|
#include <sfx2/viewfrm.hxx>
|
2000-09-18 16:07:07 +00:00
|
|
|
#include <com/sun/star/lang/XServiceInfo.hpp>
|
|
|
|
#include <com/sun/star/form/FormComponentType.hpp>
|
|
|
|
#include <com/sun/star/awt/XTabControllerModel.hpp>
|
|
|
|
#include <vcl/menu.hxx>
|
|
|
|
#include <sfx2/objitem.hxx>
|
|
|
|
#include <sfx2/request.hxx>
|
|
|
|
#include <tools/shl.hxx>
|
|
|
|
|
|
|
|
#include <vcl/wrkwin.hxx>
|
|
|
|
#include <vcl/sound.hxx>
|
2007-06-27 17:12:20 +00:00
|
|
|
#include <svx/fmshell.hxx>
|
2000-09-18 16:07:07 +00:00
|
|
|
#include "fmshimp.hxx"
|
2007-06-27 17:12:20 +00:00
|
|
|
#include <svx/fmpage.hxx>
|
2000-09-18 16:07:07 +00:00
|
|
|
#include <com/sun/star/io/XPersistObject.hpp>
|
|
|
|
#include <com/sun/star/script/XEventAttacherManager.hpp>
|
|
|
|
#include <com/sun/star/sdb/CommandType.hpp>
|
|
|
|
#include <com/sun/star/beans/PropertyAttribute.hpp>
|
2000-10-20 13:18:57 +00:00
|
|
|
#include <comphelper/property.hxx>
|
|
|
|
#include <comphelper/processfactory.hxx>
|
2001-04-09 10:19:35 +00:00
|
|
|
#include <osl/diagnose.h>
|
2009-04-23 10:42:05 +00:00
|
|
|
#include <rtl/logfile.hxx>
|
2000-09-18 16:07:07 +00:00
|
|
|
|
2000-12-18 07:22:38 +00:00
|
|
|
using namespace ::svxform;
|
2001-04-09 10:19:35 +00:00
|
|
|
using namespace ::com::sun::star::uno;
|
2001-07-25 12:44:28 +00:00
|
|
|
using namespace ::com::sun::star::sdbc;
|
|
|
|
using namespace ::com::sun::star::sdb;
|
2002-05-08 05:56:37 +00:00
|
|
|
using namespace ::com::sun::star::form;
|
|
|
|
using namespace ::com::sun::star::beans;
|
|
|
|
using namespace ::com::sun::star::lang;
|
|
|
|
using namespace ::com::sun::star::container;
|
2000-12-18 07:22:38 +00:00
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
//========================================================================
|
|
|
|
|
|
|
|
SV_IMPL_PTRARR_SORT( FmEntryDataArray, FmEntryDataPtr )
|
|
|
|
SV_IMPL_PTRARR_SORT( SvLBoxEntrySortedArray, SvLBoxEntryPtr )
|
|
|
|
|
|
|
|
//========================================================================
|
2002-05-08 05:56:37 +00:00
|
|
|
// class FmNavInsertedHint
|
2000-09-18 16:07:07 +00:00
|
|
|
//========================================================================
|
2002-05-08 05:56:37 +00:00
|
|
|
TYPEINIT1( FmNavInsertedHint, SfxHint );
|
|
|
|
DBG_NAME(FmNavInsertedHint);
|
2000-09-18 16:07:07 +00:00
|
|
|
//------------------------------------------------------------------------
|
2002-05-08 05:56:37 +00:00
|
|
|
FmNavInsertedHint::FmNavInsertedHint( FmEntryData* pInsertedEntryData, sal_uInt32 nRelPos )
|
2000-09-18 16:07:07 +00:00
|
|
|
:pEntryData( pInsertedEntryData )
|
|
|
|
,nPos( nRelPos )
|
|
|
|
|
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
DBG_CTOR(FmNavInsertedHint,NULL);
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2002-05-08 05:56:37 +00:00
|
|
|
FmNavInsertedHint::~FmNavInsertedHint()
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
DBG_DTOR(FmNavInsertedHint,NULL);
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//========================================================================
|
2002-05-08 05:56:37 +00:00
|
|
|
// class FmNavInsertedHint
|
2000-09-18 16:07:07 +00:00
|
|
|
//========================================================================
|
2002-05-08 05:56:37 +00:00
|
|
|
TYPEINIT1( FmNavModelReplacedHint, SfxHint );
|
|
|
|
DBG_NAME(FmNavModelReplacedHint);
|
2000-09-18 16:07:07 +00:00
|
|
|
//------------------------------------------------------------------------
|
2002-05-08 05:56:37 +00:00
|
|
|
FmNavModelReplacedHint::FmNavModelReplacedHint( FmEntryData* pAffectedEntryData )
|
2000-09-18 16:07:07 +00:00
|
|
|
:pEntryData( pAffectedEntryData )
|
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
DBG_CTOR(FmNavModelReplacedHint,NULL);
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2002-05-08 05:56:37 +00:00
|
|
|
FmNavModelReplacedHint::~FmNavModelReplacedHint()
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
DBG_DTOR(FmNavModelReplacedHint,NULL);
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//========================================================================
|
2002-05-08 05:56:37 +00:00
|
|
|
// class FmNavRemovedHint
|
2000-09-18 16:07:07 +00:00
|
|
|
//========================================================================
|
2002-05-08 05:56:37 +00:00
|
|
|
TYPEINIT1( FmNavRemovedHint, SfxHint );
|
|
|
|
DBG_NAME(FmNavRemovedHint);
|
2000-09-18 16:07:07 +00:00
|
|
|
//------------------------------------------------------------------------
|
2002-05-08 05:56:37 +00:00
|
|
|
FmNavRemovedHint::FmNavRemovedHint( FmEntryData* pRemovedEntryData )
|
2000-09-18 16:07:07 +00:00
|
|
|
:pEntryData( pRemovedEntryData )
|
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
DBG_CTOR(FmNavRemovedHint,NULL);
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2002-05-08 05:56:37 +00:00
|
|
|
FmNavRemovedHint::~FmNavRemovedHint()
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
DBG_DTOR(FmNavRemovedHint,NULL);
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//========================================================================
|
2002-05-08 05:56:37 +00:00
|
|
|
// class FmNavNameChangedHint
|
2000-09-18 16:07:07 +00:00
|
|
|
//========================================================================
|
2002-05-08 05:56:37 +00:00
|
|
|
TYPEINIT1( FmNavNameChangedHint, SfxHint );
|
|
|
|
DBG_NAME(FmNavNameChangedHint);
|
2000-09-18 16:07:07 +00:00
|
|
|
//------------------------------------------------------------------------
|
2002-05-08 05:56:37 +00:00
|
|
|
FmNavNameChangedHint::FmNavNameChangedHint( FmEntryData* pData, const ::rtl::OUString& rNewName )
|
2000-09-18 16:07:07 +00:00
|
|
|
:pEntryData( pData )
|
|
|
|
,aNewName( rNewName )
|
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
DBG_CTOR(FmNavNameChangedHint,NULL);
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2002-05-08 05:56:37 +00:00
|
|
|
FmNavNameChangedHint::~FmNavNameChangedHint()
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
DBG_DTOR(FmNavNameChangedHint,NULL);
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//========================================================================
|
2002-05-08 05:56:37 +00:00
|
|
|
// class FmNavClearedHint
|
2000-09-18 16:07:07 +00:00
|
|
|
//========================================================================
|
2002-05-08 05:56:37 +00:00
|
|
|
TYPEINIT1( FmNavClearedHint, SfxHint );
|
|
|
|
DBG_NAME(FmNavClearedHint);
|
2000-09-18 16:07:07 +00:00
|
|
|
//------------------------------------------------------------------------
|
2002-05-08 05:56:37 +00:00
|
|
|
FmNavClearedHint::FmNavClearedHint()
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
DBG_CTOR(FmNavClearedHint,NULL);
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2002-05-08 05:56:37 +00:00
|
|
|
FmNavClearedHint::~FmNavClearedHint()
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
DBG_DTOR(FmNavClearedHint,NULL);
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//========================================================================
|
2002-05-08 05:56:37 +00:00
|
|
|
// class FmNavRequestSelectHint
|
2000-09-18 16:07:07 +00:00
|
|
|
//========================================================================
|
2002-05-08 05:56:37 +00:00
|
|
|
TYPEINIT1(FmNavRequestSelectHint, SfxHint);
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
//========================================================================
|
2002-05-08 05:56:37 +00:00
|
|
|
// class FmNavViewMarksChanged
|
2000-09-18 16:07:07 +00:00
|
|
|
//========================================================================
|
2002-05-08 05:56:37 +00:00
|
|
|
TYPEINIT1(FmNavViewMarksChanged, SfxHint);
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
//========================================================================
|
|
|
|
// class FmEntryDataList
|
|
|
|
//========================================================================
|
|
|
|
DBG_NAME(FmEntryDataList);
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
FmEntryDataList::FmEntryDataList()
|
|
|
|
{
|
|
|
|
DBG_CTOR(FmEntryDataList,NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
FmEntryDataList::~FmEntryDataList()
|
|
|
|
{
|
|
|
|
DBG_DTOR(FmEntryDataList,NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//========================================================================
|
|
|
|
// class FmEntryData
|
|
|
|
//========================================================================
|
|
|
|
TYPEINIT0( FmEntryData );
|
|
|
|
DBG_NAME(FmEntryData);
|
|
|
|
//------------------------------------------------------------------------
|
2002-09-25 11:42:14 +00:00
|
|
|
FmEntryData::FmEntryData( FmEntryData* pParentData, const Reference< XInterface >& _rxIFace )
|
2000-09-18 16:07:07 +00:00
|
|
|
:pParent( pParentData )
|
|
|
|
{
|
2009-04-23 10:42:05 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmEntryData::FmEntryData" );
|
2000-09-18 16:07:07 +00:00
|
|
|
DBG_CTOR(FmEntryData,NULL);
|
|
|
|
pChildList = new FmEntryDataList();
|
2002-09-25 11:42:14 +00:00
|
|
|
|
|
|
|
newObject( _rxIFace );
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
FmEntryData::~FmEntryData()
|
|
|
|
{
|
|
|
|
Clear();
|
|
|
|
delete pChildList;
|
|
|
|
DBG_DTOR(FmEntryData,NULL);
|
|
|
|
}
|
|
|
|
|
2002-09-25 11:42:14 +00:00
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmEntryData::newObject( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxIFace )
|
|
|
|
{
|
2009-04-23 10:42:05 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmEntryData::newObject" );
|
2002-09-25 11:42:14 +00:00
|
|
|
// do not just copy, normalize it
|
|
|
|
m_xNormalizedIFace = Reference< XInterface >( _rxIFace, UNO_QUERY );
|
|
|
|
m_xProperties = m_xProperties.query( m_xNormalizedIFace );
|
|
|
|
m_xChild = m_xChild.query( m_xNormalizedIFace );
|
|
|
|
}
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
//------------------------------------------------------------------------
|
|
|
|
FmEntryData::FmEntryData( const FmEntryData& rEntryData )
|
|
|
|
{
|
2009-04-23 10:42:05 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmEntryData::FmEntryData" );
|
2000-09-18 16:07:07 +00:00
|
|
|
pChildList = new FmEntryDataList();
|
|
|
|
aText = rEntryData.GetText();
|
2002-05-17 07:41:57 +00:00
|
|
|
m_aNormalImage = rEntryData.GetNormalImage();
|
|
|
|
m_aHCImage = rEntryData.GetHCImage();
|
2000-09-18 16:07:07 +00:00
|
|
|
pParent = rEntryData.GetParent();
|
|
|
|
|
|
|
|
FmEntryData* pChildData;
|
|
|
|
sal_uInt32 nEntryCount = rEntryData.GetChildList()->Count();
|
|
|
|
for( sal_uInt32 i=0; i<nEntryCount; i++ )
|
|
|
|
{
|
|
|
|
pChildData = rEntryData.GetChildList()->GetObject(i);
|
|
|
|
FmEntryData* pNewChildData = pChildData->Clone();
|
|
|
|
pChildList->Insert( pNewChildData, LIST_APPEND );
|
|
|
|
}
|
2002-09-25 11:42:14 +00:00
|
|
|
|
|
|
|
m_xNormalizedIFace = rEntryData.m_xNormalizedIFace;
|
|
|
|
m_xProperties = rEntryData.m_xProperties;
|
|
|
|
m_xChild = rEntryData.m_xChild;
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void FmEntryData::Clear()
|
|
|
|
{
|
2009-04-23 10:42:05 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmEntryData::Clear" );
|
2006-10-12 11:46:59 +00:00
|
|
|
for (;;)
|
|
|
|
{
|
|
|
|
FmEntryData* pEntryData = GetChildList()->Remove(ULONG(0));
|
|
|
|
if (pEntryData == NULL)
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
delete pEntryData;
|
2006-10-12 11:46:59 +00:00
|
|
|
}
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
sal_Bool FmEntryData::IsEqualWithoutChilds( FmEntryData* pEntryData )
|
|
|
|
{
|
2009-04-23 10:42:05 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmEntryData::IsEqualWithoutChilds" );
|
2000-09-18 16:07:07 +00:00
|
|
|
if(this == pEntryData)
|
|
|
|
return sal_True;
|
|
|
|
|
|
|
|
if( !pEntryData )
|
|
|
|
return sal_False;
|
|
|
|
|
|
|
|
if( !aText.equals(pEntryData->GetText()))
|
|
|
|
return sal_False;
|
|
|
|
|
|
|
|
if( !pEntryData->GetParent() && pParent )
|
|
|
|
return sal_False;
|
|
|
|
|
|
|
|
if( pEntryData->GetParent() && !pParent )
|
|
|
|
return sal_False;
|
|
|
|
|
|
|
|
if( !pEntryData->GetParent() && !pParent )
|
|
|
|
return sal_True;
|
|
|
|
|
|
|
|
if( !pParent->IsEqualWithoutChilds(pEntryData->GetParent()) )
|
|
|
|
return sal_False;
|
|
|
|
|
|
|
|
return sal_True;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//========================================================================
|
|
|
|
// class FmFormData
|
|
|
|
//========================================================================
|
|
|
|
TYPEINIT1( FmFormData, FmEntryData );
|
|
|
|
DBG_NAME(FmFormData);
|
|
|
|
//------------------------------------------------------------------------
|
2002-05-17 07:41:57 +00:00
|
|
|
FmFormData::FmFormData( const Reference< XForm >& _rxForm, const ImageList& _rNormalImages, const ImageList& _rHCImages, FmFormData* _pParent )
|
2002-09-25 11:42:14 +00:00
|
|
|
:FmEntryData( _pParent, _rxForm )
|
2002-05-17 07:41:57 +00:00
|
|
|
,m_xForm( _rxForm )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
|
|
|
DBG_CTOR(FmEntryData,NULL);
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
// Images setzen
|
|
|
|
|
2002-05-17 07:41:57 +00:00
|
|
|
m_aNormalImage = _rNormalImages.GetImage( RID_SVXIMG_FORM );
|
|
|
|
m_aHCImage = _rHCImages.GetImage( RID_SVXIMG_FORM );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
// Titel setzen
|
|
|
|
if (m_xForm.is())
|
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
Reference< XPropertySet > xSet(m_xForm, UNO_QUERY);
|
2000-09-18 16:07:07 +00:00
|
|
|
if (xSet.is())
|
|
|
|
{
|
2000-10-20 13:18:57 +00:00
|
|
|
::rtl::OUString aEntryName(::comphelper::getString(xSet->getPropertyValue( FM_PROP_NAME )));
|
2000-09-18 16:07:07 +00:00
|
|
|
SetText(aEntryName);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
SetText( ::rtl::OUString() );
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
FmFormData::~FmFormData()
|
|
|
|
{
|
|
|
|
DBG_DTOR(FmEntryData,NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
FmFormData::FmFormData( const FmFormData& rFormData )
|
|
|
|
:FmEntryData( rFormData )
|
|
|
|
{
|
|
|
|
DBG_CTOR(FmEntryData,NULL);
|
|
|
|
m_xForm = rFormData.GetFormIface();
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
FmEntryData* FmFormData::Clone()
|
|
|
|
{
|
|
|
|
return new FmFormData( *this );
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
sal_Bool FmFormData::IsEqualWithoutChilds( FmEntryData* pEntryData )
|
|
|
|
{
|
|
|
|
if(this == pEntryData)
|
|
|
|
return sal_True;
|
|
|
|
if( !pEntryData->ISA(FmFormData) )
|
|
|
|
return sal_False;
|
|
|
|
FmFormData* pFormData = (FmFormData*)pEntryData;
|
2002-05-08 05:56:37 +00:00
|
|
|
if( (XForm*)m_xForm.get() != (XForm*)pFormData->GetFormIface().get() )
|
2000-09-18 16:07:07 +00:00
|
|
|
return sal_False;
|
|
|
|
|
|
|
|
return FmEntryData::IsEqualWithoutChilds( pFormData );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//========================================================================
|
|
|
|
// class FmControlData
|
|
|
|
//========================================================================
|
|
|
|
TYPEINIT1( FmControlData, FmEntryData );
|
|
|
|
DBG_NAME(FmControlData);
|
|
|
|
//------------------------------------------------------------------------
|
2002-05-17 07:41:57 +00:00
|
|
|
FmControlData::FmControlData( const Reference< XFormComponent >& _rxComponent, const ImageList& _rNormalImages, const ImageList& _rHCImages, FmFormData* _pParent )
|
2002-09-25 11:42:14 +00:00
|
|
|
:FmEntryData( _pParent, _rxComponent )
|
2002-05-17 07:41:57 +00:00
|
|
|
,m_xFormComponent( _rxComponent )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2009-04-23 10:42:05 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmControlData::FmControlData" );
|
2000-09-18 16:07:07 +00:00
|
|
|
DBG_CTOR(FmControlData,NULL);
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
// Images setzen
|
2002-05-17 07:41:57 +00:00
|
|
|
m_aNormalImage = GetImage( _rNormalImages );
|
|
|
|
m_aHCImage = GetImage( _rHCImages );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
// Titel setzen
|
2002-05-08 05:56:37 +00:00
|
|
|
Reference< XPropertySet > xSet(m_xFormComponent, UNO_QUERY);
|
2000-09-18 16:07:07 +00:00
|
|
|
if( xSet.is() )
|
|
|
|
{
|
2006-10-12 11:46:59 +00:00
|
|
|
#ifdef DBG_UTIL
|
2000-10-20 13:18:57 +00:00
|
|
|
::rtl::OUString aEntryName = ::comphelper::getString(xSet->getPropertyValue( FM_PROP_NAME ));
|
2000-09-18 16:07:07 +00:00
|
|
|
#endif
|
2000-10-20 13:18:57 +00:00
|
|
|
SetText( ::comphelper::getString(xSet->getPropertyValue( FM_PROP_NAME )));
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
FmControlData::~FmControlData()
|
|
|
|
{
|
|
|
|
DBG_DTOR(FmControlData,NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
FmControlData::FmControlData( const FmControlData& rControlData )
|
|
|
|
:FmEntryData( rControlData )
|
|
|
|
{
|
|
|
|
DBG_CTOR(FmControlData,NULL);
|
|
|
|
m_xFormComponent = rControlData.GetFormComponent();
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
FmEntryData* FmControlData::Clone()
|
|
|
|
{
|
|
|
|
return new FmControlData( *this );
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
Image FmControlData::GetImage(const ImageList& ilNavigatorImages) const
|
|
|
|
{
|
2009-04-23 10:42:05 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmControlData::FmControlData" );
|
2000-09-18 16:07:07 +00:00
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
// Default-Image
|
|
|
|
Image aImage = ilNavigatorImages.GetImage( RID_SVXIMG_CONTROL );
|
|
|
|
|
2002-09-25 11:42:14 +00:00
|
|
|
Reference< XServiceInfo > xInfo( m_xFormComponent, UNO_QUERY );
|
|
|
|
if (!m_xFormComponent.is())
|
2000-09-18 16:07:07 +00:00
|
|
|
return aImage;
|
|
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
// Spezielle Control-Images
|
|
|
|
sal_Int16 nObjectType = getControlTypeByObject(xInfo);
|
|
|
|
switch (nObjectType)
|
|
|
|
{
|
|
|
|
case OBJ_FM_BUTTON:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_BUTTON );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_FIXEDTEXT:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_FIXEDTEXT );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_EDIT:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_EDIT );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_RADIOBUTTON:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_RADIOBUTTON );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_CHECKBOX:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_CHECKBOX );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_LISTBOX:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_LISTBOX );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_COMBOBOX:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_COMBOBOX );
|
|
|
|
break;
|
|
|
|
|
2004-04-13 09:57:24 +00:00
|
|
|
case OBJ_FM_NAVIGATIONBAR:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_NAVIGATIONBAR );
|
|
|
|
break;
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
case OBJ_FM_GROUPBOX:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_GROUPBOX );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_IMAGEBUTTON:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_IMAGEBUTTON );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_FILECONTROL:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_FILECONTROL );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_HIDDEN:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_HIDDEN );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_DATEFIELD:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_DATEFIELD );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_TIMEFIELD:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_TIMEFIELD );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_NUMERICFIELD:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_NUMERICFIELD );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_CURRENCYFIELD:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_CURRENCYFIELD );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_PATTERNFIELD:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_PATTERNFIELD );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_IMAGECONTROL:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_IMAGECONTROL );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_FORMATTEDFIELD:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_FORMATTEDFIELD );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_GRID:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_GRID );
|
|
|
|
break;
|
2003-12-11 11:16:28 +00:00
|
|
|
|
|
|
|
case OBJ_FM_SCROLLBAR:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_SCROLLBAR );
|
|
|
|
break;
|
|
|
|
|
|
|
|
case OBJ_FM_SPINBUTTON:
|
|
|
|
aImage = ilNavigatorImages.GetImage( RID_SVXIMG_SPINBUTTON);
|
|
|
|
break;
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return aImage;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
|
|
|
sal_Bool FmControlData::IsEqualWithoutChilds( FmEntryData* pEntryData )
|
|
|
|
{
|
2009-04-23 10:42:05 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmControlData::IsEqualWithoutChilds" );
|
2000-09-18 16:07:07 +00:00
|
|
|
if(this == pEntryData)
|
|
|
|
return sal_True;
|
|
|
|
|
|
|
|
if( !pEntryData->ISA(FmControlData) )
|
|
|
|
return sal_False;
|
|
|
|
FmControlData* pControlData = (FmControlData*)pEntryData;
|
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
if( (XFormComponent*)m_xFormComponent.get() != (XFormComponent*)pControlData->GetFormComponent().get() )
|
2000-09-18 16:07:07 +00:00
|
|
|
return sal_False;
|
|
|
|
|
|
|
|
return FmEntryData::IsEqualWithoutChilds( pControlData );
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------------
|
2002-05-17 07:41:57 +00:00
|
|
|
void FmControlData::ModelReplaced( const Reference< XFormComponent >& _rxNew, const ImageList& _rNormalImages, const ImageList& _rHCImages )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2009-04-23 10:42:05 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "svx", "Ocke.Janssen@sun.com", "FmControlData::ModelReplaced" );
|
2002-05-17 07:41:57 +00:00
|
|
|
m_xFormComponent = _rxNew;
|
2002-09-25 11:42:14 +00:00
|
|
|
newObject( m_xFormComponent );
|
|
|
|
|
2000-09-18 16:07:07 +00:00
|
|
|
// Images neu setzen
|
2002-05-17 07:41:57 +00:00
|
|
|
m_aNormalImage = GetImage( _rNormalImages );
|
|
|
|
m_aHCImage = GetImage( _rHCImages );
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//............................................................................
|
|
|
|
namespace svxform
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
//............................................................................
|
2000-09-18 16:07:07 +00:00
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//========================================================================
|
|
|
|
// class NavigatorFrame
|
|
|
|
//========================================================================
|
2002-05-15 07:11:57 +00:00
|
|
|
DBG_NAME(NavigatorFrame)
|
2002-05-08 05:56:37 +00:00
|
|
|
//------------------------------------------------------------------------
|
2006-06-19 14:54:37 +00:00
|
|
|
NavigatorFrame::NavigatorFrame( SfxBindings* _pBindings, SfxChildWindow* _pMgr,
|
|
|
|
Window* _pParent )
|
|
|
|
:SfxDockingWindow( _pBindings, _pMgr, _pParent, WinBits(WB_STDMODELESS|WB_SIZEABLE|WB_ROLLABLE|WB_3DLOOK|WB_DOCKABLE) )
|
|
|
|
,SfxControllerItem( SID_FM_FMEXPLORER_CONTROL, *_pBindings )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
DBG_CTOR(NavigatorFrame,NULL);
|
|
|
|
SetHelpId( HID_FORM_NAVIGATOR_WIN );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
m_pNavigatorTree = new NavigatorTree(comphelper::getProcessServiceFactory(), this );
|
|
|
|
m_pNavigatorTree->Show();
|
|
|
|
SetText( SVX_RES(RID_STR_FMEXPLORER) );
|
|
|
|
SfxDockingWindow::SetFloatingSize( Size(200,200) );
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//------------------------------------------------------------------------
|
|
|
|
NavigatorFrame::~NavigatorFrame()
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
delete m_pNavigatorTree;
|
|
|
|
DBG_DTOR(NavigatorFrame,NULL);
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//-----------------------------------------------------------------------
|
2006-06-19 14:54:37 +00:00
|
|
|
void NavigatorFrame::UpdateContent( FmFormShell* pFormShell )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2006-06-19 14:54:37 +00:00
|
|
|
m_pNavigatorTree->UpdateContent( pFormShell );
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
void NavigatorFrame::StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
if( !pState || SID_FM_FMEXPLORER_CONTROL != nSID )
|
|
|
|
return;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
if( eState >= SFX_ITEM_AVAILABLE )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
FmFormShell* pShell = PTR_CAST( FmFormShell,((SfxObjectItem*)pState)->GetShell() );
|
2006-06-19 14:54:37 +00:00
|
|
|
UpdateContent( pShell );
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
2002-05-08 05:56:37 +00:00
|
|
|
else
|
2006-06-19 14:54:37 +00:00
|
|
|
UpdateContent( NULL );
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
void NavigatorFrame::GetFocus()
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
if ( m_pNavigatorTree )
|
|
|
|
m_pNavigatorTree->GrabFocus();
|
|
|
|
else
|
|
|
|
SfxDockingWindow::GetFocus();
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
sal_Bool NavigatorFrame::Close()
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2006-06-19 14:54:37 +00:00
|
|
|
UpdateContent( NULL );
|
2002-05-08 05:56:37 +00:00
|
|
|
return SfxDockingWindow::Close();
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
void NavigatorFrame::FillInfo( SfxChildWinInfo& rInfo ) const
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
SfxDockingWindow::FillInfo( rInfo );
|
|
|
|
rInfo.bVisible = sal_False;
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
Size NavigatorFrame::CalcDockingSize( SfxChildAlignment eAlign )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2006-06-19 14:54:37 +00:00
|
|
|
if ( ( eAlign == SFX_ALIGN_TOP ) || ( eAlign == SFX_ALIGN_BOTTOM ) )
|
|
|
|
return Size();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
2006-06-19 14:54:37 +00:00
|
|
|
return SfxDockingWindow::CalcDockingSize( eAlign );
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//-----------------------------------------------------------------------
|
2006-06-19 14:54:37 +00:00
|
|
|
SfxChildAlignment NavigatorFrame::CheckAlignment( SfxChildAlignment _eActAlign, SfxChildAlignment _eAlign )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2006-06-19 14:54:37 +00:00
|
|
|
if ( ( _eAlign == SFX_ALIGN_LEFT ) || ( _eAlign == SFX_ALIGN_RIGHT ) || ( _eAlign == SFX_ALIGN_NOALIGNMENT ) )
|
|
|
|
return _eAlign;
|
|
|
|
return _eActAlign;
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//------------------------------------------------------------------------
|
|
|
|
void NavigatorFrame::Resize()
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2002-05-08 05:56:37 +00:00
|
|
|
SfxDockingWindow::Resize();
|
2000-09-18 16:07:07 +00:00
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
Size aLogOutputSize = PixelToLogic( GetOutputSizePixel(), MAP_APPFONT );
|
|
|
|
Size aLogExplSize = aLogOutputSize;
|
|
|
|
aLogExplSize.Width() -= 6;
|
|
|
|
aLogExplSize.Height() -= 6;
|
2000-09-18 16:07:07 +00:00
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
Point aExplPos = LogicToPixel( Point(3,3), MAP_APPFONT );
|
|
|
|
Size aExplSize = LogicToPixel( aLogExplSize, MAP_APPFONT );
|
2000-09-18 16:07:07 +00:00
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
m_pNavigatorTree->SetPosSizePixel( aExplPos, aExplSize );
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//========================================================================
|
|
|
|
// class NavigatorFrameManager
|
|
|
|
//========================================================================
|
2000-09-18 16:07:07 +00:00
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//-----------------------------------------------------------------------
|
|
|
|
SFX_IMPL_DOCKINGWINDOW( NavigatorFrameManager, SID_FM_SHOW_FMEXPLORER )
|
2000-09-18 16:07:07 +00:00
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//-----------------------------------------------------------------------
|
2006-06-19 14:54:37 +00:00
|
|
|
NavigatorFrameManager::NavigatorFrameManager( Window* _pParent, sal_uInt16 _nId,
|
|
|
|
SfxBindings* _pBindings, SfxChildWinInfo* _pInfo )
|
|
|
|
:SfxChildWindow( _pParent, _nId )
|
2000-09-18 16:07:07 +00:00
|
|
|
{
|
2006-06-19 14:54:37 +00:00
|
|
|
pWindow = new NavigatorFrame( _pBindings, this, _pParent );
|
2002-05-08 05:56:37 +00:00
|
|
|
eChildAlignment = SFX_ALIGN_NOALIGNMENT;
|
2006-06-19 14:54:37 +00:00
|
|
|
((SfxDockingWindow*)pWindow)->Initialize( _pInfo );
|
2000-09-18 16:07:07 +00:00
|
|
|
}
|
|
|
|
|
2002-05-08 05:56:37 +00:00
|
|
|
//............................................................................
|
|
|
|
} // namespace svxform
|
|
|
|
//............................................................................
|