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 REPORT_REPORTSECTION_HXX 24*b1cdbd2cSJim Jagielski #define REPORT_REPORTSECTION_HXX 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #include <vcl/window.hxx> 27*b1cdbd2cSJim Jagielski #include "RptPage.hxx" 28*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/NamedValue.hpp> 29*b1cdbd2cSJim Jagielski #include <comphelper/propmultiplex.hxx> 30*b1cdbd2cSJim Jagielski #include "cppuhelper/basemutex.hxx" 31*b1cdbd2cSJim Jagielski #include "ReportDefines.hxx" 32*b1cdbd2cSJim Jagielski #include "dlgedfunc.hxx" 33*b1cdbd2cSJim Jagielski #include <svtools/transfer.hxx> 34*b1cdbd2cSJim Jagielski #include <rtl/ref.hxx> 35*b1cdbd2cSJim Jagielski #include <boost/shared_ptr.hpp> 36*b1cdbd2cSJim Jagielski #include <memory> 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski namespace rptui 39*b1cdbd2cSJim Jagielski { 40*b1cdbd2cSJim Jagielski class OReportModel; 41*b1cdbd2cSJim Jagielski class OReportPage; 42*b1cdbd2cSJim Jagielski class OSectionView; 43*b1cdbd2cSJim Jagielski class OSectionWindow; 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski class OReportSection : public Window 46*b1cdbd2cSJim Jagielski , public ::cppu::BaseMutex 47*b1cdbd2cSJim Jagielski , public ::comphelper::OPropertyChangeListener 48*b1cdbd2cSJim Jagielski , public DropTargetHelper 49*b1cdbd2cSJim Jagielski { 50*b1cdbd2cSJim Jagielski OReportPage* m_pPage; 51*b1cdbd2cSJim Jagielski OSectionView* m_pView; 52*b1cdbd2cSJim Jagielski OSectionWindow* m_pParent; 53*b1cdbd2cSJim Jagielski ::std::auto_ptr<DlgEdFunc> m_pFunc; 54*b1cdbd2cSJim Jagielski ::boost::shared_ptr<OReportModel> m_pModel; 55*b1cdbd2cSJim Jagielski ::rtl::Reference< comphelper::OPropertyChangeMultiplexer> m_pMulti; 56*b1cdbd2cSJim Jagielski ::rtl::Reference< comphelper::OPropertyChangeMultiplexer> m_pReportListener; 57*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection > m_xSection; 58*b1cdbd2cSJim Jagielski sal_Int32 m_nPaintEntranceCount; 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski DlgEdMode m_eMode; 61*b1cdbd2cSJim Jagielski sal_Bool m_bDialogModelChanged; 62*b1cdbd2cSJim Jagielski sal_Bool m_bInDrag; 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski /** fills the section with all control from the report section 65*b1cdbd2cSJim Jagielski */ 66*b1cdbd2cSJim Jagielski void fill(); 67*b1cdbd2cSJim Jagielski /** checks all objects if they fit in the new paper width. 68*b1cdbd2cSJim Jagielski */ 69*b1cdbd2cSJim Jagielski void impl_adjustObjectSizePosition(sal_Int32 i_nPaperWidth,sal_Int32 i_nLeftMargin,sal_Int32 i_nRightMargin); 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski OReportSection(OReportSection&); 72*b1cdbd2cSJim Jagielski void operator =(OReportSection&); 73*b1cdbd2cSJim Jagielski protected: 74*b1cdbd2cSJim Jagielski // DropTargetHelper overridables 75*b1cdbd2cSJim Jagielski virtual sal_Int8 AcceptDrop( const AcceptDropEvent& _rEvt ); 76*b1cdbd2cSJim Jagielski virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& _rEvt ); 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski // window overrides 79*b1cdbd2cSJim Jagielski virtual void Paint( const Rectangle& rRect ); 80*b1cdbd2cSJim Jagielski virtual void MouseMove( const MouseEvent& rMEvt ); 81*b1cdbd2cSJim Jagielski virtual void Command( const CommandEvent& rCEvt ); 82*b1cdbd2cSJim Jagielski virtual void Resize(); 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski // OPropertyChangeListener 85*b1cdbd2cSJim Jagielski virtual void _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent& _rEvent) throw( ::com::sun::star::uno::RuntimeException); 86*b1cdbd2cSJim Jagielski public: 87*b1cdbd2cSJim Jagielski OReportSection(OSectionWindow* _pParent,const ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection >& _xSection); 88*b1cdbd2cSJim Jagielski virtual ~OReportSection(); 89*b1cdbd2cSJim Jagielski 90*b1cdbd2cSJim Jagielski // window overrides 91*b1cdbd2cSJim Jagielski virtual void MouseButtonDown( const MouseEvent& rMEvt ); 92*b1cdbd2cSJim Jagielski virtual void MouseButtonUp( const MouseEvent& rMEvt ); 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski /** copies the current selection in this section 95*b1cdbd2cSJim Jagielski @param _rAllreadyCopiedObjects This is an out/in put param which contains all already copied objects. 96*b1cdbd2cSJim Jagielski */ 97*b1cdbd2cSJim Jagielski void Copy(::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& _rAllreadyCopiedObjects); 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski void Copy(::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& _rAllreadyCopiedObjects,bool _bEraseAnddNoClone); 100*b1cdbd2cSJim Jagielski 101*b1cdbd2cSJim Jagielski /** paste a new control in this section 102*b1cdbd2cSJim Jagielski @param _aAllreadyCopiedObjects objects to paste into the section. Only objects are pasted where the name is equal to the section name. 103*b1cdbd2cSJim Jagielski @param _bForce If set to <TRUE/> than the objects will be copied into this section. The name is not compared in this case. 104*b1cdbd2cSJim Jagielski */ 105*b1cdbd2cSJim Jagielski void Paste(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& _aAllreadyCopiedObjects,bool _bForce = false); 106*b1cdbd2cSJim Jagielski 107*b1cdbd2cSJim Jagielski /** Deletes the current selection in this section 108*b1cdbd2cSJim Jagielski * 109*b1cdbd2cSJim Jagielski */ 110*b1cdbd2cSJim Jagielski void Delete(); 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski /** All objects will be marked. 113*b1cdbd2cSJim Jagielski */ 114*b1cdbd2cSJim Jagielski void SelectAll(const sal_uInt16 _nObjectType); 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski /** makes the grid visible 117*b1cdbd2cSJim Jagielski * 118*b1cdbd2cSJim Jagielski * \param _bVisible when <TRUE/> the grid is made visible 119*b1cdbd2cSJim Jagielski */ 120*b1cdbd2cSJim Jagielski void SetGridVisible(sal_Bool _bVisible); 121*b1cdbd2cSJim Jagielski getSectionWindow() const122*b1cdbd2cSJim Jagielski inline OSectionWindow* getSectionWindow() const { return m_pParent; } getSectionView() const123*b1cdbd2cSJim Jagielski inline OSectionView& getSectionView() const { return *m_pView; } getPage() const124*b1cdbd2cSJim Jagielski inline OReportPage* getPage() const { return m_pPage; } getSection() const125*b1cdbd2cSJim Jagielski inline ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection > getSection() const { return m_xSection; } 126*b1cdbd2cSJim Jagielski SetDialogModelChanged(sal_Bool bChanged=sal_True)127*b1cdbd2cSJim Jagielski void SetDialogModelChanged( sal_Bool bChanged = sal_True ) { m_bDialogModelChanged = bChanged; } IsDialogModelChanged() const128*b1cdbd2cSJim Jagielski sal_Bool IsDialogModelChanged() const { return m_bDialogModelChanged; } GetMode() const129*b1cdbd2cSJim Jagielski DlgEdMode GetMode() const { return m_eMode; } 130*b1cdbd2cSJim Jagielski void SetMode( DlgEdMode m_eMode ); 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski /** checks if the keycode is known by the child windows 133*b1cdbd2cSJim Jagielski @param _rCode the keycode 134*b1cdbd2cSJim Jagielski @return <TRUE/> if the keycode is handled otherwise <FALSE/> 135*b1cdbd2cSJim Jagielski */ 136*b1cdbd2cSJim Jagielski sal_Bool handleKeyEvent(const KeyEvent& _rEvent); 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski /** returns the current control report model or <NULL/> 139*b1cdbd2cSJim Jagielski */ 140*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::report::XReportComponent > getCurrentControlModel() const; 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski /** fills the vector with all selected control models 143*b1cdbd2cSJim Jagielski /param _rSelection The vector will be filled and will not be cleared before. 144*b1cdbd2cSJim Jagielski */ 145*b1cdbd2cSJim Jagielski void fillControlModelSelection(::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >& _rSelection) const; 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski /** creates a default object (custom shape) 148*b1cdbd2cSJim Jagielski * 149*b1cdbd2cSJim Jagielski * @param _sType 150*b1cdbd2cSJim Jagielski */ 151*b1cdbd2cSJim Jagielski void createDefault(const ::rtl::OUString& _sType); 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski /** creates a new default custom shape 154*b1cdbd2cSJim Jagielski * 155*b1cdbd2cSJim Jagielski * \param _sType 156*b1cdbd2cSJim Jagielski * \param _pObj 157*b1cdbd2cSJim Jagielski */ 158*b1cdbd2cSJim Jagielski void createDefault(const ::rtl::OUString& _sType,SdrObject* _pObj); 159*b1cdbd2cSJim Jagielski void stopScrollTimer(); 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski /** deactivate the currect active ole object if any 162*b1cdbd2cSJim Jagielski */ 163*b1cdbd2cSJim Jagielski void deactivateOle(); 164*b1cdbd2cSJim Jagielski 165*b1cdbd2cSJim Jagielski /** returns true when an ole object is currently active 166*b1cdbd2cSJim Jagielski */ 167*b1cdbd2cSJim Jagielski bool isUiActive() const; 168*b1cdbd2cSJim Jagielski }; 169*b1cdbd2cSJim Jagielski //================================================================== 170*b1cdbd2cSJim Jagielski } //rptui 171*b1cdbd2cSJim Jagielski //================================================================== 172*b1cdbd2cSJim Jagielski #endif // REPORT_REPORTSECTION_HXX 173*b1cdbd2cSJim Jagielski 174