summaryrefslogtreecommitdiff
path: root/svx/source/inc
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2000-09-18 16:07:07 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2000-09-18 16:07:07 +0000
commitfd069bee7e57ad529c3c0974559fd2d84ec3151a (patch)
treeef2eddeefb786feaf966d6a1c0c291872c0ae420 /svx/source/inc
parent04c1c754ab9d0ad07f2c5362d46597d13efe75c2 (diff)
initial import
Diffstat (limited to 'svx/source/inc')
-rw-r--r--svx/source/inc/filtnav.hxx362
-rw-r--r--svx/source/inc/fmcontr.hxx310
-rw-r--r--svx/source/inc/fmctrler.hxx592
-rw-r--r--svx/source/inc/fmexch.hxx152
-rw-r--r--svx/source/inc/fmexpl.hrc74
-rw-r--r--svx/source/inc/fmexpl.hxx600
-rw-r--r--svx/source/inc/fmgroup.hxx154
-rw-r--r--svx/source/inc/fmhlpids.hrc70
-rw-r--r--svx/source/inc/fmitems.hxx158
-rw-r--r--svx/source/inc/fmobj.hxx143
-rw-r--r--svx/source/inc/fmpgeimp.hxx183
-rw-r--r--svx/source/inc/fmprop.hrc398
-rw-r--r--svx/source/inc/fmresids.hrc492
-rw-r--r--svx/source/inc/fmsearch.hrc100
-rw-r--r--svx/source/inc/fmservs.hxx264
-rw-r--r--svx/source/inc/fmshimp.hxx801
-rw-r--r--svx/source/inc/fmsrccfg.hxx167
-rw-r--r--svx/source/inc/fmsrcimp.hxx423
-rw-r--r--svx/source/inc/fmstatic.hxx90
-rw-r--r--svx/source/inc/fmtools.hxx959
-rw-r--r--svx/source/inc/fmundo.hxx284
-rw-r--r--svx/source/inc/fmurl.hxx90
-rw-r--r--svx/source/inc/fmvwimp.hxx229
-rw-r--r--svx/source/inc/gridcell.hxx758
-rw-r--r--svx/source/inc/gridcols.hxx98
-rw-r--r--svx/source/inc/hlmarkwn.hrc68
-rw-r--r--svx/source/inc/hlmarkwn.hxx159
-rw-r--r--svx/source/inc/hyperdlg.hrc124
-rw-r--r--svx/source/inc/linectrl.hrc62
-rw-r--r--svx/source/inc/tabwin.hxx173
-rw-r--r--svx/source/inc/tbxform.hxx249
-rw-r--r--svx/source/inc/trace.hxx110
32 files changed, 8896 insertions, 0 deletions
diff --git a/svx/source/inc/filtnav.hxx b/svx/source/inc/filtnav.hxx
new file mode 100644
index 000000000000..dfb4c96a1430
--- /dev/null
+++ b/svx/source/inc/filtnav.hxx
@@ -0,0 +1,362 @@
+/*************************************************************************
+ *
+ * $RCSfile: filtnav.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FILTNAV_HXX
+#define _SVX_FILTNAV_HXX
+
+#ifndef _COM_SUN_STAR_AWT_XTEXTCOMPONENT_HPP_
+#include <com/sun/star/awt/XTextComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORM_HPP_
+#include <com/sun/star/form/XForm.hpp>
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _SFXBRDCST_HXX //autogen
+#include <svtools/brdcst.hxx>
+#endif
+
+#ifndef _SV_WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+
+#ifndef _SFXDOCKWIN_HXX //autogen
+#include <sfx2/dockwin.hxx>
+#endif
+
+#ifndef _DTRANS_HXX
+#include <so3/dtrans.hxx>
+#endif
+
+#ifndef _SFXCTRLITEM_HXX //autogen
+#include <sfx2/ctrlitem.hxx>
+#endif
+
+#ifndef _SV_IMAGE_HXX
+#include <vcl/image.hxx>
+#endif
+
+#ifndef _SVTREEBOX_HXX //autogen
+#include <svtools/svtreebx.hxx>
+#endif
+
+#ifndef _DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _SV_DOCKWIN_HXX //autogen
+#include <vcl/dockwin.hxx>
+#endif
+
+#ifndef _SVX_FMTOOLS_HXX
+#include <fmtools.hxx>
+#endif // _SVX_FMTOOLS_HXX
+
+class FmFormShell;
+class FmFilterItem;
+class FmFilterItems;
+class FmParentData;
+class FmFilterAdapter;
+
+//========================================================================
+// data structure for the filter model
+//========================================================================
+class FmFilterData
+{
+ FmParentData* m_pParent;
+ ::rtl::OUString m_aText;
+
+public:
+ TYPEINFO();
+ FmFilterData(FmParentData* pParent = NULL, const ::rtl::OUString& rText = ::rtl::OUString())
+ :m_pParent(pParent), m_aText(rText){}
+ virtual ~FmFilterData(){}
+
+ void SetText( const ::rtl::OUString& rText ){ m_aText = rText; }
+ ::rtl::OUString GetText() const { return m_aText; }
+ FmParentData* GetParent() const {return m_pParent;}
+ virtual Image GetImage() const;
+};
+
+//========================================================================
+class FmParentData : public FmFilterData
+{
+protected:
+ vector<FmFilterData*> m_aChilds;
+
+public:
+ TYPEINFO();
+ FmParentData(FmParentData* pParent, const ::rtl::OUString& rText):FmFilterData(pParent, rText){}
+ virtual ~FmParentData();
+
+ vector<FmFilterData*>& GetChilds() {return m_aChilds;}
+};
+
+//========================================================================
+// Item representing the forms and subforms
+class FmFormItem : public FmParentData
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController > m_xController;
+ sal_Int32 m_nCurrent;
+
+public:
+ TYPEINFO();
+ FmFormItem():FmParentData(NULL, ::rtl::OUString()){}
+ FmFormItem(FmParentData* _pParent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController > & _xController,
+ const ::rtl::OUString& _rText):FmParentData(_pParent, _rText)
+ ,m_xController(_xController)
+ ,m_nCurrent(0){}
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController > & GetController(){return m_xController;}
+ void SetCurrentPosition(sal_Int32 nCurrent){m_nCurrent = nCurrent;}
+ sal_Int32 GetCurrentPosition() const {return m_nCurrent;}
+ virtual Image GetImage() const;
+};
+
+//========================================================================
+class FmFilterItems : public FmParentData
+{
+public:
+ TYPEINFO();
+ FmFilterItems():FmParentData(NULL, ::rtl::OUString()){}
+ FmFilterItems(FmFormItem* pParent, const ::rtl::OUString& rText ):FmParentData(pParent, rText){}
+
+ FmFilterItem* Find(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextComponent > & xText) const;
+ virtual Image GetImage() const;
+};
+
+//========================================================================
+class FmFilterItem : public FmFilterData
+{
+ ::rtl::OUString m_aFieldName;
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextComponent > m_xText;
+
+public:
+ TYPEINFO();
+ FmFilterItem(FmFilterItems* pParent,
+ const ::rtl::OUString& aFieldName,
+ const ::rtl::OUString& aCondition,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextComponent > & xText);
+
+ const ::rtl::OUString& GetFieldName() const {return m_aFieldName;}
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextComponent > & GetTextComponent() const {return m_xText;}
+
+ virtual Image GetImage() const;
+};
+
+//========================================================================
+class FmFilterModel : public FmParentData
+ ,public SfxBroadcaster
+{
+ friend class FmFilterAdapter;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > m_xControllers;
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController > m_xController;
+ FmFilterAdapter* m_pAdapter;
+ FmFilterItems* m_pCurrentItems;
+
+public:
+ TYPEINFO();
+ FmFilterModel();
+ virtual ~FmFilterModel();
+
+ void Update(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > & xControllers, const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController > & xCurrent);
+ void Clear();
+ sal_Bool ValidateText(FmFilterItem* pItem, UniString& rText, UniString& rErrorMsg) const;
+ void Append(FmFilterItems* pItems, FmFilterItem* pFilterItem);
+ void SetText(FmFilterItem* pItem, const ::rtl::OUString& rText);
+
+ FmFormItem* GetCurrentForm() const {return m_pCurrentItems ? (FmFormItem*)m_pCurrentItems->GetParent() : NULL;}
+ FmFilterItems* GetCurrentItems() const {return m_pCurrentItems;}
+ void SetCurrentItems(FmFilterItems* pCurrent);
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > & GetControllers() const {return m_xControllers;}
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController > & GetCurrentController() const {return m_xController;}
+ void SetCurrentController(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController > & xController);
+
+ void Remove(FmFilterData* pFilterItem);
+ void AppendFilterItems(FmFormItem* pItem);
+ void CheckIntegrity(FmParentData* pItem);
+
+protected:
+ void Insert(const vector<FmFilterData*>::iterator& rPos, FmFilterData* pFilterItem);
+ void Remove(const vector<FmFilterData*>::iterator& rPos, FmFilterData* pFilterItem);
+ FmFormItem* Find(const ::std::vector<FmFilterData*>& rItems, const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController > & xController) const;
+ FmFormItem* Find(const ::std::vector<FmFilterData*>& rItems, const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& xForm) const;
+ void Update(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > & xControllers, FmParentData* pParent);
+};
+
+//========================================================================
+class FmFilterNavigator : public SvTreeListBox, public SfxListener
+{
+ enum DROP_ACTION{ DA_SCROLLUP, DA_SCROLLDOWN, DA_EXPANDNODE };
+
+ FmFilterModel* m_pModel;
+ Timer m_aSelectTimer;
+
+ AutoTimer m_aDropActionTimer;
+ unsigned short m_aTimerCounter;
+ Point m_aTimerTriggered; // die Position, an der der DropTimer angeschaltet wurde
+ DROP_ACTION m_aDropActionType;
+
+public:
+ FmFilterNavigator( Window* pParent );
+ virtual ~FmFilterNavigator();
+
+ void Update(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > & xControllers, const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController > & xCurrent);
+ FmFilterModel* const GetFilterModel() const {return m_pModel;}
+
+protected:
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void Command( const CommandEvent& rEvt );
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ virtual void InitEntry(SvLBoxEntry* pEntry, const XubString& rStr, const Image& rImg1, const Image& rImg2);
+ virtual sal_Bool Select( SvLBoxEntry* pEntry, sal_Bool bSelect=sal_True );
+ virtual sal_Bool EditingEntry( SvLBoxEntry* pEntry, Selection& rSelection );
+ virtual sal_Bool EditedEntry( SvLBoxEntry* pEntry, const XubString& rNewText );
+ virtual sal_Bool QueryDrop( DropEvent& rDEvt );
+ virtual sal_Bool Drop( const DropEvent& rDEvt );
+
+ void DeleteSelection();
+ void Clear();
+ SvLBoxEntry* FindEntry(FmFilterData* pItem);
+ void Insert(FmFilterData* pItem, sal_Int32 nPos);
+ void Remove(FmFilterData* pItem);
+
+ DECL_LINK(OnRemove, SvLBoxEntry*);
+ DECL_LINK(OnEdited, SvLBoxEntry*);
+ DECL_LINK(OnSelect, void*);
+ DECL_LINK(OnDropActionTimer, void*);
+};
+
+//========================================================================
+class FmFilterNavigatorWin : public SfxDockingWindow, public SfxControllerItem
+{
+private:
+ FmFilterNavigator* m_pNavigator;
+
+protected:
+ virtual void Resize();
+ virtual sal_Bool Close();
+ virtual Size CalcDockingSize( SfxChildAlignment );
+ virtual SfxChildAlignment CheckAlignment( SfxChildAlignment, SfxChildAlignment );
+
+public:
+ FmFilterNavigatorWin( SfxBindings *pBindings, SfxChildWindow *pMgr,
+ Window* pParent );
+ virtual ~FmFilterNavigatorWin();
+
+ void Update( FmFormShell* pFormShell );
+ void StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState );
+ void FillInfo( SfxChildWinInfo& rInfo ) const;
+};
+
+//========================================================================
+class FmFilterNavigatorWinMgr : public SfxChildWindow
+{
+public:
+ FmFilterNavigatorWinMgr( Window *pParent, sal_uInt16 nId, SfxBindings *pBindings,
+ SfxChildWinInfo *pInfo );
+ SFX_DECL_CHILDWINDOW( FmFilterNavigatorWinMgr );
+};
+
+//========================================================================
+class FmFormItem;
+class FmFilterItem;
+class SvxFmFilterExch : public SvDataObject
+{
+ SvDataTypeList m_aDataTypeList;
+ vector<FmFilterItem*> m_aDraggedEntries;
+ FmFormItem* m_pFormItem; // ensure that we drop on the same form
+
+public:
+ SvxFmFilterExch(FmFormItem* pFormItem, const vector<FmFilterItem*>& lstWhich );
+
+ virtual const SvDataTypeList& GetTypeList() const { return m_aDataTypeList; }
+ virtual sal_Bool GetData( SvData* );
+
+ const vector<FmFilterItem*>& GetDraggedEntries() const { return m_aDraggedEntries; }
+ FmFormItem* GetFormItem() const {return m_pFormItem;}
+};
+
+SV_DECL_IMPL_REF( SvxFmFilterExch );
+
+#endif // _SVX_FILTNAV_HXX
+
diff --git a/svx/source/inc/fmcontr.hxx b/svx/source/inc/fmcontr.hxx
new file mode 100644
index 000000000000..a2a394843988
--- /dev/null
+++ b/svx/source/inc/fmcontr.hxx
@@ -0,0 +1,310 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmcontr.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMCONTR_HXX
+#define _SVX_FMCONTR_HXX
+
+#include <unotools/stl_types.hxx>
+
+#ifndef _COM_SUN_STAR_FORM_XFORMCOMPONENT_HPP_
+#include <com/sun/star/form/XFormComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYCHANGELISTENER_HPP_
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYCHANGEEVENT_HPP_
+#include <com/sun/star/beans/PropertyChangeEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCRIPT_XEVENTATTACHERMANAGER_HPP_
+#include <com/sun/star/script/XEventAttacherManager.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCRIPT_SCRIPTEVENT_HPP_
+#include <com/sun/star/script/ScriptEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCRIPT_SCRIPTEVENTDESCRIPTOR_HPP_
+#include <com/sun/star/script/ScriptEventDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XCONTAINER_HPP_
+#include <com/sun/star/container/XContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXCONTAINER_HPP_
+#include <com/sun/star/container/XIndexContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEREPLACE_HPP_
+#include <com/sun/star/container/XNameReplace.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXREPLACE_HPP_
+#include <com/sun/star/container/XIndexReplace.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMECONTAINER_HPP_
+#include <com/sun/star/container/XNameContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XEVENTLISTENER_HPP_
+#include <com/sun/star/lang/XEventListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_EVENTOBJECT_HPP_
+#include <com/sun/star/lang/EventObject.hpp>
+#endif
+
+typedef ::std::hash_multimap< ::rtl::OUString, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > , ::utl::UStringHash, ::utl::UStringEqual> OInterfaceMap;
+
+DECLARE_STL_VECTOR(::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > > ,InterfaceArray);
+
+class ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectOutputStream > ;
+class ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectInputStream > ;
+
+//==================================================================
+// FmForms
+// Implementiert den UNO-::com::sun::star::sdbcx::Container fuer Formulare
+// enthaelt alle zugeordneten ::com::sun::star::form::Forms
+// dieses ::com::sun::star::sdbcx::Container kann selbst den Context fuer Formulare darstellen
+// oder auen einen Context uebergeben bekommen
+//==================================================================
+class FmXInterfaceContainer : public ::com::sun::star::container::XNameContainer,
+ public ::com::sun::star::container::XIndexContainer,
+ public ::com::sun::star::container::XContainer,
+ public ::com::sun::star::container::XEnumerationAccess,
+ public ::com::sun::star::script::XEventAttacherManager,
+ public ::com::sun::star::beans::XPropertyChangeListener
+{
+protected:
+ OInterfaceMap m_aMap;
+ OInterfaceArray m_aItems;
+ ::usr::OInterfaceContainerHelper
+ m_aContainerListeners;
+
+ InterfaceReflection* m_pElementReflection;
+ ::VOS::IMutex& m_rMutex;
+ ::com::sun::star::uno::Uik m_aElementUik;
+
+
+ // EventManager
+ ::com::sun::star::uno::Reference< ::com::sun::star::script::XEventAttacherManager > m_xEventAttacher;
+
+public:
+ FmXInterfaceContainer(::VOS::IMutex& _rMutex, InterfaceReflection* pElementReflection, const ::com::sun::star::uno::Uik& rUik );
+
+public:
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// virtual sal_Bool queryInterface( ::com::sun::star::uno::Uik aUik, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & rOut );
+
+
+// ::com::sun::star::io::XPersistObject
+ void write(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectOutputStream > & OutStream);
+ void read(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectInputStream > & InStream);
+
+// ::com::sun::star::lang::XEventListener
+ virtual void disposing(const ::com::sun::star::lang::EventObject& Source) throw( ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::beans::XPropertyChangeListener
+ virtual void propertyChange(const ::com::sun::star::beans::PropertyChangeEvent& evt);
+
+// ::com::sun::star::container::XElementAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::reflection::XIdlClass > getElementType(void) const throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool hasElements(void) const throw( ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::container::XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > createEnumeration(void) throw( ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::container::XNameAccess
+ virtual ::com::sun::star::uno::Any getByName(const ::rtl::OUString& Name) const throw( ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > getElementNames(void) const throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool hasByName(const ::rtl::OUString& Name) const throw( ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::container::XNameReplace
+ virtual void replaceByName(const ::rtl::OUString& Name, const ::com::sun::star::uno::Any& Element) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::container::XNameContainer
+ virtual void insertByName(const ::rtl::OUString& Name, const ::com::sun::star::uno::Any& Element) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::ElementExistException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+ virtual void removeByName(const ::rtl::OUString& Name) throw( ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::container::XIndexAccess
+ virtual sal_Int32 getCount(void) const throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any getByIndex(sal_Int32 ::com::sun::star::sdbcx::Index) const throw( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::container::XIndexReplace
+ virtual void replaceByIndex(sal_Int32 ::com::sun::star::sdbcx::Index, const ::com::sun::star::uno::Any& Element) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::container::XIndexContainer
+ virtual void insertByIndex(sal_Int32 ::com::sun::star::sdbcx::Index, const ::com::sun::star::uno::Any& Element) throw( ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+ virtual void removeByIndex(sal_Int32 ::com::sun::star::sdbcx::Index) throw( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::container::XContainer
+ virtual void addContainerListener(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener > & l) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void removeContainerListener(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener > & l) throw( ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::script::XEventAttacherManager
+ virtual void registerScriptEvent(sal_Int32 nIndex, const ::com::sun::star::script::ScriptEventDescriptor& ::com::sun::star::script::ScriptEvent);
+ virtual void registerScriptEvents(sal_Int32 nIndex, const ::com::sun::star::uno::Sequence< ::com::sun::star::script::ScriptEventDescriptor >& ScriptEvents);
+ virtual void revokeScriptEvent(sal_Int32 nIndex, const ::rtl::OUString& ListenerType, const ::rtl::OUString& EventMethod, const ::rtl::OUString& rRemoveListenerParam);
+ virtual void revokeScriptEvents(sal_Int32 nIndex);
+ virtual void insertEntry(sal_Int32 nIndex);
+ virtual void removeEntry(sal_Int32 nIndex);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::script::ScriptEventDescriptor > getScriptEvents(sal_Int32 nIndex);
+ virtual void attach(sal_Int32 nIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & Object, const ::com::sun::star::uno::Any& Helper);
+ virtual void detach(sal_Int32 nIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & xObject);
+ virtual void addScriptListener(const ::com::sun::star::uno::Reference< ::com::sun::star::script::XScriptListener > & aListener);
+ virtual void removeScriptListener(const ::com::sun::star::uno::Reference< ::com::sun::star::script::XScriptListener > & aListener);
+
+ static ::com::sun::star::uno::Reference< ::com::sun::star::reflection::XIdlClass > getStaticIdlClass();
+
+protected:
+ // helper
+ virtual void disposing();
+ virtual void insert(sal_Int32 ::com::sun::star::sdbcx::Index, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & _Object, sal_Bool bEvents = sal_True)
+ throw( ::com::sun::star::lang::IllegalArgumentException );
+ virtual void removeElementsNoEvents(sal_Int32 nIndex);
+
+ // called after the object is inserted, but before the "real listeners" are notified
+ virtual void implInserted(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & _rxObject) { }
+ // called after the object is removed, but before the "real listeners" are notified
+ virtual void implRemoved(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & _rxObject) { }
+
+ void writeEvents(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectOutputStream > & OutStream);
+ void readEvents(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectInputStream > & InStream, sal_Int32 nCount);
+};
+
+//==================================================================
+// FmForms
+// Implementiert den UNO-::com::sun::star::sdbcx::Container fuer Formulare
+// enthaelt alle zugeordneten ::com::sun::star::form::Forms
+// dieses ::com::sun::star::sdbcx::Container kann selbst den Context fuer Formulare darstellen
+// oder auen einen Context uebergeben bekommen
+//==================================================================
+class FmXForms : public ::usr::OComponentHelper,
+ public FmXInterfaceContainer,
+ public ::com::sun::star::container::XChild
+
+{
+ friend Reflection* ::getCppuType((const FmXForms*)0);
+ ::osl::Mutex m_aMutex;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_xParent; // Parent
+
+public:
+ FmXForms();
+ virtual ~FmXForms();
+
+public:
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// virtual sal_Bool queryInterface( ::com::sun::star::uno::Uik aUik, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & rOut )
+
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// { return OComponentHelper::queryInterface( aUik, rOut ); }
+
+ virtual sal_Bool queryAggregation(::com::sun::star::uno::Uik aUik, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & rOut);
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::reflection::XIdlClass > > getIdlClasses(void);
+
+// automatisch auskommentiert - [getImplementation] - Wird von OWeakObject nicht weiter untersttzt!
+// virtual void* getImplementation(Reflection * pRef);
+
+ virtual void acquire() { OComponentHelper::acquire(); }
+ virtual void release() { OComponentHelper::release(); }
+
+// OComponentHelper
+ virtual void disposing();
+
+// ::com::sun::star::container::XChild
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getParent(void) const throw( ::com::sun::star::uno::RuntimeException );
+ virtual void setParent(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & Parent) throw( ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException );
+};
+
+//==================================================================
+// FmForm
+// Implementiert den UNO-::com::sun::star::sdbcx::Container fuer FormularControls
+//==================================================================
+class FmXFormComponents : public ::usr::OComponentHelper,
+ public FmXInterfaceContainer,
+ public ::com::sun::star::form::XFormComponent
+{
+protected:
+ ::osl::Mutex m_aMutex;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_xParent; // Parent
+
+public:
+ FmXFormComponents();
+ virtual ~FmXFormComponents();
+
+ SMART_UNO_DECLARATION(FmXFormComponents, OComponentHelper);
+
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// virtual sal_Bool queryInterface( ::com::sun::star::uno::Uik aUik, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & rOut )
+
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// { return OComponentHelper::queryInterface( aUik, rOut ); }
+
+ virtual sal_Bool queryAggregation(::com::sun::star::uno::Uik aUik, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & rOut);
+// automatisch auskommentiert - [getIdlClass or queryInterface] - Bitte XTypeProvider benutzen!
+// virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::reflection::XIdlClass > > getIdlClasses(void);
+
+
+// OComponentHelper
+ virtual void disposing();
+
+// ::com::sun::star::form::XFormComponent
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getParent(void) const throw( ::com::sun::star::uno::RuntimeException );
+ virtual void setParent(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & Parent) throw( ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException );
+
+ static ::com::sun::star::uno::Reference< ::com::sun::star::reflection::XIdlClass > getStaticIdlClass();
+};
+
+
+#endif // _SVX_FMCONTR_HXX
+
diff --git a/svx/source/inc/fmctrler.hxx b/svx/source/inc/fmctrler.hxx
new file mode 100644
index 000000000000..d5396056b624
--- /dev/null
+++ b/svx/source/inc/fmctrler.hxx
@@ -0,0 +1,592 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmctrler.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMCTRLER_HXX
+#define _SVX_FMCTRLER_HXX
+
+#ifndef _UTL_STLTYPES_HXX_
+#include <unotools/stl_types.hxx>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XSQLERRORBROADCASTER_HPP_
+#include <com/sun/star/sdb/XSQLErrorBroadcaster.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XSQLERRORLISTENER_HPP_
+#include <com/sun/star/sdb/XSQLErrorListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XSQLQUERYCOMPOSERFACTORY_HPP_
+#include <com/sun/star/sdb/XSQLQueryComposerFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XROWSETAPPROVEBROADCASTER_HPP_
+#include <com/sun/star/sdb/XRowSetApproveBroadcaster.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XROWSETAPPROVELISTENER_HPP_
+#include <com/sun/star/sdb/XRowSetApproveListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XROWSETLISTENER_HPP_
+#include <com/sun/star/sdbc/XRowSetListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XRESETLISTENER_HPP_
+#include <com/sun/star/form/XResetListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXCONTAINER_HPP_
+#include <com/sun/star/container/XIndexContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_CONTAINEREVENT_HPP_
+#include <com/sun/star/container/ContainerEvent.hpp>
+#endif
+#include <com/sun/star/container/XEnumerationAccess.hpp>
+#ifndef _COM_SUN_STAR_CONTAINER_XCONTAINER_HPP_
+#include <com/sun/star/container/XContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XCHILD_HPP_
+#include <com/sun/star/container/XChild.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XCONTAINERLISTENER_HPP_
+#include <com/sun/star/container/XContainerListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XFOCUSLISTENER_HPP_
+#include <com/sun/star/awt/XFocusListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_FOCUSEVENT_HPP_
+#include <com/sun/star/awt/FocusEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XCONFIRMDELETEBROADCASTER_HPP_
+#include <com/sun/star/form/XConfirmDeleteBroadcaster.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_DATABASEPARAMETEREVENT_HPP_
+#include <com/sun/star/form/DatabaseParameterEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_DATABASEDELETEEVENT_HPP_
+#include <com/sun/star/form/DatabaseDeleteEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XDATABASEPARAMETERLISTENER_HPP_
+#include <com/sun/star/form/XDatabaseParameterListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XLOADLISTENER_HPP_
+#include <com/sun/star/form/XLoadListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XCONFIRMDELETELISTENER_HPP_
+#include <com/sun/star/form/XConfirmDeleteListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_ERROREVENT_HPP_
+#include <com/sun/star/form/ErrorEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XDATABASEPARAMETERBROADCASTER_HPP_
+#include <com/sun/star/form/XDatabaseParameterBroadcaster.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCONTROLLER_HPP_
+#include <com/sun/star/form/XFormController.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCONTROLLERLISTENER_HPP_
+#include <com/sun/star/form/XFormControllerListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XDISPATCHPROVIDERINTERCEPTOR_HPP_
+#include <com/sun/star/frame/XDispatchProviderInterceptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XDISPATCH_HPP_
+#include <com/sun/star/frame/XDispatch.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XDISPATCHPROVIDER_HPP_
+#include <com/sun/star/frame/XDispatchProvider.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XDISPATCHPROVIDERINTERCEPTION_HPP_
+#include <com/sun/star/frame/XDispatchProviderInterception.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_DISPATCHDESCRIPTOR_HPP_
+#include <com/sun/star/frame/DispatchDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XMODESELECTOR_HPP_
+#include <com/sun/star/util/XModeSelector.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XMODIFYLISTENER_HPP_
+#include <com/sun/star/util/XModifyListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XMODIFYBROADCASTER_HPP_
+#include <com/sun/star/util/XModifyBroadcaster.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUE_HPP_
+#include <com/sun/star/beans/PropertyValue.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSETINFO_HPP_
+#include <com/sun/star/beans/XPropertySetInfo.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYCHANGELISTENER_HPP_
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYCHANGEEVENT_HPP_
+#include <com/sun/star/beans/PropertyChangeEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCRIPT_XEVENTATTACHERMANAGER_HPP_
+#include <com/sun/star/script/XEventAttacherManager.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XTEXTLISTENER_HPP_
+#include <com/sun/star/awt/XTextListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XITEMLISTENER_HPP_
+#include <com/sun/star/awt/XItemListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XTEXTCOMPONENT_HPP_
+#include <com/sun/star/awt/XTextComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XTABCONTROLLERMODEL_HPP_
+#include <com/sun/star/awt/XTabControllerModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCONTROLMODEL_HPP_
+#include <com/sun/star/awt/XControlModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCONTROLCONTAINER_HPP_
+#include <com/sun/star/awt/XControlContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XTABCONTROLLER_HPP_
+#include <com/sun/star/awt/XTabController.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCONTROL_HPP_
+#include <com/sun/star/awt/XControl.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+
+#ifndef _SV_TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+
+#ifndef _SVX_FMTOOLS_HXX
+#include "fmtools.hxx"
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx>
+#endif
+#ifndef _CPPUHELPER_PROPSHLP_HXX
+#include <cppuhelper/propshlp.hxx>
+#endif
+#ifndef _FM_IMPLEMENTATION_IDS_HXX_
+#include <fmimplids.hxx>
+#endif
+#ifndef _UNOTOOLS_PROPERTY_ARRAY_HELPER_HXX_
+#include <unotools/proparrhlp.hxx>
+#endif
+#ifndef _TOOLS_DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+
+struct FmXTextComponentLess : public binary_function< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextComponent >, ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextComponent> , sal_Bool>
+{
+ sal_Bool operator() (const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextComponent >& x, const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextComponent >& y) const
+ {
+ return reinterpret_cast<sal_Int64>(x.get()) < reinterpret_cast<sal_Int64>(y.get());
+ }
+};
+
+typedef map< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextComponent >, ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >, FmXTextComponentLess> FmFilterControls;
+typedef map< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextComponent >, ::rtl::OUString, FmXTextComponentLess> FmFilterRow;
+typedef vector< FmFilterRow > FmFilterRows;
+typedef vector< ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController > > FmFormControllers;
+
+struct FmFieldInfo;
+class FmXFormController;
+class FmFormView;
+class Window;
+
+//==================================================================
+// FmXFormController
+//==================================================================
+class FmXFormController :public ::cppu::OComponentHelper
+ ,public ::cppu::OPropertySetHelper
+ ,public ::com::sun::star::form::XFormController
+ ,public ::com::sun::star::container::XChild
+ ,public ::com::sun::star::container::XIndexAccess // zugriff auf child contoller
+ ,public ::com::sun::star::container::XEnumerationAccess
+ ,public ::com::sun::star::awt::XFocusListener
+ ,public ::com::sun::star::form::XLoadListener
+ ,public ::com::sun::star::beans::XPropertyChangeListener
+ ,public ::com::sun::star::awt::XTextListener
+ ,public ::com::sun::star::awt::XItemListener
+ ,public ::com::sun::star::container::XContainerListener
+ ,public ::com::sun::star::util::XModifyListener
+ ,public ::com::sun::star::util::XModifyBroadcaster
+ ,public ::com::sun::star::util::XModeSelector
+ ,public ::com::sun::star::form::XConfirmDeleteListener
+ ,public ::com::sun::star::form::XConfirmDeleteBroadcaster
+ ,public ::com::sun::star::sdb::XSQLErrorListener
+ ,public ::com::sun::star::sdb::XSQLErrorBroadcaster
+ ,public ::com::sun::star::sdbc::XRowSetListener
+ ,public ::com::sun::star::sdb::XRowSetApproveListener
+ ,public ::com::sun::star::sdb::XRowSetApproveBroadcaster
+ ,public ::com::sun::star::form::XDatabaseParameterListener
+ ,public ::com::sun::star::form::XDatabaseParameterBroadcaster
+ ,public ::com::sun::star::lang::XServiceInfo
+ ,public ::com::sun::star::form::XResetListener
+ ,public ::com::sun::star::lang::XUnoTunnel
+ ,public FmDispatchInterceptor
+ ,public ::utl::OAggregationArrayUsageHelper< FmXFormController>
+{
+ friend class FmXPageViewWinRec;
+
+ // friend Reflection* FmXFormController_getReflection();
+
+ ::osl::Mutex m_aMutex;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XAggregation> m_xAggregate;
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTabController> m_xTabController, m_xNavigationController;
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl> m_xActiveControl, m_xCurrentControl;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess> m_xModelAsIndex;
+ ::com::sun::star::uno::Reference< ::com::sun::star::script::XEventAttacherManager> m_xModelAsManager;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> m_xParent;
+ // Composer used for checking filter conditions
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSQLQueryComposer> m_xComposer;
+
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl> > m_aControls;
+ ::cppu::OInterfaceContainerHelper
+ m_aActivateListeners,
+ m_aModifyListeners,
+ m_aErrorListeners,
+ m_aDeleteListeners,
+ m_aRowSetApproveListeners,
+ m_aParameterListeners;
+
+ FmFormControllers m_aChilds;
+ FmFilterControls m_aFilterControls;
+ FmFilterRows m_aFilters;
+ ::form::OImplementationIdsRef m_aHoldImplIdHelper;
+
+ Timer m_aInsertTimer;
+
+ FmFormView* m_pView;
+ Window* m_pWindow;
+
+ ::rtl::OUString m_aMode;
+
+ sal_uInt32 m_nLoadEvent;
+ sal_uInt32 m_nUpdateDispatcherEvent;
+ sal_uInt32 m_nToggleEvent;
+
+ sal_Int32 m_nCurrentFilterPosition; // current level for filtering (or-criteria)
+ ::rtl::OUString m_sDispatchPrefix;
+
+ sal_Bool m_bCurrentRecordModified : 1;
+ sal_Bool m_bCurrentRecordNew : 1;
+ sal_Bool m_bLocked : 1;
+ sal_Bool m_bDBConnection : 1; // Focuslistener nur fuer Datenbankformulare
+ sal_Bool m_bCycle : 1;
+ sal_Bool m_bCanInsert : 1;
+ sal_Bool m_bCanUpdate : 1;
+ sal_Bool m_bCommitLock : 1; // lock the committing of controls see focusGained
+ sal_Bool m_bModified : 1; // ist der Inhalt eines Controls modifiziert ?
+ sal_Bool m_bControlsSorted : 1;
+ sal_Bool m_bFiltering : 1;
+ sal_Bool m_bAttachEvents : 1;
+ sal_Bool m_bDetachEvents : 1;
+
+ // as we want to intercept dispatches of _all_ controls we're responsible for, and an object implementing
+ // the ::com::sun::star::frame::XDispatchProviderInterceptor interface can intercept only _one_ objects dispatches, we need a helper class
+ DECLARE_STL_VECTOR(FmXDispatchInterceptorImpl*, Interceptors);
+ Interceptors m_aControlDispatchInterceptors;
+
+public:
+ FmXFormController(FmFormView* _pView = NULL, Window* _pWindow = NULL, const UniString& _sDispatchPrefix = UniString());
+ ~FmXFormController();
+
+ // UNO Anbindung
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& type) throw ( ::com::sun::star::uno::RuntimeException )
+ { return OComponentHelper::queryInterface( type ); }
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL acquire() { OComponentHelper::acquire(); }
+ virtual void SAL_CALL release() { OComponentHelper::release(); }
+
+// XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException)
+ {
+ return ::form::OImplementationIds::getImplementationId(getTypes());
+ }
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+
+// XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+ static ::com::sun::star::uno::Sequence< sal_Int8 > getUnoTunnelImplementationId();
+
+
+// ::com::sun::star::container::XChild
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> SAL_CALL getParent(void) throw( ::com::sun::star::uno::RuntimeException ) {return m_xParent;}
+ virtual void SAL_CALL setParent(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& Parent) throw( ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException )
+ {m_xParent = Parent;}
+
+// ::com::sun::star::lang::XEventListener
+ virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw( ::com::sun::star::uno::RuntimeException );
+
+// OComponentHelper
+ virtual void SAL_CALL disposing();
+
+// OPropertySetHelper
+ virtual sal_Bool SAL_CALL convertFastPropertyValue( ::com::sun::star::uno::Any & rConvertedValue, ::com::sun::star::uno::Any & rOldValue,
+ sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue )
+ throw( ::com::sun::star::lang::IllegalArgumentException );
+
+ virtual void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue );
+ virtual void SAL_CALL getFastPropertyValue( ::com::sun::star::uno::Any& rValue, sal_Int32 nHandle ) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo> SAL_CALL getPropertySetInfo();
+ virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
+
+// XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL hasElements(void) throw( ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::container::XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration> SAL_CALL createEnumeration(void) throw( ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::container::XContainerListener
+ virtual void SAL_CALL elementInserted(const ::com::sun::star::container::ContainerEvent& rEvent);
+ virtual void SAL_CALL elementReplaced(const ::com::sun::star::container::ContainerEvent& rEvent);
+ virtual void SAL_CALL elementRemoved(const ::com::sun::star::container::ContainerEvent& rEvent);
+
+// XLoadListener
+ virtual void SAL_CALL loaded(const ::com::sun::star::lang::EventObject& rEvent);
+ virtual void SAL_CALL unloaded(const ::com::sun::star::lang::EventObject& rEvent);
+ virtual void SAL_CALL unloading(const ::com::sun::star::lang::EventObject& aEvent) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL reloading(const ::com::sun::star::lang::EventObject& aEvent) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL reloaded(const ::com::sun::star::lang::EventObject& aEvent) throw( ::com::sun::star::uno::RuntimeException );
+
+// XModeSelector
+ virtual void SAL_CALL setMode(const ::rtl::OUString& Mode) throw( ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException );
+ virtual ::rtl::OUString SAL_CALL getMode(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedModes(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL supportsMode(const ::rtl::OUString& Mode) throw( ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::container::XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount(void) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 Index) throw( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+
+// XModifyBroadcaster
+ virtual void SAL_CALL addModifyListener(const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener>& l);
+ virtual void SAL_CALL removeModifyListener(const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener>& l);
+
+// XFocusListener
+ virtual void SAL_CALL focusGained(const ::com::sun::star::awt::FocusEvent& e);
+ virtual void SAL_CALL focusLost(const ::com::sun::star::awt::FocusEvent& e);
+
+// ::com::sun::star::beans::XPropertyChangeListener -> aenderung der stati
+ virtual void SAL_CALL propertyChange(const ::com::sun::star::beans::PropertyChangeEvent& evt);
+
+// XTextListener -> modify setzen
+ virtual void SAL_CALL textChanged(const ::com::sun::star::awt::TextEvent& rEvent);
+
+// XItemListener -> modify setzen
+ virtual void SAL_CALL itemStateChanged(const ::com::sun::star::awt::ItemEvent& rEvent);
+
+// XModifyListener -> modify setzen
+ virtual void SAL_CALL modified(const ::com::sun::star::lang::EventObject& rEvent);
+
+// XFormController
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl> SAL_CALL getCurrentControl(void) {return m_xCurrentControl;}
+ virtual void SAL_CALL addActivateListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormControllerListener>& l);
+ virtual void SAL_CALL removeActivateListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormControllerListener>& l);
+
+// XTabController
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl> > SAL_CALL getControls(void);
+
+ virtual void SAL_CALL setModel(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTabControllerModel>& Model);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTabControllerModel> SAL_CALL getModel();
+
+ virtual void SAL_CALL setContainer(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer>& Container);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer> SAL_CALL getContainer();
+
+ virtual void SAL_CALL autoTabOrder();
+ virtual void SAL_CALL activateTabOrder();
+
+ virtual void SAL_CALL activateFirst();
+ virtual void SAL_CALL activateLast();
+
+// com::sun::star::sdbc::XRowSetListener
+ virtual void SAL_CALL cursorMoved(const ::com::sun::star::lang::EventObject& event) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL rowChanged(const ::com::sun::star::lang::EventObject& event) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL rowSetChanged(const ::com::sun::star::lang::EventObject& event) throw( ::com::sun::star::uno::RuntimeException );
+
+// XRowSetApproveListener
+ virtual sal_Bool SAL_CALL approveCursorMove(const ::com::sun::star::lang::EventObject& event) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL approveRowChange(const ::com::sun::star::sdb::RowChangeEvent& event) throw( ::com::sun::star::uno::RuntimeException );
+ virtual sal_Bool SAL_CALL approveRowSetChange(const ::com::sun::star::lang::EventObject& event) throw( ::com::sun::star::uno::RuntimeException );
+
+// XRowSetApproveBroadcaster
+ virtual void SAL_CALL addRowSetApproveListener(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowSetApproveListener>& listener) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL removeRowSetApproveListener(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowSetApproveListener>& listener) throw( ::com::sun::star::uno::RuntimeException );
+
+// XSQLErrorBroadcaster
+ virtual void SAL_CALL errorOccured(const ::com::sun::star::sdb::SQLErrorEvent& aEvent) throw( ::com::sun::star::uno::RuntimeException );
+
+// XSQLErrorListener
+ virtual void SAL_CALL addSQLErrorListener(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSQLErrorListener>& _rListener) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL removeSQLErrorListener(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSQLErrorListener>& _rListener) throw( ::com::sun::star::uno::RuntimeException );
+
+// XDatabaseParameterBroadcaster
+ virtual void SAL_CALL addParameterListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XDatabaseParameterListener>& aListener) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL removeParameterListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XDatabaseParameterListener>& aListener) throw( ::com::sun::star::uno::RuntimeException );
+
+// XDatabaseParameterListener
+ virtual sal_Bool SAL_CALL approveParameter(const ::com::sun::star::form::DatabaseParameterEvent& aEvent) throw( ::com::sun::star::uno::RuntimeException );
+
+// XConfirmDeleteBroadcaster
+ virtual void SAL_CALL addConfirmDeleteListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XConfirmDeleteListener>& aListener) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL removeConfirmDeleteListener(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XConfirmDeleteListener>& aListener) throw( ::com::sun::star::uno::RuntimeException );
+
+// XConfirmDeleteListener
+ virtual sal_Bool SAL_CALL confirmDelete(const ::com::sun::star::sdb::RowChangeEvent& aEvent) throw( ::com::sun::star::uno::RuntimeException );
+
+// XServiceInfo
+ virtual sal_Bool SAL_CALL supportsService(const ::rtl::OUString& ServiceName) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(void) throw(::com::sun::star::uno::RuntimeException);
+
+// XResetListener
+ virtual sal_Bool SAL_CALL approveReset(const ::com::sun::star::lang::EventObject& rEvent) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL resetted(const ::com::sun::star::lang::EventObject& rEvent) throw( ::com::sun::star::uno::RuntimeException );
+
+// method for registration
+ static ::com::sun::star::uno::Sequence< ::rtl::OUString > static_getSupportedServiceNames(void);
+
+ // utl::OPropertyArrayUsageHelper
+ virtual void fillProperties(
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& /* [out] */ _rProps,
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::Property >& /* [out] */ _rAggregateProps
+ ) const;
+
+// access to the controls for filtering
+ const FmFilterControls& getFilterControls() const {return m_aFilterControls;}
+
+// access to the current filter rows
+ const FmFilterRows& getFilterRows() const {return m_aFilters;}
+ FmFilterRows& getFilterRows() {return m_aFilters;}
+
+ // just decr. the positions no notifications for the view
+ void decrementCurrentFilterPosition()
+ {
+ DBG_ASSERT(m_nCurrentFilterPosition, "Invalid Position");
+ --m_nCurrentFilterPosition;
+ }
+
+ void setCurrentFilterPosition(sal_Int32 nPos);
+ sal_Int32 getCurrentFilterPosition() const {return m_nCurrentFilterPosition;}
+
+protected:
+ // FmDispatchInterceptor
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch>
+ interceptedQueryDispatch(sal_uInt16 _nId,const ::com::sun::star::util::URL& aURL,
+ const ::rtl::OUString& aTargetFrameName, sal_Int32 nSearchFlags)
+ throw( ::com::sun::star::uno::RuntimeException );
+
+ virtual ::osl::Mutex* getInterceptorMutex() { return &m_aMutex; }
+
+ void startFiltering();
+ void stopFiltering();
+ void setFilter(vector<FmFieldInfo>&);
+ void startListening();
+ void stopListening();
+ void startControlListening(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& xControl);
+ void stopControlListening(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& xControl);
+ void setLocks();
+ void setControlLock(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& xControl);
+ void addToEventAttacher(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& xControl);
+ void removeFromEventAttacher(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& xControl);
+ void toggleAutoFields(sal_Bool bAutoFields);
+ void unload() throw( ::com::sun::star::uno::RuntimeException );
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl> findControl(::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl> >& rCtrls, const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel>& rxCtrlModel ) const;
+
+ void insertControl(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& xControl);
+ void removeControl(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& xControl);
+
+ void onModify();
+ void onActivate();
+
+ sal_Bool isLocked() const {return m_bLocked;}
+ sal_Bool determineLockState() const;
+
+ Window* getDialogParentWindow();
+ // returns m_pWindow or - if m_pWindow is NULL - the window of the currently set container
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterceptor> createInterceptor(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterception>& _xInterception);
+ // create a new interceptor, register it on the given object
+ void deleteInterceptor(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterception>& _xInterception);
+ // if createInterceptor was called for the given object the according interceptor will be removed
+ // from the objects interceptor chain and released
+
+ // in filter mode we do not listen for changes
+ sal_Bool isListeningForChanges() const {return m_bDBConnection && !m_bFiltering && !isLocked();}
+ void addChild(FmXFormController* pChild);
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl> isInList(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer>& xPeer) const;
+
+ DECL_LINK( OnTimeout, void* );
+ DECL_LINK( OnLoad, void* );
+ DECL_LINK( OnToggleAutoFields, void* );
+ DECL_LINK( OnUpdateDispatchers, void* );
+};
+
+
+#endif // _SVX_FMCTRLER_HXX
+
diff --git a/svx/source/inc/fmexch.hxx b/svx/source/inc/fmexch.hxx
new file mode 100644
index 000000000000..d8ce356ebdd3
--- /dev/null
+++ b/svx/source/inc/fmexch.hxx
@@ -0,0 +1,152 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmexch.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMEXCH_HXX
+#define _SVX_FMEXCH_HXX
+
+#include <unotools/stl_types.hxx>
+
+#ifndef _SOT_DTRANS_HXX //autogen
+#include <sot/dtrans.hxx>
+#endif
+
+#ifndef _DTRANS_HXX //autogen
+#include <so3/dtrans.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_
+#include <com/sun/star/uno/Sequence.hxx>
+#endif
+
+class FmFormShell;
+class FmFormPage;
+class SvLBoxEntry;
+
+//========================================================================
+// Exchange types
+#define SVX_FM_FIELD_EXCH String("SvxFormFieldExch", sizeof("SvxFormFieldExch"))
+#define SVX_FM_CONTROL_EXCH String("SvxFormExplCtrlExch", sizeof("SvxFormExplCtrlExch"))
+#define SVX_FM_CONTROLS_AS_PATH String("SvxFormControlsAsPathExchange", sizeof("SvxFormControlsAsPathExchange"))
+#define SVX_FM_HIDDEN_CONTROLS String("SvxFormHiddenControlsExchange", sizeof("SvxFormHiddenControlsExchange"))
+#define SVX_FM_FILTER_FIELDS String("SvxFilterFieldExchange", sizeof("SvxFilterFieldExchange"))
+
+//========================================================================
+
+typedef ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence<sal_uInt32> > FmControlPaths;
+
+//========================================================================
+class SvTreeListBox;
+class SvxFmExplCtrlExch : public SvDataObject
+{
+ FmFormShell* m_pShell;
+ FmFormPage* m_pPage;
+
+ SvDataTypeList m_aDataTypeList;
+
+ std::vector<SvLBoxEntry*> m_aDraggedEntries;
+ FmControlPaths m_aControlPaths;
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > > m_seqControls;
+
+public:
+ SvxFmExplCtrlExch( const std::vector<SvLBoxEntry*>& lstWhich, FmFormShell* pShell, FmFormPage* pPage );
+ SvxFmExplCtrlExch( SvLBoxEntry* pEntry );
+
+ virtual const SvDataTypeList& GetTypeList() const { return m_aDataTypeList; }
+ virtual sal_Bool GetData( SvData* );
+
+ SvLBoxEntry* GetDragEntry() const { return m_aDraggedEntries.front(); }
+ void AddItem(SvLBoxEntry* pNew) { m_aDraggedEntries.push_back( pNew ); }
+
+ FmFormShell* GetShell() const { return m_pShell; }
+ FmFormPage* GetPage() const { return m_pPage; }
+ const ::std::vector<SvLBoxEntry*>& GetDraggedEntries() const { return m_aDraggedEntries; }
+ const FmControlPaths GetControlPaths() { return m_aControlPaths; }
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > > GetHiddenControls() { return m_seqControls; }
+
+ void BuildPathFormat(SvTreeListBox* pTreeBox, SvLBoxEntry* pRoot);
+ // baut aus m_aDraggedEntries m_aControlPaths auf
+ // (es wird davon ausgegangen, dass die Eintraege in m_aDraggedEntries sortiert sind in Bezug auf die Nachbar-Beziehung)
+ void BuildListFromPath(SvTreeListBox* pTreeBox, SvLBoxEntry* pRoot);
+ // der umgekehrte Weg : wirft alles aus m_aDraggedEntries weg und baut es mittels m_aControlPaths neu auf
+
+ void AddHiddenControlsFormat(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > > seqInterfaces);
+ // fuegt ein SVX_FML_HIDDEN_CONTROLS-Format hinzu und merk sich dafuer die uebergebenen Interfaces
+ // (es erfolgt KEINE Ueberpruefung, ob dadurch auch tatsaechlich nur hidden Controls bezeichnet werden, dass muss der
+ // Aufrufer sicherstellen)
+};
+
+SV_DECL_IMPL_REF( SvxFmExplCtrlExch );
+
+//========================================================================
+class SvxFmFieldExch : public SotDataObject
+{
+ String aFieldDesc;
+ SvDataTypeList aDataTypeList;
+
+public:
+ SvxFmFieldExch(const String& rFieldDesc);
+
+ virtual const SvDataTypeList& GetTypeList() const { return aDataTypeList; }
+ virtual sal_Bool GetData( SvData* );
+};
+
+SV_DECL_IMPL_REF( SvxFmFieldExch );
+#endif
+
diff --git a/svx/source/inc/fmexpl.hrc b/svx/source/inc/fmexpl.hrc
new file mode 100644
index 000000000000..23a9c8210f1c
--- /dev/null
+++ b/svx/source/inc/fmexpl.hrc
@@ -0,0 +1,74 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmexpl.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SVX_FMEXPL_HRC
+#define _SVX_FMEXPL_HRC
+
+#define FT_PATH 1
+
+#define GB_PATH 1
+
+#define PB_OK 1
+#define PB_CANCEL 2
+#define PB_HELP 3
+
+#endif //_SVX_FMEXPL_HRC
+
diff --git a/svx/source/inc/fmexpl.hxx b/svx/source/inc/fmexpl.hxx
new file mode 100644
index 000000000000..4cdc0cb9ff97
--- /dev/null
+++ b/svx/source/inc/fmexpl.hxx
@@ -0,0 +1,600 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmexpl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMEXPL_HXX
+#define _SVX_FMEXPL_HXX
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _SFXBRDCST_HXX //autogen
+#include <svtools/brdcst.hxx>
+#endif
+
+#ifndef _SV_WINDOW_HXX //autogen
+#include <vcl/window.hxx>
+#endif
+
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+#ifndef _SFX_BINDINGS_HXX //autogen
+#include <sfx2/bindings.hxx>
+#endif
+
+#ifndef _SFXDOCKWIN_HXX //autogen
+#include <sfx2/dockwin.hxx>
+#endif
+
+#ifndef _SFXCTRLITEM_HXX //autogen
+#include <sfx2/ctrlitem.hxx>
+#endif
+
+#ifndef _SV_IMAGE_HXX
+#include <vcl/image.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMECONTAINER_HPP_
+#include <com/sun/star/container/XNameContainer.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_FORM_XFORMCOMPONENT_HPP_
+#include <com/sun/star/form/XFormComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYCHANGEEVENT_HPP_
+#include <com/sun/star/beans/PropertyChangeEvent.hpp>
+#endif
+
+
+#ifndef _SVTREEBOX_HXX //autogen
+#include <svtools/svtreebx.hxx>
+#endif
+
+#ifndef _DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _GROUP_HXX //autogen
+#include <vcl/group.hxx>
+#endif
+
+#ifndef _BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+#ifndef _FIXED_HXX //autogen
+#include <vcl/fixed.hxx>
+#endif
+
+#ifndef _EDIT_HXX //autogen
+#include <vcl/edit.hxx>
+#endif
+
+#ifndef _SV_DOCKWIN_HXX //autogen
+#include <vcl/dockwin.hxx>
+#endif
+
+#ifndef _SVX_FMVIEW_HXX
+#include "fmview.hxx"
+#endif
+
+#ifndef _SVX_FMTOOLS_HXX
+#include <fmtools.hxx>
+#endif
+
+class SdrObjListIter;
+//========================================================================
+class FmEntryData;
+class FmExplInsertedHint : public SfxHint
+{
+ FmEntryData* pEntryData;
+ sal_uInt32 nPos;
+
+public:
+ TYPEINFO();
+ FmExplInsertedHint( FmEntryData* pInsertedEntryData, sal_uInt32 nRelPos );
+ virtual ~FmExplInsertedHint();
+
+ FmEntryData* GetEntryData() const { return pEntryData; }
+ sal_uInt32 GetRelPos() const { return nPos; }
+};
+
+//========================================================================
+class FmExplModelReplacedHint : public SfxHint
+{
+ FmEntryData* pEntryData; // die Daten des Eintrages, der ein neues Model bekommen hat
+
+public:
+ TYPEINFO();
+ FmExplModelReplacedHint( FmEntryData* pAffectedEntryData );
+ virtual ~FmExplModelReplacedHint();
+
+ FmEntryData* GetEntryData() const { return pEntryData; }
+};
+
+//========================================================================
+class FmExplRemovedHint : public SfxHint
+{
+ FmEntryData* pEntryData;
+
+public:
+ TYPEINFO();
+ FmExplRemovedHint( FmEntryData* pInsertedEntryData );
+ virtual ~FmExplRemovedHint();
+
+ FmEntryData* GetEntryData() const { return pEntryData; }
+};
+
+//========================================================================
+class FmExplNameChangedHint : public SfxHint
+{
+ FmEntryData* pEntryData;
+ ::rtl::OUString aNewName;
+
+public:
+ TYPEINFO();
+ FmExplNameChangedHint( FmEntryData* pData, const ::rtl::OUString& rNewName );
+ virtual ~FmExplNameChangedHint();
+
+ FmEntryData* GetEntryData() const { return pEntryData; }
+ ::rtl::OUString GetNewName() const { return aNewName; }
+};
+
+//========================================================================
+class FmExplClearedHint : public SfxHint
+{
+public:
+ TYPEINFO();
+ FmExplClearedHint();
+ virtual ~FmExplClearedHint();
+};
+
+//========================================================================
+class FmExplViewMarksChanged : public SfxHint
+{
+ FmFormView* pView;
+public:
+ TYPEINFO();
+ FmExplViewMarksChanged(FmFormView* pWhichView) { pView = pWhichView; }
+ virtual ~FmExplViewMarksChanged() {}
+
+ FmFormView* GetAffectedView() { return pView; }
+};
+
+//========================================================================
+class FmEntryDataList;
+class FmEntryData
+{
+protected:
+ Image aCollapsedImage;
+ Image aExpandedImage;
+ ::rtl::OUString aText;
+
+ FmEntryDataList* pChildList;
+ FmEntryData* pParent;
+
+public:
+ TYPEINFO();
+
+ FmEntryData( FmEntryData* pParentData );
+ FmEntryData( const FmEntryData& rEntryData );
+ virtual ~FmEntryData();
+
+ void Clear();
+ void SetText( const ::rtl::OUString& rText ){ aText = rText; }
+ void SetParent( FmEntryData* pParentData ){ pParent = pParentData; }
+
+ Image GetCollapsedImage() const { return aCollapsedImage; }
+ Image GetExpandedImage() const { return aExpandedImage; }
+ ::rtl::OUString GetText() const { return aText; }
+ FmEntryData* GetParent() const { return pParent; }
+ FmEntryDataList* GetChildList() const { return pChildList; }
+
+ virtual sal_Bool IsEqualWithoutChilds( FmEntryData* pEntryData );
+ virtual FmEntryData* Clone() = 0;
+
+ virtual const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& GetElement() const = 0;
+};
+
+//========================================================================
+DECLARE_LIST( FmEntryDataBaseList, FmEntryData* );
+
+class FmEntryDataList : public FmEntryDataBaseList
+{
+public:
+ FmEntryDataList();
+ virtual ~FmEntryDataList();
+};
+
+//========================================================================
+// FmExplRequestSelectHint - jemand teilt dem FmExplorer mit, dass er bestimmte Eintraege selektieren soll
+
+typedef FmEntryData* FmEntryDataPtr;
+SV_DECL_PTRARR_SORT( FmEntryDataArray, FmEntryDataPtr, 16, 16 )
+
+class FmExplRequestSelectHint : public SfxHint
+{
+ FmEntryDataArray m_arredToSelect;
+ sal_Bool m_bMixedSelection;
+public:
+ TYPEINFO();
+ FmExplRequestSelectHint() { }
+ virtual ~FmExplRequestSelectHint() {}
+
+ void SetMixedSelection(sal_Bool bMixedSelection) { m_bMixedSelection = bMixedSelection; }
+ sal_Bool IsMixedSelection() { return m_bMixedSelection; }
+ void AddItem(FmEntryData* pEntry) { m_arredToSelect.Insert(pEntry); }
+ void ClearItems() { m_arredToSelect.Remove(sal_uInt16(0), m_arredToSelect.Count()); }
+ FmEntryDataArray& GetItems() { return m_arredToSelect; }
+};
+
+//========================================================================
+class FmFormData : public FmEntryData
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm > m_xForm;
+
+public:
+ TYPEINFO();
+
+ FmFormData( ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm > xForm, const ImageList& ilNavigatorImages, FmFormData* pParent=NULL );
+ FmFormData( const FmFormData& rFormData );
+ virtual ~FmFormData();
+
+ void SetForm( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& xForm ){ m_xForm = xForm; }
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& GetFormIface() const { return m_xForm; }
+ virtual sal_Bool IsEqualWithoutChilds( FmEntryData* pEntryData );
+ virtual FmEntryData* Clone();
+
+ virtual const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& GetElement() const { return m_xForm;}
+};
+
+
+//========================================================================
+class FmControlData : public FmEntryData
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent > m_xFormComponent;
+
+ Image GetImage(const ImageList& ilNavigatorImages) const;
+
+public:
+ TYPEINFO();
+
+ FmControlData( ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent > xFormComponent, const ImageList& ilNavigatorImages, FmFormData* pParent );
+ FmControlData( const FmControlData& rControlData );
+ virtual ~FmControlData();
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent >& GetFormComponent() const { return m_xFormComponent; }
+ virtual sal_Bool IsEqualWithoutChilds( FmEntryData* pEntryData );
+ virtual FmEntryData* Clone();
+ virtual const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& GetElement() const { return m_xFormComponent;}
+
+ void ModelReplaced(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent >& xNew, const ImageList& ilNavigatorImages);
+};
+
+//========================================================================
+class FmExplorerModel;
+class FmXExplPropertyChangeList : public ::cppu::WeakImplHelper2< ::com::sun::star::beans::XPropertyChangeListener,
+ ::com::sun::star::container::XContainerListener>
+{
+ FmExplorerModel* m_pExplModel;
+ sal_uInt32 m_nLocks;
+ sal_Bool m_bCanUndo;
+
+public:
+ FmXExplPropertyChangeList(FmExplorerModel* pModel);
+
+ // UNO-Anbindung
+ // DECLARE_UNO3_AGG_DEFAULTS( FmXExplPropertyChangeList, UsrObject );
+ // virtual sal_Bool queryInterface(::com::sun::star::uno::Uik aUik, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rOut);
+
+// XEventListenerListener
+ virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw(::com::sun::star::uno::RuntimeException);
+
+// ::com::sun::star::beans::XPropertyChangeListener
+ virtual void SAL_CALL propertyChange(const ::com::sun::star::beans::PropertyChangeEvent& evt);
+
+// ::com::sun::star::container::XContainerListener
+
+ virtual void SAL_CALL elementInserted(const ::com::sun::star::container::ContainerEvent& rEvent);
+ virtual void SAL_CALL elementReplaced(const ::com::sun::star::container::ContainerEvent& rEvent);
+ virtual void SAL_CALL elementRemoved(const ::com::sun::star::container::ContainerEvent& rEvent);
+
+ void Lock() { m_nLocks++; }
+ void UnLock() { m_nLocks--; }
+ sal_Bool IsLocked() const { return m_nLocks != 0; }
+ sal_Bool CanUndo() const { return m_bCanUndo; }
+ void ReleaseModel() { m_pExplModel = NULL; }
+protected:
+ void Insert(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xIface, sal_Int32 nIndex);
+};
+
+//========================================================================
+class FmFormShell;
+class SdrObject;
+class FmFormModel;
+class FmExplorerModel : public SfxBroadcaster
+ ,public SfxListener
+{
+ friend class FmExplorer;
+ friend class FmXExplPropertyChangeList;
+
+ FmEntryDataList* m_pRootList;
+ FmFormShell* m_pFormShell;
+ FmFormPage* m_pFormPage;
+ FmFormModel* m_pFormModel;
+ FmXExplPropertyChangeList* m_pPropChangeList;
+
+ const ImageList m_ilNavigatorImages;
+
+ void Update( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& xForms );
+ FmControlData* CreateControlData( ::com::sun::star::form::XFormComponent* pFormComponent );
+
+ void InsertForm(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& xForm, sal_uInt32 nRelPos);
+ void RemoveForm(FmFormData* pFormData);
+
+ void InsertFormComponent(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent >& xComp, sal_uInt32 nRelPos);
+ void RemoveFormComponent(FmControlData* pControlData);
+ void InsertSdrObj(const SdrObject* pSdrObj);
+ void RemoveSdrObj(const SdrObject* pSdrObj);
+
+ void ReplaceFormComponent(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent >& xOld, const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent >& xNew);
+
+ void BroadcastMarkedObjects(const SdrMarkList& mlMarked);
+ // einen RequestSelectHint mit den aktuell markierten Objekten broadcasten
+ sal_Bool InsertFormComponent(FmExplRequestSelectHint& rHint, SdrObject* pObject);
+ // ist ein Helper fuer vorherige, managet das Abteigen in SdrObjGroups
+ // Rueckgabe sal_True, wenn das Objekt eine FormComponent ist (oder rekursiv nur aus solchen besteht)
+
+public:
+ FmExplorerModel(const ImageList& ilNavigatorImages);
+ virtual ~FmExplorerModel();
+
+ void FillBranch( FmFormData* pParentData );
+ void ClearBranch( FmFormData* pParentData );
+ void Update( FmFormShell* pNewShell );
+
+ void Insert( FmEntryData* pEntryData, sal_uInt32 nRelPos = LIST_APPEND,
+ sal_Bool bAlterModel = sal_False );
+ void Remove( FmEntryData* pEntryData, sal_Bool bAlterModel = sal_False );
+
+ sal_Bool Rename( FmEntryData* pEntryData, const ::rtl::OUString& rNewText );
+ sal_Bool IsNameAlreadyDefined( const ::rtl::OUString& rName, FmFormData* pParentData );
+ void Clear();
+ sal_Bool CheckEntry( FmEntryData* pEntryData );
+ void SetModified( sal_Bool bMod=sal_True );
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > GetForms() const;
+ FmFormShell* GetFormShell() const { return m_pFormShell; }
+ FmFormPage* GetFormPage() const { return m_pFormPage; }
+ FmEntryData* FindData( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xElement, FmEntryDataList* pDataList, sal_Bool bRecurs=sal_True );
+ FmEntryData* FindData( const ::rtl::OUString& rText, FmFormData* pParentData, sal_Bool bRecurs=sal_True );
+ FmEntryDataList* GetRootList() const { return m_pRootList; }
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > GetFormComponents( FmFormData* pParentFormData );
+ SdrObject* GetSdrObj( FmControlData* pControlData );
+ SdrObject* Search(SdrObjListIter& rIter, const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent >& xComp);
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+};
+
+
+//========================================================================
+typedef SvLBoxEntry* SvLBoxEntryPtr;
+SV_DECL_PTRARR_SORT( SvLBoxEntrySortedArray, SvLBoxEntryPtr, 16, 16 )
+
+class FmExplorer : public SvTreeListBox, public SfxListener
+{
+ enum DROP_ACTION { DA_SCROLLUP, DA_SCROLLDOWN, DA_EXPANDNODE };
+ enum SELDATA_ITEMS { SDI_DIRTY, SDI_ALL, SDI_NORMALIZED, SDI_NORMALIZED_FORMARK };
+
+ // beim Droppen will ich scrollen und Folder aufklappen koennen, dafuer :
+ AutoTimer m_aDropActionTimer;
+ Timer m_aSynchronizeTimer;
+ // die Meta-Daten ueber meine aktuelle Selektion
+ SvLBoxEntrySortedArray m_arrCurrentSelection;
+ // die Images, die ich brauche (und an FormDatas und EntryDatas weiterreiche)
+ ImageList m_ilNavigatorImages;
+
+ FmExplorerModel* m_pExplModel;
+ SvLBoxEntry* m_pRootEntry;
+ SvLBoxEntry* m_pEditEntry;
+
+ sal_uInt32 nEditEvent;
+
+ Image m_aCollapsedNodeImg;
+ Image m_aExpandedNodeImg;
+ Image m_aRootImg;
+
+ SELDATA_ITEMS m_sdiState;
+ Point m_aTimerTriggered; // die Position, an der der DropTimer angeschaltet wurde
+ DROP_ACTION m_aDropActionType;
+
+ sal_uInt16 m_nSelectLock;
+ sal_uInt16 m_nFormsSelected;
+ sal_uInt16 m_nControlsSelected;
+ sal_uInt16 m_nHiddenControls; // (die Zahl geht in m_nControlsSelected mit ein)
+
+ unsigned short m_aTimerCounter;
+
+ sal_Bool m_bShellOrPageChanged:1; // wird in jedem Update(FmFormShell*) auf sal_True gesetzt
+ sal_Bool m_bDragDataDirty:1; // dito
+ sal_Bool m_bPrevSelectionMixed:1;
+ sal_Bool m_bMarkingObjects:1; // wenn das sal_True ist, brauche ich auf die RequestSelectHints nicht reagieren
+ sal_Bool m_bRootSelected:1;
+ sal_Bool m_bInitialUpdate:1; // bin ich das erste Mal im Update ?
+
+
+ void Update();
+ sal_Bool IsDeleteAllowed();
+ FmControlData* NewControl( const ::rtl::OUString& rServiceName, SvLBoxEntry* pParentEntry, sal_Bool bEditName = sal_True );
+ void NewForm( SvLBoxEntry* pParentEntry );
+ SvLBoxEntry* Insert( FmEntryData* pEntryData, sal_uInt32 nRelPos=LIST_APPEND );
+ void Remove( FmEntryData* pEntryData );
+
+
+ void CollectSelectionData(SELDATA_ITEMS sdiHow);
+ // sammelt in m_arrCurrentSelection die aktuell selektierten Eintraege, normalisiert die Liste wenn verlangt
+ // SDI_NORMALIZED bedeutet einfach, dass alle Eintraege, die schon einen selektierten Vorfahren haben, nicht mit gesammelt
+ // werden.
+ // SDI_NORMALIZED_FORMARK bedeutet, dass wie bei SDI_NORMALIZED verfahren wird, aber Eintraege, deren direktes Elter nicht
+ // selektiert ist, aufgenommen werden (unabhaengig vom Status weiterer Vorfahren), desgleichen Formulare, die selektiert sind,
+ // unabhaengig vom Status irgendwelcher Vorfahren
+ // Bei beiden Normalized-Modi enthalten die m_nFormsSelected, ... die richtige Anzahl, auch wenn nicht alle dieser Eintraege
+ // in m_arrCurrentSelection landen.
+ // SDI_DIRTY ist natuerlich nicht erlaubt als Parameter
+
+ // ein einziges Interface fuer alle selektierten Eintraege zusammensetzen
+ void ShowSelectionProperties(sal_Bool bForce = sal_False);
+ // alle selektierten Elemnte loeschen
+ void DeleteSelection();
+
+ void SynchronizeSelection(FmEntryDataArray& arredToSelect);
+ // nach dem Aufruf dieser Methode sind genau die Eintraege selektiert, die in dem Array bezeichnet sind
+ void SynchronizeSelection();
+ // macht das selbe, nimmt die MarkList der ::com::sun::star::sdbcx::View
+ void SynchronizeMarkList();
+ // umgekehrte Richtung von SynchronizeMarkList : markiert in der ::com::sun::star::sdbcx::View alle der aktuellen Selektion entsprechenden Controls
+
+ // im Select aktualisiere ich normalerweise die Marklist der zugehoerigen ::com::sun::star::sdbcx::View, mit folgenden Funktionen
+ // kann ich das Locking dieses Verhaltens steuern
+ void LockSelectionHandling() { ++m_nSelectLock; }
+ void UnlockSelectionHandling() { --m_nSelectLock; }
+ sal_Bool IsSelectionHandlingLocked() const { return m_nSelectLock>0; }
+
+ sal_Bool IsHiddenControl(FmEntryData* pEntryData);
+
+ DECL_LINK( OnEdit, void* );
+ DECL_LINK( OnDropActionTimer, void* );
+
+ DECL_LINK(OnEntrySelDesel, FmExplorer*);
+ DECL_LINK(OnSynchronizeTimer, void*);
+
+protected:
+ virtual void Command( const CommandEvent& rEvt );
+
+public:
+ FmExplorer( Window* pParent );
+ virtual ~FmExplorer();
+
+ void Clear();
+ void Update( FmFormShell* pFormShell );
+ void MarkViewObj( FmFormData* pFormData, sal_Bool bMark, sal_Bool bDeep = sal_False );
+ void MarkViewObj( FmControlData* pControlData, sal_Bool bMarkHandles, sal_Bool bMark );
+ void UnmarkAllViewObj();
+
+ sal_Bool IsFormEntry( SvLBoxEntry* pEntry );
+ sal_Bool IsFormComponentEntry( SvLBoxEntry* pEntry );
+
+ ::rtl::OUString GenerateName( FmEntryData* pEntryData );
+
+ FmExplorerModel* GetExplModel() const { return m_pExplModel; }
+ SvLBoxEntry* FindEntry( FmEntryData* pEntryData );
+
+ virtual sal_Bool EditedEntry( SvLBoxEntry* pEntry, const XubString& rNewText );
+ virtual sal_Bool Select( SvLBoxEntry* pEntry, sal_Bool bSelect=sal_True );
+ virtual sal_Bool QueryDrop( DropEvent& rDEvt );
+ virtual sal_Bool Drop( const DropEvent& rDEvt );
+ virtual sal_Bool EditingEntry( SvLBoxEntry* pEntry, Selection& );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+ virtual void KeyInput( const KeyEvent& rKEvt );
+};
+
+
+//========================================================================
+class FmFormShell;
+class FmExplorerWin : public SfxDockingWindow, public SfxControllerItem
+{
+private:
+ FmExplorer* m_pFmExplorer;
+
+protected:
+ virtual void Resize();
+ virtual sal_Bool Close();
+ virtual Size CalcDockingSize( SfxChildAlignment );
+ virtual SfxChildAlignment CheckAlignment( SfxChildAlignment, SfxChildAlignment );
+
+public:
+ FmExplorerWin( SfxBindings *pBindings, SfxChildWindow *pMgr,
+ Window* pParent );
+ virtual ~FmExplorerWin();
+
+ void Update( FmFormShell* pFormShell );
+ void StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState );
+ void FillInfo( SfxChildWinInfo& rInfo ) const;
+};
+
+//========================================================================
+class FmExplorerWinMgr : public SfxChildWindow
+{
+public:
+ FmExplorerWinMgr( Window *pParent, sal_uInt16 nId, SfxBindings *pBindings,
+ SfxChildWinInfo *pInfo );
+ SFX_DECL_CHILDWINDOW( FmExplorerWinMgr );
+};
+
+#endif // _SVX_FMEXPL_HXX
+
diff --git a/svx/source/inc/fmgroup.hxx b/svx/source/inc/fmgroup.hxx
new file mode 100644
index 000000000000..e1ca44adc434
--- /dev/null
+++ b/svx/source/inc/fmgroup.hxx
@@ -0,0 +1,154 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmgroup.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMGROUP_HXX
+#define _SVX_FMGROUP_HXX
+
+#ifndef _SVX_FMCPONT_HXX
+#include "fmcpont.hxx"
+#endif
+
+#ifndef __DBFORM_HXX
+#include <dbform.hxx>
+#endif
+
+DECLARE_LIST( FmCtrlModelList, XInterface* );
+
+struct FmXGroupModel_Impl;
+
+//==================================================================
+// FmXGroupModel
+//==================================================================
+class FmXGroupModel : public XBoundControl,
+ public XLoadListener,
+ public XPropertyChangeListener,
+ public XGroup,
+ public FmXControlModel
+{
+ FmFormControlMap aControlMap;
+
+ friend Reflection* FmXGroupModel_getReflection();
+ FmXGroupModel_Impl* pGroupModelData; // Properties
+
+public:
+ FmXGroupModel();
+ virtual ~FmXGroupModel();
+
+ // UNO Anbindung
+ SMART_UNO_DECLARATION( FmXGroupModel, FmXControlModel );
+ virtual XInterface* queryInterface(UsrUik);
+ virtual XIdlClassRef getIdlClass();
+
+ // XGroup
+ virtual INT32 getFormControlCount();
+ virtual XFormControlRef getFormControlByName( const XubString& sName ) const;
+ virtual XFormControlRef getFormControlByIndex( INT32 Index ) const;
+ virtual void appendFormControl( const XFormControlRef& FormControl );
+ virtual XFormControlRef removeFormControl( const XFormControlRef& FormControl );
+
+ // XFormControl
+ virtual void setParent( const XFormRef& Parent );
+
+ // XEventListener
+ virtual void disposing( const EventObject& Source );
+
+ // XPropertiesChangeListener
+ virtual void propertyChange( const PropertyChangeEvent& evt );
+
+ // XLoadListener
+ virtual void loaded( const EventObject& rEvent );
+ virtual void unloaded( const EventObject& rEvent );
+
+ // XBoundControl
+ virtual void addBoundControlListener( const XBoundControlListenerRef& l );
+ virtual void removeBoundControlListener( const XBoundControlListenerRef& l );
+
+ // XPersistObject
+ virtual XubString getServiceName( void ) const;
+ virtual void write( const XObjectOutputStreamRef& OutStream );
+ virtual void read( const XObjectInputStreamRef& InStream );
+
+ // PropertySetInterface
+ virtual FmXPropertySetInfo* createPropertySetInfo() const;
+ virtual BOOL setPropertyValue( UINT16 nId, const XubString& aPropertyName,
+ const UsrAny& aValue,
+ PropertyChangeEventSequence* pSeq,
+ INT32 nIndex );
+ virtual UsrAny getPropertyValue( UINT16 nId, const XubString& aPropertyName ) const;
+ virtual void addPropertyChangeListener( const XubString& aPropertyName, const XPropertyChangeListenerRef& aListener );
+ virtual void removePropertyChangeListener( const XubString& aPropertyName, const XPropertyChangeListenerRef& aListener );
+};
+
+//==================================================================
+// FmXGroupModelInfo
+// Properties:
+//==================================================================
+class FmXGroupModelInfo : public FmXControlModelInfo
+{
+ friend class FmXGroupModel;
+
+protected:
+ FmXGroupModelInfo( const FmXGroupModel* pCp );
+ virtual void fillProperties( UINT32& nIndex, PropertySequence& aSeq ) const;
+};
+
+
+#endif // _SVX_FMGROUP_HXX
+
diff --git a/svx/source/inc/fmhlpids.hrc b/svx/source/inc/fmhlpids.hrc
new file mode 100644
index 000000000000..f5b6b78630cc
--- /dev/null
+++ b/svx/source/inc/fmhlpids.hrc
@@ -0,0 +1,70 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmhlpids.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMHLPIDS_HRC
+#define _SVX_FMHLPIDS_HRC
+
+// include -----------------------------------------------------------
+#ifndef _SVX_FMHELP_HRC
+#include "fmhelp.hrc"
+#endif
+
+#endif
+
diff --git a/svx/source/inc/fmitems.hxx b/svx/source/inc/fmitems.hxx
new file mode 100644
index 000000000000..4fa1ae07e09b
--- /dev/null
+++ b/svx/source/inc/fmitems.hxx
@@ -0,0 +1,158 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmitems.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMITEMS_HXX
+#define _SVX_FMITEMS_HXX
+
+
+#ifndef _SFXPOOLITEM_HXX //autogen
+#include <svtools/poolitem.hxx>
+#endif
+
+#include <unotools/uno3.hxx>
+// FORWARD_DECLARE_INTERFACE(awt,XControlContainer)
+FORWARD_DECLARE_INTERFACE(uno,Any)
+// class ::com::sun::star::uno::Any;
+
+struct FmFormInfo
+{
+ sal_Int32 Pos;
+ sal_Int32 Count;
+ sal_Bool ReadOnly;
+ FmFormInfo(sal_Int32 _Pos = 0, sal_Int32 _Count = -1, sal_Bool _ReadOnly = sal_False)
+ :Pos(_Pos)
+ ,Count(_Count)
+ ,ReadOnly(_ReadOnly){}
+ sal_Bool operator == (const FmFormInfo& rInfo) const
+ {return Pos == rInfo.Pos && Count == rInfo.Count && ReadOnly==rInfo.ReadOnly;}
+};
+
+//==================================================================
+class FmFormInfoItem : public SfxPoolItem
+{
+ FmFormInfo aInfo;
+
+public:
+ TYPEINFO();
+
+ FmFormInfoItem(const sal_uInt16 nId, const FmFormInfo& rInfo = FmFormInfo())
+ :SfxPoolItem(nId)
+ ,aInfo(rInfo){}
+
+ inline FmFormInfoItem& operator=( const FmFormInfoItem &rCpy );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual sal_Bool QueryValue( ::com::sun::star::uno::Any& rVal, sal_Int8 nMemberId = 0 ) const;
+ virtual sal_Bool SetValue( const ::com::sun::star::uno::Any& rVal, sal_Int8 nMemberId = 0 );
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, sal_uInt16) const;
+ virtual SvStream& Store(SvStream &, sal_uInt16 nItemVersion ) const;
+
+ const FmFormInfo& GetInfo() const { return aInfo; }
+ void SetInfo(const FmFormInfo& rInfo) { aInfo = rInfo; }
+};
+
+inline FmFormInfoItem& FmFormInfoItem::operator=( const FmFormInfoItem &rCpy )
+{
+ aInfo = rCpy.aInfo;
+ return *this;
+}
+
+
+//==================================================================
+class FmInterfaceItem : public SfxPoolItem
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xInterface;
+
+public:
+ TYPEINFO();
+
+ FmInterfaceItem( const sal_uInt16 nId, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rxInterface )
+ :SfxPoolItem( nId )
+ ,xInterface( rxInterface )
+ {}
+
+ inline FmInterfaceItem& operator=( const FmInterfaceItem &rCpy );
+
+ // "pure virtual Methoden" vom SfxPoolItem
+ virtual int operator==( const SfxPoolItem& ) const;
+ virtual sal_Bool QueryValue( ::com::sun::star::uno::Any& rVal, sal_Int8 nMemberId = 0 ) const;
+ virtual sal_Bool SetValue( const ::com::sun::star::uno::Any& rVal, sal_Int8 nMemberId = 0 );
+
+ virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const;
+ virtual SfxPoolItem* Create(SvStream &, sal_uInt16) const;
+ virtual SvStream& Store(SvStream &, sal_uInt16 nItemVersion ) const;
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > GetInterface() const { return xInterface; }
+};
+
+inline FmInterfaceItem& FmInterfaceItem::operator=( const FmInterfaceItem &rCpy )
+{
+ xInterface = rCpy.xInterface;
+
+ return *this;
+}
+
+
+
+#endif // _SVX_FMITEMS_HXX
+
diff --git a/svx/source/inc/fmobj.hxx b/svx/source/inc/fmobj.hxx
new file mode 100644
index 000000000000..1c5c01e6d6a4
--- /dev/null
+++ b/svx/source/inc/fmobj.hxx
@@ -0,0 +1,143 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmobj.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMOBJ_HXX
+#define _SVX_FMOBJ_HXX
+
+#ifndef _SVDOUNO_HXX
+#include "svdouno.hxx"
+#endif
+
+#ifndef _COM_SUN_STAR_SCRIPT_SCRIPTEVENTDESCRIPTOR_HPP_
+#include <com/sun/star/script/ScriptEventDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXCONTAINER_HPP_
+#include <com/sun/star/container/XIndexContainer.hpp>
+#endif
+
+class FmFormView;
+
+//==================================================================
+// FmFormObj
+//==================================================================
+class FmXForms;
+class FmFormObj: public SdrUnoObj
+{
+ friend class FmForm;
+ friend class FmFormPage;
+ friend class FmFormPageImpl;
+ friend class FmFormObjFactory;
+ friend class FmXUndoEnvironment;
+ friend class SvxFmDrawPage;
+ friend class SvxFmMSFactory;
+
+ ::com::sun::star::uno::Sequence< ::com::sun::star::script::ScriptEventDescriptor > aEvts; // events des Objects
+ ::com::sun::star::uno::Sequence< ::com::sun::star::script::ScriptEventDescriptor> m_aEventsHistory;
+ // valid if and only if m_pEnvironmentHistory != NULL, this are the events which we're set when
+ // m_pEnvironmentHistory was created
+
+ FmFormView* pTempView;
+ sal_uInt32 nEvent;
+
+ // Informationen fuer die Controlumgebung
+ // werden nur vorgehalten, wenn ein Object sich nicht in einer Objectliste befindet
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer> xParent;
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > m_xEnvironmentHistory;
+ sal_Int32 nPos;
+
+public:
+ TYPEINFO();
+
+protected:
+ FmFormObj(const ::rtl::OUString& rModelName);
+ FmFormObj();
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer>& GetParent() const {return xParent;}
+ void SetObjEnv(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer>& xForm, sal_Int32 nIdx = -1,
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::script::ScriptEventDescriptor >& rEvts= ::com::sun::star::uno::Sequence< ::com::sun::star::script::ScriptEventDescriptor >());
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::script::ScriptEventDescriptor >& GetEvents() const {return aEvts;}
+ sal_Int32 GetPos() const {return nPos;}
+
+public:
+ virtual ~FmFormObj();
+ virtual void SetPage(SdrPage* pNewPage);
+
+ virtual sal_uInt32 GetObjInventor() const;
+ virtual sal_uInt16 GetObjIdentifier() const;
+
+ virtual SdrObject* Clone() const;
+ virtual SdrObject* Clone(SdrPage* pPage, SdrModel* pModel) const;
+ virtual void operator= (const SdrObject& rObj);
+
+ virtual void clonedFrom(const FmFormObj* _pSource);
+
+ static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> ensureModelEnv(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& _rSourceContainer, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer> _rTopLevelDestContainer);
+
+protected:
+ virtual void WriteData(SvStream& rOut) const;
+ virtual void ReadData(const SdrObjIOHeader& rHead, SvStream& rIn);
+ virtual FASTBOOL EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
+
+ DECL_LINK(OnCreate, void* );
+};
+
+
+#endif // _FM_FMOBJ_HXX
+
diff --git a/svx/source/inc/fmpgeimp.hxx b/svx/source/inc/fmpgeimp.hxx
new file mode 100644
index 000000000000..ac547590e97d
--- /dev/null
+++ b/svx/source/inc/fmpgeimp.hxx
@@ -0,0 +1,183 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmpgeimp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMUNOPGE_HXX
+#define _SVX_FMUNOPGE_HXX
+
+#ifndef _COM_SUN_STAR_SDB_XDATABASEACCESS_HPP_
+#include <com/sun/star/sdb/XDatabaseAccess.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCOMPONENT_HPP_
+#include <com/sun/star/form/XFormComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORM_HPP_
+#include <com/sun/star/form/XForm.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMECONTAINER_HPP_
+#include <com/sun/star/container/XNameContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+
+
+#ifndef _LIST_HXX //autogen
+#include <tools/list.hxx>
+#endif
+
+#ifndef _UTL_UNO3_HXX_
+#include <unotools/uno3.hxx>
+#endif
+
+class SvStream;
+class SdrIOHeader;
+class FmFormObj;
+class SdrObject;
+
+//FORWARD_DECLARE_INTERFACE(uno,Reference)
+FORWARD_DECLARE_INTERFACE(io,XObjectOutputStream)
+FORWARD_DECLARE_INTERFACE(io,XObjectInputStream)
+FORWARD_DECLARE_INTERFACE(container,XIndexContainer)
+
+class SdrObjList;
+
+DECLARE_LIST(FmObjectList, FmFormObj*);
+
+//==================================================================
+// FmFormPageImpl
+// lauscht an allen Containern, um festzustellen, wann Objecte
+// eingefuegt worden sind und wann diese entfernt wurden
+//==================================================================
+
+class FmFormPageImpl
+{
+ friend class FmFormPage;
+ friend class FmFormObj;
+ friend class FmXFormShell;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm> xCurrentForm; // aktuelles Formular
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer> xForms; // Liste aller Forms
+
+ FmFormPage* pPage;
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel> xModel;
+
+ UniString m_sPageId;
+
+protected:
+ FmFormPageImpl(FmFormPage* _pPage);
+ FmFormPageImpl(FmFormPage* _pPage, const FmFormPageImpl& rImpl);
+ ~FmFormPageImpl();
+
+ void Init();
+
+public:
+ // nur wichtig fuer den DesignMode
+ void setCurForm(::com::sun::star::uno::Reference< ::com::sun::star::form::XForm> xForm);
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm>& getCurForm() {return xCurrentForm;}
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm> getDefaultForm();
+
+ // Defaults fuer ein Object setzen
+ // Eindeutigen Namen, Zuordnen zu einer Form falls noch nicht erfolgt
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm> SetDefaults(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent>& rContent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XDatabaseAccess>& rDatabase = ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XDatabaseAccess>(),
+ const ::rtl::OUString& rDBTitle = ::rtl::OUString(),
+ const ::rtl::OUString& rCursorSource = ::rtl::OUString(),
+ sal_Int32 nCommandType = 0);
+
+ UniString GetPageId() const { return m_sPageId; }
+
+protected:
+ // lesen und schreiben der Objecte
+ void WriteData(SvStream& rOut) const; //
+ void ReadData(const SdrIOHeader& rHead, SvStream& rIn); //
+
+ void write(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectOutputStream>& OutStream) const;
+ void read(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XObjectInputStream>& InStream);
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer>& getForms() {return xForms;}
+
+ void fillList(FmObjectList& rList, const SdrObjList& rObjList, sal_Bool bConnected) const;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm> FindForm(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm>& rForm,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XDatabaseAccess>& rDatabase,
+ const ::rtl::OUString& rCursorSource,
+ sal_Int32 nCommandType);
+
+ ::rtl::OUString getDefaultName(sal_Int16 nClassId, const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm>& xControls) const;
+
+public:
+
+ static UniString getDefaultName(sal_Int16 nClassId);
+
+ ::rtl::OUString setUniqueName(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent>& xFormComponent, const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm>& xControls);
+ ::rtl::OUString getUniqueName(const ::rtl::OUString& rName, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>& xNamedSet) const;
+};
+
+#define GET_DEFNAME(Id) \
+ FmFormPageImpl::getDefaultName(Id)
+
+
+#endif // _SVX_FMUNOPGE_HXX
+
diff --git a/svx/source/inc/fmprop.hrc b/svx/source/inc/fmprop.hrc
new file mode 100644
index 000000000000..7d7f18d545ec
--- /dev/null
+++ b/svx/source/inc/fmprop.hrc
@@ -0,0 +1,398 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmprop.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMPROP_HRC
+#define _SVX_FMPROP_HRC
+
+#ifndef _FM_STATIC_HXX_
+#include "fmstatic.hxx"
+#endif
+// PropertyId's, welche eine Zuordnung zu einen PropertyName haben, das koennten
+// auch in Zukunft WhichIds sein -> Itemset
+#define FM_ATTR_START 0
+
+#define FM_ATTR_NAME (FM_ATTR_START + 1)
+#define FM_ATTR_TABINDEX (FM_ATTR_START + 2)
+#define FM_ATTR_CONTROLSOURCE (FM_ATTR_START + 3)
+#define FM_ATTR_MASTERFIELDS (FM_ATTR_START + 4)
+#define FM_ATTR_DATASOURCE (FM_ATTR_START + 6)
+#define FM_ATTR_CLASSID (FM_ATTR_START + 9)
+#define FM_ATTR_CURSORTYPE (FM_ATTR_START + 10)
+#define FM_ATTR_READONLY (FM_ATTR_START + 11)
+#define FM_ATTR_NAVIGATION (FM_ATTR_START + 13)
+#define FM_ATTR_CYCLE (FM_ATTR_START + 14)
+#define FM_ATTR_ALLOWADDITIONS (FM_ATTR_START + 15)
+#define FM_ATTR_ALLOWEDITS (FM_ATTR_START + 16)
+#define FM_ATTR_ALLOWDELETIONS (FM_ATTR_START + 17)
+#define FM_ATTR_CACHESIZE (FM_ATTR_START + 19)
+#define FM_ATTR_LASTDIRTY (FM_ATTR_START + 24)
+#define FM_ATTR_VALUE (FM_ATTR_START + 31) // sal_Int32
+#define FM_ATTR_FORMATKEY (FM_ATTR_START + 33) // sal_uInt32
+#define FM_ATTR_SIZE (FM_ATTR_START + 37) // sal_uInt32
+#define FM_ATTR_HEIGHT (FM_ATTR_START + 41) // sal_uInt16
+#define FM_ATTR_WIDTH (FM_ATTR_START + 42) // sal_uInt16
+#define FM_ATTR_DEFAULTCONTROL (FM_ATTR_START + 43) // string
+#define FM_ATTR_BOUNDCOLUMN (FM_ATTR_START + 44) // sal_uInt16 may be null
+#define FM_ATTR_LISTSOURCETYPE (FM_ATTR_START + 45) // sal_uInt16
+#define FM_ATTR_LISTSOURCE (FM_ATTR_START + 46) // string
+#define FM_ATTR_LISTINDEX (FM_ATTR_START + 47) // sal_uInt32
+#define FM_ATTR_TEXT (FM_ATTR_START + 48) // string
+#define FM_ATTR_STRINGITEMLIST (FM_ATTR_START + 49) // wsstringsequence
+#define FM_ATTR_LABEL (FM_ATTR_START + 50) // string
+#define FM_ATTR_STATE (FM_ATTR_START + 52) // sal_uInt16
+#define FM_ATTR_GROUPBOX (FM_ATTR_START + 53) // string
+#define FM_ATTR_FONT (FM_ATTR_START + 54) // font
+#define FM_ATTR_HASNAVIGATION (FM_ATTR_START + 55)
+#define FM_ATTR_ROWHEIGHT (FM_ATTR_START + 57) // sal_uInt16
+#define FM_ATTR_BACKGROUNDCOLOR (FM_ATTR_START + 58) // sal_uInt32
+#define FM_ATTR_FILLCOLOR (FM_ATTR_START + 59) // sal_uInt32
+#define FM_ATTR_TEXTCOLOR (FM_ATTR_START + 60) // sal_uInt32
+#define FM_ATTR_LINECOLOR (FM_ATTR_START + 61) // sal_uInt32
+#define FM_ATTR_BORDER (FM_ATTR_START + 62) // sal_uInt16
+#define FM_ATTR_ALIGN (FM_ATTR_START + 63) // sal_uInt16
+#define FM_ATTR_DROPDOWN (FM_ATTR_START + 64) // sal_Bool
+#define FM_ATTR_MULTI (FM_ATTR_START + 65) // sal_Bool
+#define FM_ATTR_HSCROLL (FM_ATTR_START + 66) // sal_Bool
+#define FM_ATTR_VSCROLL (FM_ATTR_START + 67) // sal_Bool
+#define FM_ATTR_TABSTOP (FM_ATTR_START + 68) // sal_Bool
+#define FM_ATTR_REFVALUE (FM_ATTR_START + 69) // ::rtl::OUString
+#define FM_ATTR_BUTTONTYPE (FM_ATTR_START + 70) // sal_uInt16
+#define FM_ATTR_DEFAULT_TEXT (FM_ATTR_START + 71) // ::rtl::OUString
+#define FM_ATTR_SUBMIT_ACTION (FM_ATTR_START + 72) // string
+#define FM_ATTR_SUBMIT_METHOD (FM_ATTR_START + 73) // FmSubmitMethod
+#define FM_ATTR_SUBMIT_ENCODING (FM_ATTR_START + 74) // FmSubmitEncoding
+#define FM_ATTR_DEFAULT_VALUE (FM_ATTR_START + 75) // ::rtl::OUString
+#define FM_ATTR_SUBMIT_TARGET (FM_ATTR_START + 76) // ::rtl::OUString
+#define FM_ATTR_DEFAULT_CHECKED (FM_ATTR_START + 77) // sal_uInt16
+#define FM_ATTR_VALUE_SEQ (FM_ATTR_START + 78) // StringSeq
+#define FM_ATTR_IMAGE_URL (FM_ATTR_START + 79) // ::rtl::OUString
+#define FM_ATTR_SELECT_SEQ (FM_ATTR_START + 91) // INT16Seq
+#define FM_ATTR_DEFAULT_SELECT_SEQ (FM_ATTR_START + 92) // INT16Seq
+#define FM_ATTR_MULTISELECTION (FM_ATTR_START + 93) // sal_Bool
+#define FM_ATTR_MULTILINE (FM_ATTR_START + 94) // sal_Bool
+#define FM_ATTR_DATE (FM_ATTR_START + 95) // sal_uInt32
+#define FM_ATTR_DATEMIN (FM_ATTR_START + 96) // sal_uInt32
+#define FM_ATTR_DATEMAX (FM_ATTR_START + 97) // sal_uInt32
+#define FM_ATTR_DATEFORMAT (FM_ATTR_START + 98) // sal_uInt16
+#define FM_ATTR_TIME (FM_ATTR_START + 99) // sal_uInt32
+#define FM_ATTR_TIMEMIN (FM_ATTR_START +100) // sal_uInt32
+#define FM_ATTR_TIMEMAX (FM_ATTR_START +101) // sal_uInt32
+#define FM_ATTR_TIMEFORMAT (FM_ATTR_START +102) // sal_uInt16
+#define FM_ATTR_VALUEMIN (FM_ATTR_START +103) // sal_Int32
+#define FM_ATTR_VALUEMAX (FM_ATTR_START +104) // sal_Int32
+#define FM_ATTR_VALUESTEP (FM_ATTR_START +105) // sal_Int32
+#define FM_ATTR_CURRENCYSYMBOL (FM_ATTR_START +106) // ::rtl::OUString
+#define FM_ATTR_EDITMASK (FM_ATTR_START +107) // ::rtl::OUString
+#define FM_ATTR_LITERALMASK (FM_ATTR_START +108) // ::rtl::OUString
+#define FM_ATTR_ENABLED (FM_ATTR_START +109) // sal_Bool
+#define FM_ATTR_AUTOCOMPLETE (FM_ATTR_START +110) // sal_Bool
+#define FM_ATTR_LINECOUNT (FM_ATTR_START +111) // sal_uInt16
+#define FM_ATTR_MAXTEXTLEN (FM_ATTR_START +112) // sal_uInt16
+#define FM_ATTR_SPIN (FM_ATTR_START +113) // sal_Bool
+#define FM_ATTR_STRICTFORMAT (FM_ATTR_START +114) // sal_Bool
+#define FM_ATTR_SHOWTHOUSANDSEP (FM_ATTR_START +115) // sal_Bool
+#define FM_ATTR_HARDLINEBREAKS (FM_ATTR_START +116) // sal_Bool
+#define FM_ATTR_PRINTABLE (FM_ATTR_START +117) // sal_Bool
+#define FM_ATTR_TARGET_URL (FM_ATTR_START +118) // ::rtl::OUString
+#define FM_ATTR_TARGET_FRAME (FM_ATTR_START +119) // ::rtl::OUString
+#define FM_ATTR_TAG (FM_ATTR_START +120) // ::rtl::OUString
+#define FM_ATTR_ECHO_CHAR (FM_ATTR_START +121) // sal_uInt16
+#define FM_ATTR_EMPTY_IS_NULL (FM_ATTR_START +126) // Bool
+#define FM_ATTR_DECIMAL_ACCURACY (FM_ATTR_START +127) // sal_uInt16
+#define FM_ATTR_DATE_SHOW_CENTURY (FM_ATTR_START +128) // Bool
+#define FM_ATTR_TRISTATE (FM_ATTR_START +129) // Bool
+#define FM_ATTR_DEFAULT_BUTTON (FM_ATTR_START +130) // Bool
+#define FM_ATTR_HIDDEN_VALUE (FM_ATTR_START +131) // ::rtl::OUString
+#define FM_ATTR_DECIMALS (FM_ATTR_START +132) // sal_uInt16
+#define FM_ATTR_AUTOINCREMENT (FM_ATTR_START +133) // sal_uInt16
+#define FM_ATTR_FILTER_CRITERIA (FM_ATTR_START +135) // ::rtl::OUString
+#define FM_ATTR_QUERY (FM_ATTR_START +137) // ::rtl::OUString
+#define FM_ATTR_DEFAULT_LONG_VALUE (FM_ATTR_START +138) // Double
+#define FM_ATTR_DEFAULT_DATE (FM_ATTR_START +139) // sal_uInt32
+#define FM_ATTR_DEFAULT_TIME (FM_ATTR_START +140)
+#define FM_ATTR_HELPTEXT (FM_ATTR_START +141)
+#define FM_ATTR_FONT_NAME (FM_ATTR_START +142)
+#define FM_ATTR_FONT_STYLENAME (FM_ATTR_START +143)
+#define FM_ATTR_FONT_FAMILY (FM_ATTR_START +144)
+#define FM_ATTR_FONT_CHARSET (FM_ATTR_START +145)
+#define FM_ATTR_FONT_HEIGHT (FM_ATTR_START +146)
+#define FM_ATTR_FONT_WEIGHT (FM_ATTR_START +147)
+#define FM_ATTR_FONT_SLANT (FM_ATTR_START +148)
+#define FM_ATTR_FONT_UNDERLINE (FM_ATTR_START +149)
+#define FM_ATTR_FONT_STRIKEOUT (FM_ATTR_START +150)
+#define FM_ATTR_ISPASSTHROUGH (FM_ATTR_START +151)
+#define FM_ATTR_HELPURL (FM_ATTR_START +152) // ::rtl::OUString
+#define FM_ATTR_RECORDMARKER (FM_ATTR_START +153)
+#define FM_ATTR_BOUNDFIELD (FM_ATTR_START +154)
+#define FM_ATTR_FORMATSSUPPLIER (FM_ATTR_START +155) // ::com::sun::star::util::XNumberFormatsSupplier
+#define FM_ATTR_TREATASNUMERIC (FM_ATTR_START +156) // sal_Bool
+#define FM_ATTR_EFFECTIVE_VALUE (FM_ATTR_START +157) // ANY (string or double)
+#define FM_ATTR_EFFECTIVE_DEFAULT (FM_ATTR_START +158) // dito
+#define FM_ATTR_EFFECTIVE_MIN (FM_ATTR_START +159) // dito
+#define FM_ATTR_EFFECTIVE_MAX (FM_ATTR_START +160) // dito
+#define FM_ATTR_HIDDEN (FM_ATTR_START +161) // sal_Bool
+#define FM_ATTR_FILTERPROPOSAL (FM_ATTR_START +162) // sal_Bool
+#define FM_ATTR_FIELDSOURCE (FM_ATTR_START +163) // String
+#define FM_ATTR_TABLENAME (FM_ATTR_START +164) // String
+#define FM_ATTR_FILTERSUPPLIER (FM_ATTR_START +165) // ::com::sun::star::container::XIndexAccess
+#define FM_ATTR_CURRENTFILTER (FM_ATTR_START +166) // sal_Int32
+#define FM_ATTR_SELECTED_FIELDS (FM_ATTR_START +167)
+#define FM_ATTR_SELECTED_TABLES (FM_ATTR_START +168)
+#define FM_ATTR_THREADSAFE (FM_ATTR_START +169) // sal_Bool
+#define FM_ATTR_CONTROLLABEL (FM_ATTR_START +171) // ::com::sun::star::beans::XPropertySet
+#define FM_ATTR_CURRSYM_POSITION (FM_ATTR_START +172) // String
+#define FM_ATTR_SOURCE (FM_ATTR_START +173) // ::com::sun::star::uno::XInterface
+#define FM_ATTR_CURSORCOLOR (FM_ATTR_START +174) // sal_Int32
+#define FM_ATTR_ALWAYSSHOWCURSOR (FM_ATTR_START +175) // sal_Bool
+#define FM_ATTR_DISPLAYSYNCHRON (FM_ATTR_START +176) // sal_Bool
+
+#define FM_ATTR_ISMODIFIED (FM_ATTR_START +177) // sal_Bool
+#define FM_ATTR_ISNEW (FM_ATTR_START +178) // sal_Bool
+#define FM_ATTR_PRIVILEGES (FM_ATTR_START +179) // sal_Int32
+#define FM_ATTR_DETAILFIELDS (FM_ATTR_START +180) // ::com::sun::star::uno::Sequence<::rtl::OUString>
+#define FM_ATTR_COMMAND (FM_ATTR_START +181) // String
+#define FM_ATTR_COMMANDTYPE (FM_ATTR_START +182) // sal_Int32 (com::sun::star::sdb::CommandType)
+#define FM_ATTR_RESULTSET_CONCURRENCY (FM_ATTR_START +183)// sal_Int32 (com::sun::star::sdbc::ResultSetConcurrency)
+#define FM_ATTR_INSERTONLY (FM_ATTR_START +184) // sal_Bool
+#define FM_ATTR_RESULTSET_TYPE (FM_ATTR_START +185) // sal_Int32 (com::sun::star::sdbc::ResultSetType)
+#define FM_ATTR_ESCAPE_PROCESSING (FM_ATTR_START +186) // sal_Bool
+#define FM_ATTR_APPLYFILTER (FM_ATTR_START +187) // sal_Bool
+
+#define FM_ATTR_ISNULLABLE (FM_ATTR_START +188) // sal_Bool
+#define FM_ATTR_ACTIVECOMMAND (FM_ATTR_START +189) // String
+#define FM_ATTR_ISCURRENCY (FM_ATTR_START +190) // sal_Bool
+#define FM_ATTR_NUMBER_FORMATS_SUPPLIER (FM_ATTR_START +191)// sal_Bool
+#define FM_ATTR_URL (FM_ATTR_START +192) // String
+#define FM_ATTR_TITLE (FM_ATTR_START +193) // String
+#define FM_ATTR_ACTIVE_CONNECTION (FM_ATTR_START +194) // com::sun::star::sdbc::::com::sun::star::sdbc::XConnection
+#define FM_ATTR_SCALE (FM_ATTR_START +195) // sal_Int32
+#define FM_ATTR_SORT (FM_ATTR_START +196) // String
+#define FM_ATTR_CONTROLSOURCEPROPERTY (FM_ATTR_START +197)
+#define FM_ATTR_REALNAME (FM_ATTR_START +198) // String
+
+
+// start ID fuer aggregierte Properties
+#define FM_ATTR_AGGREGATE_ID (FM_ATTR_START + 10000)
+
+// extern declaration fuer vordefinierte Strings, laengst nicht vollstaendig
+DECLARE_CONSTASCII_USTRING(FM_PROP_NAME);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TAG);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TABINDEX);
+DECLARE_CONSTASCII_USTRING(FM_PROP_CLASSID);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ALIGN);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ROWCOUNT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ROWCOUNTFINAL);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FETCHSIZE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_VALUE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_VALUEMIN);
+DECLARE_CONSTASCII_USTRING(FM_PROP_VALUEMAX);
+DECLARE_CONSTASCII_USTRING(FM_PROP_VALUESTEP);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TEXT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_LABEL);
+DECLARE_CONSTASCII_USTRING(FM_PROP_NAVIGATION);
+DECLARE_CONSTASCII_USTRING(FM_PROP_CYCLE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_CONTROLSOURCE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ENABLED);
+DECLARE_CONSTASCII_USTRING(FM_PROP_SPIN);
+DECLARE_CONSTASCII_USTRING(FM_PROP_READONLY);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FILTER_CRITERIA);
+DECLARE_CONSTASCII_USTRING(FM_PROP_AUTOINCREMENT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_CACHESIZE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_LASTDIRTY);
+DECLARE_CONSTASCII_USTRING(FM_PROP_STATEMENT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_WIDTH);
+DECLARE_CONSTASCII_USTRING(FM_PROP_SEARCHABLE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_MULTILINE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TARGET_URL);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DEFAULTCONTROL);
+DECLARE_CONSTASCII_USTRING(FM_PROP_MAXTEXTLEN);
+DECLARE_CONSTASCII_USTRING(FM_PROP_SIZE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DATE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TIME);
+DECLARE_CONSTASCII_USTRING(FM_PROP_STATE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TRISTATE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_HIDDEN_VALUE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TARGET_FRAME);
+DECLARE_CONSTASCII_USTRING(FM_PROP_BUTTONTYPE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_STRINGITEMLIST);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DEFAULT_TEXT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DEFAULTCHECKED);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DEFAULT_DATE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DEFAULT_TIME);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DEFAULT_VALUE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FORMATKEY);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FORMATSSUPPLIER);
+DECLARE_CONSTASCII_USTRING(FM_PROP_SUBMIT_ACTION);
+DECLARE_CONSTASCII_USTRING(FM_PROP_SUBMIT_TARGET);
+DECLARE_CONSTASCII_USTRING(FM_PROP_SUBMIT_METHOD);
+DECLARE_CONSTASCII_USTRING(FM_PROP_SUBMIT_ENCODING);
+DECLARE_CONSTASCII_USTRING(FM_PROP_IMAGE_URL);
+DECLARE_CONSTASCII_USTRING(FM_PROP_EMPTY_IS_NULL);
+DECLARE_CONSTASCII_USTRING(FM_PROP_LISTSOURCETYPE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_LISTSOURCE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_SELECT_SEQ);
+DECLARE_CONSTASCII_USTRING(FM_PROP_VALUE_SEQ);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DEFAULT_SELECT_SEQ);
+DECLARE_CONSTASCII_USTRING(FM_PROP_MULTISELECTION);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DECIMAL_ACCURACY);
+DECLARE_CONSTASCII_USTRING(FM_PROP_EDITMASK);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ISREADONLY);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ISREQUIRED);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FIELDTYPE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DECIMALS);
+DECLARE_CONSTASCII_USTRING(FM_PROP_REFVALUE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_STRICTFORMAT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DATASOURCE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ALLOWADDITIONS);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ALLOWEDITS);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ALLOWDELETIONS);
+DECLARE_CONSTASCII_USTRING(FM_PROP_MASTERFIELDS);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ISPASSTHROUGH);
+DECLARE_CONSTASCII_USTRING(FM_PROP_QUERY);
+DECLARE_CONSTASCII_USTRING(FM_PROP_LITERALMASK);
+DECLARE_CONSTASCII_USTRING(FM_PROP_SHOWTHOUSANDSEP);
+DECLARE_CONSTASCII_USTRING(FM_PROP_CURRENCYSYMBOL);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DATEFORMAT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DATEMIN);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DATEMAX);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DATE_SHOW_CENTURY);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TIMEFORMAT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TIMEMIN);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TIMEMAX);
+DECLARE_CONSTASCII_USTRING(FM_PROP_LINECOUNT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_BOUNDCOLUMN);
+DECLARE_CONSTASCII_USTRING(FM_PROP_HASNAVIGATION);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FONT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_BACKGROUNDCOLOR);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FILLCOLOR);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TEXTCOLOR);
+DECLARE_CONSTASCII_USTRING(FM_PROP_LINECOLOR);
+DECLARE_CONSTASCII_USTRING(FM_PROP_BORDER);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DROPDOWN);
+DECLARE_CONSTASCII_USTRING(FM_PROP_MULTI);
+DECLARE_CONSTASCII_USTRING(FM_PROP_HSCROLL);
+DECLARE_CONSTASCII_USTRING(FM_PROP_VSCROLL);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TABSTOP);
+DECLARE_CONSTASCII_USTRING(FM_PROP_AUTOCOMPLETE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_HARDLINEBREAKS);
+DECLARE_CONSTASCII_USTRING(FM_PROP_PRINTABLE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ECHO_CHAR);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ROWHEIGHT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_HELPTEXT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FONT_NAME);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FONT_STYLENAME);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FONT_FAMILY);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FONT_CHARSET);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FONT_HEIGHT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FONT_WEIGHT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FONT_SLANT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FONT_UNDERLINE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FONT_STRIKEOUT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_HELPURL);
+DECLARE_CONSTASCII_USTRING(FM_PROP_RECORDMARKER);
+DECLARE_CONSTASCII_USTRING(FM_PROP_BOUNDFIELD);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TREATASNUMERIC);
+DECLARE_CONSTASCII_USTRING(FM_PROP_EFFECTIVE_VALUE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_EFFECTIVE_DEFAULT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_EFFECTIVE_MIN);
+DECLARE_CONSTASCII_USTRING(FM_PROP_EFFECTIVE_MAX);
+DECLARE_CONSTASCII_USTRING(FM_PROP_HIDDEN);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FILTERPROPOSAL);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FIELDSOURCE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TABLENAME);
+DECLARE_CONSTASCII_USTRING(FM_PROP_FILTERSUPPLIER);
+DECLARE_CONSTASCII_USTRING(FM_PROP_CURRENTFILTER);
+DECLARE_CONSTASCII_USTRING(FM_PROP_SELECTED_FIELDS);
+DECLARE_CONSTASCII_USTRING(FM_PROP_SELECTED_TABLES);
+DECLARE_CONSTASCII_USTRING(FM_PROP_THREADSAFE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_CONTROLLABEL);
+DECLARE_CONSTASCII_USTRING(FM_PROP_CURRSYM_POSITION);
+DECLARE_CONSTASCII_USTRING(FM_PROP_SOURCE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_CURSORCOLOR);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ALWAYSSHOWCURSOR);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DISPLAYSYNCHRON);
+
+DECLARE_CONSTASCII_USTRING(FM_PROP_ISMODIFIED);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ISNEW);
+DECLARE_CONSTASCII_USTRING(FM_PROP_PRIVILEGES);
+DECLARE_CONSTASCII_USTRING(FM_PROP_DETAILFIELDS);
+DECLARE_CONSTASCII_USTRING(FM_PROP_COMMAND);
+DECLARE_CONSTASCII_USTRING(FM_PROP_COMMANDTYPE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_RESULTSET_CONCURRENCY);
+DECLARE_CONSTASCII_USTRING(FM_PROP_INSERTONLY);
+DECLARE_CONSTASCII_USTRING(FM_PROP_RESULTSET_TYPE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ESCAPE_PROCESSING);
+DECLARE_CONSTASCII_USTRING(FM_PROP_APPLYFILTER);
+
+DECLARE_CONSTASCII_USTRING(FM_PROP_ISNULLABLE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ACTIVECOMMAND);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ISCURRENCY);
+DECLARE_CONSTASCII_USTRING(FM_PROP_NUMBER_FORMATS_SUPPLIER);
+DECLARE_CONSTASCII_USTRING(FM_PROP_URL);
+DECLARE_CONSTASCII_USTRING(FM_PROP_TITLE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_ACTIVE_CONNECTION);
+DECLARE_CONSTASCII_USTRING(FM_PROP_SCALE);
+DECLARE_CONSTASCII_USTRING(FM_PROP_SORT);
+DECLARE_CONSTASCII_USTRING(FM_PROP_CONTROLSOURCEPROPERTY);
+DECLARE_CONSTASCII_USTRING(FM_PROP_REALNAME);
+
+
+#endif // _SVX_FMPROP_HRC
+
diff --git a/svx/source/inc/fmresids.hrc b/svx/source/inc/fmresids.hrc
new file mode 100644
index 000000000000..5d8337273e85
--- /dev/null
+++ b/svx/source/inc/fmresids.hrc
@@ -0,0 +1,492 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmresids.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMRESIDS_HRC
+#define _SVX_FMRESIDS_HRC
+
+// include -----------------------------------------------------------
+#include <svtools/solar.hrc>
+
+// unnamed ressources -------------------------------------------------------
+#define RID_RES_CONTROL_WIZARDS_ERROR_CONTEXTS (RID_FORMS_START + 0)
+// sub ressources .....................
+#define RID_SUB_GRIDCONTROL_WIZARD 1
+#define RID_SUB_LISTBOX_WIZARD 2
+#define RID_SUB_COMBOBOX_WIZARD 3
+#define RID_SUB_GROUPBOX_WIZARD 4
+
+// ImageList-Id's -----------------------------------------------------------
+#define RID_SVXIMGLIST_FMEXPL (RID_FORMS_START + 0)
+#define RID_SVXIMGLIST_DBBRW (RID_FORMS_START + 1)
+
+// Image-Id's -----------------------------------------------------------
+#define RID_SVXIMG_FORM SID_FM_CONFIG
+#define RID_SVXIMG_CONTROL SID_CHOOSE_CONTROLS
+#define RID_SVXIMG_COLLAPSEDNODE (RID_FORMS_START + 2)
+#define RID_SVXIMG_EXPANDEDNODE (RID_FORMS_START + 3)
+#define RID_SVXIMG_BUTTON SID_FM_PUSHBUTTON
+#define RID_SVXIMG_RADIOBUTTON SID_FM_RADIOBUTTON
+#define RID_SVXIMG_CHECKBOX SID_FM_CHECKBOX
+#define RID_SVXIMG_FIXEDTEXT SID_FM_FIXEDTEXT
+#define RID_SVXIMG_GROUPBOX SID_FM_GROUPBOX
+#define RID_SVXIMG_EDIT SID_FM_EDIT
+#define RID_SVXIMG_LISTBOX SID_FM_LISTBOX
+#define RID_SVXIMG_COMBOBOX SID_FM_COMBOBOX
+#define RID_SVXIMG_URLBUTTON SID_FM_URLBUTTON
+#define RID_SVXIMG_FORMS (RID_FORMS_START +13)
+#define RID_SVXIMG_IMAGEBUTTON SID_FM_IMAGEBUTTON
+#define RID_SVXIMG_IMAGECONTROL SID_FM_IMAGECONTROL
+#define RID_SVXIMG_FILECONTROL SID_FM_FILECONTROL
+#define RID_SVXIMG_DATEFIELD SID_FM_DATEFIELD
+#define RID_SVXIMG_TIMEFIELD SID_FM_TIMEFIELD
+#define RID_SVXIMG_NUMERICFIELD SID_FM_NUMERICFIELD
+#define RID_SVXIMG_CURRENCYFIELD SID_FM_CURRENCYFIELD
+#define RID_SVXIMG_PATTERNFIELD SID_FM_PATTERNFIELD
+#define RID_SVXIMG_HIDDEN (RID_FORMS_START +22)
+#define RID_SVXIMG_GRID SID_FM_DBGRID
+#define RID_SVXIMG_FORMATTEDFIELD SID_FM_FORMATTEDFIELD
+#define RID_SVXIMG_FILTER SID_FM_FILTERCRIT
+#define RID_SVXIMG_DATE_N_TIME_FIELDS SID_FM_TWOFIELDS_DATE_N_TIME
+#define RID_SVXIMG_FIELD (RID_FORMS_START +27)
+#define RID_SVXIMG_ERROR (RID_FORMS_START +28)
+#define RID_SVXIMG_WARNING (RID_FORMS_START +29)
+#define RID_SVXIMG_INFO (RID_FORMS_START +30)
+
+// Dialog-Id's -----------------------------------------------------------
+#define RID_SVXTBX_FORM (RID_FORMS_START + 1)
+#define TBX_FORM (RID_FORMS_START + 2)
+#define RID_SVXTBX_FORM_NAVIGATION (RID_FORMS_START + 3)
+#define RID_SVXTBX_FORM_FILTER (RID_FORMS_START + 4)
+#define RID_SVXDLG_ADD_TABLE (RID_FORMS_START + 5)
+#define RID_SVXDLG_TAB_ORDER (RID_FORMS_START + 6)
+#define RID_SVXDLG_PROPBRW (RID_FORMS_START + 7)
+#define RID_SVX_PROPBRW (RID_FORMS_START + 8)
+#define RID_SVXDLG_SETFORM (RID_FORMS_START + 9)
+#define RID_SVX_FMEXPLORER (RID_FORMS_START + 10)
+#define RID_SVXDLG_DBINFO (RID_FORMS_START + 11)
+#define RID_SVXDLG_FMMACRO (RID_FORMS_START + 12)
+#define RID_SVXDLG_FMFONT (RID_FORMS_START + 13)
+#define RID_SVXDLG_SEARCHFORM (RID_FORMS_START + 14)
+#define RID_SVXERR_SEARCH_NORECORD (RID_FORMS_START + 15)
+#define RID_SVXERR_SEARCH_GENERAL_ERROR (RID_FORMS_START + 16)
+#define RID_SVX_DLG_INPUTRECORDNO (RID_FORMS_START + 17)
+#define RID_SVX_DLG_SHOWGRIDCOLUMNS (RID_FORMS_START + 18)
+#define RID_SVX_DLG_QUERYPARAMS (RID_FORMS_START + 19)
+#define RID_SVX_DLG_LABELCONTROL (RID_FORMS_START + 20)
+#define RID_SVX_DLG_SQLEXCEPTIONDETAILS (RID_FORMS_START + 21)
+
+// Menu-Id's -----------------------------------------------------------
+#define RID_FMEXPLORER_POPUPMENU (RID_FORMS_START + 0)
+#define RID_SVXMNU_ROWS (RID_FORMS_START + 1)
+#define RID_SVXMNU_COLS (RID_FORMS_START + 2)
+#define RID_SVXMNU_CELL (RID_FORMS_START + 3)
+#define RID_FMSHELL_CONVERSIONMENU (RID_FORMS_START + 4)
+#define RID_FM_FILTER_MENU (RID_FORMS_START + 5)
+
+
+// QueryBox-Id's -----------------------------------------------------------
+#define RID_QRY_SAVEMODIFIED (RID_FORMS_START + 1)
+
+// String-Id's -----------------------------------------------------------
+#define RID_STR_FORMSHELL (RID_FORMS_START + 10)
+#define RID_STR_STDFORMNAME (RID_FORMS_START + 11)
+#define RID_STR_REC_TEXT (RID_FORMS_START + 12)
+#define RID_STR_REC_FROM_TEXT (RID_FORMS_START + 13)
+#define RID_STR_FORM_FILTERED (RID_FORMS_START + 14)
+
+// Undo Strings
+#define RID_STR_UNDO_PROPERTY (RID_FORMS_START + 17)
+#define RID_STR_UNDO_CONTAINER_INSERT (RID_FORMS_START + 18)
+#define RID_STR_UNDO_CONTAINER_REMOVE (RID_FORMS_START + 19)
+#define RID_STR_UNDO_CONTAINER_REMOVE_MULTIPLE (RID_FORMS_START + 20)
+#define RID_STR_UNDO_CONTAINER_REPLACE (RID_FORMS_START + 21)
+#define RID_STR_UNDO_TABORDER (RID_FORMS_START + 22)
+#define RID_STR_UNDO_DELETE_LOGICAL (RID_FORMS_START + 23)
+#define RID_STR_UNDO_MODEL_REPLACE (RID_FORMS_START + 24)
+
+// ErrorStrings
+#define RID_STR_ERR_CONNECTLOST (RID_FORMS_START + 30)
+
+#define RID_STR_FILTER_CRITERIA (RID_FORMS_START + 36)
+#define RID_STR_SORT_CRITERIA (RID_FORMS_START + 37)
+#define RID_STR_NAVIGATIONBAR (RID_FORMS_START + 38)
+#define RID_STR_ALIGN (RID_FORMS_START + 39)
+#define RID_STR_BACKGROUNDCOLOR (RID_FORMS_START + 40)
+#define RID_STR_BORDER (RID_FORMS_START + 41)
+#define RID_STR_DEFAULT_CONTROL (RID_FORMS_START + 42)
+#define RID_STR_HSCROLL (RID_FORMS_START + 43)
+#define RID_STR_VSCROLL (RID_FORMS_START + 44)
+#define RID_STR_MULTILINE (RID_FORMS_START + 45)
+#define RID_STR_NAME (RID_FORMS_START + 46)
+#define RID_STR_TABSTOP (RID_FORMS_START + 47)
+#define RID_STR_TEXT (RID_FORMS_START + 48)
+#define RID_STR_CONTROLSOURCE (RID_FORMS_START + 49)
+#define RID_STR_DROPDOWN (RID_FORMS_START + 50)
+#define RID_STR_BOUNDCOLUMN (RID_FORMS_START + 51)
+#define RID_STR_LISTSOURCE (RID_FORMS_START + 52)
+#define RID_STR_LISTSOURCETYPE (RID_FORMS_START + 53)
+#define RID_STR_CURSORSOURCE (RID_FORMS_START + 54)
+#define RID_STR_CURSORSOURCETYPE (RID_FORMS_START + 55)
+#define RID_STR_ALLOW_ADDITIONS (RID_FORMS_START + 56)
+#define RID_STR_ALLOW_DELETIONS (RID_FORMS_START + 57)
+#define RID_STR_ALLOW_EDITS (RID_FORMS_START + 58)
+#define RID_STR_DATAENTRY (RID_FORMS_START + 59)
+#define RID_STR_DATASOURCE (RID_FORMS_START + 60)
+#define RID_STR_LOCKED (RID_FORMS_START + 61)
+#define RID_STR_MASTERFIELDS (RID_FORMS_START + 62)
+#define RID_STR_SLAVEFIELDS (RID_FORMS_START + 63)
+#define RID_STR_FONT (RID_FORMS_START + 64)
+#define RID_STR_SEARCHING (RID_FORMS_START + 65)
+#define RID_STR_SEARCH_TYPE (RID_FORMS_START + 66)
+#define RID_STR_CURSORTYPE (RID_FORMS_START + 67)
+#define RID_STR_LABEL (RID_FORMS_START + 68)
+#define RID_STR_ALIGNMENT (RID_FORMS_START + 69)
+#define RID_STR_NEW_FORM (RID_FORMS_START + 70)
+#define RID_STR_TABWIN_PREFIX (RID_FORMS_START + 71)
+#define RID_STR_FORM (RID_FORMS_START + 72)
+#define RID_STR_PROPPAGE_FORMCTL_TITLE (RID_FORMS_START + 73)
+#define RID_STR_PROPPAGE_UNOCTL_TITLE (RID_FORMS_START + 74)
+#define RID_STR_PROPPAGE_DEFAULT_TITLE (RID_FORMS_START + 75)
+#define RID_STR_CURSORSOURCE_TYPE (RID_FORMS_START + 76)
+#define RID_STR_BOOL (RID_FORMS_START + 77)
+#define RID_STR_FIELDSELECTION (RID_FORMS_START + 78)
+#define RID_STR_FIELDNULL (RID_FORMS_START + 79)
+#define RID_STR_NO_PROPERTIES (RID_FORMS_START + 80)
+#define RID_STR_PROPERTIES_CONTROL (RID_FORMS_START + 81)
+#define RID_STR_PROPERTIES_FORM (RID_FORMS_START + 82)
+#define RID_STR_FMEXPLORER (RID_FORMS_START + 83)
+#define RID_STR_FORMS (RID_FORMS_START + 84)
+#define RID_STR_LISTSOURCE_TYPE (RID_FORMS_START + 85)
+#define RID_STR_EVENTS (RID_FORMS_START + 86)
+#define RID_STR_CURSOR_TYPE (RID_FORMS_START + 87)
+
+#define RID_STR_READERROR (RID_FORMS_START + 88)
+#define RID_STR_WRITEERROR (RID_FORMS_START + 89)
+#define RID_STR_DELETEERROR (RID_FORMS_START + 90)
+#define RID_STR_WARNING (RID_FORMS_START + 91)
+#define RID_STR_CONNECTERROR (RID_FORMS_START + 92)
+#define RID_STR_DELETECONFIRM_RECORD (RID_FORMS_START + 93)
+#define RID_STR_DELETECONFIRM (RID_FORMS_START + 94)
+#define RID_STR_PROPERTIES_COLUMN (RID_FORMS_START + 95)
+
+#define RID_STR_READONLY (RID_FORMS_START + 96)
+#define RID_STR_GROUPBOX (RID_FORMS_START + 97)
+#define RID_STR_TABINDEX (RID_FORMS_START + 98)
+#define RID_STR_NAVIGATION (RID_FORMS_START + 99)
+#define RID_STR_CYCLE (RID_FORMS_START +100)
+#define RID_STR_DIRTY (RID_FORMS_START +101)
+#define RID_STR_OLDVALUE (RID_FORMS_START +102)
+#define RID_STR_VALUE (RID_FORMS_START +103)
+#define RID_STR_FORMATKEY (RID_FORMS_START +104)
+#define RID_STR_REQUIRED (RID_FORMS_START +105)
+#define RID_STR_SCALE (RID_FORMS_START +106)
+#define RID_STR_SIZE (RID_FORMS_START +107)
+#define RID_STR_UNIQUE (RID_FORMS_START +108)
+#define RID_STR_CLASSID (RID_FORMS_START +109)
+#define RID_STR_LEFT (RID_FORMS_START +110)
+#define RID_STR_RIGHT (RID_FORMS_START +111)
+#define RID_STR_HEIGHT (RID_FORMS_START +112)
+#define RID_STR_WIDTH (RID_FORMS_START +113)
+#define RID_STR_LISTINDEX (RID_FORMS_START +114)
+#define RID_STR_ROWHEIGHT (RID_FORMS_START +115)
+#define RID_STR_FILLCOLOR (RID_FORMS_START +116)
+#define RID_STR_TEXTCOLOR (RID_FORMS_START +117)
+#define RID_STR_LINECOLOR (RID_FORMS_START +118)
+#define RID_STR_REFVALUE (RID_FORMS_START +119)
+#define RID_STR_STRINGITEMLIST (RID_FORMS_START +120)
+#define RID_STR_COLUMN (RID_FORMS_START +121)
+#define RID_STR_BUTTONTYPE (RID_FORMS_START +122)
+#define RID_STR_SUBMIT_ACTION (RID_FORMS_START +123)
+#define RID_STR_SUBMIT_METHOD (RID_FORMS_START +124)
+#define RID_STR_SUBMIT_ENCODING (RID_FORMS_START +125)
+#define RID_STR_DEFAULTVALUE (RID_FORMS_START +126)
+#define RID_STR_SUBMIT_TARGET (RID_FORMS_START +127)
+#define RID_STR_ENUM_BUTTONTYPE (RID_FORMS_START +128)
+#define RID_STR_ENUM_SUBMIT_METHOD (RID_FORMS_START +129)
+#define RID_STR_ENUM_SUBMIT_ENCODING (RID_FORMS_START +130)
+#define RID_STR_DEFAULT_CHECKED (RID_FORMS_START +131)
+#define RID_STR_ENUM_SUBMIT_TARGET (RID_FORMS_START +132)
+#define RID_STR_IMAGE_URL (RID_FORMS_START +133)
+#define RID_STR_STRING_ITEM_LIST (RID_FORMS_START +134)
+#define RID_STR_DEFAULT_SELECT_SEQ (RID_FORMS_START +135)
+#define RID_STR_DEFAULT_FORM_NAME (RID_FORMS_START +136)
+#define RID_STR_DEFAULT_CONTROL_NAME (RID_FORMS_START +137)
+#define RID_STR_STANDARD (RID_FORMS_START +138)
+#define RID_STR_MULTISELECTION (RID_FORMS_START +139)
+
+#define RID_STR_DATE (RID_FORMS_START +140)
+#define RID_STR_DATEMIN (RID_FORMS_START +141)
+#define RID_STR_DATEMAX (RID_FORMS_START +142)
+#define RID_STR_DATEFORMAT (RID_FORMS_START +143)
+#define RID_STR_TIME (RID_FORMS_START +144)
+#define RID_STR_TIMEMIN (RID_FORMS_START +145)
+#define RID_STR_TIMEMAX (RID_FORMS_START +146)
+#define RID_STR_TIMEFORMAT (RID_FORMS_START +147)
+#define RID_STR_VALUEMIN (RID_FORMS_START +148)
+#define RID_STR_VALUEMAX (RID_FORMS_START +149)
+#define RID_STR_VALUESTEP (RID_FORMS_START +150)
+#define RID_STR_CURRENCYSYMBOL (RID_FORMS_START +151)
+#define RID_STR_EDITMASK (RID_FORMS_START +152)
+#define RID_STR_LITERALMASK (RID_FORMS_START +153)
+#define RID_STR_ENABLED (RID_FORMS_START +154)
+#define RID_STR_AUTOCOMPLETE (RID_FORMS_START +155)
+#define RID_STR_LINECOUNT (RID_FORMS_START +156)
+#define RID_STR_MAXTEXTLEN (RID_FORMS_START +157)
+#define RID_STR_SPIN (RID_FORMS_START +158)
+#define RID_STR_STRICTFORMAT (RID_FORMS_START +159)
+#define RID_STR_SHOWTHOUSANDSEP (RID_FORMS_START +160)
+#define RID_STR_HARDLINEBREAKS (RID_FORMS_START +161)
+#define RID_STR_PRINTABLE (RID_FORMS_START +162)
+#define RID_STR_TARGET_URL (RID_FORMS_START +163)
+#define RID_STR_TARGET_FRAME (RID_FORMS_START +164)
+#define RID_STR_IMPORT_GRAPHIC (RID_FORMS_START +165)
+#define RID_STR_DATEFORMAT_LIST (RID_FORMS_START +166)
+#define RID_STR_TIMEFORMAT_LIST (RID_FORMS_START +167)
+#define RID_STR_TAG (RID_FORMS_START +168)
+#define RID_STR_ECHO_CHAR (RID_FORMS_START +169)
+#define RID_STR_EMPTY_IS_NULL (RID_FORMS_START +170)
+#define RID_STR_DECIMAL_ACCURACY (RID_FORMS_START +171)
+#define RID_STR_DATE_SHOW_CENTURY (RID_FORMS_START +172)
+#define RID_STR_BORDER_TYPE (RID_FORMS_START +173)
+#define RID_STR_ENUM_CHECKED (RID_FORMS_START +174)
+#define RID_STR_DEFAULT_BUTTON (RID_FORMS_START +175)
+#define RID_STR_ENUM_CYCLE (RID_FORMS_START +176)
+
+#define RID_STR_PROPTITLE_PUSHBUTTON (RID_FORMS_START +177)
+#define RID_STR_PROPTITLE_RADIOBUTTON (RID_FORMS_START +178)
+#define RID_STR_PROPTITLE_CHECKBOX (RID_FORMS_START +179)
+#define RID_STR_PROPTITLE_FIXEDTEXT (RID_FORMS_START +180)
+#define RID_STR_PROPTITLE_GROUPBOX (RID_FORMS_START +181)
+#define RID_STR_PROPTITLE_EDIT (RID_FORMS_START +182)
+#define RID_STR_PROPTITLE_LISTBOX (RID_FORMS_START +183)
+#define RID_STR_PROPTITLE_COMBOBOX (RID_FORMS_START +184)
+#define RID_STR_PROPTITLE_IMAGEBUTTON (RID_FORMS_START +185)
+#define RID_STR_PROPTITLE_IMAGECONTROL (RID_FORMS_START +186)
+#define RID_STR_PROPTITLE_FILECONTROL (RID_FORMS_START +187)
+#define RID_STR_PROPTITLE_DATEFIELD (RID_FORMS_START +188)
+#define RID_STR_PROPTITLE_TIMEFIELD (RID_FORMS_START +189)
+#define RID_STR_PROPTITLE_NUMERICFIELD (RID_FORMS_START +190)
+#define RID_STR_PROPTITLE_CURRENCYFIELD (RID_FORMS_START +191)
+#define RID_STR_PROPTITLE_PATTERNFIELD (RID_FORMS_START +192)
+#define RID_STR_PROPTITLE_DBGRID (RID_FORMS_START +193)
+#define RID_STR_PROPTITLE_MULTISELECT (RID_FORMS_START +194)
+
+#define RID_STR_DELETECONFIRM_RECORDS (RID_FORMS_START +195)
+#define RID_STR_TRISTATE (RID_FORMS_START +196)
+#define RID_STR_CONTROL (RID_FORMS_START +197)
+#define RID_STR_NO_FORM_CONNECT (RID_FORMS_START +198)
+#define RID_STR_FIELD_NOT_FOUND (RID_FORMS_START +199)
+#define RID_STR_TABLE_NOT_FOUND (RID_FORMS_START +200)
+#define RID_STR_QUERY_NOT_FOUND (RID_FORMS_START +201)
+#define RID_STR_ENUM_NAVIGATION (RID_FORMS_START +202)
+
+#define RID_STR_RECORDSEARCH_DIRECTIONS (RID_FORMS_START +203)
+#define RID_STR_RECORDSEARCH_METHODS (RID_FORMS_START +204)
+#define RID_STR_RECORDSEARCH_BUTTONS (RID_FORMS_START +205)
+#define RID_STR_SEARCH_OVERFLOW (RID_FORMS_START +206)
+#define RID_STR_SEARCH_COUNTING (RID_FORMS_START +207)
+
+#define RID_STR_NODATACONTROLS (RID_FORMS_START +208)
+#define RID_STR_HELPTEXT (RID_FORMS_START +209)
+#define RID_STR_HELPURL (RID_FORMS_START +210)
+#define RID_STR_RECORDMARKER (RID_FORMS_START +211)
+#define RID_STR_DATETIME_LABELPOSTFIX (RID_FORMS_START +212)
+#define RID_STR_FILTERPROPOSAL (RID_FORMS_START +213)
+#define RID_STR_FILTER_NAVIGATOR (RID_FORMS_START +214)
+#define RID_STR_FILTER_FILTER_FOR (RID_FORMS_START +215)
+#define RID_STR_FILTER_FILTER_OR (RID_FORMS_START +216)
+
+#define RID_STR_PROPTITLE_FORMATTED (RID_FORMS_START +217)
+#define RID_STR_SYNTAXERROR (RID_FORMS_START +218)
+#define RID_STR_INSERTING_ALLOWED_ERROR (RID_FORMS_START +219)
+#define RID_STR_UPDATING_ALLOWED_ERROR (RID_FORMS_START +220)
+#define RID_STR_DELETING_ALLOWED_ERROR (RID_FORMS_START +221)
+#define RID_STR_MOVING_CURSOR (RID_FORMS_START +222)
+
+#define RID_STR_NOCONTROLS_FOR_EXTERNALDISPLAY (RID_FORMS_START +223)
+
+#define RID_STR_LABELCONTROL (RID_FORMS_START +224)
+#define RID_STR_VETO_DATASOURCE (RID_FORMS_START +225)
+
+#define RID_STR_CURRSYM_POSITION (RID_FORMS_START +226)
+#define RID_STR_LIST_N_COMBO_FILLLIST (RID_FORMS_START +227)
+#define RID_STR_COMMAND_TYPE (RID_FORMS_START +228)
+#define RID_STR_ESCAPE_PROCESSING (RID_FORMS_START +229)
+#define RID_STR_COULDNOTSETORDER (RID_FORMS_START +230)
+#define RID_STR_COULDNOTSETFILTER (RID_FORMS_START +231)
+#define RID_STR_SQLEXCEPTIONTYPES (RID_FORMS_START +232)
+#define RID_STR_ERR_INSERTRECORD (RID_FORMS_START +233)
+#define RID_STR_ERR_UPDATERECORD (RID_FORMS_START +234)
+#define RID_STR_ERR_DELETERECORD (RID_FORMS_START +235)
+#define RID_STR_ERR_DELETERECORDS (RID_FORMS_START +236)
+#define RID_STR_AUTOFIELD (RID_FORMS_START +237)
+#define RID_STR_CONTROL_SUBSTITUTED_NAME (RID_FORMS_START +238)
+#define RID_STR_CONTROL_SUBSTITUTED_EPXPLAIN (RID_FORMS_START +239)
+#define RID_STR_CREATECONTROLS_INVALIDSOURCE (RID_FORMS_START +240)
+
+// ClassNames
+#define RID_CLASSNAMES_START (RID_FORMS_START + 300)
+
+#define RID_STR_EDIT_CLASSNAME (RID_CLASSNAMES_START + 0)
+#define RID_STR_BUTTON_CLASSNAME (RID_CLASSNAMES_START + 1)
+#define RID_STR_FIXEDTEXT_CLASSNAME (RID_CLASSNAMES_START + 2)
+#define RID_STR_CHECKBOX_CLASSNAME (RID_CLASSNAMES_START + 3)
+#define RID_STR_RADIOBUTTON_CLASSNAME (RID_CLASSNAMES_START + 4)
+#define RID_STR_LISTBOX_CLASSNAME (RID_CLASSNAMES_START + 5)
+#define RID_STR_COMBOBOX_CLASSNAME (RID_CLASSNAMES_START + 6)
+#define RID_STR_URLBUTTON_CLASSNAME (RID_CLASSNAMES_START + 7)
+#define RID_STR_GROUPBOX_CLASSNAME (RID_CLASSNAMES_START + 8)
+#define RID_STR_CONTROL_CLASSNAME (RID_CLASSNAMES_START + 9)
+#define RID_STR_IMAGE_CLASSNAME (RID_CLASSNAMES_START + 10)
+#define RID_STR_GRID_CLASSNAME (RID_CLASSNAMES_START + 11)
+#define RID_STR_FILECONTROL_CLASSNAME (RID_CLASSNAMES_START + 12)
+
+#define RID_STR_DATEFIELD_CLASSNAME (RID_CLASSNAMES_START + 13)
+#define RID_STR_TIMEFIELD_CLASSNAME (RID_CLASSNAMES_START + 14)
+#define RID_STR_NUMERICFIELD_CLASSNAME (RID_CLASSNAMES_START + 15)
+#define RID_STR_CURRENCYFIELD_CLASSNAME (RID_CLASSNAMES_START + 16)
+#define RID_STR_PATTERNFIELD_CLASSNAME (RID_CLASSNAMES_START + 17)
+#define RID_STR_IMAGECONTROL_CLASSNAME (RID_CLASSNAMES_START + 18)
+#define RID_STR_HIDDEN_CLASSNAME (RID_CLASSNAMES_START + 19)
+
+// Events
+#define RID_STR_EVT_START (RID_FORMS_START +400)
+
+#define RID_STR_EVT_ACTIONPERFORMED (RID_STR_EVT_START + 0)
+#define RID_STR_EVT_AFTERDELETE (RID_STR_EVT_START + 1)
+#define RID_STR_EVT_AFTERINSERT (RID_STR_EVT_START + 2)
+#define RID_STR_EVT_AFTERUPDATE (RID_STR_EVT_START + 3)
+#define RID_STR_EVT_BEFOREDELETE (RID_STR_EVT_START + 4)
+#define RID_STR_EVT_BEFOREINSERT (RID_STR_EVT_START + 5)
+#define RID_STR_EVT_BEFOREUPDATE (RID_STR_EVT_START + 6)
+#define RID_STR_EVT_COMPONENTHIDDEN (RID_STR_EVT_START + 7)
+#define RID_STR_EVT_COMPONENTMOVED (RID_STR_EVT_START + 8)
+#define RID_STR_EVT_COMPONENTPAINT (RID_STR_EVT_START + 9)
+#define RID_STR_EVT_COMPONENTRESIZED (RID_STR_EVT_START + 10)
+#define RID_STR_EVT_COMPONENTSHOWN (RID_STR_EVT_START + 11)
+#define RID_STR_EVT_CONFIRMDELETE (RID_STR_EVT_START + 12)
+#define RID_STR_EVT_ELEMENTINSERTED (RID_STR_EVT_START + 13)
+#define RID_STR_EVT_ELEMENTREMOVED (RID_STR_EVT_START + 14)
+#define RID_STR_EVT_ELEMENTREPLACED (RID_STR_EVT_START + 15)
+#define RID_STR_EVT_ERROROCCURED (RID_STR_EVT_START + 16)
+#define RID_STR_EVT_FIRING (RID_STR_EVT_START + 17)
+#define RID_STR_EVT_FOCUSGAINED (RID_STR_EVT_START + 18)
+#define RID_STR_EVT_FOCUSLOST (RID_STR_EVT_START + 19)
+#define RID_STR_EVT_ITEMSTATECHANGED (RID_STR_EVT_START + 20)
+#define RID_STR_EVT_KEYTYPED (RID_STR_EVT_START + 21)
+#define RID_STR_EVT_LOADED (RID_STR_EVT_START + 22)
+#define RID_STR_EVT_MOUSEDRAGGED (RID_STR_EVT_START + 23)
+#define RID_STR_EVT_MOUSEENTERED (RID_STR_EVT_START + 24)
+#define RID_STR_EVT_MOUSEEXITED (RID_STR_EVT_START + 25)
+#define RID_STR_EVT_MOUSEMOVED (RID_STR_EVT_START + 26)
+#define RID_STR_EVT_MOUSEPRESSED (RID_STR_EVT_START + 27)
+#define RID_STR_EVT_MOUSERELEASED (RID_STR_EVT_START + 28)
+#define RID_STR_EVT_POSITIONED (RID_STR_EVT_START + 29)
+#define RID_STR_EVT_PROPERTIESCHANGE (RID_STR_EVT_START + 30)
+#define RID_STR_EVT_PROPERTYCHANGE (RID_STR_EVT_START + 31)
+#define RID_STR_EVT_PROPERTYSTATECHANGE (RID_STR_EVT_START + 32)
+#define RID_STR_EVT_RESETTED (RID_STR_EVT_START + 33)
+#define RID_STR_EVT_SUBMITTED (RID_STR_EVT_START + 34)
+#define RID_STR_EVT_TEXTCHANGED (RID_STR_EVT_START + 35)
+#define RID_STR_EVT_UNLOADED (RID_STR_EVT_START + 36)
+#define RID_STR_EVT_UPDATECANCELED (RID_STR_EVT_START + 37)
+#define RID_STR_EVT_VETOABLECHANGE (RID_STR_EVT_START + 38)
+#define RID_STR_EVT_CHANGED (RID_STR_EVT_START + 39)
+#define RID_STR_EVT_APPROVERESETTED (RID_STR_EVT_START + 40)
+#define RID_STR_EVT_APPROVEACTIONPERFORMED (RID_STR_EVT_START + 41)
+#define RID_STR_EVT_KEYUP (RID_STR_EVT_START + 42)
+#define RID_STR_EVT_APPROVEPARAMETER (RID_STR_EVT_START + 43)
+#define RID_STR_EVT_POSITIONING (RID_STR_EVT_START + 44)
+#define RID_STR_EVT_APPROVEROWCHANGE (RID_STR_EVT_START + 45)
+#define RID_STR_EVT_ROWCHANGE (RID_STR_EVT_START + 46)
+#define RID_STR_EVT_RELOADED (RID_STR_EVT_START + 47)
+
+// Error-String-Id's -----------------------------------------------------------
+#define RID_ERR_START (RID_FORMS_START + 600)
+#define RID_ERR_CONTEXT_ADDFORM (RID_ERR_START + 0)
+#define RID_ERR_DUPLICATE_NAME (RID_ERR_START + 1)
+#define RID_ERR_FIELDREQUIRED (RID_ERR_START + 2)
+#define RID_ERR_NO_ELEMENT_TITLE (RID_ERR_START + 3)
+#define RID_ERR_NO_ELEMENT (RID_ERR_START + 4)
+#define RID_ERR_COULD_NOT_CONVERT_PARAM (RID_ERR_START + 5)
+#define RID_ERR_REFRESHING_SUB_FORM (RID_ERR_START + 6)
+#define RID_ERR_LOADING_FORM (RID_ERR_START + 7)
+#define RID_ERR_REFRESHING_FORM (RID_ERR_START + 8)
+
+// Error-Id's -----------------------------------------------------------
+
+
+// Ueberlaufpruefung -----------------------------------------------------
+
+// Dialog-Id's
+#define ACTFRM_RID_END RID_SVXDLG_DBINFO
+#if ACTFRM_RID_END > RID_FORMS_END
+#error Resource-Ueberlauf in #line, #file
+#endif
+
+// Strings
+#define ACTFRM_RID_STREND RID_ERR_FIELDREQUIRED
+#if ACTFRM_RID_STREND > RID_FORMS_END
+#error Resource-Ueberlauf in #line, #file
+#endif
+
+
+#endif // _FM_FMPAGE_HXX
+
diff --git a/svx/source/inc/fmsearch.hrc b/svx/source/inc/fmsearch.hrc
new file mode 100644
index 000000000000..e6e05534a5cf
--- /dev/null
+++ b/svx/source/inc/fmsearch.hrc
@@ -0,0 +1,100 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmsearch.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _FMSEARCH_HRC
+#define _FMSEARCH_HRC
+
+#define FT_SEARCHTEXT 1
+#define FT_FORM 2
+#define FT_POSITION 3
+#define FT_RECORDLABEL 4
+#define FT_RECORD 5
+#define FT_HINT 6
+
+
+#define CMB_SEARCHTEXT 1
+
+#define RB_ALLFIELDS 1
+#define RB_SINGLEFIELD 2
+#define RB_SEARCHFORTEXT 3
+#define RB_SEARCHFORNULL 4
+#define RB_SEARCHFORNOTNULL 5
+
+#define LB_FORM 1
+#define LB_FIELD 2
+#define LB_POSITION 3
+
+#define PB_APPROXSETTINGS 1
+#define PB_SEARCH 2
+
+#define GB_SEARCHFOR 1
+#define GB_WHERE 2
+#define GB_OPTIONS 3
+#define GB_STATE 4
+
+#define CB_USEFORMATTER 1
+#define CB_BACKWARD 2
+#define CB_STARTOVER 3
+#define CB_CASE 4
+#define CB_WILDCARD 5
+#define CB_REGULAR 6
+#define CB_APPROX 7
+
+#endif // _FMSEARCH_HRC
diff --git a/svx/source/inc/fmservs.hxx b/svx/source/inc/fmservs.hxx
new file mode 100644
index 000000000000..bc4965a734c0
--- /dev/null
+++ b/svx/source/inc/fmservs.hxx
@@ -0,0 +1,264 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmservs.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMSERVS_HXX
+#define _SVX_FMSERVS_HXX
+
+#ifndef _FM_STATIC_HXX_
+#include "fmstatic.hxx"
+#endif
+// alle serviceNamen
+DECLARE_CONSTASCII_USTRING(FM_NUMBER_FORMATTER);
+
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_EDIT);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_LISTBOX);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_COMBOBOX);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_RADIOBUTTON);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_GROUPBOX);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_FIXEDTEXT);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_COMMANDBUTTON);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_CHECKBOX);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_IMAGEBUTTON);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_FILECONTROL);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_TIMEFIELD);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_DATEFIELD);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_NUMERICFIELD);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_CURRENCYFIELD);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_PATTERNFIELD);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_FORMATTEDFIELD);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROL_IMAGECONTROL);
+
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_EDIT);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_LISTBOX);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_COMBOBOX);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_RADIOBUTTON);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_GROUPBOX);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_FIXEDTEXT);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_COMMANDBUTTON);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_CHECKBOX);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_IMAGEBUTTON);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_FILECONTROL);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_TIMEFIELD);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_DATEFIELD);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_NUMERICFIELD);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_CURRENCYFIELD);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_PATTERNFIELD);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_FORMATTEDFIELD);
+DECLARE_CONSTASCII_USTRING(VCL_CONTROLMODEL_IMAGECONTROL);
+
+DECLARE_CONSTASCII_USTRING(AWT_CONTROL_TEXTFIELD);
+
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_FORM);
+
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_EDIT); // alter service name (5.0)
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_TEXTFIELD);
+
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_LISTBOX);
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_COMBOBOX);
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_RADIOBUTTON);
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_GROUPBOX);
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_FIXEDTEXT);
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_COMMANDBUTTON);
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_CHECKBOX);
+
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_GRID); // alter service name (5.0)
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_GRIDCONTROL);
+
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_IMAGEBUTTON);
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_FILECONTROL);
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_TIMEFIELD);
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_DATEFIELD);
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_NUMERICFIELD);
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_CURRENCYFIELD);
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_PATTERNFIELD);
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_FORMATTEDFIELD);
+
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_HIDDEN); // alter service name (5.0)
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_HIDDENCONTROL);
+
+DECLARE_CONSTASCII_USTRING(FM_COMPONENT_IMAGECONTROL);
+
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_LISTBOX);
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_RADIOBUTTON);
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_COMBOBOX);
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_GROUPBOX);
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_CHECKBOX);
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_FIXEDTEXT);
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_COMMANDBUTTON);
+
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_GRID);
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_GRIDCONTROL);
+
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_IMAGEBUTTON);
+
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_EDIT); // alt
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_TEXTFIELD);
+
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_TIMEFIELD);
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_DATEFIELD);
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_NUMERICFIELD);
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_CURRENCYFIELD);
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_PATTERNFIELD);
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_FILECONTROL);
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_IMAGECONTROL);
+DECLARE_CONSTASCII_USTRING(FM_CONTROL_FORMATTEDFIELD);
+
+DECLARE_CONSTASCII_USTRING(FM_FORM_CONTROLLER);
+DECLARE_CONSTASCII_USTRING(SRV_SDB_ROWSET);
+DECLARE_CONSTASCII_USTRING(SRV_SDB_CONNECTION);
+DECLARE_CONSTASCII_USTRING(SRV_SDBC_STATEMENT);
+DECLARE_CONSTASCII_USTRING(SRV_SDB_DATABASE_ENVIRONMENT);
+DECLARE_CONSTASCII_USTRING(SRV_SDB_DATABASE_ACCESS_CONNECTION);
+DECLARE_CONSTASCII_USTRING(SRV_SDB_DATABASE_ACCESS_CONTEXT);
+
+
+
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_FORM);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_TEXTFIELD);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_LISTBOX);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_COMBOBOX);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_RADIOBUTTON);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_GROUPBOX);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_FIXEDTEXT);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_COMMANDBUTTON);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_CHECKBOX);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_GRIDCONTROL);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_IMAGEBUTTON);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_FILECONTROL);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_TIMEFIELD);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_DATEFIELD);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_NUMERICFIELD);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_CURRENCYFIELD);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_PATTERNFIELD);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_HIDDENCONTROL);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_IMAGECONTROL);
+DECLARE_CONSTASCII_USTRING(FM_SUN_COMPONENT_FORMATTEDFIELD);
+
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_TEXTFIELD);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_LISTBOX);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_COMBOBOX);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_RADIOBUTTON);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_GROUPBOX);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_FIXEDTEXT);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_COMMANDBUTTON);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_CHECKBOX);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_GRIDCONTROL);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_IMAGEBUTTON);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_TIMEFIELD);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_DATEFIELD);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_NUMERICFIELD);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_CURRENCYFIELD);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_PATTERNFIELD);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_IMAGECONTROL);
+DECLARE_CONSTASCII_USTRING(FM_SUN_CONTROL_FORMATTEDFIELD);
+
+// alle Reflections
+// Components
+//Reflection* FmXDatabaseForm_getReflection();
+//Reflection* FmXGridControlModel_getReflection();
+//Reflection * FmXEditModel_getReflection();
+//Reflection* FmXTextModel_getReflection();
+//Reflection* FmXCheckBoxModel_getReflection();
+//Reflection* FmXRadioButtonModel_getReflection();
+//Reflection* FmXImageButtonModel_getReflection();
+//Reflection* FmXComboBoxModel_getReflection();
+//Reflection* FmXGroupBoxModel_getReflection();
+//Reflection* FmXButtonModel_getReflection();
+//Reflection* FmXListBoxModel_getReflection();
+//Reflection* FmXFileControlModel_getReflection();
+//Reflection* FmXDateModel_getReflection();
+//Reflection* FmXTimeModel_getReflection();
+//Reflection* FmXNumericModel_getReflection();
+//Reflection* FmXCurrencyModel_getReflection();
+//Reflection* FmXPatternModel_getReflection();
+//Reflection* FmXHiddenModel_getReflection();
+//Reflection* FmXImageControlModel_getReflection();
+
+// Controls
+//Reflection* FmXGridControl_getReflection();
+//Reflection * FmXEditControl_getReflection();
+//Reflection* FmXImageButtonControl_getReflection();
+//Reflection* FmXRadioButtonControl_getReflection();
+//Reflection* FmXComboBoxControl_getReflection();
+//Reflection* FmXCheckBoxControl_getReflection();
+//Reflection* FmXGroupBoxControl_getReflection();
+//Reflection* FmXButtonControl_getReflection();
+//Reflection* FmXListBoxControl_getReflection();
+//Reflection* FmXDateControl_getReflection();
+//Reflection* FmXTimeControl_getReflection();
+//Reflection* FmXNumericControl_getReflection();
+//Reflection* FmXCurrencyControl_getReflection();
+//Reflection* FmXPatternControl_getReflection();
+//Reflection* FmXFileControlControl_getReflection();
+//Reflection* FmXImageControlControl_getReflection();
+
+// Peers
+// Reflection* FmXGridPeer_getReflection();
+
+// other internal objects
+// Reflection* FmXFilterControl_getReflection();
+// Reflection* FmXFilterCell_getReflection();
+
+void ImplSmartRegisterUnoServices();
+
+
+
+#endif // _SVX_FMSERVS_HXX
+
diff --git a/svx/source/inc/fmshimp.hxx b/svx/source/inc/fmshimp.hxx
new file mode 100644
index 000000000000..d9fa94a00175
--- /dev/null
+++ b/svx/source/inc/fmshimp.hxx
@@ -0,0 +1,801 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmshimp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMSHIMP_HXX
+#define _SVX_FMSHIMP_HXX
+
+#ifndef _COM_SUN_STAR_SDBC_XROWSETLISTENER_HPP_
+#include <com/sun/star/sdbc/XRowSetListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMECONTAINER_HPP_
+#include <com/sun/star/container/XNameContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XRESULTSET_HPP_
+#include <com/sun/star/sdbc/XResultSet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XSQLQUERYCOMPOSER_HPP_
+#include <com/sun/star/sdb/XSQLQueryComposer.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_FRAME_XSTATUSLISTENER_HPP_
+#include <com/sun/star/frame/XStatusListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_CONTAINEREVENT_HPP_
+#include <com/sun/star/container/ContainerEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XCONTAINERLISTENER_HPP_
+#include <com/sun/star/container/XContainerListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCONTROL_HPP_
+#include <com/sun/star/awt/XControl.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XMODIFYLISTENER_HPP_
+#include <com/sun/star/util/XModifyListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORM_HPP_
+#include <com/sun/star/form/XForm.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCONTROLLER_HPP_
+#include <com/sun/star/form/XFormController.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCOMPONENT_HPP_
+#include <com/sun/star/form/XFormComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_NAVIGATIONBARMODE_HPP_
+#include <com/sun/star/form/NavigationBarMode.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XFRAME_HPP_
+#include <com/sun/star/frame/XFrame.hpp>
+#endif
+#ifndef _COM_SUN_STAR_VIEW_XSELECTIONCHANGELISTENER_HPP_
+#include <com/sun/star/view/XSelectionChangeListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XFASTPROPERTYSET_HPP_
+#include <com/sun/star/beans/XFastPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYCHANGELISTENER_HPP_
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYCHANGEEVENT_HPP_
+#include <com/sun/star/beans/PropertyChangeEvent.hpp>
+#endif
+
+#ifndef _SV_TIMER_HXX //autogen
+#include <vcl/timer.hxx>
+#endif
+
+#ifndef _SFXAPP_HXX //autogen wg. SFX_APP
+#include <sfx2/app.hxx>
+#endif
+
+#ifndef _SVDMARK_HXX
+#include "svdmark.hxx"
+#endif
+
+#ifndef _SVX_SVXIDS_HRC
+#include "svxids.hrc"
+#endif
+
+#ifndef _SVARRAY_HXX //autogen
+#include <svtools/svarray.hxx>
+#endif
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#define _SVSTDARR_BOOLS
+#define _SVSTDARR_BYTES
+#define _SVSTDARR_LONGS
+#define _SVSTDARR_ULONGS
+#define _SVSTDARR_USHORTS
+#include <svtools/svstdarr.hxx>
+
+#ifndef _SFXMNUITEM_HXX //autogen
+#include <sfx2/mnuitem.hxx>
+#endif
+
+#ifndef _SVX_FMTOOLS_HXX
+#include "fmtools.hxx"
+#endif
+
+#ifndef _FMSEARCH_HXX
+#include "fmsearch.hxx"
+#endif
+
+#ifndef _FMSRCCF_HXX_
+#include "fmsrccfg.hxx"
+#endif
+
+#include <osl/mutex.hxx>
+
+#ifndef _VOS_THREAD_HXX_ //autogen
+#include <vos/thread.hxx>
+#endif
+
+#ifndef _SFXCANCEL_HXX //autogen
+#include <svtools/cancel.hxx>
+#endif
+
+#ifndef _TOOLS_DEBUG_HXX //autogen wg. DBG_WARNING
+#include <tools/debug.hxx>
+#endif
+
+#ifndef _CPPUHELPER_COMPONENT_HXX_
+#include <cppuhelper/component.hxx>
+#endif
+#ifndef _UTL_STLTYPES_HXX_
+#include "unotools/stl_types.hxx"
+#endif
+#ifndef _UTL_CONTAINER_HXX_
+#include "unotools/container.hxx"
+#endif
+#ifndef _FM_IMPLEMENTATION_IDS_HXX_
+#include "fmimplids.hxx"
+#endif
+
+
+SV_DECL_PTRARR(SdrObjArray, SdrObject*, 32, 16);
+// SV_DECL_OBJARR(FmFormArray, ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm>, 32, 16);
+DECLARE_STL_VECTOR( ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm > ,FmFormArray);
+
+// catch databse exceptions if occur
+#define DO_SAFE(statement) try { statement; } catch(...) { DBG_WARNING("unhandled exception (I tried to move a cursor (or something like that).)"); }
+
+#define GA_DISABLE_SYNC 1
+#define GA_FORCE_SYNC 2
+#define GA_ENABLE_SYNC 3
+#define GA_SYNC_MASK 3
+#define GA_DISABLE_ROCTRLR 4
+#define GA_ENABLE_ROCTRLR 8
+
+//==============================================================================
+// FmFormNavigationDispatcher - a dispatcher responsible for a form navigation slot
+//==============================================================================
+
+class FmFormNavigationDispatcher : public FmSlotDispatch
+{
+ ::com::sun::star::frame::FeatureStateEvent m_aNonActiveState; // the state to report to the listeners if we're inactive
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> m_xCursor; // the cursor we're responsible for
+ sal_Bool m_bActive; // forward the StateChanged as statusChanged to our listeners ?
+ UniString m_sAccessPath; // the access path of m_xCursor (redundant but more performant)
+
+public:
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> getForm() const { return m_xCursor; }
+ UniString getFormAccessPath() const { return m_sAccessPath; }
+
+public:
+ FmFormNavigationDispatcher(const ::com::sun::star::util::URL& _rUrl, sal_Int16 _nSlotId, SfxBindings& _rBindings, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xForm, const UniString& _rAccessPath);
+
+ void SetActive(sal_Bool bEnable);
+ sal_Bool IsActive() const { return m_bActive; }
+
+ // set a specific state which will be broadcasted to the listeners (no matter if we are active or not)
+ void SetStatus(SfxItemState eState, const SfxPoolItem* pState);
+
+ // XComponent
+ virtual void SAL_CALL dispose( ) throw(::com::sun::star::uno::RuntimeException);
+
+protected:
+ // SfxControllerItem
+ virtual void StateChanged(sal_Int16 nSID, SfxItemState eState, const SfxPoolItem* pState);
+
+ virtual void NotifyState(SfxItemState eState, const SfxPoolItem* pState, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener>& rListener = ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener>());
+};
+
+//==============================================================================
+// a class iterating through all fields of a form which are bound to a field
+// sub forms are ignored, grid columns (where the grid is a direct child of the form) are included
+class FmXBoundFormFieldIterator : public ::utl::IndexAccessIterator
+{
+public:
+ FmXBoundFormFieldIterator(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& _rStartingPoint) : ::utl::IndexAccessIterator(_rStartingPoint) { }
+
+protected:
+ virtual sal_Bool ShouldHandleElement(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& _rElement);
+ virtual sal_Bool ShouldStepInto(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& _rContainer) const;
+};
+
+//========================================================================
+// I would prefer this to be a struct local to FmXFormShell but unfortunately local structs/classes
+// are somewhat difficult with some of our compilers
+class FmCursorActionThread;
+struct CursorActionDescription
+{
+ FmCursorActionThread* pThread;
+ sal_uInt32 nFinishedEvent;
+ // we want to do the cleanup of the thread in the main thread so we post an event to ourself
+ sal_Bool bCanceling;
+ // this thread is being canceled
+
+ CursorActionDescription() : pThread(NULL), nFinishedEvent(0), bCanceling(sal_False) { }
+};
+
+//========================================================================
+class SfxViewFrame;
+class FmXFormShell : public ::com::sun::star::sdbc::XRowSetListener,
+ public ::com::sun::star::beans::XPropertyChangeListener,
+ public ::com::sun::star::util::XModifyListener,
+ public ::com::sun::star::container::XContainerListener,
+ public ::com::sun::star::view::XSelectionChangeListener,
+ public ::com::sun::star::form::XFormControllerListener,
+ public ::cppu::OComponentHelper,
+ public FmDispatchInterceptor
+ // public ::cppu::OWeakObject
+{
+ friend class FmFormShell;
+ friend class FmFormView;
+
+ // Timer um verzoegerte Markierung vorzunehmen
+ Timer m_aMarkTimer;
+ SdrObjArray m_arrSearchedControls;
+ // We enable a permanent cursor for the grid we found a searched text, it's disabled in the next "found" event.
+ FmFormArray m_arrSearchContexts;
+
+ // Liste der markierten Object, dient zur Restauration beim Umschalten von Alive in DesignMode
+ SdrMarkList m_aMark;
+
+ // some typedefs :
+ // all dispatchers belonging to a form
+ DECLARE_STL_VECTOR(FmFormNavigationDispatcher*, SingleFormDispatchers);
+
+ // a map from a form access path (like "1/4/2") to the dispatchers array for this form
+ DECLARE_STL_USTRINGACCESS_MAP(SingleFormDispatchers, FormsDispatchers);
+ FormsDispatchers m_aNavigationDispatcher;
+
+ FmSearchConfigAdmin m_aConfigDummy;
+ // das sorgt dafuer, das das SearchConfigItem (ein singleton) aufgeraeumt wird, sobald die letzte FormShell
+ // geschlossen wird. Benutzt man keine Suche, dann wird auch kein ConfigItem angezogen (so schlau ist der
+ // ConfigAdmin schon ;)), so dass dieses Member hier nicht weiter stoert
+
+ ::form::OImplementationIdsRef m_aHoldImplIdHelper;
+
+ SvUShorts m_arrInvalidSlots;
+ SvBytes m_arrInvalidSlots_Flags;
+ // we explicitly switch off the propbrw before leaving the design mode
+ // this flag tells us if we have to switch it on again when reentering
+
+ DECLARE_STL_USTRINGACCESS_MAP(CursorActionDescription, CursorActions);
+ CursorActions m_aCursorActions;
+ // all actions on async cursors
+
+ SvBools m_aControlLocks;
+ // while doing a async cursor action we have to lock all controls of the active controller.
+ // m_aControlLocks remembers the previous lock states to be restored afterwards.
+ ::osl::Mutex m_aAsyncSafety;
+ // secure the access to our thread related members
+ ::osl::Mutex m_aInvalidationSafety;
+ // secure the access to all our slot invalidation related members
+
+ ::com::sun::star::form::NavigationBarMode m_eNavigate; // Art der Navigation
+
+ // da ich beim Suchen fuer die Behandlung des "gefunden" ein SdrObject markieren will, besorge ich mir vor dem
+ // Hochreissen des Suchen-Dialoges alle relevanten Objekte
+ // (das Array ist damit auch nur waehrend des Suchvorganges gueltig)
+ SvLongs m_arrRelativeGridColumn;
+
+ ::osl::Mutex m_aMutex;
+ sal_uInt32 m_nInvalidationEvent;
+
+ FmFormShell* m_pShell;
+
+ // aktuelle Form, Controller
+ // nur im alive mode verfuegbar
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController> m_xActiveController;
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController> m_xNavigationController;
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm> m_xActiveForm;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSQLQueryComposer> m_xParser;
+
+ // Aktueller container einer Page
+ // nur im designmode verfuegbar
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess> m_xForms;
+
+ // aktuell selektiertes Object (Form oder Control)
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> m_xSelObject;
+
+ // aktuelles Control, keine Form
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> m_xCurControl;
+
+ // aktuelle Form
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm> m_xCurForm;
+
+
+ // und das ist ebenfalls fuer's 'gefunden' : Beim Finden in GridControls brauche ich die Spalte, bekomme aber
+ // nur die Nummer des Feldes, die entspricht der Nummer der Spalte + <offset>, wobei der Offset von der Position
+ // des GridControls im Formular abhaengt. Also hier eine Umrechnung.
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel> m_aLastGridFound;
+ // we want to be a DispatchInterceptor within our frame
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame> m_xAttachedFrame;
+ // Administration of external form views (see the SID_FM_VIEW_AS_GRID-slot)
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController> m_xExternalViewController; // the controller for the external form view
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController> m_xExtViewTriggerController; // the nav controller at the time the external display was triggered
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> m_xExternalDisplayedForm; // the form which the external view is based on
+
+ FmXDispatchInterceptorImpl* m_pMainFrameInterceptor;
+ FmXDispatchInterceptorImpl* m_pExternalViewInterceptor;
+
+ sal_Int16 m_nLockSlotInvalidation;
+ sal_Bool m_bHadPropBrw:1;
+
+ sal_Bool m_bUseWizards : 1;
+
+ sal_Bool m_bTrackProperties : 1;
+ // soll ich (bzw. der Owner diese Impl-Klasse) mich um die Aktualisierung des ::com::sun::star::beans::Property-Browsers kuemmern ?
+
+ sal_Bool m_bActiveModified : 1; // Controller modifiziert
+ sal_Bool m_bDatabaseBar : 1; // Gibt es eine Datenbankleiste
+ sal_Bool m_bInActivate : 1; // Wird ein Controller aktiviert
+ sal_Bool m_bSetFocus : 1; // Darf der Focus umgesetzt werden
+ sal_Bool m_bFilterMode : 1; // Wird gerade ein Filter auf die Controls angesetzt
+ sal_Bool m_bChangingDesignMode:1; // sal_True within SetDesignMode
+
+public:
+ FmXFormShell(FmFormShell* _pShell, SfxViewFrame* _pViewFrame);
+ ~FmXFormShell();
+
+ // UNO Anbindung
+ DECLARE_UNO3_DEFAULTS(FmXFormShell, OComponentHelper);
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& type) throw ( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+
+// EventListener
+ virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw( ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::container::XContainerListener
+ virtual void SAL_CALL elementInserted(const ::com::sun::star::container::ContainerEvent& rEvent);
+ virtual void SAL_CALL elementReplaced(const ::com::sun::star::container::ContainerEvent& rEvent);
+ virtual void SAL_CALL elementRemoved(const ::com::sun::star::container::ContainerEvent& rEvent);
+
+// XSelectionChangeListener
+ virtual void SAL_CALL selectionChanged(const ::com::sun::star::lang::EventObject& rEvent);
+
+// ::com::sun::star::beans::XPropertyChangeListener
+ virtual void SAL_CALL propertyChange(const ::com::sun::star::beans::PropertyChangeEvent& evt);
+
+// ::com::sun::star::sdbc::XRowSetListener
+ virtual void SAL_CALL cursorMoved(const ::com::sun::star::lang::EventObject& event) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL rowChanged(const ::com::sun::star::lang::EventObject& event) throw( ::com::sun::star::uno::RuntimeException ) { }
+ virtual void SAL_CALL rowSetChanged(const ::com::sun::star::lang::EventObject& event) throw( ::com::sun::star::uno::RuntimeException ) { }
+
+// ::com::sun::star::util::XModifyListener -> modify setzen
+ virtual void SAL_CALL modified(const ::com::sun::star::lang::EventObject& Source);
+
+// ::com::sun::star::frame::XDispatchProviderInterceptor
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch> interceptedQueryDispatch(sal_uInt16 _nId,
+ const ::com::sun::star::util::URL& aURL, const ::rtl::OUString& aTargetFrameName, sal_Int32 nSearchFlags) throw( ::com::sun::star::uno::RuntimeException );
+ virtual ::osl::Mutex* getInterceptorMutex() { return &m_aAsyncSafety; }
+
+// ::com::sun::star::form::XFormControllerListener
+ virtual void SAL_CALL formActivated(const ::com::sun::star::lang::EventObject& rEvent) throw( ::com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL formDeactivated(const ::com::sun::star::lang::EventObject& rEvent) throw( ::com::sun::star::uno::RuntimeException );
+
+// OComponentHelper
+ virtual void SAL_CALL disposing();
+
+ void EnableTrackProperties( sal_Bool bEnable) { m_bTrackProperties = bEnable; }
+ sal_Bool IsTrackPropertiesEnabled() {return m_bTrackProperties;}
+
+protected:
+ void ResetForms(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>& _xForms = ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>(), sal_Bool bInvalidate = sal_False);
+ void AddElement(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& Element);
+ void RemoveElement(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& Element);
+
+ void startListening();
+ void stopListening();
+
+ void ExecuteSearch(); // execute SID_FM_SEARCH
+
+ void CreateExternalView(); // execute SID_FM_VIEW_AS_GRID
+
+ sal_Bool GetY2KState(sal_uInt16& n);
+ void SetY2KState(sal_uInt16 n);
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet> GetBoundField(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& _xControl, const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm>& _xForm) const;
+
+ void ObjectRemovedInAliveMode(const SdrObject* pObject);
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl> GetControlFromModel(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel>& xModel);
+ // liefert das Control, welches das angegebene Model hat
+ void CollectFormContexts(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& xStartingPoint, const UniString& strCurrentLevelPrefix, UniString& strNames);
+ // sammelt in strNames die Namen aller Formulare, fuegt die entsprechenden XFormRefs in m_arrSearchContexts ein
+
+ static sal_Bool CanMoveRight(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _xControllerModel);
+ static sal_Bool CanMoveLeft(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _xControllerModel);
+ static sal_Bool SaveModified(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetUpdate>& _xCursor, ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _xSet, sal_Bool& _rRecordInserted);
+ static sal_Bool MoveRight(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetUpdate>& _xCursor);
+ static sal_Bool MoveLeft(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetUpdate>& _xCursor);
+
+public:
+ static sal_Bool CanMoveRight(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& xController);
+ static sal_Bool CanMoveLeft(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& xController);
+ static sal_Bool MoveRight(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& xController);
+ static sal_Bool MoveLeft(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& xController);
+ static sal_Bool CommitCurrent(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& _xController);
+ static sal_Bool IsModified(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& xController);
+ static void ResetCurrent(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& _xController);
+ void ResetAll(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm>& _xForm);
+ static sal_Bool SaveModified(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& xController, sal_Bool bCommit = sal_True);
+
+ // methode fuer nicht designmode (alive mode)
+ void setActiveController(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& _xController = ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>());
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& getActiveController() const {return m_xActiveController;}
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& getActiveInternalController() const { return m_xActiveController == m_xExternalViewController ? m_xExtViewTriggerController : m_xActiveController; }
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm>& getActiveForm() const {return m_xActiveForm;}
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& getNavController() const {return m_xNavigationController;}
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSQLQueryComposer> getParser() const { return m_xParser; }
+
+ // nur im design mode verwenden, aktuell selektiertes Formular oder Control
+ void setCurForm(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm>& xF);
+ void setCurControl(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& xObj);
+ void setCurControl(const SdrMarkList& rMarkList);
+ void setSelObject(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& xObj);
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm>& getCurForm() const {return m_xCurForm;}
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& getCurControl() const {return m_xCurControl;}
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& getSelObject() const {return m_xSelObject;}
+
+ sal_Bool hasForms() const {return m_xForms.is() && m_xForms->getCount() != 0;}
+ sal_Bool isActiveModified() const {return m_bActiveModified;}
+ sal_Bool hasDatabaseBar() const {return m_bDatabaseBar;}
+ sal_Bool canNavigate() const {return m_xNavigationController.is();}
+ sal_Bool isParsable() const {return m_xParser.is() && m_xParser->getQuery().len();}
+ sal_Bool hasFilter() const { return isParsable() &&
+ (m_xParser->getFilter().len() || m_xParser->getOrder().len()); }
+
+ void ShowProperties( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& rxObject, sal_Bool bShow=sal_True );
+ sal_Bool IsPropBrwOpen() const;
+
+ void DetermineSelection(const SdrMarkList& rMarkList);
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm> DetermineCurForm(const SdrMarkList& rMarkList, sal_Bool&);
+ void SetSelection(const SdrMarkList& rMarkList);
+ void SetSelectionDelayed(FmFormView* pView);
+
+ void SaveMarkList(const FmFormView* pView);
+ void RestoreMarkList(FmFormView* pView);
+
+ void SetDesignMode(sal_Bool bDesign);
+
+ sal_Bool GetWizardUsing() const { return m_bUseWizards; }
+ void SetWizardUsing(sal_Bool bUseThem);
+
+ // Setzen des Filtermodus
+ sal_Bool isInFilterMode() const {return m_bFilterMode;}
+ void startFiltering();
+ void stopFiltering(sal_Bool bSave);
+ void clearFilter();
+
+ static PopupMenu* GetConversionMenu();
+ // ein Menue, das alle ControlConversion-Eintraege enthaelt
+ sal_Bool ConvertControlTo(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent>& xModel, sal_uInt16 nTargetObjectId);
+ // umwandeln eines Controls
+ static sal_Bool IsControlConversionSlot(sal_uInt16 nSlotId);
+ // ein gueltiger ControlConversionSlot
+ static sal_Bool IsConversionPossible(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& xContext, sal_Int16 nConversionSlot);
+ // Konvertierung der Komponente mit geg. Slot moeglich
+ static void CheckControlConversionSlots(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& xContext, Menu& rMenu);
+ // iteriertes IsConversionPossible
+ sal_Bool ExecuteControlConversionSlot(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent>& xContext, sal_uInt16 nSlotId);
+ // verkapptes ConvertControlTo
+
+private:
+ static sal_Bool SaveModified(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& xController,
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetUpdate>& xCursor,
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& xSet,
+ sal_Bool& rRecordInserted);
+
+
+ DECL_LINK(OnFoundData, FmFoundRecordInformation*);
+ DECL_LINK(OnCanceledNotFound, FmFoundRecordInformation*);
+ DECL_LINK(OnSearchContextRequest, FmSearchContext*);
+ DECL_LINK(OnTimeOut, void*);
+
+ class ObjectRemoveListener : public SfxListener
+ {
+ FmXFormShell* m_pParent;
+ public:
+ ObjectRemoveListener(FmXFormShell* pParent);
+ virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint);
+ };
+ ObjectRemoveListener* m_pCheckForRemoval;
+ friend class ObjectRemoveListener;
+
+ void LoopGrids(sal_Int16 nWhat);
+
+ // das Setzen des curObject/selObject/curForm erfolgt verzoegert (SetSelectionDelayed), mit den folgenden
+ // Funktionen laesst sich das abfragen/erzwingen
+ inline sal_Bool IsSelectionUpdatePending();
+ void ForceUpdateSelection(sal_Bool bLockInvalidation);
+
+ // Invalidierung von Slots
+ void InvalidateSlot(sal_Int16 nId, sal_Bool bWithItem = sal_True, sal_Bool bWithId = sal_False);
+ // Locking der Invalidierung - wenn der interne Locking-Counter auf 0 geht, werden alle aufgelaufenen Slots
+ // (asynchron) invalidiert
+ void LockSlotInvalidation(sal_Bool bLock);
+
+ DECL_LINK(OnInvalidateSlots, void*);
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm> getInternalForm(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm>& _xForm) const;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> getInternalForm(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xForm) const;
+ // if the form belongs to the controller (extern) displaying a grid, the according internal form will
+ // be displayed, _xForm else
+
+ void CloseExternalFormViewer();
+ // closes the task-local beamer displaying a grid view for a form
+
+ // ---------------------------------------------------
+ // asyncronous cursor actions/navigation slot handling
+
+ void ActivateDispatchers(const UniString& sNavFormAccess, sal_Bool bActivate);
+ // (de)activate all dispatchers belonging to the form with the given access path
+ DECL_LINK(OnExecuteNavSlot, FmFormNavigationDispatcher*);
+
+ UniString GetAccessPathFromForm(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xForm, const UniString& rAssumedPagePrefix = UniString()) const;
+ // return the access path of the given form (if rAssumedPagePrefix the current page's id is taken as page prefix)
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer> GetPageForms(const UniString sPageId) const;
+ // return the forms collection of the page with the given id
+ UniString GetPageId(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xForm) const;
+ // get the id of the page to which's forms collection _xForms belongs
+
+ sal_Bool PathsInterfere(const UniString& _rPathLeft, const UniString& _rPathRight) const;
+
+ void UpdateFormDispatcher(FmFormNavigationDispatcher* _pDisp);
+ void UpdateAllFormDispatchers(const UniString& _rPath);
+
+ void setControlLocks(); // lock all controls of the active controller
+ void restoreControlLocks(); // restore the lock state of all controls of the active controller
+
+ enum CURSOR_ACTION { CA_MOVE_TO_LAST, CA_MOVE_ABSOLUTE };
+ void DoAsyncCursorAction(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& _xController, CURSOR_ACTION _eWhat);
+ void DoAsyncCursorAction(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xForm, CURSOR_ACTION _eWhat);
+
+ sal_Bool HasAnyPendingCursorAction() const;
+ void CancelAnyPendingCursorAction();
+
+ sal_Bool HasPendingCursorAction(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController>& _xController) const;
+ sal_Bool HasPendingCursorAction(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xForm) const;
+ sal_Bool HasPendingCursorAction(const UniString& _rAccessPath) const;
+
+ DECL_LINK(OnCursorActionDone, FmCursorActionThread*);
+ DECL_LINK(OnCursorActionDoneMainThread, FmCursorActionThread*);
+};
+
+//------------------------------------------------------------------------------
+inline sal_Bool FmXFormShell::IsSelectionUpdatePending()
+{
+ return m_aMarkTimer.IsActive();
+}
+
+// ========================================================================
+// = ein Iterator, der ausgehend von einem Interface ein Objekt sucht, dessen
+// = ::com::sun::star::beans::Property-Set eine ControlSource- sowie eine BoundField-Eigenschaft hat,
+// = wobei letztere einen Wert ungleich NULL haben muss.
+// = Wenn das Interface selber diese Bedingung nicht erfuellt, wird getestet,
+// = ob es ein Container ist (also ueber eine ::com::sun::star::container::XIndexAccess verfuegt), dann
+// = wird dort abgestiegen und fuer jedes Element des Containers das selbe
+// = versucht (wiederum eventuell mit Abstieg).
+// = Wenn irgendein Objekt dabei die geforderte Eigenschaft hat, entfaellt
+// = der Teil mit dem Container-Test fuer dieses Objekt.
+// =
+
+class SearchableControlIterator : public ::utl::IndexAccessIterator
+{
+ ::rtl::OUString m_sCurrentValue;
+ // der aktuelle Wert der ControlSource-::com::sun::star::beans::Property
+
+public:
+ ::rtl::OUString getCurrentValue() const { return m_sCurrentValue; }
+
+public:
+ SearchableControlIterator(::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> xStartingPoint);
+
+ virtual sal_Bool ShouldHandleElement(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& rElement);
+ virtual sal_Bool ShouldStepInto(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& xContainer) const;
+ virtual void Invalidate() { IndexAccessIterator::Invalidate(); m_sCurrentValue = ::rtl::OUString(); }
+};
+
+// ========================================================================
+SV_DECL_PTRARR_DEL(StatusForwarderArray, SfxStatusForwarder*, 16, 0)
+class ControlConversionMenuController : public SfxMenuControl
+{
+protected:
+ StatusForwarderArray m_aStatusForwarders;
+ Menu* m_pMainMenu;
+ PopupMenu* m_pConversionMenu;
+
+public:
+ ControlConversionMenuController(sal_uInt16 nId, Menu& rMenu, SfxBindings& rBindings);
+ virtual ~ControlConversionMenuController();
+ SFX_DECL_MENU_CONTROL();
+
+ virtual void StateChanged(sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState);
+};
+
+//==================================================================
+// FmCursorActionThread
+//==================================================================
+
+class FmCursorActionThread : public ::vos::OThread
+{
+ Link m_aTerminationHandler; // the handler to be called upon termination
+ ::com::sun::star::sdbc::SQLException m_aRunException; // the database exception thrown by RunImpl
+ ::osl::Mutex m_aAccessSafety; // for securing the multi-thread access
+ ::osl::Mutex m_aFinalExitControl; // see StopItWait
+
+protected:
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> m_xDataSource; // the cursor which we work with
+ UniString m_sAccessPath;
+
+private:
+
+ UniString m_sStopperCaption; // the caption for the ThreadStopper
+ sal_Bool m_bCanceled:1; // StopIt has been called ?
+ sal_Bool m_bDeleteMyself:1; // delete the thread upon termination (defaults to sal_False) ?
+ sal_Bool m_bDisposeCursor:1; // dispose the cursor upon termination (defaults to sal_False) ?
+ sal_Bool m_bTerminated:1; // onTerminated already called ?
+ sal_Bool m_bRunFailed:1; // a database execption occured in RunImpl ?
+
+ // a ThreadStopper will be instantiated so that the open can be canceled via the UI
+ class ThreadStopper : protected SfxCancellable
+ {
+ FmCursorActionThread* m_pOwner;
+
+ virtual ~ThreadStopper() { }
+
+ public:
+ ThreadStopper(FmCursorActionThread* pOwner, const UniString& rTitle);
+
+ virtual void Cancel();
+
+ virtual void OwnerTerminated();
+ // Normally the Owner (a FmCursorActionThread) would delete the stopper when terminated.
+ // Unfortunally the application doesn't remove the 'red light' when a SfxCancellable is deleted
+ // if it (the app) can't acquire the solar mutex. The deletion is IGNORED then. So we have make
+ // sure that a) the stopper is deleted from inside the main thread (where the solar mutex is locked)
+ // and b) that in the time between the termination of the thread and the deletion of the stopper
+ // the latter doesn't access the former.
+ // The OwnerTerminated cares for both aspects.
+ // SO DON'T DELETE THE STOPPER EXPLICITLY !
+
+ protected:
+ // HACK HACK HACK HACK HACK : this should be private, but MSVC doesn't accept the LINK-macro then ....
+ DECL_LINK(OnDeleteInMainThread, ThreadStopper*);
+ };
+ friend class FmCursorActionThread::ThreadStopper;
+
+
+public:
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> getDataSource() const { return m_xDataSource; }
+ UniString getAccessPath() const { return m_sAccessPath; }
+
+private:
+ sal_Bool Terminated() { ::osl::MutexGuard aGuard(m_aAccessSafety); return m_bTerminated; }
+
+public:
+ FmCursorActionThread(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDataSource, const UniString& _rStopperCaption, const UniString& _rPath);
+ virtual ~FmCursorActionThread() {}
+
+ // control of self-deletion
+ sal_Bool IsSelfDeleteEnabled() { ::osl::MutexGuard aGuard(m_aAccessSafety); return m_bDeleteMyself; }
+ void EnableSelfDelete(sal_Bool bEnable) { ::osl::MutexGuard aGuard(m_aAccessSafety); m_bDeleteMyself = bEnable; }
+
+ // control of cursor-dipose
+ sal_Bool IsCursorDisposeEnabled() { ::osl::MutexGuard aGuard(m_aAccessSafety); return m_bDisposeCursor; }
+ void EnableCursorDispose(sal_Bool bEnable) { ::osl::MutexGuard aGuard(m_aAccessSafety); m_bDisposeCursor = bEnable; }
+
+ // error-access
+ sal_Bool RunFailed() { ::osl::MutexGuard aGuard(m_aAccessSafety); return m_bRunFailed; }
+ ::com::sun::star::sdbc::SQLException GetRunException() { ::osl::MutexGuard aGuard(m_aAccessSafety); return m_aRunException; }
+
+ /// the excution (within the method "run") was canceled ?
+ sal_Bool WasCanceled(sal_Bool bEnable) { ::osl::MutexGuard aGuard(m_aAccessSafety); return m_bCanceled; }
+
+ /// the handler will be called synchronously (the parameter is a pointer to the thread)
+ void SetTerminationHdl(const Link& aTermHdl) { ::osl::MutexGuard aGuard(m_aAccessSafety); m_aTerminationHandler = aTermHdl; }
+
+ /// cancels the process. returns to the caller immediately. to be called from another thread (of course ;)
+ void StopIt();
+
+ /// cancels the process. does not return to the caller until the thread is terminated.
+ void StopItWait();
+
+protected:
+ virtual void SAL_CALL run();
+ virtual void SAL_CALL onTerminated();
+
+ /// called from within run. run itself handles (de)initialisation of the cancel handling.
+ virtual void RunImpl() = 0;
+};
+
+//------------------------------------------------------------------------------
+
+#define DECL_CURSOR_ACTION_THREAD(classname) \
+ \
+class classname : public FmCursorActionThread \
+{ \
+public: \
+ classname(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDataSource, \
+ const UniString& _rPath); \
+protected: \
+ virtual void RunImpl(); \
+}; \
+
+
+//------------------------------------------------------------------------------
+
+#define IMPL_CURSOR_ACTION_THREAD(classname, caption, action) \
+ \
+classname::classname(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDataSource, \
+ const UniString& _rPath) \
+ :FmCursorActionThread(_xDataSource, caption, _rPath) \
+{ \
+} \
+ \
+void classname::RunImpl() \
+{ \
+ m_xDataSource->action; \
+} \
+
+
+
+#endif // _SVX_FMSHIMP_HXX
diff --git a/svx/source/inc/fmsrccfg.hxx b/svx/source/inc/fmsrccfg.hxx
new file mode 100644
index 000000000000..4e4951e842e7
--- /dev/null
+++ b/svx/source/inc/fmsrccfg.hxx
@@ -0,0 +1,167 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmsrccfg.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _FMSRCCF_HXX_
+#define _FMSRCCF_HXX_
+
+#ifndef _STRING_HXX //autogen
+#include <tools/string.hxx>
+#endif
+
+#ifndef _SFXCFGITEM_HXX //autogen
+#include <sfx2/cfgitem.hxx>
+#endif
+
+// ===================================================================================================
+
+#define MATCHING_ANYWHERE 0
+#define MATCHING_BEGINNING 1
+#define MATCHING_END 2
+#define MATCHING_WHOLETEXT 3
+
+// diese Konstanten duerfen NICHT einfach geaendert werden, da der SearchDialog aus den Einstellungen seiner ListBox
+// keine Umrechnungen vornimmt, sondern die einfach in die entsprechenden Methoden der SearchEngine steckt
+// (wenn man also die Konstanten oder die Reihenfolge der Listbox-Eintraege im Dialog aendert, muss das jeweils andere
+// angepasst werden)
+
+
+// ===================================================================================================
+// = struct FmSearchParams - Parameter einer Suche
+// ===================================================================================================
+
+struct FmSearchParams
+{
+public:
+ String strHistory;
+ // der Dialog haelt maximal MAX_HISTORY_ENTRIES Eintraege
+ String strSingleSearchField;
+ INT16 nSearchForType : 2;
+ UINT16 nPosition : 2;
+ INT16 nLevOther;
+ INT16 nLevShorter;
+ INT16 nLevLonger;
+
+ BOOL bAllFields : 1;
+ BOOL bUseFormatter : 1;
+ BOOL bCaseSensitive : 1;
+ BOOL bBackwards : 1;
+ BOOL bWildcard : 1;
+ BOOL bRegular : 1;
+ BOOL bApproxSearch : 1;
+ // die letzten 3 schliessen sich gegenseitig aus !
+ // fuer Levenshtein-Suche :
+ BOOL bLevRelaxed : 1;
+
+public:
+ // Vergleich nur unter Beachtung der persistenten Eigenschaften !
+ BOOL operator ==(const FmSearchParams& rComp) const;
+ BOOL operator !=(const FmSearchParams& rComp) const { return !(*this == rComp); }
+};
+
+// ===================================================================================================
+// = class FmSearchConfigItem - ein ConfigItem, dass sich Suchparameter merkt
+// ===================================================================================================
+
+class FmSearchConfigItem : public SfxConfigItem
+{
+ friend class FmSearchConfigAdmin;
+
+private:
+ FmSearchParams m_aParams;
+
+private:
+ FmSearchConfigItem();
+
+public:
+ virtual int Load(SvStream&);
+ virtual BOOL Store(SvStream&);
+ virtual void UseDefault();
+
+protected:
+ INT32 CalcCheckSum(const FmSearchParams&, short);
+};
+
+// ===================================================================================================
+// = class FmSearchConfigAdmin - verwaltet den Zugriff auf das einzige FmSearchConfigItem, das es gibt
+// ===================================================================================================
+
+class FmSearchConfigAdmin
+{
+private:
+ static FmSearchConfigItem* s_pItem;
+ static INT32 s_nUsageCounter;
+
+public:
+ FmSearchConfigAdmin();
+ ~FmSearchConfigAdmin();
+
+public:
+ FmSearchParams GetParams() const { return GetItem()->m_aParams; }
+ void PutParams(const FmSearchParams& rParams);
+
+protected:
+ FmSearchConfigItem* GetItem() const;
+};
+
+// ===================================================================================================
+
+#endif // _FMSRCCF_HXX_
+
diff --git a/svx/source/inc/fmsrcimp.hxx b/svx/source/inc/fmsrcimp.hxx
new file mode 100644
index 000000000000..cc9330f8b860
--- /dev/null
+++ b/svx/source/inc/fmsrcimp.hxx
@@ -0,0 +1,423 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmsrcimp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _FMSRCIMP_HXX
+#define _FMSRCIMP_HXX
+
+#ifndef _SVX_FMTOOLS_HXX
+#include "fmtools.hxx"
+#endif // _SVX_FMTOOLS_HXX
+
+#ifndef _VOS_THREAD_HXX_ //autogen
+#include <vos/thread.hxx>
+#endif
+
+#ifndef _OSL_MUTEX_HXX_ //autogen
+#include <osl/mutex.hxx>
+#endif
+
+#ifndef _FMSEARCH_HXX
+#include "fmsearch.hxx"
+#endif // _FMSEARCH_HXX
+
+#ifndef _COM_SUN_STAR_AWT_XTEXTCOMPONENT_HPP_
+#include <com/sun/star/awt/XTextComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCHECKBOX_HPP_
+#include <com/sun/star/awt/XCheckBox.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XLISTBOX_HPP_
+#include <com/sun/star/awt/XListBox.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATSSUPPLIER_HPP_
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATTER_HPP_
+#include <com/sun/star/util/XNumberFormatter.hpp>
+#endif
+
+#include <unotools/stl_types.hxx>
+#include <cppuhelper/implbase1.hxx>
+
+// ===================================================================================================
+// Hilfsstrukturen
+
+SV_DECL_OBJARR(SvInt32Array, sal_Int32, 16, 16);
+
+// ===================================================================================================
+// = class FmSearchThread - wie der Name schon sagt
+// ===================================================================================================
+
+class FmSearchThread : public ::vos::OThread
+{
+ FmSearchEngine* m_pEngine;
+ Link m_aTerminationHdl;
+
+ virtual void SAL_CALL run();
+ virtual void SAL_CALL onTerminated();
+
+public:
+ FmSearchThread(FmSearchEngine* pEngine) : m_pEngine(pEngine) { }
+ void setTerminationHandler(Link aHdl) { m_aTerminationHdl = aHdl; }
+};
+
+// ===================================================================================================
+// = struct FmSearchProgress - diese Struktur bekommt der Owner der SearchEngine fuer Status-Updates
+// = (und am Ende der Suche)
+// ===================================================================================================
+
+struct FmSearchProgress
+{
+ enum STATE { STATE_PROGRESS, STATE_PROGRESS_COUNTING, STATE_CANCELED, STATE_SUCCESSFULL, STATE_NOTHINGFOUND, STATE_ERROR };
+ // (Bewegung auf neuen Datensatz; Fortschritt beim Zaehlen von Datensaetzen; abgebrochen; Datensatz gefunden;
+ // nichts gefunden, irgendein nicht zu handelnder Fehler)
+ STATE aSearchState;
+
+ // aktueller Datensatz - immer gueltig (ist zum Beispiel bei Abbrechen auch fuer das Weitersuchen interesant)
+ sal_uInt32 nCurrentRecord;
+ // Ueberlauf - nur gueltig bei STATE_PROGRESS
+ sal_Bool bOverflow;
+
+ // die Position des Such-Cursors - bei STATE_SUCCESSFULL, STATE_CANCELED und STATE_NOTHING_FOUND gueltig
+ ::com::sun::star::uno::Any aBookmark;
+ // das Feld, in dem der Text gefunden wurde - bei STATE_SUCCESSFULL gueltig
+ sal_Int32 nFieldIndex;
+};
+
+// ===================================================================================================
+// = class FmRecordCountListener - Hilfsklasse fuer FmSearchEngine, lauscht an einem Cursor und teilt
+// = Aenderungem im RecordCount mit
+// ===================================================================================================
+
+class FmRecordCountListener : public ::cppu::WeakImplHelper1< ::com::sun::star::beans::XPropertyChangeListener>
+{
+// Atribute
+ Link m_lnkWhoWantsToKnow;
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xListening;
+
+// Attribut-Zugriff
+public:
+ Link SetPropChangeHandler(const Link& lnk);
+
+// Oprationen
+public:
+ FmRecordCountListener(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >& dbcCursor);
+ // the set has to support the sdb::ResultSet service
+ virtual ~FmRecordCountListener();
+
+ // DECLARE_UNO3_AGG_DEFAULTS(FmPropertyListener, UsrObject);
+ // virtual sal_Bool queryInterface(::com::sun::star::uno::Uik aUik, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rOut);
+
+// ::com::sun::star::lang::XEventListener
+ virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw(::com::sun::star::uno::RuntimeException);
+
+// ::com::sun::star::beans::XPropertyChangeListener
+ virtual void SAL_CALL propertyChange(const ::com::sun::star::beans::PropertyChangeEvent& evt);
+
+ void DisConnect();
+
+private:
+ void NotifyCurrentCount();
+
+};
+
+// ===================================================================================================
+// = class FmSearchEngine - Impl-Klasse fuer FmSearchDialog
+// ===================================================================================================
+
+class FmSearchEngine
+{
+ friend class FmSearchThread;
+
+ enum SEARCH_RESULT { SR_FOUND, SR_NOTFOUND, SR_ERROR, SR_CANCELED };
+ enum SEARCHFOR_TYPE { SEARCHFOR_STRING, SEARCHFOR_NULL, SEARCHFOR_NOTNULL };
+
+ // zugrundeliegende Daten
+ CursorWrapper m_xSearchCursor;
+ SvInt32Array m_arrFieldMapping;
+ // da der Iterator durchaus mehr Spalten haben kann, als ich eigentlich verwalte (in meiner Feld-Listbox),
+ // muss ich mir hier ein Mapping dieser ::com::sun::star::form-Schluessel auf die Indizies der entsprechenden Spalten im Iterator halten
+
+ // der Formatter
+ ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > m_xFormatSupplier;
+ ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter > m_xFormatter;
+
+ // die Sammlung aller interesanten Felder (bzw. ihre ::com::sun::star::data::XDatabaseVariant-Interfaces und ihre FormatKeys)
+ struct FieldInfo
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn > xContents;
+ sal_uInt32 nFormatKey;
+ sal_Bool bDoubleHandling;
+ };
+
+ DECLARE_STL_VECTOR(FieldInfo, FieldCollection);
+ FieldCollection m_arrUsedFields;
+ sal_Int32 m_nCurrentFieldIndex; // der letzte Parameter von RebuildUsedFields, ermoeglicht mir Checks in FormatField
+
+ // We have three possible control types we may search in, determined by the supported interfaces : ::com::sun::star::awt::XTextComponent, ::com::sun::star::awt::XListBox, ::com::sun::star::awt::XCheckBox.
+ // While searching we don't want to do this distinction for every control in every round. So we need some helpers.
+ class ControlTextWrapper
+ {
+ // attributes
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_xControl;
+ // attribute access
+ public:
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getControl() const{ return m_xControl; }
+ public:
+ ControlTextWrapper(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xControl) { m_xControl = _xControl; }
+ virtual ~ControlTextWrapper() { }
+
+ virtual ::rtl::OUString getCurrentText() const = 0;
+ };
+ class SimpleTextWrapper : public ControlTextWrapper
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextComponent > m_xText;
+ public:
+ SimpleTextWrapper(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextComponent >& _xText);
+ virtual ::rtl::OUString getCurrentText() const;
+ };
+ class ListBoxWrapper : public ControlTextWrapper
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XListBox > m_xBox;
+ public:
+ ListBoxWrapper(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XListBox >& _xBox);
+ virtual ::rtl::OUString getCurrentText() const;
+ };
+ class CheckBoxWrapper : public ControlTextWrapper
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XCheckBox > m_xBox;
+ public:
+ CheckBoxWrapper(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XCheckBox >& _xBox);
+ virtual ::rtl::OUString getCurrentText() const;
+ };
+ DECLARE_STL_VECTOR(ControlTextWrapper*, ControlTextSuppliers);
+ ControlTextSuppliers m_aControlTexts;
+
+ sal_Bool m_bUsingTextComponents;
+ CursorWrapper m_xOriginalIterator;
+ CursorWrapper m_xClonedIterator;
+
+ // Daten fuer Entscheidung, in welchem Feld ich ein "Found" akzeptiere
+ ::com::sun::star::uno::Any m_aPreviousLocBookmark; // Position, an der ich zuletzt fuendig war
+ FieldCollectionIterator m_iterPreviousLocField; // dito Feld
+ // Kommunikation mit dem Thread, der die eigentliche Suche durchfuehrt
+ ::rtl::OUString m_strSearchExpression; // Hinrichtung
+ SEARCHFOR_TYPE m_eSearchForType; // dito
+ SEARCH_RESULT m_srResult; // Rueckrichtung
+
+ // der Link, dem ich Fortschritte und Ergebnisse mitteile
+ Link m_aProgressHandler;
+ sal_Bool m_bSearchingCurrently; // laeuft gerade eine (asynchrone) Suche ?
+ sal_Bool m_bCancelAsynchRequest : 1; // soll abgebrochen werden ?
+ ::osl::Mutex m_aCancelAsynchAccess; // Zugriff auf m_bCancelAsynchRequest (eigentlich nur bei
+ // m_eMode == SM_USETHREAD interesant)
+ FmSearchDialog::SEARCH_MODE m_eMode; // der aktuelle Modus
+
+ // Parameter fuer die Suche
+ sal_Bool m_bCase : 1; // case-sensitive
+ sal_Bool m_bFormatter : 1; // Feldformatierung benutzen
+ sal_Bool m_bForward : 1; // Richtung
+ sal_Bool m_bWildcard : 1; // Platzhalter-Suche ?
+ sal_Bool m_bRegular : 1; // regulaerer Ausdruck
+ sal_Bool m_bLevenshtein : 1; // Levenshtein-Suche
+
+ sal_Bool m_bLevRelaxed : 1; // Parameter fuer Levenshtein-Suche
+ sal_uInt16 m_nLevOther;
+ sal_uInt16 m_nLevShorter;
+ sal_uInt16 m_nLevLonger;
+
+ sal_uInt16 m_nPosition; // wenn nicht regulaer oder lev, dann einer der MATCHING_...-Werte
+
+// -------------
+// Memberzugriff
+private:
+ sal_Bool CancelRequested(); // liefert eine durch m_aCancelAsynchAccess gesicherte Auswertung von m_bCancelAsynchRequest
+
+public:
+ void SetCaseSensitive(sal_Bool bSet) { m_bCase = bSet; }
+ sal_Bool GetCaseSensitive() const { return m_bCase; }
+
+ void SetFormatterUsing(sal_Bool bSet); // das ist etwas umfangreicher, deshalb kein hier inline ....
+ sal_Bool GetFormatterUsing() const { return m_bFormatter; }
+
+ void SetDirection(sal_Bool bForward) { m_bForward = bForward; }
+ sal_Bool GetDirection() const { return m_bForward; }
+
+ void SetWildcard(sal_Bool bSet) { m_bWildcard = bSet; }
+ sal_Bool GetWildcard() const { return m_bWildcard; }
+
+ void SetRegular(sal_Bool bSet) { m_bRegular = bSet; }
+ sal_Bool GetRegular() const { return m_bRegular; }
+
+ void SetLevenshtein(sal_Bool bSet) { m_bLevenshtein = bSet; }
+ sal_Bool GetLevenshtein() const { return m_bLevenshtein; }
+
+ void SetLevRelaxed(sal_Bool bSet) { m_bLevRelaxed = bSet; }
+ sal_Bool GetLevRelaxed() const { return m_bLevRelaxed; }
+ void SetLevOther(sal_uInt16 nHowMuch) { m_nLevOther = nHowMuch; }
+ sal_uInt16 GetLevOther() const { return m_nLevOther; }
+ void SetLevShorter(sal_uInt16 nHowMuch) { m_nLevShorter = nHowMuch; }
+ sal_uInt16 GetLevShorter() const { return m_nLevShorter; }
+ void SetLevLonger(sal_uInt16 nHowMuch) { m_nLevLonger = nHowMuch; }
+ sal_uInt16 GetLevLonger() const { return m_nLevLonger; }
+ // die ganzen Lev-Werte werden nur bei m_bLevenshtein==sal_True beachtet
+
+ void SetPosition(sal_uInt16 nValue) { m_nPosition = nValue; }
+ sal_uInt16 GetPosition() const { return m_nPosition; }
+ // Position wird bei m_bWildCard==sal_True nicht beachtet
+
+ sal_Bool GetSearchMode() const { return m_eMode; }
+
+public:
+ /** zwei Constructoren, beide analog zu denen des FmSearchDialog, Erklaerung siehe also dort ....
+ xCursor muss jeweils den ::com::sun::star::data::DatabaseCursor-Service implementieren.
+ wenn eMode == SM_USETHREAD, sollte ein ProgressHandler gesetzt sein, da dann die Ergebnisuebermittlung ueber diesen
+ Handler erfolgt.
+ Ist eMode != SM_USETHREAD, kehren SearchNext und StarOver nicht zurueck, bevor die Suche (erfolgreich oder nicht) beendet
+ wurde, dann kann man das Ergebnis danach abfragen. Ist zusaetzlich der ProgressHandler gesetzt, wird dieser fuer jeden neuen
+ Datensatz sowie am Ende der Suche aufgerufen.
+ */
+ FmSearchEngine(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >& xCursor, const ::rtl::OUString& strVisibleFields, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >& xFormat,
+ FmSearchDialog::SEARCH_MODE eMode);
+ FmSearchEngine(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >& xCursor, const ::rtl::OUString& strVisibleFields, const InterfaceArray& arrFields,
+ FmSearchDialog::SEARCH_MODE eMode);
+
+ virtual ~FmSearchEngine();
+
+ /** der Link wird fuer jeden Datensatz und nach Beendigung der Suche aufgerufen, Parameter ist ein Zeiger auf
+ eine FmSearchProgress-Struktur
+ der Handler sollte auf jeden Fall Thread-sicher sein
+ */
+ void SetProgressHandler(Link aHdl) { m_aProgressHandler = aHdl; }
+
+ /// das naechste Vorkommen suchen (Werte fuer nDirection siehe DIRECTION_*-defines)
+ void SearchNext(const ::rtl::OUString& strExpression);
+ /// analogous, search for "NULL" (_bSearchForNull==sal_True) or "not NULL"
+ void SearchNextSpecial(sal_Bool _bSearchForNull);
+ /// das naechste Vorkommen suchen, abhaengig von nDirection wird dabei am Anfang oder am Ende neu begonnen
+ void StartOver(const ::rtl::OUString& strExpression);
+ /// analogous, search for "NULL" (_bSearchForNull==sal_True) or "not NULL"
+ void StartOverSpecial(sal_Bool _bSearchForNull);
+ /// die Angaben ueber letzte Fundstelle invalidieren
+ void InvalidatePreviousLoc();
+
+ /** baut m_arrUsedFields neu auf (nFieldIndex==-1 bedeutet alle Felder, ansonsten gibt es den Feldindex an)
+ wenn bForce nicht gesetzt ist, passiert bei nFieldIndex == m_nCurrentFieldIndex nichts
+ (ruft InvalidatePreviousLoc auf)
+ */
+ void RebuildUsedFields(sal_Int32 nFieldIndex, sal_Bool bForce = sal_False);
+ ::rtl::OUString FormatField(sal_Int32 nWhich);
+
+ /// kehrt sofort zurueck; nachdem wirklich abgebrochen wurde, wird der ProgressHandler mit STATE_CANCELED aufgerufen
+ void CancelSearch();
+
+ /** nur gueltig, wenn nicht gerade eine (asynchrone) Suche laeuft, die naechste Suche wird dann auf dem neuen Iterator
+ mit den neuen Parametern durchgefuehrt
+ */
+ sal_Bool SwitchToContext(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >& xCursor, const ::rtl::OUString& strVisibleFields, const InterfaceArray& arrFields,
+ sal_Int32 nFieldIndex);
+
+protected:
+ void Init(const ::rtl::OUString& strVisibleFields);
+
+ void SearchNextImpl();
+ // diese Impl-Methode laeuft im SearchThread
+
+ // start a thread-search (or call SearchNextImpl directly, depending on the search mode)
+ void ImplStartNextSearch();
+
+private:
+ void clearControlTexts();
+ void fillControlTexts(const InterfaceArray& arrFields);
+
+ // three methods implementing a complete search loop (null/not null, wildcard, SearchText)
+ // (they all have some code in common, but with this solution we have do do a distinction only once per search (before
+ // starting the loop), not in every loop step
+ SEARCH_RESULT SearchSpecial(sal_Bool _bSearchForNull, sal_Int32& nFieldPos, FieldCollectionIterator& iterFieldLoop,
+ const FieldCollectionIterator& iterBegin, const FieldCollectionIterator& iterEnd);
+ SEARCH_RESULT SearchWildcard(const ::rtl::OUString& strExpression, sal_Int32& nFieldPos, FieldCollectionIterator& iterFieldLoop,
+ const FieldCollectionIterator& iterBegin, const FieldCollectionIterator& iterEnd);
+ SEARCH_RESULT SearchRegularApprox(const ::rtl::OUString& strExpression, sal_Int32& nFieldPos, FieldCollectionIterator& iterFieldLoop,
+ const FieldCollectionIterator& iterBegin, const FieldCollectionIterator& iterEnd);
+
+ void PropagateProgress(sal_Bool _bDontPropagateOverflow);
+ // ruft den ProgressHandler mit STATE_PROGRESS und der aktuellen Position des SearchIterators auf
+
+ // helpers, die ich mehrmals brauche
+ sal_Bool MoveCursor();
+ // bewegt m_xSearchIterator unter Beachtung von Richtung/Ueberlauf Cursor
+ sal_Bool MoveField(sal_Int32& nPos, FieldCollectionIterator& iter, const FieldCollectionIterator& iterBegin, const FieldCollectionIterator& iterEnd);
+ // bewegt den Iterator unter Beachtung von Richtung/Ueberlauf Iterator/Ueberlauf Cursor
+ void BuildAndInsertFieldInfo(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& xAllFields, sal_Int32 nField);
+ // baut eine FieldInfo zum Feld Nummer nField (in xAllFields) auf und fuegt sie zu m_arrUsedFields hinzu
+ // xAllFields muss den DatabaseRecord-Service unterstuetzen
+ ::rtl::OUString FormatField(const FieldInfo& rField);
+ // formatiert das Feld mit dem NumberFormatter
+
+ sal_Bool HasPreviousLoc() { return m_aPreviousLocBookmark.getValue() != NULL; }
+
+ DECL_LINK(OnSearchTerminated, FmSearchThread*);
+ // wird vom SuchThread benutzt, nach Rueckkehr aus diesem Handler loescht sich der Thread selber
+ DECL_LINK(OnNewRecordCount, void*);
+};
+
+#endif // _FMSRCIMP_HXX
+
diff --git a/svx/source/inc/fmstatic.hxx b/svx/source/inc/fmstatic.hxx
new file mode 100644
index 000000000000..b62964076b9f
--- /dev/null
+++ b/svx/source/inc/fmstatic.hxx
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmstatic.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _FM_STATIC_HXX_
+#define _FM_STATIC_HXX_
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+struct UStringDescription
+{
+ const sal_Char* pZeroTerminatedName;
+
+ UStringDescription(sal_Char* _pName) { pZeroTerminatedName = _pName; }
+ operator ::rtl::OUString() const { return ::rtl::OUString::createFromAscii(pZeroTerminatedName); }
+ operator UniString() const { return UniString::CreateFromAscii(pZeroTerminatedName); }
+private:
+ UStringDescription();
+};
+
+#define DECLARE_CONSTASCII_USTRING(name) \
+ extern UStringDescription name
+
+#define IMPLEMENT_CONSTASCII_USTRING(name, asciivalue) \
+ UStringDescription name(asciivalue)
+
+//#define DECLARE_CONSTASCII_USTRING(name) extern ::rtl::OUString name;
+//#define IMPLEMENT_CONSTASCII_USTRING(name, asciivalue) ::rtl::OUString name = ::rtl::OUString::createFromAscii(asciivalue)
+
+
+#endif _FM_STATIC_HXX_
+
diff --git a/svx/source/inc/fmtools.hxx b/svx/source/inc/fmtools.hxx
new file mode 100644
index 000000000000..ac501560ed4b
--- /dev/null
+++ b/svx/source/inc/fmtools.hxx
@@ -0,0 +1,959 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmtools.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMTOOLS_HXX
+#define _SVX_FMTOOLS_HXX
+
+#ifndef _COM_SUN_STAR_SDB_SQLCONTEXT_HPP_
+#include <com/sun/star/sdb/SQLContext.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XSQLQUERYCOMPOSERFACTORY_HPP_
+#include <com/sun/star/sdb/XSQLQueryComposerFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_PRIVILEGE_HPP_
+#include <com/sun/star/sdbcx/Privilege.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XCOLUMNSSUPPLIER_HPP_
+#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XDATADESCRIPTORFACTORY_HPP_
+#include <com/sun/star/sdbcx/XDataDescriptorFactory.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XROWSET_HPP_
+#include <com/sun/star/sdbc/XRowSet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XDATABASEMETADATA_HPP_
+#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XCOLUMN_HPP_
+#include <com/sun/star/sdb/XColumn.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDB_XCOLUMNUPDATE_HPP_
+#include <com/sun/star/sdb/XColumnUpdate.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_SQLERROREVENT_HPP_
+#include <com/sun/star/sdb/SQLErrorEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XCONNECTION_HPP_
+#include <com/sun/star/sdbc/XConnection.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XRESULTSET_HPP_
+#include <com/sun/star/sdbc/XResultSet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_XRESULTSETUPDATE_HPP_
+#include <com/sun/star/sdbc/XResultSetUpdate.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_XROWLOCATE_HPP_
+#include <com/sun/star/sdbcx/XRowLocate.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XDISPATCHPROVIDERINTERCEPTION_HPP_
+#include <com/sun/star/frame/XDispatchProviderInterception.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XDISPATCHPROVIDERINTERCEPTOR_HPP_
+#include <com/sun/star/frame/XDispatchProviderInterceptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXCONTAINER_HPP_
+#include <com/sun/star/container/XIndexContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XDISPATCH_HPP_
+#include <com/sun/star/frame/XDispatch.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XSTATUSLISTENER_HPP_
+#include <com/sun/star/frame/XStatusListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_FEATURESTATEEVENT_HPP_
+#include <com/sun/star/frame/FeatureStateEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FRAME_XMODEL_HPP_
+#include <com/sun/star/frame/XModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCRIPT_SCRIPTEVENTDESCRIPTOR_HPP_
+#include <com/sun/star/script/ScriptEventDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATION_HPP_
+#include <com/sun/star/container/XEnumeration.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXACCESS_HPP_
+#include <com/sun/star/container/XIndexAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCONTROLMODEL_HPP_
+#include <com/sun/star/awt/XControlModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCONTROL_HPP_
+#include <com/sun/star/awt/XControl.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_FONTSLANT_HPP_
+#include <com/sun/star/awt/FontSlant.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_FONTDESCRIPTOR_HPP_
+#include <com/sun/star/awt/FontDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_FONTUNDERLINE_HPP_
+#include <com/sun/star/awt/FontUnderline.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_FONTSTRIKEOUT_HPP_
+#include <com/sun/star/awt/FontStrikeout.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATSSUPPLIER_HPP_
+#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#endif
+#ifndef _SV_WINTYPES_HXX //autogen
+#include <vcl/wintypes.hxx>
+#endif
+
+#ifndef _VOS_MUTEX_HXX_ //autogen
+#include <vos/mutex.hxx>
+#endif
+
+#ifndef _SVSTDARR_ULONGS
+#define _SVSTDARR_ULONGS
+#include <svtools/svstdarr.hxx>
+#endif
+
+#ifndef _SFXCTRLITEM_HXX //autogen wg. SfxControllerItem
+#include <sfx2/ctrlitem.hxx>
+#endif
+
+// #ifndef _USR_ITERHLP_HXX //autogen wg. OInterfaceContainerHelper
+// #include <usr/iterhlp.hxx>
+// #endif
+
+#ifndef _LINK_HXX
+#include <tools/link.hxx>
+#endif
+
+#ifndef _DATE_HXX
+#include <tools/date.hxx>
+#endif
+#ifndef _TOOLS_TIME_HXX
+#include <tools/time.hxx>
+#endif
+#ifndef _DATETIME_HXX
+#include <tools/datetime.hxx>
+#endif
+
+#ifndef _SVX_FMPROP_HRC
+#include "fmprop.hrc"
+#endif
+#ifndef _COM_SUN_STAR_IO_XOBJECTINPUTSTREAM_HPP_
+#include <com/sun/star/io/XObjectInputStream.hpp>
+#endif
+#ifndef _COM_SUN_STAR_IO_XOBJECTOUTPUTSTREAM_HPP_
+#include <com/sun/star/io/XObjectOutputStream.hpp>
+#endif
+#ifndef _COM_SUN_STAR_IO_XPERSISTOBJECT_HPP_
+#include <com/sun/star/io/XPersistObject.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATTER_HPP_
+#include <com/sun/star/util/XNumberFormatter.hpp>
+#endif
+#ifndef _COM_SUN_STAR_UTIL_XNUMBERFORMATS_HPP_
+#include <com/sun/star/util/XNumberFormats.hpp>
+#endif
+#ifndef _CPPUHELPER_INTERFACECONTAINER_H_
+#include <cppuhelper/interfacecontainer.h>
+#endif
+#ifndef _UTL_UNO3_HXX_
+#include <unotools/uno3.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE1_HXX_
+#include <cppuhelper/implbase1.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx>
+#endif
+#ifndef _CPPUHELPER_COMPONENT_HXX_
+#include <cppuhelper/component.hxx>
+#endif
+
+#ifndef _FM_IMPLEMENTATION_IDS_HXX_
+#include "fmimplids.hxx"
+#endif
+
+#ifndef _FM_STATIC_HXX_
+#include "fmstatic.hxx"
+#endif
+
+
+class SdbSqlParser;
+
+// one SQLParser for the form layer
+SdbSqlParser& getSQLParser();
+
+//==================================================================
+// allgemeine Typen
+//==================================================================
+// displaying a database exception for the user
+// display info about a simple ::com::sun::star::sdbc::SQLException
+void displayException(const ::com::sun::star::sdbc::SQLException&, WinBits nStyle = WB_OK | WB_DEF_OK);
+// display info about chained SQLExceptions
+void displayException(const ::com::sun::star::sdb::SQLErrorEvent&, WinBits nStyle = WB_OK | WB_DEF_OK);
+
+
+// StringConversion
+#define U(x) \
+ ::rtl::OStringToOUString( x, RTL_TEXTENCODING_ASCII_US )
+#define S(aUniCode) \
+ ::rtl::OUStringToOString(aUniCode, RTL_TEXTENCODING_ASCII_US)
+
+// modes for the XModeSelector
+DECLARE_CONSTASCII_USTRING(DATA_MODE);
+DECLARE_CONSTASCII_USTRING(FILTER_MODE);
+
+
+// Kopieren von Persistenten Objecten
+::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> clone(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XPersistObject>& _xObj);
+::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> cloneUsingProperties(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XPersistObject>& _xObj);
+void CloneForms(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer>& _xSource, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer>& _xDest);
+
+// Suchen eines Wertes in einer StringListe
+// Fehler 0xFFFFFFFF (LIST_ENTRY_NOTFOUND)
+//------------------------------------------------------------------------------
+sal_uInt32 findValue(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any>& rList, const ::com::sun::star::uno::Any& rValue);
+
+::com::sun::star::uno::Sequence<sal_Int16> findValueINT16(const ::com::sun::star::uno::Sequence< ::rtl::OUString>& rList, const ::rtl::OUString& rValue, sal_Bool bOnlyFirst=sal_False );
+::com::sun::star::uno::Sequence<sal_Int16> findValue(const ::com::sun::star::uno::Sequence< ::rtl::OUString>& rList, const ::rtl::OUString& rValue, sal_Bool bOnlyFirst=sal_False );
+
+sal_uInt32 findValue1(const ::com::sun::star::uno::Sequence< ::rtl::OUString>& rList, const ::rtl::OUString& rValue);
+
+// geht von einer sortierten !!! sequence aus
+sal_Bool hasString(const ::rtl::OUString& aStr, const ::com::sun::star::uno::Sequence< ::rtl::OUString>& rList);
+
+sal_Int32 findPos(const ::rtl::OUString& aStr, const ::com::sun::star::uno::Sequence< ::rtl::OUString>& rList);
+
+// void checkArg(const ::com::sun::star::uno::Any& Element, Reflection* pRefl) throw( ::com::sun::star::lang::IllegalArgumentException );
+
+// Suchen in einer Indexliste nach einem Element
+sal_Bool searchElement(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>& xCont, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& xElement);
+
+sal_Int32 getElementPos(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>& xCont, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& xElement);
+String getFormComponentAccessPath(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& _xElement);
+String getFormComponentAccessPath(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& _xElement, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& _rTopLevelElement);
+::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> getElementFromAccessPath(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>& _xParent, const String& _rRelativePath);
+
+
+::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel> getXModel(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& xIface);
+
+::rtl::OUString getLabelName(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& xControlModel);
+::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection> findConnection(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& xParent);
+
+// date conversion
+extern Date STANDARD_DATE;
+double ToStandardDate(const Date& rNullDate, double rVal);
+double ToNullDate(const Date& rNullDate, double rVal);
+
+
+// ===================================================================================================
+// = class CursorWrapper - eine Hilfsklasse, die parallel mit je einem ::com::sun::star::uno::Reference<XDatabaseUpdateCursor>,
+// XDatabaseBookmarkCursor und XDatabaseDirectCursor arbeitet
+// ===================================================================================================
+
+class CursorWrapper
+{
+private:
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> m_xMoveOperations;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XRowLocate> m_xBookmarkOperations;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XColumnsSupplier> m_xColumnsSupplier;
+
+public:
+ // Construction/Destruction
+ CursorWrapper() { }
+ CursorWrapper(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet>& _rxCursor, sal_Bool bUseCloned = sal_False);
+ CursorWrapper(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _rxCursor, sal_Bool bUseCloned = sal_False);
+ // bei bUseCloned == sal_True wird der Cursor ueber das XCloneable-Interface (dass er besitzen muss) gedoubled und
+ // erst dann benutzt
+
+ sal_Bool is() const { return m_xMoveOperations.is(); }
+ sal_Bool Is() const { return m_xMoveOperations.is(); }
+
+ CursorWrapper* operator ->() { return this; }
+ operator ::com::sun::star::uno::XInterface* () const { return (::com::sun::star::uno::XInterface *)m_xMoveOperations.get(); }
+ operator ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> () const{ return (::com::sun::star::uno::XInterface *)m_xMoveOperations.get(); }
+
+ // 'Konvertierungen'
+ const CursorWrapper& operator=(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet>& xCursor);
+ operator const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& () const { return m_xMoveOperations; }
+ operator const ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XRowLocate>& () const { return m_xBookmarkOperations; }
+ operator const ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XColumnsSupplier>& () const { return m_xColumnsSupplier; }
+
+ // das normale queryInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& type) throw ( ::com::sun::star::uno::RuntimeException )
+ { return m_xMoveOperations->queryInterface(type); }
+
+ // ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XRowLocate>
+ ::com::sun::star::uno::Any getBookmark(void)
+ throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+ { return m_xBookmarkOperations->getBookmark(); }
+ sal_Bool moveToBookmark(const ::com::sun::star::uno::Any& bookmark) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException ) { return m_xBookmarkOperations->moveToBookmark(bookmark); }
+ sal_Bool moveRelativeToBookmark(const ::com::sun::star::uno::Any& bookmark, sal_Int32 rows) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException ) { return m_xBookmarkOperations->moveRelativeToBookmark(bookmark, rows); }
+ sal_Int32 compareBookmarks(const ::com::sun::star::uno::Any& first, const ::com::sun::star::uno::Any& second) const throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException ) { return m_xBookmarkOperations->compareBookmarks(first, second); }
+ sal_Int32 hasOrderedBookmarks(void) const throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException ) { return m_xBookmarkOperations->hasOrderedBookmarks(); }
+ sal_Int32 hashBookmark(const ::com::sun::star::uno::Any& bookmark) const throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException ) { return m_xBookmarkOperations->hashBookmark(bookmark); }
+
+ // ::com::sun::star::sdbc::XResultSet
+ sal_Bool isBeforeFirst() const { return m_xMoveOperations->isBeforeFirst(); }
+ sal_Bool isAfterLast() const { return m_xMoveOperations->isAfterLast(); }
+ sal_Bool isFirst() const { return m_xMoveOperations->isFirst(); }
+ sal_Bool isLast() const { return m_xMoveOperations->isLast(); }
+// void moveBeforeFirst() { m_xMoveOperations->moveBeforeFirst(); }
+// void moveAfterLast() { m_xMoveOperations->moveAfterLast(); }
+ sal_Bool first() { return m_xMoveOperations->first(); }
+ sal_Bool last() { return m_xMoveOperations->last(); }
+ sal_Int32 getRow() const { return m_xMoveOperations->getRow(); }
+ sal_Bool absolute(sal_Int32 nPosition) { return m_xMoveOperations->absolute(nPosition); }
+ sal_Bool relative(sal_Int32 nCount) { return m_xMoveOperations->relative(nCount); }
+ sal_Bool previous() { return m_xMoveOperations->previous(); }
+ sal_Bool next() { return m_xMoveOperations->next(); }
+ void refreshRow() { m_xMoveOperations->refreshRow(); }
+ sal_Bool rowUpdated() { return m_xMoveOperations->rowUpdated(); }
+ sal_Bool rowInserted() { return m_xMoveOperations->rowInserted(); }
+ sal_Bool rowDeleted() { return m_xMoveOperations->rowDeleted(); }
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> getStatement() { return m_xMoveOperations->getStatement(); }
+ // ::com::sun::star::sdbcx::XColumnsSupplier
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess> getColumns() const throw( ::com::sun::star::uno::RuntimeException ) { return m_xColumnsSupplier->getColumns(); }
+private:
+ void ImplConstruct(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _rxCursor, sal_Bool bUseCloned);
+};
+
+
+//==================================================================
+// FmXSequenceIndexAccess - a class which wraps a ::com::sun::star::uno::Sequence so it's
+// elements may be accessed via XIndexAccess-methods
+//==================================================================
+
+template <class ElementType>
+class FmXSequenceIndexAccess : public ::cppu::WeakImplHelper1< ::com::sun::star::container::XIndexAccess>
+{
+ ::com::sun::star::uno::Sequence<ElementType> m_aElements;
+
+public:
+ FmXSequenceIndexAccess(const ::com::sun::star::uno::Sequence<ElementType>& _rElements) : m_aElements(_rElements) { }
+
+ // UNO
+ DECLARE_UNO3_DEFAULTS(FmXSequenceIndexAccess, cppu::WeakImplHelper1< ::com::sun::star::container::XIndexAccess> );
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& type) throw ( ::com::sun::star::uno::RuntimeException );
+
+ // XIndexAccess
+ virtual sal_Int32 getCount(void) const throw( ::com::sun::star::uno::RuntimeException ) { return m_aElements.getLength(); }
+ virtual ::com::sun::star::uno::Any getByIndex(sal_Int32 Index) const throw( ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException )
+ { // we implement this in-place as MSVC41 doesn't like a non-in-place template implementation with a throw-clause
+ if ((Index < 0) || (Index >= getCount()))
+ {
+ throw ::com::sun::star::lang::IndexOutOfBoundsException();
+ }
+
+ return ::com::sun::star::uno::Any(m_aElements.getConstArray() + Index, ::getReflection((ElementType*)NULL));
+ }
+
+ // XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType( ) throw(::com::sun::star::uno::RuntimeException)
+ { return ::getCppuType((ElementType*)NULL); }
+ virtual sal_Bool SAL_CALL hasElements( ) throw(::com::sun::star::uno::RuntimeException)
+ { return m_aElements.getLength() > 0; }
+
+protected:
+ ~FmXSequenceIndexAccess() { }
+};
+
+//------------------------------------------------------------------
+template <class ElementType>
+::com::sun::star::uno::Any SAL_CALL FmXSequenceIndexAccess<ElementType>::queryInterface( const ::com::sun::star::uno::Type& type) throw ( ::com::sun::star::uno::RuntimeException )
+{
+ return cppu::WeakImplHelper1< ::com::sun::star::container::XIndexAccess >::queryInterface(type);
+}
+
+//==================================================================
+// Einfacher Adapter fuer Components
+//==================================================================
+class FmXDisposeMultiplexer;
+class FmXDisposeListener
+{
+ friend class FmXDisposeMultiplexer;
+
+ FmXDisposeMultiplexer* m_pAdapter;
+ ::osl::Mutex& m_rMutex;
+
+public:
+ FmXDisposeListener(::osl::Mutex& _rMutex) : m_pAdapter(NULL), m_rMutex(_rMutex) { }
+ virtual ~FmXDisposeListener();
+
+ virtual void disposing(const ::com::sun::star::lang::EventObject& _rEvent, sal_Int16 _nId) throw( ::com::sun::star::uno::RuntimeException ) = 0;
+
+protected:
+ void setAdapter(FmXDisposeMultiplexer* pAdapter);
+};
+
+typedef ::cppu::WeakImplHelper1< ::com::sun::star::lang::XEventListener> FmXDisposeMultiplexer_x;
+//==============================================================================
+
+
+class FmXDisposeMultiplexer :public ::cppu::WeakImplHelper1< ::com::sun::star::lang::XEventListener>
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent> m_xObject;
+ FmXDisposeListener* m_pListener;
+ sal_Int16 m_nId;
+
+ virtual ~FmXDisposeMultiplexer();
+public:
+ FmXDisposeMultiplexer(FmXDisposeListener* _pListener, const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent>& _rxObject, sal_Int16 _nId = -1);
+
+// ::com::sun::star::lang::XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
+
+ void dispose();
+};
+
+// ==================================================================
+
+//==============================================================================
+// FmSlotDispatch - some kind of translator between the Sfx-Slots and the UNO-dispatchers
+//==============================================================================
+
+typedef ::cppu::WeakImplHelper1< ::com::sun::star::frame::XDispatch > FmSlotDispatch_x;
+class FmSlotDispatch
+ :public SfxControllerItem
+ ,public ::cppu::WeakImplHelper2< ::com::sun::star::frame::XDispatch, ::com::sun::star::lang::XComponent>
+ // ,public XComponent
+{
+protected:
+ ::cppu::OInterfaceContainerHelper m_aDisposeListeners;
+ ::cppu::OInterfaceContainerHelper m_aStatusListeners;
+
+ Link m_aExecutor;
+ ::com::sun::star::util::URL m_aUrl; // the URL we're responsible for
+ ::osl::Mutex m_aAccessSafety;
+ sal_Int16 m_nSlot; // the slot 'translation' of the URL
+
+public:
+ const ::com::sun::star::util::URL& getUrl() const { return m_aUrl; }
+ sal_Int16 getSlot() const { return m_nSlot; }
+
+ void setExecutor(const Link& aExecutor) { m_aExecutor = aExecutor; }
+ Link getExecutor() const { return m_aExecutor; }
+
+public:
+ FmSlotDispatch(const ::com::sun::star::util::URL& rUrl, sal_Int16 nSlotId, SfxBindings& rBindings);
+ virtual ~FmSlotDispatch();
+
+ // ::com::sun::star::frame::XDispatch
+ virtual void SAL_CALL dispatch( const ::com::sun::star::util::URL& aURL, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aArgs ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addStatusListener( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener >& xControl, const ::com::sun::star::util::URL& aURL ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeStatusListener( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener >& xControl, const ::com::sun::star::util::URL& aURL ) throw(::com::sun::star::uno::RuntimeException);
+
+ // XComponent
+ virtual void SAL_CALL dispose( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw(::com::sun::star::uno::RuntimeException);
+
+protected:
+ // SfxControllerItem
+ virtual void StateChanged(sal_Int16 nSID, SfxItemState eState, const SfxPoolItem* pState);
+
+ ::com::sun::star::frame::FeatureStateEvent BuildEvent(SfxItemState eState, const SfxPoolItem* pState);
+
+ virtual void NotifyState(SfxItemState eState, const SfxPoolItem* pState, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener>& rListener = ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener>());
+ // the default implementations notifies the given listeners (or all available listeners) with a statusChanged
+};
+
+//========================================================================
+//= dispatch interception helper classes
+//========================================================================
+
+//------------------------------------------------------------------------
+//- FmDispatchInterceptor
+//------------------------------------------------------------------------
+class FmDispatchInterceptor
+{
+public:
+ FmDispatchInterceptor() { }
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch> interceptedQueryDispatch(sal_uInt16 _nId,
+ const ::com::sun::star::util::URL& aURL, const ::rtl::OUString& aTargetFrameName, sal_Int32 nSearchFlags) throw( ::com::sun::star::uno::RuntimeException ) = 0;
+
+ virtual ::osl::Mutex* getInterceptorMutex() = 0;
+};
+
+//------------------------------------------------------------------------
+//- FmXDispatchInterceptorImpl
+//------------------------------------------------------------------------
+class FmXDispatchInterceptorImpl
+ :public ::com::sun::star::frame::XDispatchProviderInterceptor
+ ,public ::com::sun::star::lang::XEventListener
+ ,public ::cppu::OComponentHelper
+
+{
+ ::osl::Mutex m_aFallback;
+ ::form::OImplementationIdsRef m_aHoldImplIdHelper;
+
+ // the component which's dispatches we're intercepting
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterception> m_xIntercepted;
+ // the real interceptor
+ FmDispatchInterceptor* m_pMaster;
+
+ // chaining
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider> m_xSlaveDispatcher;
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider> m_xMasterDispatcher;
+ // our id
+ sal_Int16 m_nId;
+
+ virtual ~FmXDispatchInterceptorImpl();
+
+public:
+ ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterception> getIntercepted() const { return m_xIntercepted; }
+
+public:
+ FmXDispatchInterceptorImpl(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProviderInterception>& _rToIntercept, FmDispatchInterceptor* _pMaster, sal_Int16 _nId);
+
+ // StarOne
+ DECLARE_UNO3_DEFAULTS(FmXDispatchInterceptorImpl, OComponentHelper);
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& type) throw ( ::com::sun::star::uno::RuntimeException );
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+
+
+ // ::com::sun::star::frame::XDispatchProvider
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > SAL_CALL queryDispatch( const ::com::sun::star::util::URL& aURL, const ::rtl::OUString& aTargetFrameName, sal_Int32 nSearchFlags ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatch > > SAL_CALL queryDispatches( const ::com::sun::star::uno::Sequence< ::com::sun::star::frame::DispatchDescriptor >& aDescripts ) throw(::com::sun::star::uno::RuntimeException);
+
+ // ::com::sun::star::frame::XDispatchProviderInterceptor
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > SAL_CALL getSlaveDispatchProvider( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSlaveDispatchProvider( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider >& xNewDispatchProvider ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > SAL_CALL getMasterDispatchProvider( ) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setMasterDispatchProvider( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider >& xNewSupplier ) throw(::com::sun::star::uno::RuntimeException);
+
+ // ::com::sun::star::lang::XEventListener
+ virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
+
+ // OComponentHelper
+ virtual void SAL_CALL disposing();
+
+protected:
+ void ImplDetach();
+
+ ::osl::Mutex& getAccessSafety()
+ {
+ if (m_pMaster && m_pMaster->getInterceptorMutex())
+ return *m_pMaster->getInterceptorMutex();
+ return m_aFallback;
+ }
+};
+
+//==================================================================
+// Stringkonvertierung
+//==================================================================
+::rtl::OUString AnyToStr( const ::com::sun::star::uno::Any& aValue);
+::com::sun::star::uno::Any StringToAny( ::rtl::OUString aStr, ::com::sun::star::uno::TypeClass eTargetType );
+::com::sun::star::uno::Sequence< ::rtl::OUString> getEventMethods(const ::com::sun::star::uno::Type& type);
+
+//==================================================================
+// ...
+//==================================================================
+//sal_Int16 getControlTypeByModelName(const ::rtl::OUString& rModel);
+//::rtl::OUString getModelNameByControlType(sal_Int16 nType);
+::rtl::OUString getServiceNameByControlType(sal_Int16 nType);
+ // get a service name to create a model of the given type (OBJ_FM_...)
+sal_Int16 getControlTypeByObject(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XServiceInfo>& _rxObject);
+ // get the object type (OBJ_FM_...) from the services the object supports
+
+// void TransferFormComponentProperties(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& xOld, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& xNew);
+void TransferEventScripts(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel>& xModel, const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl>& xControl,
+ const ::com::sun::star::uno::Sequence< ::com::sun::star::script::ScriptEventDescriptor>& rTransferIfAvailable);
+
+sal_Int16 GridModel2ViewPos(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>& rColumns, sal_Int16 nModelPos);
+sal_Int16 GridView2ModelPos(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>& rColumns, sal_Int16 nViewPos);
+sal_Int16 GridViewColumnCount(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>& rColumns);
+
+//==================================================================
+UniString quoteName(const UniString& rQuote, const UniString& rName);
+UniString quoteTableName(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData>& xMeta, const UniString& rName);
+
+//==================================================================
+//::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess> getTableFields(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _rxConn, const ::rtl::OUString& _rsName);
+sal_Bool isLoadable(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& xLoad);
+sal_Bool isRowSetAlive(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& _rxRowSet);
+ // checks if the ::com::sun::star::sdbcx::XColumnsSupplier provided by _rxRowSet supllies any columns
+
+
+//==================================================================
+//= a class wrapping an object implementing a sdb::DataColumn service
+//==================================================================
+class DataColumn
+{
+ // interfaces needed for sddb::Column
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet> m_xPropertySet;
+ // interfaces needed for sdb::DataColumn
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn> m_xColumn;
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumnUpdate> m_xColumnUpdate;
+
+public:
+ DataColumn() { };
+ DataColumn(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _rxIFace);
+ // if the object behind _rxIFace doesn't fully support the DataColumn service,
+ // (which is checked via the supported interfaces) _all_ members will be set to
+ // void !, even if the object has some of the needed interfaces.
+
+ sal_Bool is() const { return m_xColumn.is(); }
+ sal_Bool Is() const { return m_xColumn.is(); }
+
+ DataColumn* operator ->() { return this; }
+ // operator ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> () const { return ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> m_xColumn; }
+ operator ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> () const{ return m_xColumn;; }
+
+ // 'conversions'
+ operator const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>&() const { return m_xPropertySet; }
+ operator const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn>&() const { return m_xColumn; }
+ operator const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumnUpdate>&() const
+ {
+ DBG_ASSERT(m_xColumnUpdate.is() , "operator XColumnUpdate(): is NULL!");
+ return m_xColumnUpdate;
+ }
+
+ // das normale queryInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& type) throw ( ::com::sun::star::uno::RuntimeException )
+ { return m_xColumn->queryInterface(type); }
+
+ // ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>
+ inline ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo> getPropertySetInfo() const throw( ::com::sun::star::uno::RuntimeException );
+ inline void setPropertyValue(const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+ inline ::com::sun::star::uno::Any getPropertyValue(const ::rtl::OUString& PropertyName) const throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+ inline void addPropertyChangeListener(const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener>& xListener) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+ inline void removePropertyChangeListener(const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener>& aListener) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+ inline void addVetoableChangeListener(const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener>& aListener) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+ inline void removeVetoableChangeListener(const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener>& aListener) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException );
+
+ // ::com::sun::star::sdb::XColumn
+ inline sal_Bool wasNull() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline ::rtl::OUString getString() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline sal_Bool getBoolean() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline sal_Int8 getByte() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline sal_Int16 getShort() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline sal_Int32 getInt() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline sal_Int64 getLong() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline float getFloat() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline double getDouble() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline ::com::sun::star::uno::Sequence< sal_Int8 > getBytes() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline ::com::sun::star::util::Date getDate() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline ::com::sun::star::util::Time getTime() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline ::com::sun::star::util::DateTime getTimestamp() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream> getBinaryStream() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream> getCharacterStream() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline ::com::sun::star::uno::Any getObject(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>& typeMap) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef> getRef() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob> getBlob() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob> getClob() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray> getArray() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+
+ // XColumnUpdate
+ inline void updateNull(void) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateBoolean(sal_Bool x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateByte(sal_Int8 x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateShort(sal_Int16 x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateInt(sal_Int32 x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateLong(sal_Int64 x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateFloat(float x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateDouble(double x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateString(const ::rtl::OUString& x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateBytes(const ::com::sun::star::uno::Sequence< sal_Int8 >& x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateDate(const com::sun::star::util::Date& x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateTime(const ::com::sun::star::util::Time& x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateTimestamp(const ::com::sun::star::util::DateTime& x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateBinaryStream(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream>& x, sal_Int32 length) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateCharacterStream(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream>& x, sal_Int32 length) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateObject(const ::com::sun::star::uno::Any& x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+ inline void updateNumericObject(const ::com::sun::star::uno::Any& x, sal_Int32 scale) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
+};
+
+// ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>
+::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo> DataColumn::getPropertySetInfo() const throw( ::com::sun::star::uno::RuntimeException )
+{
+ return m_xPropertySet->getPropertySetInfo();
+}
+
+void DataColumn::setPropertyValue(const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xPropertySet->setPropertyValue(aPropertyName, aValue);
+}
+
+::com::sun::star::uno::Any DataColumn::getPropertyValue(const ::rtl::OUString& PropertyName) const throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xPropertySet->getPropertyValue(PropertyName);
+}
+
+void DataColumn::addPropertyChangeListener(const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener>& xListener) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xPropertySet->addPropertyChangeListener(aPropertyName, xListener);
+}
+
+void DataColumn::removePropertyChangeListener(const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener>& aListener) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xPropertySet->removePropertyChangeListener(aPropertyName, aListener);
+}
+
+void DataColumn::addVetoableChangeListener(const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener>& aListener) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xPropertySet->addVetoableChangeListener(PropertyName, aListener);
+}
+
+void DataColumn::removeVetoableChangeListener(const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener>& aListener) throw( ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xPropertySet->removeVetoableChangeListener(PropertyName, aListener);
+}
+
+// ::com::sun::star::sdb::XColumn
+sal_Bool DataColumn::wasNull() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->wasNull();
+}
+
+::rtl::OUString DataColumn::getString() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getString();
+}
+
+sal_Bool DataColumn::getBoolean() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getBoolean();
+}
+
+sal_Int8 DataColumn::getByte() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getByte();
+}
+
+sal_Int16 DataColumn::getShort() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getShort();
+}
+
+sal_Int32 DataColumn::getInt() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getInt();
+}
+
+sal_Int64 DataColumn::getLong() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getLong();
+}
+
+float DataColumn::getFloat() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getFloat();
+}
+
+double DataColumn::getDouble() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getDouble();
+}
+
+::com::sun::star::uno::Sequence< sal_Int8 > DataColumn::getBytes() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getBytes();
+}
+
+::com::sun::star::util::Date DataColumn::getDate() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getDate();
+}
+
+::com::sun::star::util::Time DataColumn::getTime() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getTime();
+}
+
+::com::sun::star::util::DateTime DataColumn::getTimestamp() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getTimestamp();
+}
+
+::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream> DataColumn::getBinaryStream() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getBinaryStream();
+}
+
+::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream> DataColumn::getCharacterStream() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getCharacterStream();
+}
+
+::com::sun::star::uno::Any DataColumn::getObject(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>& typeMap) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getObject(typeMap);
+}
+
+::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef> DataColumn::getRef() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getRef();
+}
+
+::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob> DataColumn::getBlob() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getBlob();
+}
+
+::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob> DataColumn::getClob() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getClob();
+}
+
+::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray> DataColumn::getArray() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ return m_xColumn->getArray();
+}
+
+// XColumnUpdate
+void DataColumn::updateNull() throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateNull();
+}
+
+void DataColumn::updateBoolean(sal_Bool x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateBoolean(x);
+}
+
+void DataColumn::updateByte(sal_Int8 x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateByte(x);
+}
+
+void DataColumn::updateShort(sal_Int16 x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateShort(x);
+}
+
+void DataColumn::updateInt(sal_Int32 x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateInt(x);
+}
+
+void DataColumn::updateLong(sal_Int64 x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateLong(x);
+}
+
+void DataColumn::updateFloat(float x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateFloat(x);
+}
+
+void DataColumn::updateDouble(double x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateDouble(x);
+}
+
+void DataColumn::updateString(const ::rtl::OUString& x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateString(x);
+}
+
+void DataColumn::updateBytes(const ::com::sun::star::uno::Sequence< sal_Int8 >& x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateBytes(x);
+}
+
+void DataColumn::updateDate(const com::sun::star::util::Date& x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateDate(x);
+}
+
+void DataColumn::updateTime(const ::com::sun::star::util::Time& x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateTime(x);
+}
+
+void DataColumn::updateTimestamp(const ::com::sun::star::util::DateTime& x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateTimestamp(x);
+}
+
+void DataColumn::updateBinaryStream(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream>& x, sal_Int32 length) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateBinaryStream(x, length);
+}
+
+void DataColumn::updateCharacterStream(const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream>& x, sal_Int32 length) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateCharacterStream(x, length);
+}
+
+void DataColumn::updateObject(const ::com::sun::star::uno::Any& x) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateObject(x);
+}
+
+void DataColumn::updateNumericObject(const ::com::sun::star::uno::Any& x, sal_Int32 scale) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException )
+{
+ m_xColumnUpdate->updateNumericObject(x, scale);
+}
+
+
+
+#endif // _SVX_FMTOOLS_HXX
+
diff --git a/svx/source/inc/fmundo.hxx b/svx/source/inc/fmundo.hxx
new file mode 100644
index 000000000000..f59eccd38707
--- /dev/null
+++ b/svx/source/inc/fmundo.hxx
@@ -0,0 +1,284 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmundo.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMUNDO_HXX
+#define _SVX_FMUNDO_HXX
+
+#ifndef _SVDUNDO_HXX
+#include "svdundo.hxx"
+#endif
+
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
+#include <com/sun/star/beans/XPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XVETOABLECHANGELISTENER_HPP_
+#include <com/sun/star/beans/XVetoableChangeListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XPROPERTYCHANGELISTENER_HPP_
+#include <com/sun/star/beans/XPropertyChangeListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_PROPERTYCHANGEEVENT_HPP_
+#include <com/sun/star/beans/PropertyChangeEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCRIPT_SCRIPTEVENT_HPP_
+#include <com/sun/star/script/ScriptEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCRIPT_XSCRIPTLISTENER_HPP_
+#include <com/sun/star/script/XScriptListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SCRIPT_SCRIPTEVENTDESCRIPTOR_HPP_
+#include <com/sun/star/script/ScriptEventDescriptor.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXCONTAINER_HPP_
+#include <com/sun/star/container/XIndexContainer.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XCONTAINERLISTENER_HPP_
+#include <com/sun/star/container/XContainerListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_CONTAINEREVENT_HPP_
+#include <com/sun/star/container/ContainerEvent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMECONTAINER_HPP_
+#include <com/sun/star/container/XNameContainer.hpp>
+#endif
+
+#include <cppuhelper/implbase4.hxx>
+
+
+
+#ifndef _SFXLSTNER_HXX //autogen
+#include <svtools/lstner.hxx>
+#endif
+
+#ifndef _SVDOUNO_HXX //autogen wg. SdrUnoObj
+#include "svdouno.hxx"
+#endif
+
+#include <unotools/uno3.hxx>
+
+class FmFormModel;
+class FmFormObj;
+class SdrObject;
+class FmXFormView;
+
+FORWARD_DECLARE_INTERFACE(awt,XControl)
+FORWARD_DECLARE_INTERFACE(awt,XControlContainer)
+//FORWARD_DECLARE_INTERFACE(uno,Reference)
+
+//==================================================================
+// FmUndoPropertyAction
+//==================================================================
+class FmUndoPropertyAction: public SdrUndoAction
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet> xObj;
+ ::rtl::OUString aPropertyName;
+ ::com::sun::star::uno::Any aNewValue;
+ ::com::sun::star::uno::Any aOldValue;
+
+public:
+ FmUndoPropertyAction(FmFormModel& rMod, const ::com::sun::star::beans::PropertyChangeEvent& evt);
+
+ virtual void Undo();
+ virtual void Redo();
+
+#ifndef ENABLEUNICODE
+ virtual String GetComment() const;
+#else
+ virtual UniString GetComment() const;
+#endif
+
+};
+
+//==================================================================
+// FmUndoContainerAction
+//==================================================================
+class FmUndoContainerAction: public SdrUndoAction
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer> xContainer;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> xElement;
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> xOwnElement; // Object das der Action gehoert
+ sal_Int32 nIndex;
+ ::com::sun::star::uno::Sequence< ::com::sun::star::script::ScriptEventDescriptor > aEvts; // events des Objects
+
+public:
+ enum Action
+ {
+ Inserted = 1,
+ Removed = 2
+ };
+
+private:
+ Action eAction;
+
+public:
+ FmUndoContainerAction(FmFormModel& rMod,
+ Action _eAction,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer>& xCont,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& xElem,
+ sal_Int32 nIdx = -1);
+ ~FmUndoContainerAction();
+
+ virtual void Undo();
+ virtual void Redo();
+};
+
+//==================================================================
+// FmUndoModelReplaceAction
+//==================================================================
+class FmUndoModelReplaceAction : public SdrUndoAction
+{
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel> m_xReplaced;
+ SdrUnoObj* m_pObject;
+
+public:
+ FmUndoModelReplaceAction(FmFormModel& rMod, SdrUnoObj* pObject, const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel>& xReplaced);
+ ~FmUndoModelReplaceAction();
+
+ virtual void Undo();
+ virtual void Redo() { Undo(); }
+
+#ifndef ENABLEUNICODE
+ virtual String GetComment() const;
+#else
+ virtual UniString GetComment() const;
+#endif
+};
+
+//========================================================================
+class FmXUndoEnvironment : public ::cppu::WeakImplHelper4< ::com::sun::star::beans::XVetoableChangeListener,
+ ::com::sun::star::beans::XPropertyChangeListener,
+ ::com::sun::star::container::XContainerListener,
+ ::com::sun::star::script::XScriptListener>,
+ public SfxListener
+ // public ::cppu::OWeakObject
+{
+ friend class FmFormModel;
+ friend class FmXFormView;
+ FmFormModel& rModel;
+
+ void* m_pPropertySetCache;
+ sal_uInt32 nLocks;
+ sal_Bool bReadOnly;
+
+
+ void firing_Impl( const ::com::sun::star::script::ScriptEvent& evt, ::com::sun::star::uno::Any *pSyncRet=0 );
+
+public:
+ FmXUndoEnvironment(FmFormModel& _rModel);
+ ~FmXUndoEnvironment();
+
+ // UNO Anbindung
+ // SMART_UNO_DECLARATION(FmXUndoEnvironment, ::cppu::OWeakObject);
+ // virtual sal_Bool queryInterface(UsrUik, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>&);
+ // virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::reflection::XIdlClass>> getIdlClasses(void);
+
+ void Lock() {nLocks++;}
+ void UnLock() {nLocks--;}
+ sal_Bool IsLocked() const {return nLocks != 0;}
+
+protected:
+// ::com::sun::star::lang::XEventListener
+ virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw( ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::beans::XPropertyChangeListener
+ virtual void SAL_CALL propertyChange(const ::com::sun::star::beans::PropertyChangeEvent& evt);
+
+// XVetoableChangeListener
+ virtual void SAL_CALL vetoableChange(const ::com::sun::star::beans::PropertyChangeEvent& aEvent) throw( ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException );
+
+// ::com::sun::star::container::XContainerListener
+ virtual void SAL_CALL elementInserted(const ::com::sun::star::container::ContainerEvent& rEvent);
+ virtual void SAL_CALL elementReplaced(const ::com::sun::star::container::ContainerEvent& rEvent);
+ virtual void SAL_CALL elementRemoved(const ::com::sun::star::container::ContainerEvent& rEvent);
+
+// XScriptListener
+ virtual void SAL_CALL firing(const ::com::sun::star::script::ScriptEvent& evt);
+ virtual ::com::sun::star::uno::Any SAL_CALL approveFiring(const ::com::sun::star::script::ScriptEvent& evt);
+
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
+
+// Einfuegen von Objekten
+ void AddForms(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer>& rForms);
+ void RemoveForms(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer>& rForms);
+
+ void SetReadOnly(sal_Bool bRead) {bReadOnly = bRead;}
+ sal_Bool IsReadOnly() const {return bReadOnly;}
+
+ void ModeChanged();
+ void Clear();
+
+private:
+ void AddElement(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& Element);
+ void RemoveElement(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& Element);
+ void AlterPropertyListening(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>& Element);
+
+public:
+ // Methoden zur Zuordnung von Controls zu Forms,
+ // werden von der Seite und der UndoUmgebung genutzt
+ void Inserted(SdrObject* pObj);
+ void Removed(SdrObject* pObj);
+
+ void Inserted(FmFormObj* pObj);
+ void Removed(FmFormObj* pObj);
+};
+
+
+#endif //_SVX_FMUNDO_HXX
+
diff --git a/svx/source/inc/fmurl.hxx b/svx/source/inc/fmurl.hxx
new file mode 100644
index 000000000000..e7f917ff2ed0
--- /dev/null
+++ b/svx/source/inc/fmurl.hxx
@@ -0,0 +1,90 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmurl.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:19 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SVX_FMURL_HXX
+#define _SVX_FMURL_HXX
+
+#ifndef _FM_STATIC_HXX_
+#include "fmstatic.hxx"
+#endif
+
+DECLARE_CONSTASCII_USTRING(FMURL_FORMSLOTS_PREFIX);
+
+DECLARE_CONSTASCII_USTRING(FMURL_RECORD_MOVEFIRST);
+DECLARE_CONSTASCII_USTRING(FMURL_RECORD_MOVEPREV);
+DECLARE_CONSTASCII_USTRING(FMURL_RECORD_MOVENEXT);
+DECLARE_CONSTASCII_USTRING(FMURL_RECORD_MOVELAST);
+DECLARE_CONSTASCII_USTRING(FMURL_RECORD_MOVETONEW);
+DECLARE_CONSTASCII_USTRING(FMURL_RECORD_UNDO);
+
+DECLARE_CONSTASCII_USTRING(FMURL_CONFIRM_DELETION);
+
+DECLARE_CONSTASCII_USTRING(FMURL_COMPONENT_FORMGRIDVIEW);
+DECLARE_CONSTASCII_USTRING(FMURL_GRIDVIEW_CLEARVIEW);
+DECLARE_CONSTASCII_USTRING(FMURL_GRIDVIEW_ADDCOLUMN);
+DECLARE_CONSTASCII_USTRING(FMURL_GRIDVIEW_ATTACHTOFORM);
+
+DECLARE_CONSTASCII_USTRING(FMARG_ATTACHTO_MASTERFORM);
+DECLARE_CONSTASCII_USTRING(FMARG_ADDCOL_COLUMNTYPE);
+DECLARE_CONSTASCII_USTRING(FMARG_ADDCOL_COLUMNPOS);
+
+#endif // _SVX_FMURL_HXX
+
diff --git a/svx/source/inc/fmvwimp.hxx b/svx/source/inc/fmvwimp.hxx
new file mode 100644
index 000000000000..a8b1c6c4000d
--- /dev/null
+++ b/svx/source/inc/fmvwimp.hxx
@@ -0,0 +1,229 @@
+/*************************************************************************
+ *
+ * $RCSfile: fmvwimp.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:20 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_FMVWIMP_HXX
+#define _SVX_FMVWIMP_HXX
+
+#include <unotools/stl_types.hxx>
+
+
+#ifndef _COM_SUN_STAR_FORM_XFORM_HPP_
+#include <com/sun/star/form/XForm.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XINDEXACCESS_HPP_
+#include <com/sun/star/container/XIndexAccess.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XENUMERATION_HPP_
+#include <com/sun/star/container/XEnumeration.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XFORMCONTROLLER_HPP_
+#include <com/sun/star/form/XFormController.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_XCONTAINERLISTENER_HPP_
+#include <com/sun/star/container/XContainerListener.hpp>
+#endif
+#ifndef _COM_SUN_STAR_CONTAINER_CONTAINEREVENT_HPP_
+#include <com/sun/star/container/ContainerEvent.hpp>
+#endif
+
+#ifndef _LINK_HXX //autogen
+#include <tools/link.hxx>
+#endif
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+
+#ifndef _CPPUHELPER_IMPLBASE1_HXX_
+#include <cppuhelper/implbase1.hxx>
+#endif
+#ifndef _CPPUHELPER_IMPLBASE2_HXX_
+#include <cppuhelper/implbase2.hxx>
+#endif
+#ifndef _UTL_UNO3_HXX_
+#include <unotools/uno3.hxx>
+#endif
+
+class SdrPageViewWinRec;
+class SdrPageView;
+class Window;
+//FORWARD_DECLARE_INTERFACE(uno,Reference)
+FORWARD_DECLARE_INTERFACE(awt,XControl)
+class FmXFormController;
+
+//==================================================================
+// FmXPageViewWinRec
+//==================================================================
+class FmXPageViewWinRec : public ::cppu::WeakImplHelper1< ::com::sun::star::container::XIndexAccess>
+{
+ friend class FmXFormView;
+
+ ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController > > m_aControllerList;
+ FmXFormView* m_pViewImpl;
+ Window* m_pWindow;
+
+public:
+ FmXPageViewWinRec(const SdrPageViewWinRec*, FmXFormView* pView);
+ ~FmXPageViewWinRec();
+
+// UNO Anbindung
+ // DECLARE_UNO3_AGG_DEFAULTS(FmXPageViewWinRec, WeakImplHelper1< ::com::sun::star::container::XIndexAccess> );
+ // virtual sal_Bool queryInterface( ::com::sun::star::uno::Uik aUik, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rOut );
+ // virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::reflection::XIdlClass > > getIdlClasses();
+
+// ::com::sun::star::container::XElementAccess
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException);
+
+// ::com::sun::star::container::XEnumerationAccess
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration() throw(::com::sun::star::uno::RuntimeException);
+
+// ::com::sun::star::container::XIndexAccess
+ virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Any SAL_CALL getByIndex(sal_Int32 _Index) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
+
+ const vector< ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController > >& GetList() {return m_aControllerList;}
+
+protected:
+ ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormController > getController( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& xForm );
+ void setController( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& xForm,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >& xCC,
+ FmXFormController* pParent = NULL,
+ sal_Bool bCheck=sal_False );
+ ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer > getControlContainer() const;
+ void updateTabOrder( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl >& xControl,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >& xCC );
+ void dispose();
+ Window* getWindow() const {return m_pWindow;}
+};
+
+typedef vector<FmXPageViewWinRec*> FmWinRecList;
+//==================================================================
+// FmXFormView
+//==================================================================
+class FmXFormView : public ::cppu::WeakImplHelper2<
+ ::com::sun::star::form::XFormControllerListener,
+ ::com::sun::star::container::XContainerListener>
+{
+ friend class FmFormView;
+ friend class FmFormShell;
+ friend class FmXFormShell;
+ friend class FmXPageViewWinRec;
+
+ FmWinRecList m_aWinList; // dieses Liste wird nur im nicht designmodus gefuellt
+
+ FmFormView* m_pView;
+ SdrPageView* m_pPageViewForActivation;
+ sal_uInt32 m_nEvent;
+ sal_uInt32 m_nErrorMessageEvent;
+
+ String m_sErrorMessage;
+
+ void AttachControl( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl >& rControl, sal_Bool bDetach );
+ void AttachControls( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >&, sal_Bool bDetach );
+
+ FmFormShell* GetFormShell() const;
+
+protected:
+ FmXFormView(FmFormView* _pView)
+ :m_pView(_pView)
+ ,m_pPageViewForActivation(NULL)
+ ,m_nEvent(0)
+ ,m_nErrorMessageEvent(0) { }
+ ~FmXFormView();
+
+public:
+ // UNO Anbindung
+ // DECLARE_UNO3_AGG_DEFAULTS(FmXFormView, WeakImplHelper2<
+ // ::com::sun::star::form::XFormControllerListener,
+ // ::com::sun::star::container::XContainerListener>);
+ // virtual sal_Bool queryInterface( ::com::sun::star::uno::Uik aUik, ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& rOut );
+ // virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::reflection::XIdlClass > > getIdlClasses();
+
+// ::com::sun::star::lang::XEventListener
+ virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw(::com::sun::star::uno::RuntimeException);
+
+// ::com::sun::star::container::XContainerListener
+ virtual void SAL_CALL elementInserted(const ::com::sun::star::container::ContainerEvent& rEvent);
+ virtual void SAL_CALL elementReplaced(const ::com::sun::star::container::ContainerEvent& rEvent);
+ virtual void SAL_CALL elementRemoved(const ::com::sun::star::container::ContainerEvent& rEvent);
+
+// ::com::sun::star::form::XFormControllerListener
+ virtual void SAL_CALL formActivated(const ::com::sun::star::lang::EventObject& rEvent);
+ virtual void SAL_CALL formDeactivated(const ::com::sun::star::lang::EventObject& rEvent);
+
+ FmFormView* getView() const {return m_pView;}
+ FmWinRecList::const_iterator findWindow( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >& rCC ) const;
+ const FmWinRecList& getWindowList() const {return m_aWinList;}
+
+protected:
+ FmWinRecList::iterator findWindow( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >& rCC );
+ void addWindow(const SdrPageViewWinRec*);
+ void removeWindow( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer >& rCC );
+ void Activate(SdrPageView* pPageView, sal_Bool bSync = sal_False);
+ void Deactivate(SdrPageView* pPageView, BOOL bDeactivateController = TRUE);
+
+ DECL_LINK(OnActivate, void* );
+ DECL_LINK(OnDelayedErrorMessage, void*);
+};
+
+
+
+#endif // _SVX_FMVWIMP_HXX
+
diff --git a/svx/source/inc/gridcell.hxx b/svx/source/inc/gridcell.hxx
new file mode 100644
index 000000000000..cc64a5eb8e44
--- /dev/null
+++ b/svx/source/inc/gridcell.hxx
@@ -0,0 +1,758 @@
+/*************************************************************************
+ *
+ * $RCSfile: gridcell.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:20 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SVX_GRIDCELL_HXX
+#define _SVX_GRIDCELL_HXX
+
+#ifndef _SVX_GRIDCTRL_HXX
+#include "gridctrl.hxx"
+#endif
+
+#ifndef _SVX_FMTOOLS_HXX
+#include "fmtools.hxx"
+#endif
+
+#ifndef _CPPUHELPER_COMPONENT_HXX_
+#include <cppuhelper/component.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_SDB_XCOLUMN_HPP_
+#include <com/sun/star/sdb/XColumn.hpp>
+#endif
+#ifndef _COM_SUN_STAR_FORM_XBOUNDCONTROL_HPP_
+#include <com/sun/star/form/XBoundControl.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XTEXTCOMPONENT_HPP_
+#include <com/sun/star/awt/XTextComponent.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XLISTBOX_HPP_
+#include <com/sun/star/awt/XListBox.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_TEXTALIGN_HPP_
+#include <com/sun/star/awt/TextAlign.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCONTROLMODEL_HPP_
+#include <com/sun/star/awt/XControlModel.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCONTROL_HPP_
+#include <com/sun/star/awt/XControl.hpp>
+#endif
+#ifndef _COM_SUN_STAR_AWT_XCHECKBOX_HPP_
+#include <com/sun/star/awt/XCheckBox.hpp>
+#endif
+#ifndef _COM_SUN_STAR_BEANS_XFASTPROPERTYSET_HPP_
+#include <com/sun/star/beans/XFastPropertySet.hpp>
+#endif
+#ifndef _COM_SUN_STAR_LANG_XUNOTUNNEL_HPP_
+#include <com/sun/star/lang/XUnoTunnel.hpp>
+#endif
+
+#ifndef _UNOTOOLS_PROPERTY_MULTIPLEX_HXX_
+#include <unotools/propmultiplex.hxx>
+#endif
+
+class DbCellControl;
+class Edit;
+class FmXGridCell;
+
+//==================================================================
+// DbGridColumn, Spaltenbeschreibung
+//==================================================================
+class DbGridColumn
+{
+ friend class DbGridControl;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xModel;
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xField; // Verbindung zum Datenbankfeld
+ DbCellControllerRef m_xController; // Struktur zum Verwalten der Controls fuer eine Spalte
+ // diese wird von der DbBrowseBox auf die jeweiligen Zellen
+ // einer Spalte positioniert
+ FmXGridCell* m_pCell;
+
+protected:
+ DbGridControl& m_rParent;
+
+private:
+ sal_Int32 m_nLastVisibleWidth; // nur gueltig, wenn m_bHidden == sal_True
+ sal_Int32 m_nFormatKey;
+ sal_Int16 m_nFieldType;
+ sal_Int16 m_nTypeId;
+ sal_uInt16 m_nId;
+ sal_Int16 m_nFieldPos;
+ sal_Int16 m_nAlign; // wird mit TXT_ALIGN_LEFT .... angegeben
+ sal_Bool m_bRequired : 1;
+ sal_Bool m_bReadOnly : 1;
+ sal_Bool m_bAutoValue : 1;
+ sal_Bool m_bInSave : 1;
+ sal_Bool m_bNumeric : 1;
+ sal_Bool m_bObject : 1; // Verweist die Column auf ein Object Datentyp?
+ sal_Bool m_bHidden : 1;
+ sal_Bool m_bLocked : 1;
+ sal_Bool m_bDateTime : 1;
+
+ static DbCellControllerRef s_xEmptyController;
+ // used by locked columns
+
+public:
+ DbGridColumn(sal_uInt16 _nId, DbGridControl& rParent)
+ :m_nId(_nId)
+ ,m_rParent(rParent)
+ ,m_nFieldType(0)
+ ,m_nFormatKey(0)
+ ,m_pCell(NULL)
+ ,m_bNumeric(sal_False)
+ ,m_bDateTime(sal_False)
+ ,m_nAlign(::com::sun::star::awt::TextAlign::LEFT)
+ ,m_nFieldPos(-1)
+ ,m_bRequired(sal_False)
+ ,m_bReadOnly(sal_False)
+ ,m_bAutoValue(sal_False)
+ ,m_bInSave(sal_False)
+ ,m_bHidden(sal_False)
+ ,m_nLastVisibleWidth(-1)
+ ,m_nTypeId(0)
+ ,m_bLocked(sal_False) {}
+
+ ~DbGridColumn();
+
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& getModel() const {return m_xModel;}
+ void setModel(::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > _xModel) {m_xModel = _xModel;}
+
+
+ sal_uInt16 GetId() const {return m_nId;}
+ sal_Bool IsRequired() const {return m_bRequired;}
+ sal_Bool IsReadOnly() const {return m_bReadOnly;}
+ sal_Bool IsAutoValue() const {return m_bAutoValue;}
+ sal_Bool IsUpdating() const {return m_bInSave;}
+ sal_Int16 GetAlignment() const {return m_nAlign;}
+ sal_Int16 GetType() const {return m_nFieldType;}
+ sal_Int16 GetFieldPos() const {return m_nFieldPos; }
+ sal_Bool IsNumeric() const {return m_bNumeric;}
+ sal_Bool IsDateTime() const {return m_bDateTime;}
+ sal_Bool IsObject() const {return m_bObject;}
+ sal_Bool IsHidden() const {return m_bHidden;}
+ sal_Int32 GetKey() const {return m_nFormatKey;}
+ const DbCellControllerRef& GetController() const {return m_bLocked ? s_xEmptyController : m_xController;}
+ const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& GetField() const {return m_xField;}
+ DbGridControl& GetParent() const {return m_rParent;}
+ FmXGridCell* GetCell() const {return m_pCell;}
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn > GetCurrentFieldValue() const;
+
+ // Zeichnen eines Feldes an einer Position, ist ein ::com::sun::star::sdbcx::View gesetzt
+ // uebernimmt dieser das Zeichnen, z.B. fuer CheckBoxen
+ void Paint(OutputDevice& rDev,
+ const Rectangle& rRect,
+ const DbGridRow* pRow,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+
+
+ // Inititialierung im alive mode
+ // Ist kein ColumnController gesetzt, wird eine DefaultInitialisierung
+ // vorgenommen
+ void CreateControl(sal_Int32 _nFieldPos, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xField, sal_Int32 nTypeId);
+ void UpdateControl()
+ {
+ ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xField(m_xField);
+ CreateControl(m_nFieldPos, xField, m_nTypeId);
+ }
+
+ // Editieren einer Zelle
+ void UpdateFromField(const DbGridRow* pRow, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+ sal_Bool Commit();
+
+ // freigeben aller Daten, die fuer den AliveMode noetig sind
+ void Clear();
+
+ XubString GetCellText(const DbGridRow* pRow, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter) const;
+ XubString GetCellText(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& xField, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter) const;
+
+ void SetReadOnly(sal_Bool bRead){m_bReadOnly = bRead;}
+ void SetObject(sal_Int16 nPos) {m_bObject = m_bReadOnly = sal_True; m_nFieldPos = nPos;}
+ void ImplInitSettings(Window* pParent, sal_Bool bFont, sal_Bool bForeground, sal_Bool bBackground);
+
+ // Properties, die auf den ::com::sun::star::frame::Controller durchschlagen koennen
+ sal_Int16 SetAlignment(sal_Int16 _nAlign);
+ // if _nAlign is -1, the alignment is calculated from the type of the field we are bound to
+ // the value really set is returned
+ sal_Int16 SetAlignmentFromModel(sal_Int16 nStandardAlign);
+ // set the alignment according to the "Align"-property of m_xModel, use the given standard
+ // alignment if the property if void, return the really set alignment
+
+ // column locking
+ sal_Bool isLocked() const { return m_bLocked; }
+ void setLock(sal_Bool _bLock);
+};
+
+//==================================================================
+// DbCellControl, liefert die Daten fuer einen CellController
+// wird in der Regel nur fr komplexe Controls wie z.B ComboBoxen
+// benoetigt
+//==================================================================
+class DbCellControl
+{
+protected:
+ DbGridColumn& m_rColumn;
+ Window* m_pWindow;
+ Window* m_pPainter;
+ sal_Bool m_bTransparent : 1;
+ sal_Bool m_bAlignedController : 1;
+
+public:
+ DbCellControl(DbGridColumn& _rColumn, sal_Bool _bText = sal_True)
+ :m_rColumn(_rColumn)
+ ,m_pWindow(NULL)
+ ,m_pPainter(NULL)
+ ,m_bTransparent(sal_False)
+ ,m_bAlignedController(sal_True){}
+
+ virtual ~DbCellControl();
+ Window* GetControl() const {return m_pWindow;}
+
+ sal_Bool IsAlignedController() const { return m_bAlignedController; }
+ void AlignControl(sal_Int16 nAlignment);
+
+ // Initialisieren bevor ein Control angezeigt wird
+ virtual void Init(Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor);
+ virtual DbCellControllerRef CreateController() const = 0;
+
+ // Schreiben des Wertes in das Model
+ virtual sal_Bool Commit() = 0;
+
+ // Formatting the field data to output text
+ virtual XubString GetFormatText(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter, Color** ppColor = NULL) { return XubString(); }
+
+ virtual void Update(){}
+ // Refresh the control by the field data
+ virtual void UpdateFromField(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter) {}
+
+ // Painten eines Zellinhalts im vorgegeben Rechteck
+ virtual void Paint(OutputDevice& rDev, const Rectangle& rRect);
+ virtual void Paint(OutputDevice& rDev, const Rectangle& rRect, const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter)
+ { Paint(rDev, rRect); }
+
+ void ImplInitSettings(Window* pParent, sal_Bool bFont, sal_Bool bForeground, sal_Bool bBackground);
+
+protected:
+ double GetValue(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter) const;
+};
+
+//==================================================================
+class DbFormattedField : public DbCellControl, public ::utl::OPropertyChangeListener
+{
+protected:
+ ::utl::OPropertyChangeMultiplexer* m_pFormatListener;
+ ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > m_xSupplier;
+ sal_Int16 m_nKeyType;
+
+ ::osl::Mutex m_aDummy;
+ // only for the base class OPropertyChangeListener, in UNO3 we can't use the SolarMutex anymore
+
+public:
+ DbFormattedField(DbGridColumn& _rColumn);
+ virtual ~DbFormattedField();
+
+ virtual void Init(Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor );
+ virtual XubString GetFormatText(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter, Color** ppColor = NULL);
+ virtual void UpdateFromField(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+ virtual DbCellControllerRef CreateController() const;
+ virtual sal_Bool Commit();
+
+protected:
+ virtual void _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent& evt) throw(::com::sun::star::uno::RuntimeException);
+};
+
+//==================================================================
+class DbTextField : public DbCellControl
+{
+ sal_Int16 m_nKeyType;
+public:
+ DbTextField(DbGridColumn& _rColumn);
+ virtual void Init(Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor );
+ virtual XubString GetFormatText(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter, Color** ppColor = NULL);
+ virtual void UpdateFromField(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+ virtual DbCellControllerRef CreateController() const;
+ virtual sal_Bool Commit();
+};
+
+//==================================================================
+class DbCheckBox : public DbCellControl
+{
+public:
+ DbCheckBox(DbGridColumn& _rColumn):DbCellControl(_rColumn, sal_True) { m_bAlignedController = sal_False; };
+ virtual void Init(Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor );
+ virtual void UpdateFromField(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+ virtual DbCellControllerRef CreateController() const;
+ virtual sal_Bool Commit();
+ virtual void Paint(OutputDevice& rDev, const Rectangle& rRect,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+
+};
+
+//==================================================================
+class DbComboBox :public DbCellControl
+ ,public ::utl::OPropertyChangeListener
+{
+ sal_Int16 m_nKeyType;
+ ::osl::Mutex m_aDummy;
+ // only for the base class OPropertyChangeListener, in UNO3 we can't use the SolarMutex anymore
+
+public:
+ DbComboBox(DbGridColumn& _rColumn);
+
+ virtual void Init(Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor );
+ virtual XubString GetFormatText(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter, Color** ppColor = NULL);
+ virtual void UpdateFromField(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+ virtual DbCellControllerRef CreateController() const;
+ virtual sal_Bool Commit();
+
+// OPropertyChangeListener
+ virtual void _propertyChanged( const ::com::sun::star::beans::PropertyChangeEvent& ) throw(::com::sun::star::uno::RuntimeException);
+
+ void SetList(const ::com::sun::star::uno::Any& rItems);
+};
+
+//==================================================================
+class DbListBox : public DbCellControl,
+ public ::utl::OPropertyChangeListener
+{
+ sal_Bool m_bBound : 1;
+ ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aValueList;
+ ::osl::Mutex m_aDummy;
+ // only for the base class OPropertyChangeListener, in UNO3 we can't use the SolarMutex anymore
+
+public:
+ DbListBox(DbGridColumn& _rColumn);
+
+ virtual void Init(Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor );
+ virtual XubString GetFormatText(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter, Color** ppColor = NULL);
+ virtual void UpdateFromField(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+ virtual DbCellControllerRef CreateController() const;
+ virtual sal_Bool Commit();
+
+// OPropertyChangeListener
+ virtual void _propertyChanged( const ::com::sun::star::beans::PropertyChangeEvent& ) throw(::com::sun::star::uno::RuntimeException);
+
+ void SetList(const ::com::sun::star::uno::Any& rItems);
+};
+
+//==================================================================
+class DbPatternField : public DbCellControl
+{
+public:
+ DbPatternField(DbGridColumn& _rColumn):DbCellControl(_rColumn){};
+ virtual void Init(Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor );
+ virtual XubString GetFormatText(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter, Color** ppColor = NULL);
+ virtual void UpdateFromField(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+ virtual DbCellControllerRef CreateController() const;
+ virtual sal_Bool Commit();
+};
+
+//==================================================================
+class DbDateField : public DbCellControl
+{
+public:
+ DbDateField(DbGridColumn& _rColumn):DbCellControl(_rColumn){};
+ virtual void Init(Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor );
+ virtual XubString GetFormatText(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter, Color** ppColor = NULL);
+ virtual void UpdateFromField(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+ virtual DbCellControllerRef CreateController() const;
+ virtual sal_Bool Commit();
+};
+
+//==================================================================
+class DbTimeField : public DbCellControl
+{
+public:
+ DbTimeField(DbGridColumn& _rColumn):DbCellControl(_rColumn){};
+ virtual void Init(Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor );
+ virtual XubString GetFormatText(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter, Color** ppColor = NULL);
+ virtual void UpdateFromField(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+ virtual DbCellControllerRef CreateController() const;
+ virtual sal_Bool Commit();
+};
+
+//==================================================================
+class DbCurrencyField : public DbCellControl
+{
+ sal_Int16 m_nScale;
+
+public:
+ DbCurrencyField(DbGridColumn& _rColumn):DbCellControl(_rColumn),m_nScale(0){};
+ virtual void Init(Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor );
+ virtual XubString GetFormatText(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter, Color** ppColor = NULL);
+ virtual void UpdateFromField(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+ virtual DbCellControllerRef CreateController() const;
+ virtual sal_Bool Commit();
+
+protected:
+ double GetCurrency(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter) const;
+};
+
+//==================================================================
+class DbNumericField : public DbCellControl
+{
+public:
+ DbNumericField(DbGridColumn& _rColumn):DbCellControl(_rColumn){};
+ virtual void Init(Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor );
+ virtual XubString GetFormatText(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter, Color** ppColor = NULL);
+ virtual void UpdateFromField(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+ virtual DbCellControllerRef CreateController() const;
+ virtual sal_Bool Commit();
+};
+
+//==================================================================
+class DbFilterField : public DbCellControl
+{
+ ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aValueList;
+ XubString m_aText;
+ Link m_aCommitLink;
+ sal_Int16 m_nControlClass;
+ sal_Bool m_bFilterList : 1;
+ sal_Bool m_bFilterListFilled : 1;
+ sal_Bool m_bBound : 1;
+
+public:
+ DbFilterField(DbGridColumn& _rColumn);
+ virtual ~DbFilterField();
+
+ virtual void Init(Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet >& xCursor);
+ virtual DbCellControllerRef CreateController() const;
+ virtual void Paint(OutputDevice& rDev, const Rectangle& rRect);
+ virtual sal_Bool Commit();
+ virtual void Update();
+
+ const XubString& GetText() const {return m_aText;}
+ void SetText(const XubString& rText);
+
+ void SetCommitHdl( const Link& rLink ) { m_aCommitLink = rLink; }
+ const Link& GetCommitHdl() const { return m_aCommitLink; }
+
+protected:
+ void SetList(const ::com::sun::star::uno::Any& rItems, sal_Bool bComboBox);
+ void CreateControl(Window* pParent, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xModel);
+ DECL_LINK( OnClick, void* );
+};
+
+//==================================================================
+// Base class providing the access to a grid cell
+//==================================================================
+class FmXGridCell : public ::cppu::OComponentHelper,
+ public ::com::sun::star::awt::XControl,
+ public ::com::sun::star::form::XBoundControl
+{
+protected:
+ ::osl::Mutex m_aMutex;
+ DbGridColumn* m_pColumn;
+ DbCellControl* m_pCellControl;
+
+public:
+ TYPEINFO();
+ FmXGridCell(DbGridColumn* pColumn, DbCellControl* pControl);
+ virtual ~FmXGridCell();
+
+ DECLARE_UNO3_AGG_DEFAULTS(FmXGridCell, OComponentHelper);
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& _rType ) throw(::com::sun::star::uno::RuntimeException);
+
+// XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException);
+
+// OComponentHelper
+ virtual void SAL_CALL disposing();
+
+// ::com::sun::star::lang::XComponent
+ virtual void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException){OComponentHelper::dispose();}
+ virtual void SAL_CALL addEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener)throw(::com::sun::star::uno::RuntimeException) { OComponentHelper::addEventListener(aListener);}
+ virtual void SAL_CALL removeEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener)throw(::com::sun::star::uno::RuntimeException) { OComponentHelper::removeEventListener(aListener);}
+
+// ::com::sun::star::awt::XControl
+ virtual void SAL_CALL setContext(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Context) throw(::com::sun::star::uno::RuntimeException){}
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getContext() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL createPeer(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XToolkit >& Toolkit, const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer >& Parent) throw(::com::sun::star::uno::RuntimeException){}
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer > SAL_CALL getPeer() {return ::com::sun::star::uno::Reference< ::com::sun::star::awt::XWindowPeer > ();}
+ virtual sal_Bool SAL_CALL setModel(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel >& Model) {return sal_False;}
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel > SAL_CALL getModel();
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::awt::XView > SAL_CALL getView() {return ::com::sun::star::uno::Reference< ::com::sun::star::awt::XView > ();}
+ virtual void SAL_CALL setDesignMode(sal_Bool bOn) {}
+ virtual sal_Bool SAL_CALL isDesignMode() {return sal_False;}
+ virtual sal_Bool SAL_CALL isTransparent() {return sal_False;}
+
+// ::com::sun::star::form::XBoundControl
+ virtual sal_Bool SAL_CALL getLock() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setLock(sal_Bool _bLock) throw(::com::sun::star::uno::RuntimeException);
+
+ sal_Bool Commit() {return m_pCellControl->Commit();}
+ void ImplInitSettings(Window* pParent, sal_Bool bFont, sal_Bool bForeground, sal_Bool bBackground)
+ { m_pCellControl->ImplInitSettings(pParent, bFont, bForeground, bBackground); }
+
+ sal_Bool IsAlignedController() const { return m_pCellControl->IsAlignedController(); }
+ void AlignControl(sal_Int16 nAlignment)
+ { m_pCellControl->AlignControl(nAlignment);}
+};
+
+//==================================================================
+class FmXDataCell : public FmXGridCell
+{
+public:
+ TYPEINFO();
+ FmXDataCell(DbGridColumn* pColumn, DbCellControl* pControl):FmXGridCell(pColumn, pControl){}
+
+ virtual void Paint(OutputDevice& rDev,
+ const Rectangle& rRect,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& xField,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+
+ void UpdateFromField(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& xField,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter)
+ { m_pCellControl->UpdateFromField(xField, xFormatter); }
+
+protected:
+ void UpdateFromColumn();
+};
+
+//==================================================================
+class FmXTextCell : public FmXDataCell
+{
+public:
+ TYPEINFO();
+ FmXTextCell(DbGridColumn* pColumn, DbCellControl* pControl):FmXDataCell(pColumn, pControl){}
+
+ virtual void Paint(OutputDevice& rDev,
+ const Rectangle& rRect,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& xField,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter);
+
+ XubString GetText(const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XColumn >& _xVariant,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& xFormatter,
+ Color** ppColor = NULL)
+ {return m_pCellControl->GetFormatText(_xVariant, xFormatter, ppColor);}
+};
+
+//==================================================================
+class FmXEditCell : public FmXTextCell,
+ public ::com::sun::star::awt::XTextComponent
+{
+protected:
+ ::cppu::OInterfaceContainerHelper m_aTextListeners;
+ Edit* m_pEdit;
+
+public:
+ FmXEditCell(DbGridColumn* pColumn, DbCellControl* pControl);
+ ~FmXEditCell();
+
+ DECLARE_UNO3_AGG_DEFAULTS(FmXEditCell, FmXTextCell);
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& _rType ) throw(::com::sun::star::uno::RuntimeException);
+
+// XTypeProvider
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+
+// OComponentHelper
+ virtual void SAL_CALL disposing();
+
+// ::com::sun::star::awt::XTextComponent
+ virtual void SAL_CALL addTextListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextListener >& l) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeTextListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextListener >& l) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setText(const ::rtl::OUString& aText) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL insertText(const ::com::sun::star::awt::Selection& Sel, const ::rtl::OUString& Text) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getText() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getSelectedText() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSelection(const ::com::sun::star::awt::Selection& aSelection) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Selection SAL_CALL getSelection() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isEditable() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setEditable(sal_Bool bEditable) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setMaxTextLen(sal_Int16 nLen) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getMaxTextLen() throw(::com::sun::star::uno::RuntimeException);
+
+protected:
+ DECL_LINK( OnTextChanged, void* );
+};
+
+//==================================================================
+class FmXCheckBoxCell : public FmXDataCell,
+ public ::com::sun::star::awt::XCheckBox
+{
+ ::cppu::OInterfaceContainerHelper m_aItemListeners;
+ CheckBox* m_pBox;
+
+public:
+ FmXCheckBoxCell(DbGridColumn* pColumn, DbCellControl* pControl);
+ ~FmXCheckBoxCell();
+
+// UNO
+ DECLARE_UNO3_AGG_DEFAULTS(FmXCheckBoxCell, FmXDataCell);
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& _rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+
+// OComponentHelper
+ virtual void SAL_CALL disposing();
+
+// ::com::sun::star::awt::XCheckBox
+ virtual void SAL_CALL addItemListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XItemListener >& l) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeItemListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XItemListener >& l) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getState() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setState(sal_Int16 n) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setLabel(const ::rtl::OUString& Label) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL enableTriState(sal_Bool b) throw(::com::sun::star::uno::RuntimeException);
+
+protected:
+ DECL_LINK( OnClick, void* );
+};
+
+//==================================================================
+class FmXListBoxCell : public FmXTextCell,
+ public ::com::sun::star::awt::XListBox
+{
+ ::cppu::OInterfaceContainerHelper m_aItemListeners,
+ m_aActionListeners;
+ ListBox* m_pBox;
+
+public:
+ FmXListBoxCell(DbGridColumn* pColumn, DbCellControl* pControl);
+ ~FmXListBoxCell();
+
+ DECLARE_UNO3_AGG_DEFAULTS(FmXListBoxCell, FmXTextCell);
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& _rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+
+// OComponentHelper
+ virtual void SAL_CALL disposing();
+
+// ::com::sun::star::awt::XListBox
+ virtual void SAL_CALL addItemListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XItemListener >& l) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeItemListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XItemListener >& l) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addActionListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XActionListener >& l) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeActionListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XActionListener >& l) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addItem(const ::rtl::OUString& aItem, sal_Int16 nPos) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL addItems(const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aItems, sal_Int16 nPos) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeItems(sal_Int16 nPos, sal_Int16 nCount) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getItemCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getItem(sal_Int16 nPos) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getItems() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getSelectedItemPos() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< sal_Int16 > SAL_CALL getSelectedItemsPos() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getSelectedItem() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSelectedItems() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL SAL_CALL selectItemPos(sal_Int16 nPos, sal_Bool bSelect) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL SAL_CALL selectItemsPos(const ::com::sun::star::uno::Sequence< sal_Int16 >& aPositions, sal_Bool bSelect) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL SAL_CALL selectItem(const ::rtl::OUString& aItem, sal_Bool bSelect) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isMutipleMode() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL SAL_CALL setMultipleMode(sal_Bool bMulti) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getDropDownLineCount() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL SAL_CALL setDropDownLineCount(sal_Int16 nLines) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL SAL_CALL makeVisible(sal_Int16 nEntry) throw(::com::sun::star::uno::RuntimeException);
+
+protected:
+ DECL_LINK( OnSelect, void* );
+ DECL_LINK( OnDoubleClick, void* );
+};
+
+//==================================================================
+class FmXFilterCell :public FmXGridCell
+ ,public ::com::sun::star::awt::XTextComponent
+ ,public ::com::sun::star::lang::XUnoTunnel
+{
+ ::cppu::OInterfaceContainerHelper m_aTextListeners;
+public:
+ TYPEINFO();
+ FmXFilterCell(DbGridColumn* pColumn = NULL, DbCellControl* pControl = NULL);
+ ~FmXFilterCell();
+
+ DECLARE_UNO3_AGG_DEFAULTS(FmXFilterCell, FmXGridCell);
+ virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& _rType ) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
+
+// XUnoTunnel
+ virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
+
+// helpers for XUnoTunnel
+ static const ::com::sun::star::uno::Sequence<sal_Int8>& getUnoTunnelId();
+ static FmXFilterCell* getImplementation(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControl >& _rxObject);
+
+// Painting the filter text
+ void Paint(OutputDevice& rDev, const Rectangle& rRect);
+ void Update(){m_pCellControl->Update();}
+
+// OComponentHelper
+ virtual void SAL_CALL disposing();
+
+// ::com::sun::star::awt::XTextComponent
+ virtual void SAL_CALL addTextListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextListener >& l) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeTextListener(const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XTextListener >& l) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setText(const ::rtl::OUString& aText) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL insertText(const ::com::sun::star::awt::Selection& Sel, const ::rtl::OUString& Text) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getText() throw(::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL getSelectedText() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setSelection(const ::com::sun::star::awt::Selection& aSelection) throw(::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Selection SAL_CALL getSelection() throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Bool SAL_CALL isEditable() throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setEditable(sal_Bool bEditable) throw(::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL setMaxTextLen(sal_Int16 nLen) throw(::com::sun::star::uno::RuntimeException);
+ virtual sal_Int16 SAL_CALL getMaxTextLen() throw(::com::sun::star::uno::RuntimeException);
+
+protected:
+ DECL_LINK( OnCommit, void* );
+};
+
+#endif // _SVX_GRIDCELL_HXX
+
diff --git a/svx/source/inc/gridcols.hxx b/svx/source/inc/gridcols.hxx
new file mode 100644
index 000000000000..bfb8d00cab7f
--- /dev/null
+++ b/svx/source/inc/gridcols.hxx
@@ -0,0 +1,98 @@
+/*************************************************************************
+ *
+ * $RCSfile: gridcols.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:20 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_GRIDCOLS_HXX
+#define _SVX_GRIDCOLS_HXX
+
+#ifndef _FM_STATIC_HXX_
+#include "fmstatic.hxx"
+#endif
+
+// liste der moeglichen Controls
+DECLARE_CONSTASCII_USTRING(FM_COL_TEXTFIELD);
+DECLARE_CONSTASCII_USTRING(FM_COL_CHECKBOX);
+DECLARE_CONSTASCII_USTRING(FM_COL_COMBOBOX);
+DECLARE_CONSTASCII_USTRING(FM_COL_LISTBOX);
+DECLARE_CONSTASCII_USTRING(FM_COL_NUMERICFIELD);
+DECLARE_CONSTASCII_USTRING(FM_COL_DATEFIELD);
+DECLARE_CONSTASCII_USTRING(FM_COL_TIMEFIELD);
+DECLARE_CONSTASCII_USTRING(FM_COL_CURRENCYFIELD);
+DECLARE_CONSTASCII_USTRING(FM_COL_PATTERNFIELD);
+DECLARE_CONSTASCII_USTRING(FM_COL_FORMATTEDFIELD);
+
+
+// column type ids
+#define TYPE_CHECKBOX 0
+#define TYPE_COMBOBOX 1
+#define TYPE_CURRENCYFIELD 2
+#define TYPE_DATEFIELD 3
+#define TYPE_FORMATTEDFIELD 4
+#define TYPE_LISTBOX 5
+#define TYPE_NUMERICFIELD 6
+#define TYPE_PATTERNFIELD 7
+#define TYPE_TEXTFIELD 8
+#define TYPE_TIMEFIELD 9
+
+//------------------------------------------------------------------------------
+sal_Int32 getColumnTypeByModelName(const ::rtl::OUString& aModelName);
+
+
+#endif // _SVX_GRIDCOLS_HXX
+
diff --git a/svx/source/inc/hlmarkwn.hrc b/svx/source/inc/hlmarkwn.hrc
new file mode 100644
index 000000000000..788832979fe8
--- /dev/null
+++ b/svx/source/inc/hlmarkwn.hrc
@@ -0,0 +1,68 @@
+/*************************************************************************
+ *
+ * $RCSfile: hlmarkwn.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:20 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#define BT_APPLY 1
+#define BT_CLOSE 2
+#define TLB_MARK 3
+
+//#define HYPERLINK_BMP_EXPAND 301
+//#define HYPERLINK_BMP_COLLAPSE 302
+
diff --git a/svx/source/inc/hlmarkwn.hxx b/svx/source/inc/hlmarkwn.hxx
new file mode 100644
index 000000000000..fbba0e174643
--- /dev/null
+++ b/svx/source/inc/hlmarkwn.hxx
@@ -0,0 +1,159 @@
+/*************************************************************************
+ *
+ * $RCSfile: hlmarkwn.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:20 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _SVX_BKWND_HYPERLINK_HXX
+#define _SVX_BKWND_HYPERLINK_HXX
+
+#ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
+#include <com/sun/star/container/XNameAccess.hpp>
+#endif
+
+#ifndef _SV_FLOATWIN_HXX
+#include <vcl/floatwin.hxx>
+#endif
+#ifndef _SV_BUTTON_HXX
+#include <vcl/button.hxx>
+#endif
+#ifndef _SVTREEBOX_HXX
+#include <svtools/svtreebx.hxx>
+#endif
+
+#ifndef _RTL_USTRING_
+#include <rtl/ustring>
+#endif
+
+class SvxHyperlinkTabPageBase;
+
+#define LERR_NOERROR 0
+#define LERR_NOENTRIES 1
+#define LERR_DOCNOTOPEN 2
+
+//########################################################################
+//# #
+//# Tree-Window #
+//# #
+//########################################################################
+
+class SvxHlinkDlgMarkWnd;
+
+class SvxHlmarkTreeLBox : public SvTreeListBox
+{
+private:
+ SvxHlinkDlgMarkWnd* mpParentWnd;
+
+public:
+ SvxHlmarkTreeLBox( Window* pParent, const ResId& rResId );
+
+ virtual void Paint( const Rectangle& rRect );
+};
+
+//########################################################################
+//# #
+//# Window-Class #
+//# #
+//########################################################################
+
+class SvxHlinkDlgMarkWnd : public FloatingWindow
+{
+private:
+ friend SvxHlmarkTreeLBox;
+
+ PushButton maBtApply;
+ PushButton maBtClose;
+ //SvTreeListBox maLbTree;
+ SvxHlmarkTreeLBox maLbTree;
+
+ BOOL mbUserMoved;
+ BOOL mbFirst;
+
+ SvxHyperlinkTabPageBase* mpParent;
+
+ String maStrLastURL;
+
+ USHORT mnError;
+
+protected:
+ BOOL RefreshFromDoc( ::rtl::OUString aURL );
+
+ SvLBoxEntry* FindEntry ( String aStrName );
+ void ClearTree();
+ int FillTree( ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > xLinks, SvLBoxEntry* pParentEntry =NULL );
+
+ virtual void Move ();
+
+ DECL_LINK (ClickApplyHdl_Impl, void * );
+ DECL_LINK (ClickCloseHdl_Impl, void * );
+
+public:
+ SvxHlinkDlgMarkWnd (SvxHyperlinkTabPageBase *pParent);
+ ~SvxHlinkDlgMarkWnd();
+
+ const BOOL MoveTo ( Point aNewPos );
+ void RefreshTree ( String aStrURL );
+ void SelectEntry ( String aStrMark );
+
+ const BOOL ConnectToDialog( BOOL bDoit = TRUE );
+
+ USHORT SetError( USHORT nError);
+};
+
+
+#endif // _SVX_BKWND_HYPERLINK_HXX
diff --git a/svx/source/inc/hyperdlg.hrc b/svx/source/inc/hyperdlg.hrc
new file mode 100644
index 000000000000..bbbba33f4d23
--- /dev/null
+++ b/svx/source/inc/hyperdlg.hrc
@@ -0,0 +1,124 @@
+/*************************************************************************
+ *
+ * $RCSfile: hyperdlg.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:20 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+/* Tabpage : Hyperlink - Internet */
+
+#define GRP_LINKTYPE 1
+#define RB_LINKTYP_INTERNET 2
+#define RB_LINKTYP_FTP 3
+#define RB_LINKTYP_TELNET 4
+#define FT_TARGET_HTML 5
+#define CB_TARGET_HTML 6
+#define FT_LOGIN 7
+#define ED_LOGIN 8
+#define FT_PASSWD 9
+#define ED_PASSWD 10
+#define CBX_ANONYMOUS 11
+#define BTN_BROWSE 12
+#define BTN_TARGET 13
+
+/* Tabpage : Hyperlink - Mail & News */
+
+#define GRP_MAILNEWS 1
+#define RB_LINKTYP_MAIL 2
+#define RB_LINKTYP_NEWS 3
+#define FT_RECEIVER 4
+#define CB_RECEIVER 5
+#define FT_SUBJECT 6
+#define ED_SUBJECT 7
+#define BTN_ADRESSBOOK 8
+
+/* Tabpage : Hyperlink - Document */
+
+#define GRP_DOCUMENT 1
+#define FT_PATH_DOC 2
+#define CB_PATH_DOC 3
+#define BTN_FILEOPEN 4
+#define GRP_TARGET 5
+#define FT_TARGET_DOC 6
+#define ED_TARGET_DOC 7
+#define FT_URL 8
+#define FT_FULL_URL 9
+
+/* Tabpage : Hyperlink - New document */
+
+#define GRP_NEWDOCUMENT 1
+#define RB_EDITNOW 2
+#define RB_EDITLATER 3
+#define FT_PATH_NEWDOC 4
+#define ED_PATH_NEWDOC 5
+#define FT_DOCUMENT_TYPES 6
+#define LB_DOCUMENT_TYPES 7
+#define BTN_CREATE 8
+
+/* Tabpage-section : Hyperlink - more justifications */
+
+#define GRP_MORE 30
+#define FT_FRAME 31
+#define CB_FRAME 32
+#define FT_FORM 33
+#define LB_FORM 34
+#define FT_INDICATION 35
+#define ED_INDICATION 36
+#define FT_TEXT 37
+#define ED_TEXT 38
+#define BTN_SCRIPT 39
+
diff --git a/svx/source/inc/linectrl.hrc b/svx/source/inc/linectrl.hrc
new file mode 100644
index 000000000000..d7f84b730432
--- /dev/null
+++ b/svx/source/inc/linectrl.hrc
@@ -0,0 +1,62 @@
+/*************************************************************************
+ *
+ * $RCSfile: linectrl.hrc,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:20 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#define RID_SVXCTRL_LINECTRL 257
+
diff --git a/svx/source/inc/tabwin.hxx b/svx/source/inc/tabwin.hxx
new file mode 100644
index 000000000000..b376e40f832b
--- /dev/null
+++ b/svx/source/inc/tabwin.hxx
@@ -0,0 +1,173 @@
+/*************************************************************************
+ *
+ * $RCSfile: tabwin.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:20 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_TABWIN_HXX
+#define _SVX_TABWIN_HXX
+
+#ifndef _SVTREEBOX_HXX //autogen
+#include <svtools/svtreebx.hxx>
+#endif
+
+#ifndef _SV_FLOATWIN_HXX //autogen
+#include <vcl/floatwin.hxx>
+#endif
+
+#ifndef _BASEDLGS_HXX //autogen
+#include <sfx2/basedlgs.hxx>
+#endif
+
+#ifndef _SFX_CHILDWIN_HXX //autogen
+#include <sfx2/childwin.hxx>
+#endif
+
+#ifndef _SFXCTRLITEM_HXX //autogen
+#include <sfx2/ctrlitem.hxx>
+#endif
+
+#ifndef _COM_SUN_STAR_FORM_XFORM_HPP_
+#include <com/sun/star/form/XForm.hpp>
+#endif
+
+//#ifndef _SVX_FMTOOLS_HXX
+//#include "fmtools.hxx"
+//#endif
+
+#include <unotools/propmultiplex.hxx>
+
+//==================================================================
+class FmFieldWin;
+class FmFieldWinListBox: public SvTreeListBox
+{
+ FmFieldWin* pTabWin;
+
+protected:
+ virtual void Command( const CommandEvent& rEvt );
+
+public:
+ FmFieldWinListBox( FmFieldWin* pParent );
+ virtual ~FmFieldWinListBox();
+
+ virtual sal_Bool QueryDrop( DropEvent& rDEvt )
+ {
+ return (!nDragDropMode) ? sal_False : SvTreeListBox::QueryDrop(rDEvt);
+ }
+ // this prevents an assertion the base class makes (unjustified ?) to fail - 67071 - fs - 21.06.99
+};
+
+//========================================================================
+class FmFormShell;
+class FmFieldWinData
+{
+public:
+ FmFieldWinData();
+ ~FmFieldWinData();
+};
+
+//========================================================================
+class FmFieldWin : public SfxFloatingWindow,
+ public SfxControllerItem,
+ public ::utl::OPropertyChangeListener
+{
+ ::osl::Mutex m_aMutex;
+ FmFieldWinListBox* pListBox;
+ FmFieldWinData* pData;
+ ::rtl::OUString m_aDatabaseName,
+ m_aObjectName;
+ sal_Int32 m_nObjectType;
+
+ ::utl::OPropertyChangeMultiplexer* m_pChangeListener;
+
+public:
+ FmFieldWin(SfxBindings *pBindings,
+ SfxChildWindow *pMgr, Window* pParent);
+
+ virtual ~FmFieldWin();
+ virtual void Resize();
+ virtual sal_Bool Close();
+ virtual void StateChanged(sal_uInt16 nSID, SfxItemState eState,
+ const SfxPoolItem* pState);
+
+ FmFieldWinData* GetData() const {return pData;}
+
+ sal_Bool Update(FmFormShell*);
+ sal_Bool Update(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm > &);
+ void FillInfo( SfxChildWinInfo& rInfo ) const;
+
+ const ::rtl::OUString& GetDatabaseName() const { return m_aDatabaseName; }
+ const ::rtl::OUString& GetObjectName() const { return m_aObjectName; }
+ sal_Int32 GetObjectType() const { return m_nObjectType; }
+
+ // FmXChangeListener
+ virtual void _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent& evt) throw( ::com::sun::star::uno::RuntimeException );
+
+};
+
+//========================================================================
+class FmFieldWinMgr : public SfxChildWindow
+{
+public:
+ FmFieldWinMgr(Window *pParent, sal_uInt16 nId,
+ SfxBindings *pBindings, SfxChildWinInfo *pInfo);
+ SFX_DECL_CHILDWINDOW(FmFieldWinMgr);
+};
+
+
+#endif
+
diff --git a/svx/source/inc/tbxform.hxx b/svx/source/inc/tbxform.hxx
new file mode 100644
index 000000000000..e3e92cc84444
--- /dev/null
+++ b/svx/source/inc/tbxform.hxx
@@ -0,0 +1,249 @@
+/*************************************************************************
+ *
+ * $RCSfile: tbxform.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:20 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _SVX_TBXFORM_HXX
+#define _SVX_TBXFORM_HXX
+
+#ifndef _SFXTBXCTRL_HXX //autogen
+#include <sfx2/tbxctrl.hxx>
+#endif
+
+#ifndef _SFXTBXMGR_HXX //autogen
+#include <sfx2/tbxmgr.hxx>
+#endif
+
+#ifndef _SV_FIELD_HXX //autogen
+#include <vcl/field.hxx>
+#endif
+
+#ifndef _SV_DIALOG_HXX //autogen
+#include <vcl/dialog.hxx>
+#endif
+
+#ifndef _SV_BUTTON_HXX //autogen
+#include <vcl/button.hxx>
+#endif
+
+//========================================================================
+
+class FmInputRecordNoDialog : public ModalDialog
+{
+public:
+ FixedText m_aLabel;
+ NumericField m_aRecordNo;
+ OKButton m_aOk;
+ CancelButton m_aCancel;
+
+public:
+ FmInputRecordNoDialog(Window * pParent);
+
+ void SetValue(double dNew) { m_aRecordNo.SetValue(dNew); }
+ long GetValue() const { return m_aRecordNo.GetValue(); }
+};
+
+//========================================================================
+class SvxFmAbsRecWin : public NumericField
+{
+ SfxToolBoxControl* m_pController;
+ // for invalidating our content whe losing the focus
+public:
+ SvxFmAbsRecWin( Window* _pParent, SfxToolBoxControl* _pController );
+ ~SvxFmAbsRecWin();
+
+ virtual void KeyInput( const KeyEvent& rKeyEvt );
+ virtual void LoseFocus();
+
+protected:
+ virtual void FirePosition();
+};
+
+
+//========================================================================
+class SvxFmConfigWin : public SfxPopupWindow
+{
+private:
+ SfxToolBoxManager aTbx;
+ Link aSelectLink;
+
+ DECL_LINK( TbxSelectHdl, ToolBox* );
+
+public:
+ SvxFmConfigWin( USHORT nId, ResId aRIdWin, ResId aRIdTbx, SfxBindings& rBindings );
+ ~SvxFmConfigWin();
+
+ void StartSelection()
+ { aTbx.GetToolBox().StartSelection(); }
+ void Update();
+ virtual void PopupModeEnd();
+};
+
+
+//========================================================================
+class SvxFmTbxCtlConfig : public SfxToolBoxControl
+{
+private:
+ UINT16 nLastSlot;
+
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ SvxFmTbxCtlConfig( USHORT nId, ToolBox& rTbx, SfxBindings& );
+ ~SvxFmTbxCtlConfig() {}
+
+ virtual void Select( USHORT nModifier );
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+ virtual SfxPopupWindowType GetPopupWindowType() const;
+ virtual SfxPopupWindow* CreatePopupWindow();
+};
+
+//========================================================================
+class FixedText;
+class SvxFmTbxCtlAbsRec : public SfxToolBoxControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ SvxFmTbxCtlAbsRec( USHORT nId, ToolBox& rTbx, SfxBindings& rBindings );
+ ~SvxFmTbxCtlAbsRec();
+
+ virtual Window* CreateItemWindow( Window* pParent );
+
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+};
+
+//========================================================================
+class SvxFmTbxCtlRecText : public SfxToolBoxControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ SvxFmTbxCtlRecText( USHORT nId, ToolBox& rTbx, SfxBindings& rBindings );
+ ~SvxFmTbxCtlRecText();
+
+ virtual Window* CreateItemWindow( Window* pParent );
+};
+
+//========================================================================
+class SvxFmTbxCtlRecFromText : public SfxToolBoxControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ SvxFmTbxCtlRecFromText( USHORT nId, ToolBox& rTbx, SfxBindings& rBindings );
+ ~SvxFmTbxCtlRecFromText();
+
+ virtual Window* CreateItemWindow( Window* pParent );
+};
+
+//========================================================================
+class SvxFmTbxCtlRecTotal : public SfxToolBoxControl
+{
+ FixedText* pFixedText;
+
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ SvxFmTbxCtlRecTotal( USHORT nId, ToolBox& rTbx, SfxBindings& rBindings );
+ ~SvxFmTbxCtlRecTotal();
+
+ virtual Window* CreateItemWindow( Window* pParent );
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+};
+
+/*
+//========================================================================
+class SvxFmTbxCtlFilterText : public SfxToolBoxControl
+{
+ FixedText* pFixedText;
+ XubString aText;
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+
+ SvxFmTbxCtlFilterText( USHORT nId, ToolBox& rTbx, SfxBindings& rBindings );
+ ~SvxFmTbxCtlFilterText();
+
+ virtual Window* CreateItemWindow( Window* pParent );
+ virtual void StateChanged( USHORT nSID, SfxItemState eState,
+ const SfxPoolItem* pState );
+};
+*/
+
+//========================================================================
+class SvxFmTbxNextRec : public SfxToolBoxControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+ SvxFmTbxNextRec( USHORT nId, ToolBox& rTbx, SfxBindings& rBindings );
+};
+
+//========================================================================
+class SvxFmTbxPrevRec : public SfxToolBoxControl
+{
+public:
+ SFX_DECL_TOOLBOX_CONTROL();
+ SvxFmTbxPrevRec( USHORT nId, ToolBox& rTbx, SfxBindings& rBindings );
+};
+
+
+#endif
+
diff --git a/svx/source/inc/trace.hxx b/svx/source/inc/trace.hxx
new file mode 100644
index 000000000000..ff93051e9895
--- /dev/null
+++ b/svx/source/inc/trace.hxx
@@ -0,0 +1,110 @@
+/*************************************************************************
+ *
+ * $RCSfile: trace.hxx,v $
+ *
+ * $Revision: 1.1.1.1 $
+ *
+ * last change: $Author: hr $ $Date: 2000-09-18 17:01:20 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (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.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _TRACE_HXX_
+#define _TRACE_HXX_
+
+#if defined(DBG_UTIL) && defined(ENABLE_RANGE_TRACING)
+
+#ifndef _STRING_HXX
+#include <tools/string.hxx>
+#endif
+#ifndef _VOS_THREAD_HXX_
+#include <vos/thread.hxx>
+#endif
+#ifndef _VOS_MUTEX_HXX_
+#include <vos/mutex.hxx>
+#endif
+#ifndef _SVX_FMSTL_HXX
+#include "fmstl.hxx"
+#endif
+
+
+class Tracer
+{
+ ByteString m_sBlockDescription;
+
+ static map< ::vos::OThread::TThreadIdentifier, INT32, ::std::less< ::vos::OThread::TThreadIdentifier > >
+ s_aThreadIndents;
+
+ static ::vos::OMutex s_aMapSafety;
+
+public:
+ Tracer(const char* _pBlockDescription);
+ ~Tracer();
+
+ void TraceString(const char* _pMessage);
+ void TraceString1StringParam(const char* _pMessage, const char* _pParam);
+};
+
+
+#define TRACE_RANGE(range_description) Tracer aTrace(range_description);
+#define TRACE_RANGE_MESSAGE(message) { aTrace.TraceString(message); }
+#define TRACE_RANGE_MESSAGE1(message, param) { aTrace.TraceString1StringParam(message, param); }
+
+#else
+
+#define TRACE_RANGE(range_description) ;
+#define TRACE_RANGE_MESSAGE(message) ;
+#define TRACE_RANGE_MESSAGE1(message, param) ;
+
+#endif
+
+#endif // _TRACE_HXX_