LCOV - code coverage report
Current view: top level - svx/source/inc - fmexpl.hxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 51 0.0 %
Date: 2014-04-14 Functions: 0 49 0.0 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.10