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 INCLUDED_SVX_SOURCE_INC_FMEXPL_HXX
20 #define INCLUDED_SVX_SOURCE_INC_FMEXPL_HXX
22 #include <svl/lstner.hxx>
23 #include <svl/SfxBroadcaster.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>
64 class FmNavInsertedHint
: public SfxHint
66 FmEntryData
* pEntryData
;
70 FmNavInsertedHint( FmEntryData
* pInsertedEntryData
, sal_uInt32 nRelPos
);
71 virtual ~FmNavInsertedHint();
73 FmEntryData
* GetEntryData() const { return pEntryData
; }
74 sal_uInt32
GetRelPos() const { return nPos
; }
78 class FmNavModelReplacedHint
: public SfxHint
80 FmEntryData
* pEntryData
; // die Daten des Eintrages, der ein neues Model bekommen hat
83 FmNavModelReplacedHint( FmEntryData
* pAffectedEntryData
);
84 virtual ~FmNavModelReplacedHint();
86 FmEntryData
* GetEntryData() const { return pEntryData
; }
90 class FmNavRemovedHint
: public SfxHint
92 FmEntryData
* pEntryData
;
95 FmNavRemovedHint( FmEntryData
* pInsertedEntryData
);
96 virtual ~FmNavRemovedHint();
98 FmEntryData
* GetEntryData() const { return pEntryData
; }
102 class FmNavNameChangedHint
: public SfxHint
104 FmEntryData
* pEntryData
;
108 FmNavNameChangedHint( FmEntryData
* pData
, const OUString
& rNewName
);
109 virtual ~FmNavNameChangedHint();
111 FmEntryData
* GetEntryData() const { return pEntryData
; }
112 OUString
GetNewName() const { return aNewName
; }
116 class FmNavClearedHint
: public SfxHint
120 virtual ~FmNavClearedHint();
124 class FmNavViewMarksChanged
: public SfxHint
128 FmNavViewMarksChanged(FmFormView
* pWhichView
) { pView
= pWhichView
; }
129 virtual ~FmNavViewMarksChanged() {}
131 const FmFormView
* GetAffectedView() const { return pView
; }
135 class FmEntryDataList
;
139 ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
> m_xNormalizedIFace
;
140 ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
> m_xProperties
;
141 ::com::sun::star::uno::Reference
< ::com::sun::star::container::XChild
> m_xChild
;
144 Image m_aNormalImage
;
147 FmEntryDataList
* pChildList
;
148 FmEntryData
* pParent
;
151 void newObject( const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& _rxIFace
);
156 FmEntryData( FmEntryData
* pParentData
, const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& _rIFace
);
157 FmEntryData( const FmEntryData
& rEntryData
);
158 virtual ~FmEntryData();
161 void SetText( const OUString
& rText
){ aText
= rText
; }
162 void SetParent( FmEntryData
* pParentData
){ pParent
= pParentData
; }
164 const Image
& GetNormalImage() const { return m_aNormalImage
; }
166 OUString
GetText() const { return aText
; }
167 FmEntryData
* GetParent() const { return pParent
; }
168 FmEntryDataList
* GetChildList() const { return pChildList
; }
170 virtual bool IsEqualWithoutChildren( FmEntryData
* pEntryData
);
171 virtual FmEntryData
* Clone() = 0;
173 // note that the interface returned is normalized, i.e. querying the given XInterface of the object
174 // for XInterface must return the interface itself.
175 const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& GetElement() const
177 return m_xNormalizedIFace
;
180 const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySet
>& GetPropertySet() const
182 return m_xProperties
;
185 const ::com::sun::star::uno::Reference
< ::com::sun::star::container::XChild
>& GetChildIFace() const
192 typedef ::std::vector
< FmEntryData
* > FmEntryDataBaseList
;
194 class FmEntryDataList
197 FmEntryDataBaseList maEntryDataList
;
201 virtual ~FmEntryDataList();
203 FmEntryData
* at( size_t Index
)
204 { return ( Index
< maEntryDataList
.size() ) ? maEntryDataList
[ Index
] : NULL
; }
206 size_t size() const { return maEntryDataList
.size(); }
207 FmEntryData
* remove( FmEntryData
* pItem
);
208 void insert( FmEntryData
* pItem
, size_t Index
);
213 // FmNavRequestSelectHint - jemand teilt dem NavigatorTree mit, dass er bestimmte Eintraege selektieren soll
215 typedef std::set
<FmEntryData
*> FmEntryDataArray
;
217 class FmNavRequestSelectHint
: public SfxHint
219 FmEntryDataArray m_arredToSelect
;
220 bool m_bMixedSelection
;
222 FmNavRequestSelectHint()
223 : m_bMixedSelection(false)
226 virtual ~FmNavRequestSelectHint() {}
228 void SetMixedSelection(bool bMixedSelection
) { m_bMixedSelection
= bMixedSelection
; }
229 bool IsMixedSelection() const { return m_bMixedSelection
; }
230 void AddItem(FmEntryData
* pEntry
) { m_arredToSelect
.insert(pEntry
); }
231 void ClearItems() { m_arredToSelect
.clear(); }
232 FmEntryDataArray
& GetItems() { return m_arredToSelect
; }
236 class FmFormData
: public FmEntryData
238 ::com::sun::star::uno::Reference
< ::com::sun::star::form::XForm
> m_xForm
;
239 ::com::sun::star::uno::Reference
< ::com::sun::star::container::XContainer
> m_xContainer
;
245 const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XForm
>& _rxForm
,
246 const ImageList
& _rNormalImages
,
247 FmFormData
* _pParent
= NULL
250 FmFormData( const FmFormData
& rFormData
);
251 virtual ~FmFormData();
253 void SetForm( const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XForm
>& xForm
)
256 m_xContainer
.set(m_xForm
, css::uno::UNO_QUERY
);
257 newObject( m_xForm
);
260 const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XForm
>& GetFormIface() const { return m_xForm
; }
261 const ::com::sun::star::uno::Reference
< ::com::sun::star::container::XContainer
>& GetContainer() const { return m_xContainer
; }
263 virtual bool IsEqualWithoutChildren( FmEntryData
* pEntryData
) SAL_OVERRIDE
;
264 virtual FmEntryData
* Clone() SAL_OVERRIDE
;
269 class FmControlData
: public FmEntryData
271 ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormComponent
> m_xFormComponent
;
273 Image
GetImage(const ImageList
& ilNavigatorImages
) const;
279 const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormComponent
>& _rxComponent
,
280 const ImageList
& _rNormalImages
,
283 FmControlData( const FmControlData
& rControlData
);
284 virtual ~FmControlData();
286 const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormComponent
>& GetFormComponent() const { return m_xFormComponent
; }
287 virtual bool IsEqualWithoutChildren( FmEntryData
* pEntryData
) SAL_OVERRIDE
;
288 virtual FmEntryData
* Clone() SAL_OVERRIDE
;
291 const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormComponent
>& _rxNew
,
292 const ImageList
& _rNormalImages
303 class NavigatorTreeModel
;
305 class OFormComponentObserver
306 :public ::cppu::WeakImplHelper2
< ::com::sun::star::beans::XPropertyChangeListener
307 , ::com::sun::star::container::XContainerListener
310 ::svxform::NavigatorTreeModel
* m_pNavModel
;
315 OFormComponentObserver( ::svxform::NavigatorTreeModel
* pModel
);
317 // XEventListenerListener
318 virtual void SAL_CALL
disposing(const ::com::sun::star::lang::EventObject
& Source
) throw(::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
320 // ::com::sun::star::beans::XPropertyChangeListener
321 virtual void SAL_CALL
propertyChange(const ::com::sun::star::beans::PropertyChangeEvent
& evt
) throw(::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
323 // ::com::sun::star::container::XContainerListener
325 virtual void SAL_CALL
elementInserted(const ::com::sun::star::container::ContainerEvent
& rEvent
) throw(::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
326 virtual void SAL_CALL
elementReplaced(const ::com::sun::star::container::ContainerEvent
& rEvent
) throw(::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
327 virtual void SAL_CALL
elementRemoved(const ::com::sun::star::container::ContainerEvent
& rEvent
) throw(::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
329 void Lock() { m_nLocks
++; }
330 void UnLock() { m_nLocks
--; }
331 bool IsLocked() const { return m_nLocks
!= 0; }
332 bool CanUndo() const { return m_bCanUndo
; }
333 void ReleaseModel() { m_pNavModel
= NULL
; }
335 void Insert(const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& xIface
, sal_Int32 nIndex
);
336 void Remove( const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& _rxElement
);
339 class NavigatorTreeModel
: public SfxBroadcaster
342 friend class NavigatorTree
;
343 friend class OFormComponentObserver
;
345 FmEntryDataList
* m_pRootList
;
346 FmFormShell
* m_pFormShell
;
347 FmFormPage
* m_pFormPage
;
348 FmFormModel
* m_pFormModel
;
349 OFormComponentObserver
* m_pPropChangeList
;
351 ImageList m_aNormalImages
;
353 void UpdateContent( const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XForms
>& xForms
);
354 FmControlData
* CreateControlData( ::com::sun::star::form::XFormComponent
* pFormComponent
);
356 void InsertForm(const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XForm
>& xForm
, sal_uInt32 nRelPos
);
357 void RemoveForm(FmFormData
* pFormData
);
359 void InsertFormComponent(const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormComponent
>& xComp
, sal_uInt32 nRelPos
);
360 void RemoveFormComponent(FmControlData
* pControlData
);
361 void InsertSdrObj(const SdrObject
* pSdrObj
);
362 void RemoveSdrObj(const SdrObject
* pSdrObj
);
364 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
);
366 void BroadcastMarkedObjects(const SdrMarkList
& mlMarked
);
367 // einen RequestSelectHint mit den aktuell markierten Objekten broadcasten
368 bool InsertFormComponent(FmNavRequestSelectHint
& rHint
, SdrObject
* pObject
);
369 // ist ein Helper fuer vorherige, managet das Abteigen in SdrObjGroups
370 // Rueckgabe sal_True, wenn das Objekt eine FormComponent ist (oder rekursiv nur aus solchen besteht)
373 NavigatorTreeModel( const ImageList
& _rNormalImages
);
374 virtual ~NavigatorTreeModel();
376 void FillBranch( FmFormData
* pParentData
);
377 void ClearBranch( FmFormData
* pParentData
);
378 void UpdateContent( FmFormShell
* pNewShell
);
380 void Insert( FmEntryData
* pEntryData
, sal_uLong nRelPos
= CONTAINER_APPEND
,
381 bool bAlterModel
= false );
382 void Remove( FmEntryData
* pEntryData
, bool bAlterModel
= false );
384 static bool Rename( FmEntryData
* pEntryData
, const OUString
& rNewText
);
387 void SetModified( bool bMod
=true );
389 ::com::sun::star::uno::Reference
< ::com::sun::star::form::XForms
> GetForms() const;
390 FmFormShell
* GetFormShell() const { return m_pFormShell
; }
391 FmFormPage
* GetFormPage() const { return m_pFormPage
; }
392 FmEntryData
* FindData( const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XInterface
>& xElement
, FmEntryDataList
* pDataList
, bool bRecurs
=true );
393 FmEntryData
* FindData( const OUString
& rText
, FmFormData
* pParentData
, bool bRecurs
=true );
394 FmEntryDataList
* GetRootList() const { return m_pRootList
; }
395 static ::com::sun::star::uno::Reference
< ::com::sun::star::container::XIndexContainer
> GetFormComponents( FmFormData
* pParentFormData
);
396 SdrObject
* Search(SdrObjListIter
& rIter
, const ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormComponent
>& xComp
);
398 virtual void Notify( SfxBroadcaster
& rBC
, const SfxHint
& rHint
) SAL_OVERRIDE
;
402 typedef std::set
<SvTreeListEntry
*> SvLBoxEntrySortedArray
;
404 class NavigatorTree
: public SvTreeListBox
, public SfxListener
406 enum DROP_ACTION
{ DA_SCROLLUP
, DA_SCROLLDOWN
, DA_EXPANDNODE
};
407 enum SELDATA_ITEMS
{ SDI_DIRTY
, SDI_ALL
, SDI_NORMALIZED
, SDI_NORMALIZED_FORMARK
};
409 // beim Droppen will ich scrollen und Folder aufklappen koennen, dafuer :
410 AutoTimer m_aDropActionTimer
;
411 Timer m_aSynchronizeTimer
;
412 // die Meta-Daten ueber meine aktuelle Selektion
413 SvLBoxEntrySortedArray m_arrCurrentSelection
;
414 // the entries which, in the view, are currently marked as "cut" (painted semi-transparent)
415 ListBoxEntrySet m_aCutEntries
;
416 // die Images, die ich brauche (und an FormDatas und EntryDatas weiterreiche)
417 ImageList m_aNavigatorImages
;
419 ::svxform::OControlExchangeHelper m_aControlExchange
;
421 NavigatorTreeModel
* m_pNavModel
;
422 SvTreeListEntry
* m_pRootEntry
;
423 SvTreeListEntry
* m_pEditEntry
;
425 ImplSVEvent
* nEditEvent
;
427 SELDATA_ITEMS m_sdiState
;
428 Point m_aTimerTriggered
; // die Position, an der der DropTimer angeschaltet wurde
429 DROP_ACTION m_aDropActionType
;
431 sal_uInt16 m_nSelectLock
;
432 sal_uInt16 m_nFormsSelected
;
433 sal_uInt16 m_nControlsSelected
;
434 sal_uInt16 m_nHiddenControls
; // (die Zahl geht in m_nControlsSelected mit ein)
436 unsigned short m_aTimerCounter
;
438 bool m_bDragDataDirty
: 1; // dito
439 bool m_bPrevSelectionMixed
: 1;
440 bool m_bMarkingObjects
: 1; // wenn das sal_True ist, brauche ich auf die RequestSelectHints nicht reagieren
441 bool m_bRootSelected
: 1;
442 bool m_bInitialUpdate
: 1; // bin ich das erste Mal im UpdateContent ?
443 bool m_bKeyboardCut
: 1;
446 void UpdateContent();
447 FmControlData
* NewControl( const OUString
& rServiceName
, SvTreeListEntry
* pParentEntry
, bool bEditName
= true );
448 void NewForm( SvTreeListEntry
* pParentEntry
);
449 SvTreeListEntry
* Insert( FmEntryData
* pEntryData
, sal_uLong nRelPos
=TREELIST_APPEND
);
450 void Remove( FmEntryData
* pEntryData
);
453 void CollectSelectionData(SELDATA_ITEMS sdiHow
);
454 // sammelt in m_arrCurrentSelection die aktuell selektierten Eintraege, normalisiert die Liste wenn verlangt
455 // SDI_NORMALIZED bedeutet einfach, dass alle Eintraege, die schon einen selektierten Vorfahren haben, nicht mit gesammelt
457 // SDI_NORMALIZED_FORMARK bedeutet, dass wie bei SDI_NORMALIZED verfahren wird, aber Eintraege, deren direktes Elter nicht
458 // selektiert ist, aufgenommen werden (unabhaengig vom Status weiterer Vorfahren), desgleichen Formulare, die selektiert sind,
459 // unabhaengig vom Status irgendwelcher Vorfahren
460 // Bei beiden Normalized-Modi enthalten die m_nFormsSelected, ... die richtige Anzahl, auch wenn nicht alle dieser Eintraege
461 // in m_arrCurrentSelection landen.
462 // SDI_DIRTY ist natuerlich nicht erlaubt als Parameter
464 // ein einziges Interface fuer alle selektierten Eintraege zusammensetzen
465 void ShowSelectionProperties(bool bForce
= false);
466 // alle selektierten Elemnte loeschen
467 void DeleteSelection();
469 void SynchronizeSelection(FmEntryDataArray
& arredToSelect
);
470 // nach dem Aufruf dieser Methode sind genau die Eintraege selektiert, die in dem Array bezeichnet sind
471 void SynchronizeSelection();
472 // macht das selbe, nimmt die MarkList der View
473 void SynchronizeMarkList();
474 // umgekehrte Richtung von SynchronizeMarkList : markiert in der View alle der aktuellen Selektion entsprechenden Controls
476 void CollectObjects(FmFormData
* pFormData
, bool bDeep
, ::std::set
< ::com::sun::star::uno::Reference
< ::com::sun::star::form::XFormComponent
> >& _rObjects
);
478 // im Select aktualisiere ich normalerweise die Marklist der zugehoerigen View, mit folgenden Funktionen
479 // kann ich das Locking dieses Verhaltens steuern
480 void LockSelectionHandling() { ++m_nSelectLock
; }
481 void UnlockSelectionHandling() { --m_nSelectLock
; }
482 bool IsSelectionHandlingLocked() const { return m_nSelectLock
>0; }
484 static bool IsHiddenControl(FmEntryData
* pEntryData
);
486 DECL_LINK( OnEdit
, void* );
487 DECL_LINK_TYPED( OnDropActionTimer
, Timer
*, void );
489 DECL_LINK(OnEntrySelDesel
, NavigatorTree
*);
490 DECL_LINK_TYPED(OnSynchronizeTimer
, Timer
*, void);
492 DECL_LINK( OnClipboardAction
, void* );
495 virtual void Command( const CommandEvent
& rEvt
) SAL_OVERRIDE
;
497 virtual sal_Int8
AcceptDrop( const AcceptDropEvent
& rEvt
) SAL_OVERRIDE
;
498 virtual sal_Int8
ExecuteDrop( const ExecuteDropEvent
& rEvt
) SAL_OVERRIDE
;
499 virtual void StartDrag( sal_Int8 nAction
, const Point
& rPosPixel
) SAL_OVERRIDE
;
502 NavigatorTree(vcl::Window
* pParent
);
503 virtual ~NavigatorTree();
504 virtual void dispose() SAL_OVERRIDE
;
507 void UpdateContent( FmFormShell
* pFormShell
);
508 void MarkViewObj( FmFormData
* pFormData
, bool bMark
, bool bDeep
= false );
509 void MarkViewObj( FmControlData
* pControlData
, bool bMarkHandles
, bool bMark
);
510 void UnmarkAllViewObj();
512 static bool IsFormEntry( SvTreeListEntry
* pEntry
);
513 static bool IsFormComponentEntry( SvTreeListEntry
* pEntry
);
515 OUString
GenerateName( FmEntryData
* pEntryData
);
517 NavigatorTreeModel
* GetNavModel() const { return m_pNavModel
; }
518 SvTreeListEntry
* FindEntry( FmEntryData
* pEntryData
);
520 virtual bool EditedEntry( SvTreeListEntry
* pEntry
, const OUString
& rNewText
) SAL_OVERRIDE
;
521 virtual bool Select( SvTreeListEntry
* pEntry
, bool bSelect
=true ) SAL_OVERRIDE
;
522 virtual bool EditingEntry( SvTreeListEntry
* pEntry
, Selection
& ) SAL_OVERRIDE
;
523 virtual void Notify( SfxBroadcaster
& rBC
, const SfxHint
& rHint
) SAL_OVERRIDE
;
524 virtual void KeyInput( const KeyEvent
& rKEvt
) SAL_OVERRIDE
;
526 virtual void ModelHasRemoved( SvTreeListEntry
* _pEntry
) SAL_OVERRIDE
;
528 using SvTreeListBox::Insert
;
529 using SvTreeListBox::ExecuteDrop
;
530 using SvTreeListBox::Select
;
531 using SvTreeListBox::Notify
;
534 sal_Int8
implAcceptDataTransfer( const DataFlavorExVector
& _rFlavors
, sal_Int8 _nAction
, const Point
& _rDropPos
, bool _bDnD
);
535 sal_Int8
implAcceptDataTransfer( const DataFlavorExVector
& _rFlavors
, sal_Int8 _nAction
, SvTreeListEntry
* _pTargetEntry
, bool _bDnD
);
537 sal_Int8
implExecuteDataTransfer( const OControlTransferData
& _rData
, sal_Int8 _nAction
, const Point
& _rDropPos
, bool _bDnD
);
538 sal_Int8
implExecuteDataTransfer( const OControlTransferData
& _rData
, sal_Int8 _nAction
, SvTreeListEntry
* _pTargetEntry
, bool _bDnD
);
540 // check if a cut, copy, or drag operation can be started in the current situation
541 bool implAllowExchange( sal_Int8 _nAction
, bool* _pHasNonHidden
= NULL
);
542 // check if a paste with the current clipboard content can be accepted
543 bool implAcceptPaste( );
545 // fills m_aControlExchange in preparation of a DnD or clipboard operation
546 bool implPrepareExchange( sal_Int8 _nAction
);
552 bool doingKeyboardCut( ) const { return m_bKeyboardCut
; }
556 class NavigatorFrame
: public SfxDockingWindow
, public SfxControllerItem
559 VclPtr
< ::svxform::NavigatorTree
> m_pNavigatorTree
;
562 virtual void Resize() SAL_OVERRIDE
;
563 virtual bool Close() SAL_OVERRIDE
;
564 virtual void GetFocus() SAL_OVERRIDE
;
565 virtual Size
CalcDockingSize( SfxChildAlignment
) SAL_OVERRIDE
;
566 virtual SfxChildAlignment
CheckAlignment( SfxChildAlignment
, SfxChildAlignment
) SAL_OVERRIDE
;
568 using SfxDockingWindow::StateChanged
;
571 NavigatorFrame( SfxBindings
*pBindings
, SfxChildWindow
*pMgr
,
572 vcl::Window
* pParent
);
573 virtual ~NavigatorFrame();
574 virtual void dispose() SAL_OVERRIDE
;
576 void UpdateContent( FmFormShell
* pFormShell
);
577 void StateChanged( sal_uInt16 nSID
, SfxItemState eState
, const SfxPoolItem
* pState
) SAL_OVERRIDE
;
578 void FillInfo( SfxChildWinInfo
& rInfo
) const SAL_OVERRIDE
;
582 class SVX_DLLPUBLIC NavigatorFrameManager
: public SfxChildWindow
585 SVX_DLLPRIVATE
NavigatorFrameManager( vcl::Window
*pParent
, sal_uInt16 nId
, SfxBindings
*pBindings
,
586 SfxChildWinInfo
*pInfo
);
587 SFX_DECL_CHILDWINDOW( NavigatorFrameManager
);
594 #endif // INCLUDED_SVX_SOURCE_INC_FMEXPL_HXX
596 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */