1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski #ifndef _SVX_FMEXPL_HXX 24*b1cdbd2cSJim Jagielski #define _SVX_FMEXPL_HXX 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #include <svl/lstner.hxx> 27*b1cdbd2cSJim Jagielski #include <svl/brdcst.hxx> 28*b1cdbd2cSJim Jagielski #include <vcl/window.hxx> 29*b1cdbd2cSJim Jagielski #include <sfx2/childwin.hxx> 30*b1cdbd2cSJim Jagielski #include <svl/poolitem.hxx> 31*b1cdbd2cSJim Jagielski #include <sfx2/bindings.hxx> 32*b1cdbd2cSJim Jagielski #include <sfx2/dockwin.hxx> 33*b1cdbd2cSJim Jagielski #include <sfx2/ctrlitem.hxx> 34*b1cdbd2cSJim Jagielski #include <vcl/image.hxx> 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski /** === begin UNO includes === **/ 37*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameContainer.hpp> 38*b1cdbd2cSJim Jagielski #include <com/sun/star/form/XForm.hpp> 39*b1cdbd2cSJim Jagielski #include <com/sun/star/form/XFormComponent.hpp> 40*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyChangeEvent.hpp> 41*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XContainerListener.hpp> 42*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XContainer.hpp> 43*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertyChangeListener.hpp> 44*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XIndexContainer.hpp> 45*b1cdbd2cSJim Jagielski /** === end UNO includes === **/ 46*b1cdbd2cSJim Jagielski 47*b1cdbd2cSJim Jagielski #include <svtools/svtreebx.hxx> 48*b1cdbd2cSJim Jagielski 49*b1cdbd2cSJim Jagielski #include <vcl/dialog.hxx> 50*b1cdbd2cSJim Jagielski #include <vcl/group.hxx> 51*b1cdbd2cSJim Jagielski #include <vcl/button.hxx> 52*b1cdbd2cSJim Jagielski #include <vcl/fixed.hxx> 53*b1cdbd2cSJim Jagielski #include <vcl/edit.hxx> 54*b1cdbd2cSJim Jagielski #include <vcl/dockwin.hxx> 55*b1cdbd2cSJim Jagielski #include <svx/fmview.hxx> 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski #include "fmexch.hxx" 58*b1cdbd2cSJim Jagielski 59*b1cdbd2cSJim Jagielski class SdrObjListIter; 60*b1cdbd2cSJim Jagielski class FmFormShell; 61*b1cdbd2cSJim Jagielski class SdrObject; 62*b1cdbd2cSJim Jagielski class FmFormModel; 63*b1cdbd2cSJim Jagielski class FmFormView; 64*b1cdbd2cSJim Jagielski class SdrMarkList; 65*b1cdbd2cSJim Jagielski 66*b1cdbd2cSJim Jagielski //======================================================================== 67*b1cdbd2cSJim Jagielski class FmEntryData; 68*b1cdbd2cSJim Jagielski class FmNavInsertedHint : public SfxHint 69*b1cdbd2cSJim Jagielski { 70*b1cdbd2cSJim Jagielski FmEntryData* pEntryData; 71*b1cdbd2cSJim Jagielski sal_uInt32 nPos; 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski public: 74*b1cdbd2cSJim Jagielski TYPEINFO(); 75*b1cdbd2cSJim Jagielski FmNavInsertedHint( FmEntryData* pInsertedEntryData, sal_uInt32 nRelPos ); 76*b1cdbd2cSJim Jagielski virtual ~FmNavInsertedHint(); 77*b1cdbd2cSJim Jagielski GetEntryData() const78*b1cdbd2cSJim Jagielski FmEntryData* GetEntryData() const { return pEntryData; } GetRelPos() const79*b1cdbd2cSJim Jagielski sal_uInt32 GetRelPos() const { return nPos; } 80*b1cdbd2cSJim Jagielski }; 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski //======================================================================== 83*b1cdbd2cSJim Jagielski class FmNavModelReplacedHint : public SfxHint 84*b1cdbd2cSJim Jagielski { 85*b1cdbd2cSJim Jagielski FmEntryData* pEntryData; // die Daten des Eintrages, der ein neues Model bekommen hat 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski public: 88*b1cdbd2cSJim Jagielski TYPEINFO(); 89*b1cdbd2cSJim Jagielski FmNavModelReplacedHint( FmEntryData* pAffectedEntryData ); 90*b1cdbd2cSJim Jagielski virtual ~FmNavModelReplacedHint(); 91*b1cdbd2cSJim Jagielski GetEntryData() const92*b1cdbd2cSJim Jagielski FmEntryData* GetEntryData() const { return pEntryData; } 93*b1cdbd2cSJim Jagielski }; 94*b1cdbd2cSJim Jagielski 95*b1cdbd2cSJim Jagielski //======================================================================== 96*b1cdbd2cSJim Jagielski class FmNavRemovedHint : public SfxHint 97*b1cdbd2cSJim Jagielski { 98*b1cdbd2cSJim Jagielski FmEntryData* pEntryData; 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski public: 101*b1cdbd2cSJim Jagielski TYPEINFO(); 102*b1cdbd2cSJim Jagielski FmNavRemovedHint( FmEntryData* pInsertedEntryData ); 103*b1cdbd2cSJim Jagielski virtual ~FmNavRemovedHint(); 104*b1cdbd2cSJim Jagielski GetEntryData() const105*b1cdbd2cSJim Jagielski FmEntryData* GetEntryData() const { return pEntryData; } 106*b1cdbd2cSJim Jagielski }; 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski //======================================================================== 109*b1cdbd2cSJim Jagielski class FmNavNameChangedHint : public SfxHint 110*b1cdbd2cSJim Jagielski { 111*b1cdbd2cSJim Jagielski FmEntryData* pEntryData; 112*b1cdbd2cSJim Jagielski ::rtl::OUString aNewName; 113*b1cdbd2cSJim Jagielski 114*b1cdbd2cSJim Jagielski public: 115*b1cdbd2cSJim Jagielski TYPEINFO(); 116*b1cdbd2cSJim Jagielski FmNavNameChangedHint( FmEntryData* pData, const ::rtl::OUString& rNewName ); 117*b1cdbd2cSJim Jagielski virtual ~FmNavNameChangedHint(); 118*b1cdbd2cSJim Jagielski GetEntryData() const119*b1cdbd2cSJim Jagielski FmEntryData* GetEntryData() const { return pEntryData; } GetNewName() const120*b1cdbd2cSJim Jagielski ::rtl::OUString GetNewName() const { return aNewName; } 121*b1cdbd2cSJim Jagielski }; 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski //======================================================================== 124*b1cdbd2cSJim Jagielski class FmNavClearedHint : public SfxHint 125*b1cdbd2cSJim Jagielski { 126*b1cdbd2cSJim Jagielski public: 127*b1cdbd2cSJim Jagielski TYPEINFO(); 128*b1cdbd2cSJim Jagielski FmNavClearedHint(); 129*b1cdbd2cSJim Jagielski virtual ~FmNavClearedHint(); 130*b1cdbd2cSJim Jagielski }; 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski //======================================================================== 133*b1cdbd2cSJim Jagielski class FmNavViewMarksChanged : public SfxHint 134*b1cdbd2cSJim Jagielski { 135*b1cdbd2cSJim Jagielski FmFormView* pView; 136*b1cdbd2cSJim Jagielski public: 137*b1cdbd2cSJim Jagielski TYPEINFO(); FmNavViewMarksChanged(FmFormView * pWhichView)138*b1cdbd2cSJim Jagielski FmNavViewMarksChanged(FmFormView* pWhichView) { pView = pWhichView; } ~FmNavViewMarksChanged()139*b1cdbd2cSJim Jagielski virtual ~FmNavViewMarksChanged() {} 140*b1cdbd2cSJim Jagielski GetAffectedView()141*b1cdbd2cSJim Jagielski FmFormView* GetAffectedView() { return pView; } 142*b1cdbd2cSJim Jagielski }; 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski //======================================================================== 145*b1cdbd2cSJim Jagielski class FmEntryDataList; 146*b1cdbd2cSJim Jagielski class FmEntryData 147*b1cdbd2cSJim Jagielski { 148*b1cdbd2cSJim Jagielski private: 149*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_xNormalizedIFace; 150*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xProperties; 151*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::container::XChild > m_xChild; 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski protected: 154*b1cdbd2cSJim Jagielski Image m_aNormalImage; 155*b1cdbd2cSJim Jagielski Image m_aHCImage; 156*b1cdbd2cSJim Jagielski ::rtl::OUString aText; 157*b1cdbd2cSJim Jagielski 158*b1cdbd2cSJim Jagielski FmEntryDataList* pChildList; 159*b1cdbd2cSJim Jagielski FmEntryData* pParent; 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski protected: 162*b1cdbd2cSJim Jagielski void newObject( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxIFace ); 163*b1cdbd2cSJim Jagielski 164*b1cdbd2cSJim Jagielski public: 165*b1cdbd2cSJim Jagielski TYPEINFO(); 166*b1cdbd2cSJim Jagielski 167*b1cdbd2cSJim Jagielski FmEntryData( FmEntryData* pParentData, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rIFace ); 168*b1cdbd2cSJim Jagielski FmEntryData( const FmEntryData& rEntryData ); 169*b1cdbd2cSJim Jagielski virtual ~FmEntryData(); 170*b1cdbd2cSJim Jagielski 171*b1cdbd2cSJim Jagielski void Clear(); SetText(const::rtl::OUString & rText)172*b1cdbd2cSJim Jagielski void SetText( const ::rtl::OUString& rText ){ aText = rText; } SetParent(FmEntryData * pParentData)173*b1cdbd2cSJim Jagielski void SetParent( FmEntryData* pParentData ){ pParent = pParentData; } 174*b1cdbd2cSJim Jagielski GetNormalImage() const175*b1cdbd2cSJim Jagielski const Image& GetNormalImage() const { return m_aNormalImage; } GetHCImage() const176*b1cdbd2cSJim Jagielski const Image& GetHCImage() const { return m_aHCImage; } 177*b1cdbd2cSJim Jagielski GetText() const178*b1cdbd2cSJim Jagielski ::rtl::OUString GetText() const { return aText; } GetParent() const179*b1cdbd2cSJim Jagielski FmEntryData* GetParent() const { return pParent; } GetChildList() const180*b1cdbd2cSJim Jagielski FmEntryDataList* GetChildList() const { return pChildList; } 181*b1cdbd2cSJim Jagielski 182*b1cdbd2cSJim Jagielski virtual sal_Bool IsEqualWithoutChilds( FmEntryData* pEntryData ); 183*b1cdbd2cSJim Jagielski virtual FmEntryData* Clone() = 0; 184*b1cdbd2cSJim Jagielski 185*b1cdbd2cSJim Jagielski // note that the interface returned is normalized, i.e. querying the given XInterface of the object 186*b1cdbd2cSJim Jagielski // for XInterface must return the interface itself. GetElement() const187*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& GetElement() const 188*b1cdbd2cSJim Jagielski { 189*b1cdbd2cSJim Jagielski return m_xNormalizedIFace; 190*b1cdbd2cSJim Jagielski } 191*b1cdbd2cSJim Jagielski GetPropertySet() const192*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& GetPropertySet() const 193*b1cdbd2cSJim Jagielski { 194*b1cdbd2cSJim Jagielski return m_xProperties; 195*b1cdbd2cSJim Jagielski } 196*b1cdbd2cSJim Jagielski GetChildIFace() const197*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::container::XChild >& GetChildIFace() const 198*b1cdbd2cSJim Jagielski { 199*b1cdbd2cSJim Jagielski return m_xChild; 200*b1cdbd2cSJim Jagielski } 201*b1cdbd2cSJim Jagielski }; 202*b1cdbd2cSJim Jagielski 203*b1cdbd2cSJim Jagielski //======================================================================== 204*b1cdbd2cSJim Jagielski DECLARE_LIST( FmEntryDataBaseList, FmEntryData* ) 205*b1cdbd2cSJim Jagielski 206*b1cdbd2cSJim Jagielski class FmEntryDataList : public FmEntryDataBaseList 207*b1cdbd2cSJim Jagielski { 208*b1cdbd2cSJim Jagielski public: 209*b1cdbd2cSJim Jagielski FmEntryDataList(); 210*b1cdbd2cSJim Jagielski virtual ~FmEntryDataList(); 211*b1cdbd2cSJim Jagielski }; 212*b1cdbd2cSJim Jagielski 213*b1cdbd2cSJim Jagielski //======================================================================== 214*b1cdbd2cSJim Jagielski // FmNavRequestSelectHint - jemand teilt dem NavigatorTree mit, dass er bestimmte Eintraege selektieren soll 215*b1cdbd2cSJim Jagielski 216*b1cdbd2cSJim Jagielski typedef FmEntryData* FmEntryDataPtr; 217*b1cdbd2cSJim Jagielski SV_DECL_PTRARR_SORT( FmEntryDataArray, FmEntryDataPtr, 16, 16 ) 218*b1cdbd2cSJim Jagielski 219*b1cdbd2cSJim Jagielski class FmNavRequestSelectHint : public SfxHint 220*b1cdbd2cSJim Jagielski { 221*b1cdbd2cSJim Jagielski FmEntryDataArray m_arredToSelect; 222*b1cdbd2cSJim Jagielski sal_Bool m_bMixedSelection; 223*b1cdbd2cSJim Jagielski public: 224*b1cdbd2cSJim Jagielski TYPEINFO(); FmNavRequestSelectHint()225*b1cdbd2cSJim Jagielski FmNavRequestSelectHint() { } ~FmNavRequestSelectHint()226*b1cdbd2cSJim Jagielski virtual ~FmNavRequestSelectHint() {} 227*b1cdbd2cSJim Jagielski SetMixedSelection(sal_Bool bMixedSelection)228*b1cdbd2cSJim Jagielski void SetMixedSelection(sal_Bool bMixedSelection) { m_bMixedSelection = bMixedSelection; } IsMixedSelection()229*b1cdbd2cSJim Jagielski sal_Bool IsMixedSelection() { return m_bMixedSelection; } AddItem(FmEntryData * pEntry)230*b1cdbd2cSJim Jagielski void AddItem(FmEntryData* pEntry) { m_arredToSelect.Insert(pEntry); } ClearItems()231*b1cdbd2cSJim Jagielski void ClearItems() { m_arredToSelect.Remove(sal_uInt16(0), m_arredToSelect.Count()); } GetItems()232*b1cdbd2cSJim Jagielski FmEntryDataArray& GetItems() { return m_arredToSelect; } 233*b1cdbd2cSJim Jagielski }; 234*b1cdbd2cSJim Jagielski 235*b1cdbd2cSJim Jagielski //======================================================================== 236*b1cdbd2cSJim Jagielski class FmFormData : public FmEntryData 237*b1cdbd2cSJim Jagielski { 238*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm > m_xForm; 239*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainer > m_xContainer; 240*b1cdbd2cSJim Jagielski 241*b1cdbd2cSJim Jagielski public: 242*b1cdbd2cSJim Jagielski TYPEINFO(); 243*b1cdbd2cSJim Jagielski 244*b1cdbd2cSJim Jagielski FmFormData( 245*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& _rxForm, 246*b1cdbd2cSJim Jagielski const ImageList& _rNormalImages, 247*b1cdbd2cSJim Jagielski const ImageList& _rHCImages, 248*b1cdbd2cSJim Jagielski FmFormData* _pParent = NULL 249*b1cdbd2cSJim Jagielski ); 250*b1cdbd2cSJim Jagielski 251*b1cdbd2cSJim Jagielski FmFormData( const FmFormData& rFormData ); 252*b1cdbd2cSJim Jagielski virtual ~FmFormData(); 253*b1cdbd2cSJim Jagielski SetForm(const::com::sun::star::uno::Reference<::com::sun::star::form::XForm> & xForm)254*b1cdbd2cSJim Jagielski void SetForm( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& xForm ) 255*b1cdbd2cSJim Jagielski { 256*b1cdbd2cSJim Jagielski m_xForm = xForm; 257*b1cdbd2cSJim Jagielski m_xContainer = m_xContainer.query( m_xForm ); 258*b1cdbd2cSJim Jagielski newObject( m_xForm ); 259*b1cdbd2cSJim Jagielski } 260*b1cdbd2cSJim Jagielski GetFormIface() const261*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& GetFormIface() const { return m_xForm; } GetContainer() const262*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainer >& GetContainer() const { return m_xContainer; } 263*b1cdbd2cSJim Jagielski 264*b1cdbd2cSJim Jagielski virtual sal_Bool IsEqualWithoutChilds( FmEntryData* pEntryData ); 265*b1cdbd2cSJim Jagielski virtual FmEntryData* Clone(); 266*b1cdbd2cSJim Jagielski }; 267*b1cdbd2cSJim Jagielski 268*b1cdbd2cSJim Jagielski 269*b1cdbd2cSJim Jagielski //======================================================================== 270*b1cdbd2cSJim Jagielski class FmControlData : public FmEntryData 271*b1cdbd2cSJim Jagielski { 272*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent > m_xFormComponent; 273*b1cdbd2cSJim Jagielski 274*b1cdbd2cSJim Jagielski Image GetImage(const ImageList& ilNavigatorImages) const; 275*b1cdbd2cSJim Jagielski 276*b1cdbd2cSJim Jagielski public: 277*b1cdbd2cSJim Jagielski TYPEINFO(); 278*b1cdbd2cSJim Jagielski 279*b1cdbd2cSJim Jagielski FmControlData( 280*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent >& _rxComponent, 281*b1cdbd2cSJim Jagielski const ImageList& _rNormalImages, 282*b1cdbd2cSJim Jagielski const ImageList& _rHCImages, 283*b1cdbd2cSJim Jagielski FmFormData* _pParent 284*b1cdbd2cSJim Jagielski ); 285*b1cdbd2cSJim Jagielski FmControlData( const FmControlData& rControlData ); 286*b1cdbd2cSJim Jagielski virtual ~FmControlData(); 287*b1cdbd2cSJim Jagielski GetFormComponent() const288*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent >& GetFormComponent() const { return m_xFormComponent; } 289*b1cdbd2cSJim Jagielski virtual sal_Bool IsEqualWithoutChilds( FmEntryData* pEntryData ); 290*b1cdbd2cSJim Jagielski virtual FmEntryData* Clone(); 291*b1cdbd2cSJim Jagielski 292*b1cdbd2cSJim Jagielski void ModelReplaced( 293*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent >& _rxNew, 294*b1cdbd2cSJim Jagielski const ImageList& _rNormalImages, 295*b1cdbd2cSJim Jagielski const ImageList& _rHCImages 296*b1cdbd2cSJim Jagielski ); 297*b1cdbd2cSJim Jagielski }; 298*b1cdbd2cSJim Jagielski 299*b1cdbd2cSJim Jagielski 300*b1cdbd2cSJim Jagielski //======================================================================== 301*b1cdbd2cSJim Jagielski //............................................................................ 302*b1cdbd2cSJim Jagielski namespace svxform 303*b1cdbd2cSJim Jagielski { 304*b1cdbd2cSJim Jagielski //............................................................................ 305*b1cdbd2cSJim Jagielski 306*b1cdbd2cSJim Jagielski class NavigatorTreeModel; 307*b1cdbd2cSJim Jagielski //======================================================================== 308*b1cdbd2cSJim Jagielski // class OFormComponentObserver 309*b1cdbd2cSJim Jagielski //======================================================================== 310*b1cdbd2cSJim Jagielski class OFormComponentObserver 311*b1cdbd2cSJim Jagielski :public ::cppu::WeakImplHelper2 < ::com::sun::star::beans::XPropertyChangeListener 312*b1cdbd2cSJim Jagielski , ::com::sun::star::container::XContainerListener 313*b1cdbd2cSJim Jagielski > 314*b1cdbd2cSJim Jagielski { 315*b1cdbd2cSJim Jagielski ::svxform::NavigatorTreeModel* m_pNavModel; 316*b1cdbd2cSJim Jagielski sal_uInt32 m_nLocks; 317*b1cdbd2cSJim Jagielski sal_Bool m_bCanUndo; 318*b1cdbd2cSJim Jagielski 319*b1cdbd2cSJim Jagielski public: 320*b1cdbd2cSJim Jagielski OFormComponentObserver( ::svxform::NavigatorTreeModel* pModel ); 321*b1cdbd2cSJim Jagielski 322*b1cdbd2cSJim Jagielski // XEventListenerListener 323*b1cdbd2cSJim Jagielski virtual void SAL_CALL disposing(const ::com::sun::star::lang::EventObject& Source) throw(::com::sun::star::uno::RuntimeException); 324*b1cdbd2cSJim Jagielski 325*b1cdbd2cSJim Jagielski // ::com::sun::star::beans::XPropertyChangeListener 326*b1cdbd2cSJim Jagielski virtual void SAL_CALL propertyChange(const ::com::sun::star::beans::PropertyChangeEvent& evt) throw(::com::sun::star::uno::RuntimeException); 327*b1cdbd2cSJim Jagielski 328*b1cdbd2cSJim Jagielski // ::com::sun::star::container::XContainerListener 329*b1cdbd2cSJim Jagielski 330*b1cdbd2cSJim Jagielski virtual void SAL_CALL elementInserted(const ::com::sun::star::container::ContainerEvent& rEvent) throw(::com::sun::star::uno::RuntimeException); 331*b1cdbd2cSJim Jagielski virtual void SAL_CALL elementReplaced(const ::com::sun::star::container::ContainerEvent& rEvent) throw(::com::sun::star::uno::RuntimeException); 332*b1cdbd2cSJim Jagielski virtual void SAL_CALL elementRemoved(const ::com::sun::star::container::ContainerEvent& rEvent) throw(::com::sun::star::uno::RuntimeException); 333*b1cdbd2cSJim Jagielski Lock()334*b1cdbd2cSJim Jagielski void Lock() { m_nLocks++; } UnLock()335*b1cdbd2cSJim Jagielski void UnLock() { m_nLocks--; } IsLocked() const336*b1cdbd2cSJim Jagielski sal_Bool IsLocked() const { return m_nLocks != 0; } CanUndo() const337*b1cdbd2cSJim Jagielski sal_Bool CanUndo() const { return m_bCanUndo; } ReleaseModel()338*b1cdbd2cSJim Jagielski void ReleaseModel() { m_pNavModel = NULL; } 339*b1cdbd2cSJim Jagielski protected: 340*b1cdbd2cSJim Jagielski void Insert(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xIface, sal_Int32 nIndex); 341*b1cdbd2cSJim Jagielski void Remove( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxElement ); 342*b1cdbd2cSJim Jagielski }; 343*b1cdbd2cSJim Jagielski 344*b1cdbd2cSJim Jagielski //======================================================================== 345*b1cdbd2cSJim Jagielski //= NavigatorTreeModel 346*b1cdbd2cSJim Jagielski //======================================================================== 347*b1cdbd2cSJim Jagielski class NavigatorTreeModel : public SfxBroadcaster 348*b1cdbd2cSJim Jagielski ,public SfxListener 349*b1cdbd2cSJim Jagielski { 350*b1cdbd2cSJim Jagielski friend class NavigatorTree; 351*b1cdbd2cSJim Jagielski friend class OFormComponentObserver; 352*b1cdbd2cSJim Jagielski 353*b1cdbd2cSJim Jagielski FmEntryDataList* m_pRootList; 354*b1cdbd2cSJim Jagielski FmFormShell* m_pFormShell; 355*b1cdbd2cSJim Jagielski FmFormPage* m_pFormPage; 356*b1cdbd2cSJim Jagielski FmFormModel* m_pFormModel; 357*b1cdbd2cSJim Jagielski OFormComponentObserver* m_pPropChangeList; 358*b1cdbd2cSJim Jagielski 359*b1cdbd2cSJim Jagielski ImageList m_aNormalImages; 360*b1cdbd2cSJim Jagielski ImageList m_aHCImages; 361*b1cdbd2cSJim Jagielski 362*b1cdbd2cSJim Jagielski void UpdateContent( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& xForms ); 363*b1cdbd2cSJim Jagielski FmControlData* CreateControlData( ::com::sun::star::form::XFormComponent* pFormComponent ); 364*b1cdbd2cSJim Jagielski 365*b1cdbd2cSJim Jagielski void InsertForm(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XForm >& xForm, sal_uInt32 nRelPos); 366*b1cdbd2cSJim Jagielski void RemoveForm(FmFormData* pFormData); 367*b1cdbd2cSJim Jagielski 368*b1cdbd2cSJim Jagielski void InsertFormComponent(const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent >& xComp, sal_uInt32 nRelPos); 369*b1cdbd2cSJim Jagielski void RemoveFormComponent(FmControlData* pControlData); 370*b1cdbd2cSJim Jagielski void InsertSdrObj(const SdrObject* pSdrObj); 371*b1cdbd2cSJim Jagielski void RemoveSdrObj(const SdrObject* pSdrObj); 372*b1cdbd2cSJim Jagielski 373*b1cdbd2cSJim Jagielski 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); 374*b1cdbd2cSJim Jagielski 375*b1cdbd2cSJim Jagielski void BroadcastMarkedObjects(const SdrMarkList& mlMarked); 376*b1cdbd2cSJim Jagielski // einen RequestSelectHint mit den aktuell markierten Objekten broadcasten 377*b1cdbd2cSJim Jagielski sal_Bool InsertFormComponent(FmNavRequestSelectHint& rHint, SdrObject* pObject); 378*b1cdbd2cSJim Jagielski // ist ein Helper fuer vorherige, managet das Abteigen in SdrObjGroups 379*b1cdbd2cSJim Jagielski // Rueckgabe sal_True, wenn das Objekt eine FormComponent ist (oder rekursiv nur aus solchen besteht) 380*b1cdbd2cSJim Jagielski 381*b1cdbd2cSJim Jagielski public: 382*b1cdbd2cSJim Jagielski NavigatorTreeModel( const ImageList& _rNormalImages, const ImageList& _rHCImages ); 383*b1cdbd2cSJim Jagielski virtual ~NavigatorTreeModel(); 384*b1cdbd2cSJim Jagielski 385*b1cdbd2cSJim Jagielski void FillBranch( FmFormData* pParentData ); 386*b1cdbd2cSJim Jagielski void ClearBranch( FmFormData* pParentData ); 387*b1cdbd2cSJim Jagielski void UpdateContent( FmFormShell* pNewShell ); 388*b1cdbd2cSJim Jagielski 389*b1cdbd2cSJim Jagielski void Insert( FmEntryData* pEntryData, sal_uLong nRelPos = LIST_APPEND, 390*b1cdbd2cSJim Jagielski sal_Bool bAlterModel = sal_False ); 391*b1cdbd2cSJim Jagielski void Remove( FmEntryData* pEntryData, sal_Bool bAlterModel = sal_False ); 392*b1cdbd2cSJim Jagielski 393*b1cdbd2cSJim Jagielski sal_Bool Rename( FmEntryData* pEntryData, const ::rtl::OUString& rNewText ); 394*b1cdbd2cSJim Jagielski sal_Bool IsNameAlreadyDefined( const ::rtl::OUString& rName, FmFormData* pParentData ); 395*b1cdbd2cSJim Jagielski void Clear(); 396*b1cdbd2cSJim Jagielski sal_Bool CheckEntry( FmEntryData* pEntryData ); 397*b1cdbd2cSJim Jagielski void SetModified( sal_Bool bMod=sal_True ); 398*b1cdbd2cSJim Jagielski 399*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > GetForms() const; GetFormShell() const400*b1cdbd2cSJim Jagielski FmFormShell* GetFormShell() const { return m_pFormShell; } GetFormPage() const401*b1cdbd2cSJim Jagielski FmFormPage* GetFormPage() const { return m_pFormPage; } 402*b1cdbd2cSJim Jagielski FmEntryData* FindData( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xElement, FmEntryDataList* pDataList, sal_Bool bRecurs=sal_True ); 403*b1cdbd2cSJim Jagielski FmEntryData* FindData( const ::rtl::OUString& rText, FmFormData* pParentData, sal_Bool bRecurs=sal_True ); GetRootList() const404*b1cdbd2cSJim Jagielski FmEntryDataList* GetRootList() const { return m_pRootList; } 405*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > GetFormComponents( FmFormData* pParentFormData ); 406*b1cdbd2cSJim Jagielski SdrObject* GetSdrObj( FmControlData* pControlData ); 407*b1cdbd2cSJim Jagielski SdrObject* Search(SdrObjListIter& rIter, const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent >& xComp); 408*b1cdbd2cSJim Jagielski 409*b1cdbd2cSJim Jagielski virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 410*b1cdbd2cSJim Jagielski }; 411*b1cdbd2cSJim Jagielski 412*b1cdbd2cSJim Jagielski //======================================================================== 413*b1cdbd2cSJim Jagielski typedef SvLBoxEntry* SvLBoxEntryPtr; 414*b1cdbd2cSJim Jagielski SV_DECL_PTRARR_SORT( SvLBoxEntrySortedArray, SvLBoxEntryPtr, 16, 16 ) 415*b1cdbd2cSJim Jagielski 416*b1cdbd2cSJim Jagielski class NavigatorTree : public SvTreeListBox, public SfxListener 417*b1cdbd2cSJim Jagielski { 418*b1cdbd2cSJim Jagielski enum DROP_ACTION { DA_SCROLLUP, DA_SCROLLDOWN, DA_EXPANDNODE }; 419*b1cdbd2cSJim Jagielski enum SELDATA_ITEMS { SDI_DIRTY, SDI_ALL, SDI_NORMALIZED, SDI_NORMALIZED_FORMARK }; 420*b1cdbd2cSJim Jagielski 421*b1cdbd2cSJim Jagielski // beim Droppen will ich scrollen und Folder aufklappen koennen, dafuer : 422*b1cdbd2cSJim Jagielski AutoTimer m_aDropActionTimer; 423*b1cdbd2cSJim Jagielski Timer m_aSynchronizeTimer; 424*b1cdbd2cSJim Jagielski // die Meta-Daten ueber meine aktuelle Selektion 425*b1cdbd2cSJim Jagielski SvLBoxEntrySortedArray m_arrCurrentSelection; 426*b1cdbd2cSJim Jagielski // the entries which, in the view, are currently marked as "cut" (painted semi-transparent) 427*b1cdbd2cSJim Jagielski ListBoxEntrySet m_aCutEntries; 428*b1cdbd2cSJim Jagielski // die Images, die ich brauche (und an FormDatas und EntryDatas weiterreiche) 429*b1cdbd2cSJim Jagielski ImageList m_aNavigatorImages; 430*b1cdbd2cSJim Jagielski ImageList m_aNavigatorImagesHC; 431*b1cdbd2cSJim Jagielski 432*b1cdbd2cSJim Jagielski ::svxform::OControlExchangeHelper m_aControlExchange; 433*b1cdbd2cSJim Jagielski 434*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xORB; 435*b1cdbd2cSJim Jagielski NavigatorTreeModel* m_pNavModel; 436*b1cdbd2cSJim Jagielski SvLBoxEntry* m_pRootEntry; 437*b1cdbd2cSJim Jagielski SvLBoxEntry* m_pEditEntry; 438*b1cdbd2cSJim Jagielski 439*b1cdbd2cSJim Jagielski sal_uLong nEditEvent; 440*b1cdbd2cSJim Jagielski 441*b1cdbd2cSJim Jagielski SELDATA_ITEMS m_sdiState; 442*b1cdbd2cSJim Jagielski Point m_aTimerTriggered; // die Position, an der der DropTimer angeschaltet wurde 443*b1cdbd2cSJim Jagielski DROP_ACTION m_aDropActionType; 444*b1cdbd2cSJim Jagielski 445*b1cdbd2cSJim Jagielski sal_uInt16 m_nSelectLock; 446*b1cdbd2cSJim Jagielski sal_uInt16 m_nFormsSelected; 447*b1cdbd2cSJim Jagielski sal_uInt16 m_nControlsSelected; 448*b1cdbd2cSJim Jagielski sal_uInt16 m_nHiddenControls; // (die Zahl geht in m_nControlsSelected mit ein) 449*b1cdbd2cSJim Jagielski 450*b1cdbd2cSJim Jagielski unsigned short m_aTimerCounter; 451*b1cdbd2cSJim Jagielski 452*b1cdbd2cSJim Jagielski sal_Bool m_bDragDataDirty : 1; // dito 453*b1cdbd2cSJim Jagielski sal_Bool m_bPrevSelectionMixed : 1; 454*b1cdbd2cSJim Jagielski sal_Bool m_bMarkingObjects : 1; // wenn das sal_True ist, brauche ich auf die RequestSelectHints nicht reagieren 455*b1cdbd2cSJim Jagielski sal_Bool m_bRootSelected : 1; 456*b1cdbd2cSJim Jagielski sal_Bool m_bInitialUpdate : 1; // bin ich das erste Mal im UpdateContent ? 457*b1cdbd2cSJim Jagielski sal_Bool m_bKeyboardCut : 1; 458*b1cdbd2cSJim Jagielski 459*b1cdbd2cSJim Jagielski 460*b1cdbd2cSJim Jagielski void UpdateContent(); 461*b1cdbd2cSJim Jagielski sal_Bool IsDeleteAllowed(); 462*b1cdbd2cSJim Jagielski FmControlData* NewControl( const ::rtl::OUString& rServiceName, SvLBoxEntry* pParentEntry, sal_Bool bEditName = sal_True ); 463*b1cdbd2cSJim Jagielski void NewForm( SvLBoxEntry* pParentEntry ); 464*b1cdbd2cSJim Jagielski SvLBoxEntry* Insert( FmEntryData* pEntryData, sal_uLong nRelPos=LIST_APPEND ); 465*b1cdbd2cSJim Jagielski void Remove( FmEntryData* pEntryData ); 466*b1cdbd2cSJim Jagielski 467*b1cdbd2cSJim Jagielski 468*b1cdbd2cSJim Jagielski void CollectSelectionData(SELDATA_ITEMS sdiHow); 469*b1cdbd2cSJim Jagielski // sammelt in m_arrCurrentSelection die aktuell selektierten Eintraege, normalisiert die Liste wenn verlangt 470*b1cdbd2cSJim Jagielski // SDI_NORMALIZED bedeutet einfach, dass alle Eintraege, die schon einen selektierten Vorfahren haben, nicht mit gesammelt 471*b1cdbd2cSJim Jagielski // werden. 472*b1cdbd2cSJim Jagielski // SDI_NORMALIZED_FORMARK bedeutet, dass wie bei SDI_NORMALIZED verfahren wird, aber Eintraege, deren direktes Elter nicht 473*b1cdbd2cSJim Jagielski // selektiert ist, aufgenommen werden (unabhaengig vom Status weiterer Vorfahren), desgleichen Formulare, die selektiert sind, 474*b1cdbd2cSJim Jagielski // unabhaengig vom Status irgendwelcher Vorfahren 475*b1cdbd2cSJim Jagielski // Bei beiden Normalized-Modi enthalten die m_nFormsSelected, ... die richtige Anzahl, auch wenn nicht alle dieser Eintraege 476*b1cdbd2cSJim Jagielski // in m_arrCurrentSelection landen. 477*b1cdbd2cSJim Jagielski // SDI_DIRTY ist natuerlich nicht erlaubt als Parameter 478*b1cdbd2cSJim Jagielski 479*b1cdbd2cSJim Jagielski // ein einziges Interface fuer alle selektierten Eintraege zusammensetzen 480*b1cdbd2cSJim Jagielski void ShowSelectionProperties(sal_Bool bForce = sal_False); 481*b1cdbd2cSJim Jagielski // alle selektierten Elemnte loeschen 482*b1cdbd2cSJim Jagielski void DeleteSelection(); 483*b1cdbd2cSJim Jagielski 484*b1cdbd2cSJim Jagielski void SynchronizeSelection(FmEntryDataArray& arredToSelect); 485*b1cdbd2cSJim Jagielski // nach dem Aufruf dieser Methode sind genau die Eintraege selektiert, die in dem Array bezeichnet sind 486*b1cdbd2cSJim Jagielski void SynchronizeSelection(); 487*b1cdbd2cSJim Jagielski // macht das selbe, nimmt die MarkList der ::com::sun::star::sdbcx::View 488*b1cdbd2cSJim Jagielski void SynchronizeMarkList(); 489*b1cdbd2cSJim Jagielski // umgekehrte Richtung von SynchronizeMarkList : markiert in der ::com::sun::star::sdbcx::View alle der aktuellen Selektion entsprechenden Controls 490*b1cdbd2cSJim Jagielski 491*b1cdbd2cSJim Jagielski void CollectObjects(FmFormData* pFormData, sal_Bool bDeep, ::std::set< ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent > >& _rObjects); 492*b1cdbd2cSJim Jagielski 493*b1cdbd2cSJim Jagielski // im Select aktualisiere ich normalerweise die Marklist der zugehoerigen ::com::sun::star::sdbcx::View, mit folgenden Funktionen 494*b1cdbd2cSJim Jagielski // kann ich das Locking dieses Verhaltens steuern LockSelectionHandling()495*b1cdbd2cSJim Jagielski void LockSelectionHandling() { ++m_nSelectLock; } UnlockSelectionHandling()496*b1cdbd2cSJim Jagielski void UnlockSelectionHandling() { --m_nSelectLock; } IsSelectionHandlingLocked() const497*b1cdbd2cSJim Jagielski sal_Bool IsSelectionHandlingLocked() const { return m_nSelectLock>0; } 498*b1cdbd2cSJim Jagielski 499*b1cdbd2cSJim Jagielski sal_Bool IsHiddenControl(FmEntryData* pEntryData); 500*b1cdbd2cSJim Jagielski 501*b1cdbd2cSJim Jagielski DECL_LINK( OnEdit, void* ); 502*b1cdbd2cSJim Jagielski DECL_LINK( OnDropActionTimer, void* ); 503*b1cdbd2cSJim Jagielski 504*b1cdbd2cSJim Jagielski DECL_LINK(OnEntrySelDesel, NavigatorTree*); 505*b1cdbd2cSJim Jagielski DECL_LINK(OnSynchronizeTimer, void*); 506*b1cdbd2cSJim Jagielski 507*b1cdbd2cSJim Jagielski DECL_LINK( OnClipboardAction, void* ); 508*b1cdbd2cSJim Jagielski 509*b1cdbd2cSJim Jagielski protected: 510*b1cdbd2cSJim Jagielski virtual void Command( const CommandEvent& rEvt ); 511*b1cdbd2cSJim Jagielski 512*b1cdbd2cSJim Jagielski virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ); 513*b1cdbd2cSJim Jagielski virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ); 514*b1cdbd2cSJim Jagielski virtual void StartDrag( sal_Int8 nAction, const Point& rPosPixel ); 515*b1cdbd2cSJim Jagielski 516*b1cdbd2cSJim Jagielski public: 517*b1cdbd2cSJim Jagielski NavigatorTree(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xORB, Window* pParent ); 518*b1cdbd2cSJim Jagielski virtual ~NavigatorTree(); 519*b1cdbd2cSJim Jagielski 520*b1cdbd2cSJim Jagielski void Clear(); 521*b1cdbd2cSJim Jagielski void UpdateContent( FmFormShell* pFormShell ); 522*b1cdbd2cSJim Jagielski void MarkViewObj( FmFormData* pFormData, sal_Bool bMark, sal_Bool bDeep = sal_False ); 523*b1cdbd2cSJim Jagielski void MarkViewObj( FmControlData* pControlData, sal_Bool bMarkHandles, sal_Bool bMark ); 524*b1cdbd2cSJim Jagielski void UnmarkAllViewObj(); 525*b1cdbd2cSJim Jagielski 526*b1cdbd2cSJim Jagielski sal_Bool IsFormEntry( SvLBoxEntry* pEntry ); 527*b1cdbd2cSJim Jagielski sal_Bool IsFormComponentEntry( SvLBoxEntry* pEntry ); 528*b1cdbd2cSJim Jagielski 529*b1cdbd2cSJim Jagielski ::rtl::OUString GenerateName( FmEntryData* pEntryData ); 530*b1cdbd2cSJim Jagielski GetNavModel() const531*b1cdbd2cSJim Jagielski NavigatorTreeModel* GetNavModel() const { return m_pNavModel; } 532*b1cdbd2cSJim Jagielski SvLBoxEntry* FindEntry( FmEntryData* pEntryData ); 533*b1cdbd2cSJim Jagielski 534*b1cdbd2cSJim Jagielski virtual sal_Bool EditedEntry( SvLBoxEntry* pEntry, const XubString& rNewText ); 535*b1cdbd2cSJim Jagielski virtual sal_Bool Select( SvLBoxEntry* pEntry, sal_Bool bSelect=sal_True ); 536*b1cdbd2cSJim Jagielski virtual sal_Bool EditingEntry( SvLBoxEntry* pEntry, Selection& ); 537*b1cdbd2cSJim Jagielski virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); 538*b1cdbd2cSJim Jagielski virtual void KeyInput( const KeyEvent& rKEvt ); 539*b1cdbd2cSJim Jagielski 540*b1cdbd2cSJim Jagielski virtual void ModelHasRemoved( SvListEntry* _pEntry ); 541*b1cdbd2cSJim Jagielski 542*b1cdbd2cSJim Jagielski using SvTreeListBox::Insert; 543*b1cdbd2cSJim Jagielski using SvTreeListBox::ExecuteDrop; 544*b1cdbd2cSJim Jagielski using SvTreeListBox::Select; 545*b1cdbd2cSJim Jagielski using SvTreeListBox::Notify; 546*b1cdbd2cSJim Jagielski 547*b1cdbd2cSJim Jagielski private: 548*b1cdbd2cSJim Jagielski sal_Int8 implAcceptDataTransfer( const DataFlavorExVector& _rFlavors, sal_Int8 _nAction, const Point& _rDropPos, sal_Bool _bDnD ); 549*b1cdbd2cSJim Jagielski sal_Int8 implAcceptDataTransfer( const DataFlavorExVector& _rFlavors, sal_Int8 _nAction, SvLBoxEntry* _pTargetEntry, sal_Bool _bDnD ); 550*b1cdbd2cSJim Jagielski 551*b1cdbd2cSJim Jagielski sal_Int8 implExecuteDataTransfer( const OControlTransferData& _rData, sal_Int8 _nAction, const Point& _rDropPos, sal_Bool _bDnD ); 552*b1cdbd2cSJim Jagielski sal_Int8 implExecuteDataTransfer( const OControlTransferData& _rData, sal_Int8 _nAction, SvLBoxEntry* _pTargetEntry, sal_Bool _bDnD ); 553*b1cdbd2cSJim Jagielski 554*b1cdbd2cSJim Jagielski // check if a cut, copy, or drag operation can be started in the current situation 555*b1cdbd2cSJim Jagielski sal_Bool implAllowExchange( sal_Int8 _nAction, sal_Bool* _pHasNonHidden = NULL ); 556*b1cdbd2cSJim Jagielski // check if a paste with the current clipboard content can be accepted 557*b1cdbd2cSJim Jagielski sal_Bool implAcceptPaste( ); 558*b1cdbd2cSJim Jagielski 559*b1cdbd2cSJim Jagielski // fills m_aControlExchange in preparation of a DnD or clipboard operation 560*b1cdbd2cSJim Jagielski sal_Bool implPrepareExchange( sal_Int8 _nAction ); 561*b1cdbd2cSJim Jagielski 562*b1cdbd2cSJim Jagielski void doPaste(); 563*b1cdbd2cSJim Jagielski void doCopy(); 564*b1cdbd2cSJim Jagielski void doCut(); 565*b1cdbd2cSJim Jagielski doingKeyboardCut() const566*b1cdbd2cSJim Jagielski sal_Bool doingKeyboardCut( ) const { return m_bKeyboardCut; } 567*b1cdbd2cSJim Jagielski }; 568*b1cdbd2cSJim Jagielski 569*b1cdbd2cSJim Jagielski //======================================================================== 570*b1cdbd2cSJim Jagielski class NavigatorFrame : public SfxDockingWindow, public SfxControllerItem 571*b1cdbd2cSJim Jagielski { 572*b1cdbd2cSJim Jagielski private: 573*b1cdbd2cSJim Jagielski ::svxform::NavigatorTree* m_pNavigatorTree; 574*b1cdbd2cSJim Jagielski 575*b1cdbd2cSJim Jagielski protected: 576*b1cdbd2cSJim Jagielski virtual void Resize(); 577*b1cdbd2cSJim Jagielski virtual sal_Bool Close(); 578*b1cdbd2cSJim Jagielski virtual void GetFocus(); 579*b1cdbd2cSJim Jagielski virtual Size CalcDockingSize( SfxChildAlignment ); 580*b1cdbd2cSJim Jagielski virtual SfxChildAlignment CheckAlignment( SfxChildAlignment, SfxChildAlignment ); 581*b1cdbd2cSJim Jagielski 582*b1cdbd2cSJim Jagielski using SfxDockingWindow::StateChanged; 583*b1cdbd2cSJim Jagielski 584*b1cdbd2cSJim Jagielski public: 585*b1cdbd2cSJim Jagielski NavigatorFrame( SfxBindings *pBindings, SfxChildWindow *pMgr, 586*b1cdbd2cSJim Jagielski Window* pParent ); 587*b1cdbd2cSJim Jagielski virtual ~NavigatorFrame(); 588*b1cdbd2cSJim Jagielski 589*b1cdbd2cSJim Jagielski void UpdateContent( FmFormShell* pFormShell ); 590*b1cdbd2cSJim Jagielski void StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState ); 591*b1cdbd2cSJim Jagielski void FillInfo( SfxChildWinInfo& rInfo ) const; 592*b1cdbd2cSJim Jagielski }; 593*b1cdbd2cSJim Jagielski 594*b1cdbd2cSJim Jagielski //======================================================================== 595*b1cdbd2cSJim Jagielski class SVX_DLLPUBLIC NavigatorFrameManager : public SfxChildWindow 596*b1cdbd2cSJim Jagielski { 597*b1cdbd2cSJim Jagielski public: 598*b1cdbd2cSJim Jagielski SVX_DLLPRIVATE NavigatorFrameManager( Window *pParent, sal_uInt16 nId, SfxBindings *pBindings, 599*b1cdbd2cSJim Jagielski SfxChildWinInfo *pInfo ); 600*b1cdbd2cSJim Jagielski SFX_DECL_CHILDWINDOW( NavigatorFrameManager ); 601*b1cdbd2cSJim Jagielski }; 602*b1cdbd2cSJim Jagielski 603*b1cdbd2cSJim Jagielski //............................................................................ 604*b1cdbd2cSJim Jagielski } // namespace svxform 605*b1cdbd2cSJim Jagielski //............................................................................ 606*b1cdbd2cSJim Jagielski 607*b1cdbd2cSJim Jagielski #endif // _SVX_FMEXPL_HXX 608*b1cdbd2cSJim Jagielski 609