1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 #ifndef _SVX_FMEXPL_HXX
20 #define _SVX_FMEXPL_HXX
22 #include <svl/lstner.hxx>
23 #include <svl/brdcst.hxx>
24 #include <vcl/window.hxx>
25 #include <sfx2/childwin.hxx>
26 #include <svl/poolitem.hxx>
27 #include <sfx2/bindings.hxx>
28 #include <sfx2/dockwin.hxx>
29 #include <sfx2/ctrlitem.hxx>
30 #include <vcl/image.hxx>
32 #include <com/sun/star/container/XNameContainer.hpp>
33 #include <com/sun/star/form/XForm.hpp>
34 #include <com/sun/star/form/XFormComponent.hpp>
35 #include <com/sun/star/beans/PropertyChangeEvent.hpp>
36 #include <com/sun/star/container/XContainerListener.hpp>
37 #include <com/sun/star/container/XContainer.hpp>
38 #include <com/sun/star/beans/XPropertyChangeListener.hpp>
39 #include <com/sun/star/container/XIndexContainer.hpp>
41 #include <svtools/treelistbox.hxx>
43 #include <vcl/dialog.hxx>
44 #include <vcl/group.hxx>
45 #include <vcl/button.hxx>
46 #include <vcl/fixed.hxx>
47 #include <vcl/edit.hxx>
48 #include <vcl/dockwin.hxx>
49 #include <svx/fmview.hxx>
62 //========================================================================
64 class FmNavInsertedHint
: public SfxHint
66 FmEntryData
* pEntryData
;
71 FmNavInsertedHint( FmEntryData
* pInsertedEntryData
, sal_uInt32 nRelPos
);
72 virtual ~FmNavInsertedHint();
74 FmEntryData
* GetEntryData() const { return pEntryData
; }
75 sal_uInt32
GetRelPos() const { return nPos
; }
78 //========================================================================
79 class FmNavModelReplacedHint
: public SfxHint
81 FmEntryData
* pEntryData
; // die Daten des Eintrages, der ein neues Model bekommen hat
85 FmNavModelReplacedHint( FmEntryData
* pAffectedEntryData
);
86 virtual ~FmNavModelReplacedHint();
88 FmEntryData
* GetEntryData() const { return pEntryData
; }
91 //========================================================================
92 class FmNavRemovedHint
: public SfxHint
94 FmEntryData
* pEntryData
;
98 FmNavRemovedHint( FmEntryData
* pInsertedEntryData
);
99 virtual ~FmNavRemovedHint();
101 FmEntryData
* GetEntryData() const { return pEntryData
; }
104 //========================================================================
105 class FmNavNameChangedHint
: public SfxHint
107 FmEntryData
* pEntryData
;
112 FmNavNameChangedHint( FmEntryData
* pData
, const OUString
& rNewName
);
113 virtual ~FmNavNameChangedHint();
115 FmEntryData
* GetEntryData() const { return pEntryData
; }
116 OUString
GetNewName() const { return aNewName
; }
119 //========================================================================
120 class FmNavClearedHint
: public SfxHint
125 virtual ~FmNavClearedHint();
128 //========================================================================
129 class FmNavViewMarksChanged
: public SfxHint
134 FmNavViewMarksChanged(FmFormView
* pWhichView
) { pView
= pWhichView
; }
135 virtual ~FmNavViewMarksChanged() {}
137 FmFormView
* GetAffectedView() { return pView
; }
140 //========================================================================
141 class FmEntryDataList
;
145 ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
> m_xNormalizedIFace
;
146 ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> m_xProperties
;
147 ::com::sun::star::uno::Reference
< ::com::sun::star::container::XChild
> m_xChild
;
150 Image m_aNormalImage
;
153 FmEntryDataList
* pChildList
;
154 FmEntryData
* pParent
;
157 void newObject( const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& _rxIFace
);
162 FmEntryData( FmEntryData
* pParentData
, const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& _rIFace
);
163 FmEntryData( const FmEntryData
& rEntryData
);
164 virtual ~FmEntryData();
167 void SetText( const OUString
& rText
){ aText
= rText
; }
168 void SetParent( FmEntryData
* pParentData
){ pParent
= pParentData
; }
170 const Image
& GetNormalImage() const { return m_aNormalImage
; }
172 OUString
GetText() const { return aText
; }
173 FmEntryData
* GetParent() const { return pParent
; }
174 FmEntryDataList
* GetChildList() const { return pChildList
; }
176 virtual sal_Bool
IsEqualWithoutChildren( FmEntryData
* pEntryData
);
177 virtual FmEntryData
* Clone() = 0;
179 // note that the interface returned is normalized, i.e. querying the given XInterface of the object
180 // for XInterface must return the interface itself.
181 const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& GetElement() const
183 return m_xNormalizedIFace
;
186 const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& GetPropertySet() const
188 return m_xProperties
;
191 const ::com::sun::star::uno::Reference
< ::com::sun::star::container::XChild
>& GetChildIFace() const
197 //========================================================================
198 typedef ::std::vector
< FmEntryData
* > FmEntryDataBaseList
;
200 class FmEntryDataList
203 FmEntryDataBaseList maEntryDataList
;
207 virtual ~FmEntryDataList();
209 FmEntryData
* at( size_t Index
)
210 { return ( Index
< maEntryDataList
.size() ) ? maEntryDataList
[ Index
] : NULL
; }
212 size_t size() const { return maEntryDataList
.size(); }
213 FmEntryData
* remove( FmEntryData
* pItem
);
214 void insert( FmEntryData
* pItem
, size_t Index
);
218 //========================================================================
219 // FmNavRequestSelectHint - jemand teilt dem NavigatorTree mit, dass er bestimmte Eintraege selektieren soll
221 typedef std::set
<FmEntryData
*> FmEntryDataArray
;
223 class FmNavRequestSelectHint
: public SfxHint
225 FmEntryDataArray m_arredToSelect
;
226 sal_Bool m_bMixedSelection
;
229 FmNavRequestSelectHint() { }
230 virtual ~FmNavRequestSelectHint() {}
232 void SetMixedSelection(sal_Bool bMixedSelection
) { m_bMixedSelection
= bMixedSelection
; }
233 sal_Bool
IsMixedSelection() { return m_bMixedSelection
; }
234 void AddItem(FmEntryData
* pEntry
) { m_arredToSelect
.insert(pEntry
); }
235 void ClearItems() { m_arredToSelect
.clear(); }
236 FmEntryDataArray
& GetItems() { return m_arredToSelect
; }
239 //========================================================================
240 class FmFormData
: public FmEntryData
242 ::com::sun::star::uno::Reference
< ::com::sun::star::form::XForm
> m_xForm
;
243 ::com::sun::star::uno::Reference
< ::com::sun::star::container::XContainer
> m_xContainer
;
249 const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XForm
>& _rxForm
,
250 const ImageList
& _rNormalImages
,
251 FmFormData
* _pParent
= NULL
254 FmFormData( const FmFormData
& rFormData
);
255 virtual ~FmFormData();
257 void SetForm( const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XForm
>& xForm
)
260 m_xContainer
= m_xContainer
.query( m_xForm
);
261 newObject( m_xForm
);
264 const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XForm
>& GetFormIface() const { return m_xForm
; }
265 const ::com::sun::star::uno::Reference
< ::com::sun::star::container::XContainer
>& GetContainer() const { return m_xContainer
; }
267 virtual sal_Bool
IsEqualWithoutChildren( FmEntryData
* pEntryData
);
268 virtual FmEntryData
* Clone();
272 //========================================================================
273 class FmControlData
: public FmEntryData
275 ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormComponent
> m_xFormComponent
;
277 Image
GetImage(const ImageList
& ilNavigatorImages
) const;
283 const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormComponent
>& _rxComponent
,
284 const ImageList
& _rNormalImages
,
287 FmControlData( const FmControlData
& rControlData
);
288 virtual ~FmControlData();
290 const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormComponent
>& GetFormComponent() const { return m_xFormComponent
; }
291 virtual sal_Bool
IsEqualWithoutChildren( FmEntryData
* pEntryData
);
292 virtual FmEntryData
* Clone();
295 const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormComponent
>& _rxNew
,
296 const ImageList
& _rNormalImages
301 //========================================================================
302 //............................................................................
305 //............................................................................
307 class NavigatorTreeModel
;
308 //========================================================================
309 // class OFormComponentObserver
310 //========================================================================
311 class OFormComponentObserver
312 :public ::cppu::WeakImplHelper2
< ::com::sun::star::beans::XPropertyChangeListener
313 , ::com::sun::star::container::XContainerListener
316 ::svxform::NavigatorTreeModel
* m_pNavModel
;
321 OFormComponentObserver( ::svxform::NavigatorTreeModel
* pModel
);
323 // XEventListenerListener
324 virtual void SAL_CALL
disposing(const ::com::sun::star::lang::EventObject
& Source
) throw(::com::sun::star::uno::RuntimeException
);
326 // ::com::sun::star::beans::XPropertyChangeListener
327 virtual void SAL_CALL
propertyChange(const ::com::sun::star::beans::PropertyChangeEvent
& evt
) throw(::com::sun::star::uno::RuntimeException
);
329 // ::com::sun::star::container::XContainerListener
331 virtual void SAL_CALL
elementInserted(const ::com::sun::star::container::ContainerEvent
& rEvent
) throw(::com::sun::star::uno::RuntimeException
);
332 virtual void SAL_CALL
elementReplaced(const ::com::sun::star::container::ContainerEvent
& rEvent
) throw(::com::sun::star::uno::RuntimeException
);
333 virtual void SAL_CALL
elementRemoved(const ::com::sun::star::container::ContainerEvent
& rEvent
) throw(::com::sun::star::uno::RuntimeException
);
335 void Lock() { m_nLocks
++; }
336 void UnLock() { m_nLocks
--; }
337 sal_Bool
IsLocked() const { return m_nLocks
!= 0; }
338 sal_Bool
CanUndo() const { return m_bCanUndo
; }
339 void ReleaseModel() { m_pNavModel
= NULL
; }
341 void Insert(const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& xIface
, sal_Int32 nIndex
);
342 void Remove( const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& _rxElement
);
345 //========================================================================
346 //= NavigatorTreeModel
347 //========================================================================
348 class NavigatorTreeModel
: public SfxBroadcaster
351 friend class NavigatorTree
;
352 friend class OFormComponentObserver
;
354 FmEntryDataList
* m_pRootList
;
355 FmFormShell
* m_pFormShell
;
356 FmFormPage
* m_pFormPage
;
357 FmFormModel
* m_pFormModel
;
358 OFormComponentObserver
* m_pPropChangeList
;
360 ImageList m_aNormalImages
;
362 void UpdateContent( const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XForms
>& xForms
);
363 FmControlData
* CreateControlData( ::com::sun::star::form::XFormComponent
* pFormComponent
);
365 void InsertForm(const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XForm
>& xForm
, sal_uInt32 nRelPos
);
366 void RemoveForm(FmFormData
* pFormData
);
368 void InsertFormComponent(const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormComponent
>& xComp
, sal_uInt32 nRelPos
);
369 void RemoveFormComponent(FmControlData
* pControlData
);
370 void InsertSdrObj(const SdrObject
* pSdrObj
);
371 void RemoveSdrObj(const SdrObject
* pSdrObj
);
373 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
);
375 void BroadcastMarkedObjects(const SdrMarkList
& mlMarked
);
376 // einen RequestSelectHint mit den aktuell markierten Objekten broadcasten
377 sal_Bool
InsertFormComponent(FmNavRequestSelectHint
& rHint
, SdrObject
* pObject
);
378 // ist ein Helper fuer vorherige, managet das Abteigen in SdrObjGroups
379 // Rueckgabe sal_True, wenn das Objekt eine FormComponent ist (oder rekursiv nur aus solchen besteht)
382 NavigatorTreeModel( const ImageList
& _rNormalImages
);
383 virtual ~NavigatorTreeModel();
385 void FillBranch( FmFormData
* pParentData
);
386 void ClearBranch( FmFormData
* pParentData
);
387 void UpdateContent( FmFormShell
* pNewShell
);
389 void Insert( FmEntryData
* pEntryData
, sal_uLong nRelPos
= LIST_APPEND
,
390 sal_Bool bAlterModel
= sal_False
);
391 void Remove( FmEntryData
* pEntryData
, sal_Bool bAlterModel
= sal_False
);
393 sal_Bool
Rename( FmEntryData
* pEntryData
, const OUString
& rNewText
);
396 void SetModified( sal_Bool bMod
=sal_True
);
398 ::com::sun::star::uno::Reference
< ::com::sun::star::form::XForms
> GetForms() const;
399 FmFormShell
* GetFormShell() const { return m_pFormShell
; }
400 FmFormPage
* GetFormPage() const { return m_pFormPage
; }
401 FmEntryData
* FindData( const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& xElement
, FmEntryDataList
* pDataList
, sal_Bool bRecurs
=sal_True
);
402 FmEntryData
* FindData( const OUString
& rText
, FmFormData
* pParentData
, sal_Bool bRecurs
=sal_True
);
403 FmEntryDataList
* GetRootList() const { return m_pRootList
; }
404 ::com::sun::star::uno::Reference
< ::com::sun::star::container::XIndexContainer
> GetFormComponents( FmFormData
* pParentFormData
);
405 SdrObject
* Search(SdrObjListIter
& rIter
, const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormComponent
>& xComp
);
407 virtual void Notify( SfxBroadcaster
& rBC
, const SfxHint
& rHint
);
410 //========================================================================
411 typedef std::set
<SvTreeListEntry
*> SvLBoxEntrySortedArray
;
413 class NavigatorTree
: public SvTreeListBox
, public SfxListener
415 enum DROP_ACTION
{ DA_SCROLLUP
, DA_SCROLLDOWN
, DA_EXPANDNODE
};
416 enum SELDATA_ITEMS
{ SDI_DIRTY
, SDI_ALL
, SDI_NORMALIZED
, SDI_NORMALIZED_FORMARK
};
418 // beim Droppen will ich scrollen und Folder aufklappen koennen, dafuer :
419 AutoTimer m_aDropActionTimer
;
420 Timer m_aSynchronizeTimer
;
421 // die Meta-Daten ueber meine aktuelle Selektion
422 SvLBoxEntrySortedArray m_arrCurrentSelection
;
423 // the entries which, in the view, are currently marked as "cut" (painted semi-transparent)
424 ListBoxEntrySet m_aCutEntries
;
425 // die Images, die ich brauche (und an FormDatas und EntryDatas weiterreiche)
426 ImageList m_aNavigatorImages
;
428 ::svxform::OControlExchangeHelper m_aControlExchange
;
430 ::com::sun::star::uno::Reference
< ::com::sun::star::lang::XMultiServiceFactory
> m_xORB
;
431 NavigatorTreeModel
* m_pNavModel
;
432 SvTreeListEntry
* m_pRootEntry
;
433 SvTreeListEntry
* m_pEditEntry
;
435 sal_uLong nEditEvent
;
437 SELDATA_ITEMS m_sdiState
;
438 Point m_aTimerTriggered
; // die Position, an der der DropTimer angeschaltet wurde
439 DROP_ACTION m_aDropActionType
;
441 sal_uInt16 m_nSelectLock
;
442 sal_uInt16 m_nFormsSelected
;
443 sal_uInt16 m_nControlsSelected
;
444 sal_uInt16 m_nHiddenControls
; // (die Zahl geht in m_nControlsSelected mit ein)
446 unsigned short m_aTimerCounter
;
448 sal_Bool m_bDragDataDirty
: 1; // dito
449 sal_Bool m_bPrevSelectionMixed
: 1;
450 sal_Bool m_bMarkingObjects
: 1; // wenn das sal_True ist, brauche ich auf die RequestSelectHints nicht reagieren
451 sal_Bool m_bRootSelected
: 1;
452 sal_Bool m_bInitialUpdate
: 1; // bin ich das erste Mal im UpdateContent ?
453 sal_Bool m_bKeyboardCut
: 1;
456 void UpdateContent();
457 FmControlData
* NewControl( const OUString
& rServiceName
, SvTreeListEntry
* pParentEntry
, sal_Bool bEditName
= sal_True
);
458 void NewForm( SvTreeListEntry
* pParentEntry
);
459 SvTreeListEntry
* Insert( FmEntryData
* pEntryData
, sal_uLong nRelPos
=LIST_APPEND
);
460 void Remove( FmEntryData
* pEntryData
);
463 void CollectSelectionData(SELDATA_ITEMS sdiHow
);
464 // sammelt in m_arrCurrentSelection die aktuell selektierten Eintraege, normalisiert die Liste wenn verlangt
465 // SDI_NORMALIZED bedeutet einfach, dass alle Eintraege, die schon einen selektierten Vorfahren haben, nicht mit gesammelt
467 // SDI_NORMALIZED_FORMARK bedeutet, dass wie bei SDI_NORMALIZED verfahren wird, aber Eintraege, deren direktes Elter nicht
468 // selektiert ist, aufgenommen werden (unabhaengig vom Status weiterer Vorfahren), desgleichen Formulare, die selektiert sind,
469 // unabhaengig vom Status irgendwelcher Vorfahren
470 // Bei beiden Normalized-Modi enthalten die m_nFormsSelected, ... die richtige Anzahl, auch wenn nicht alle dieser Eintraege
471 // in m_arrCurrentSelection landen.
472 // SDI_DIRTY ist natuerlich nicht erlaubt als Parameter
474 // ein einziges Interface fuer alle selektierten Eintraege zusammensetzen
475 void ShowSelectionProperties(sal_Bool bForce
= sal_False
);
476 // alle selektierten Elemnte loeschen
477 void DeleteSelection();
479 void SynchronizeSelection(FmEntryDataArray
& arredToSelect
);
480 // nach dem Aufruf dieser Methode sind genau die Eintraege selektiert, die in dem Array bezeichnet sind
481 void SynchronizeSelection();
482 // macht das selbe, nimmt die MarkList der ::com::sun::star::sdbcx::View
483 void SynchronizeMarkList();
484 // umgekehrte Richtung von SynchronizeMarkList : markiert in der ::com::sun::star::sdbcx::View alle der aktuellen Selektion entsprechenden Controls
486 void CollectObjects(FmFormData
* pFormData
, sal_Bool bDeep
, ::std::set
< ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormComponent
> >& _rObjects
);
488 // im Select aktualisiere ich normalerweise die Marklist der zugehoerigen ::com::sun::star::sdbcx::View, mit folgenden Funktionen
489 // kann ich das Locking dieses Verhaltens steuern
490 void LockSelectionHandling() { ++m_nSelectLock
; }
491 void UnlockSelectionHandling() { --m_nSelectLock
; }
492 sal_Bool
IsSelectionHandlingLocked() const { return m_nSelectLock
>0; }
494 sal_Bool
IsHiddenControl(FmEntryData
* pEntryData
);
496 DECL_LINK( OnEdit
, void* );
497 DECL_LINK( OnDropActionTimer
, void* );
499 DECL_LINK(OnEntrySelDesel
, NavigatorTree
*);
500 DECL_LINK(OnSynchronizeTimer
, void*);
502 DECL_LINK( OnClipboardAction
, void* );
505 virtual void Command( const CommandEvent
& rEvt
);
507 virtual sal_Int8
AcceptDrop( const AcceptDropEvent
& rEvt
);
508 virtual sal_Int8
ExecuteDrop( const ExecuteDropEvent
& rEvt
);
509 virtual void StartDrag( sal_Int8 nAction
, const Point
& rPosPixel
);
512 NavigatorTree(const ::com::sun::star::uno::Reference
< ::com::sun::star::lang::XMultiServiceFactory
>& _xORB
, Window
* pParent
);
513 virtual ~NavigatorTree();
516 void UpdateContent( FmFormShell
* pFormShell
);
517 void MarkViewObj( FmFormData
* pFormData
, sal_Bool bMark
, sal_Bool bDeep
= sal_False
);
518 void MarkViewObj( FmControlData
* pControlData
, sal_Bool bMarkHandles
, sal_Bool bMark
);
519 void UnmarkAllViewObj();
521 sal_Bool
IsFormEntry( SvTreeListEntry
* pEntry
);
522 sal_Bool
IsFormComponentEntry( SvTreeListEntry
* pEntry
);
524 OUString
GenerateName( FmEntryData
* pEntryData
);
526 NavigatorTreeModel
* GetNavModel() const { return m_pNavModel
; }
527 SvTreeListEntry
* FindEntry( FmEntryData
* pEntryData
);
529 virtual sal_Bool
EditedEntry( SvTreeListEntry
* pEntry
, const OUString
& rNewText
);
530 virtual sal_Bool
Select( SvTreeListEntry
* pEntry
, sal_Bool bSelect
=sal_True
);
531 virtual sal_Bool
EditingEntry( SvTreeListEntry
* pEntry
, Selection
& );
532 virtual void Notify( SfxBroadcaster
& rBC
, const SfxHint
& rHint
);
533 virtual void KeyInput( const KeyEvent
& rKEvt
);
535 virtual void ModelHasRemoved( SvTreeListEntry
* _pEntry
);
537 using SvTreeListBox::Insert
;
538 using SvTreeListBox::ExecuteDrop
;
539 using SvTreeListBox::Select
;
540 using SvTreeListBox::Notify
;
543 sal_Int8
implAcceptDataTransfer( const DataFlavorExVector
& _rFlavors
, sal_Int8 _nAction
, const Point
& _rDropPos
, sal_Bool _bDnD
);
544 sal_Int8
implAcceptDataTransfer( const DataFlavorExVector
& _rFlavors
, sal_Int8 _nAction
, SvTreeListEntry
* _pTargetEntry
, sal_Bool _bDnD
);
546 sal_Int8
implExecuteDataTransfer( const OControlTransferData
& _rData
, sal_Int8 _nAction
, const Point
& _rDropPos
, sal_Bool _bDnD
);
547 sal_Int8
implExecuteDataTransfer( const OControlTransferData
& _rData
, sal_Int8 _nAction
, SvTreeListEntry
* _pTargetEntry
, sal_Bool _bDnD
);
549 // check if a cut, copy, or drag operation can be started in the current situation
550 sal_Bool
implAllowExchange( sal_Int8 _nAction
, sal_Bool
* _pHasNonHidden
= NULL
);
551 // check if a paste with the current clipboard content can be accepted
552 sal_Bool
implAcceptPaste( );
554 // fills m_aControlExchange in preparation of a DnD or clipboard operation
555 sal_Bool
implPrepareExchange( sal_Int8 _nAction
);
561 sal_Bool
doingKeyboardCut( ) const { return m_bKeyboardCut
; }
564 //========================================================================
565 class NavigatorFrame
: public SfxDockingWindow
, public SfxControllerItem
568 ::svxform::NavigatorTree
* m_pNavigatorTree
;
571 virtual void Resize();
572 virtual sal_Bool
Close();
573 virtual void GetFocus();
574 virtual Size
CalcDockingSize( SfxChildAlignment
);
575 virtual SfxChildAlignment
CheckAlignment( SfxChildAlignment
, SfxChildAlignment
);
577 using SfxDockingWindow::StateChanged
;
580 NavigatorFrame( SfxBindings
*pBindings
, SfxChildWindow
*pMgr
,
582 virtual ~NavigatorFrame();
584 void UpdateContent( FmFormShell
* pFormShell
);
585 void StateChanged( sal_uInt16 nSID
, SfxItemState eState
, const SfxPoolItem
* pState
);
586 void FillInfo( SfxChildWinInfo
& rInfo
) const;
589 //========================================================================
590 class SVX_DLLPUBLIC NavigatorFrameManager
: public SfxChildWindow
593 SVX_DLLPRIVATE
NavigatorFrameManager( Window
*pParent
, sal_uInt16 nId
, SfxBindings
*pBindings
,
594 SfxChildWinInfo
*pInfo
);
595 SFX_DECL_CHILDWINDOW( NavigatorFrameManager
);
598 //............................................................................
599 } // namespace svxform
600 //............................................................................
602 #endif // _SVX_FMEXPL_HXX
604 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */