/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef REPORT_REPORTSECTION_HXX #define REPORT_REPORTSECTION_HXX #include #include "RptPage.hxx" #include #include #include "cppuhelper/basemutex.hxx" #include "ReportDefines.hxx" #include "dlgedfunc.hxx" #include #include #include #include namespace rptui { class OReportModel; class OReportPage; class OSectionView; class OSectionWindow; class OReportSection : public Window , public ::cppu::BaseMutex , public ::comphelper::OPropertyChangeListener , public DropTargetHelper { OReportPage* m_pPage; OSectionView* m_pView; OSectionWindow* m_pParent; ::std::auto_ptr m_pFunc; ::boost::shared_ptr m_pModel; ::rtl::Reference< comphelper::OPropertyChangeMultiplexer> m_pMulti; ::rtl::Reference< comphelper::OPropertyChangeMultiplexer> m_pReportListener; ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection > m_xSection; sal_Int32 m_nPaintEntranceCount; DlgEdMode m_eMode; sal_Bool m_bDialogModelChanged; sal_Bool m_bInDrag; /** fills the section with all control from the report section */ void fill(); /** checks all objects if they fit in the new paper width. */ void impl_adjustObjectSizePosition(sal_Int32 i_nPaperWidth,sal_Int32 i_nLeftMargin,sal_Int32 i_nRightMargin); OReportSection(OReportSection&); void operator =(OReportSection&); protected: // DropTargetHelper overridables virtual sal_Int8 AcceptDrop( const AcceptDropEvent& _rEvt ); virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& _rEvt ); // window overrides virtual void Paint( const Rectangle& rRect ); virtual void MouseMove( const MouseEvent& rMEvt ); virtual void Command( const CommandEvent& rCEvt ); virtual void Resize(); // OPropertyChangeListener virtual void _propertyChanged(const ::com::sun::star::beans::PropertyChangeEvent& _rEvent) throw( ::com::sun::star::uno::RuntimeException); public: OReportSection(OSectionWindow* _pParent,const ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection >& _xSection); virtual ~OReportSection(); // window overrides virtual void MouseButtonDown( const MouseEvent& rMEvt ); virtual void MouseButtonUp( const MouseEvent& rMEvt ); /** copies the current selection in this section @param _rAllreadyCopiedObjects This is an out/in put param which contains all already copied objects. */ void Copy(::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& _rAllreadyCopiedObjects); void Copy(::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& _rAllreadyCopiedObjects,bool _bEraseAnddNoClone); /** paste a new control in this section @param _aAllreadyCopiedObjects objects to paste into the section. Only objects are pasted where the name is equal to the section name. @param _bForce If set to than the objects will be copied into this section. The name is not compared in this case. */ void Paste(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue >& _aAllreadyCopiedObjects,bool _bForce = false); /** Deletes the current selection in this section * */ void Delete(); /** All objects will be marked. */ void SelectAll(const sal_uInt16 _nObjectType); /** makes the grid visible * * \param _bVisible when the grid is made visible */ void SetGridVisible(sal_Bool _bVisible); inline OSectionWindow* getSectionWindow() const { return m_pParent; } inline OSectionView& getSectionView() const { return *m_pView; } inline OReportPage* getPage() const { return m_pPage; } inline ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection > getSection() const { return m_xSection; } void SetDialogModelChanged( sal_Bool bChanged = sal_True ) { m_bDialogModelChanged = bChanged; } sal_Bool IsDialogModelChanged() const { return m_bDialogModelChanged; } DlgEdMode GetMode() const { return m_eMode; } void SetMode( DlgEdMode m_eMode ); /** checks if the keycode is known by the child windows @param _rCode the keycode @return if the keycode is handled otherwise */ sal_Bool handleKeyEvent(const KeyEvent& _rEvent); /** returns the current control report model or */ ::com::sun::star::uno::Reference< ::com::sun::star::report::XReportComponent > getCurrentControlModel() const; /** fills the vector with all selected control models /param _rSelection The vector will be filled and will not be cleared before. */ void fillControlModelSelection(::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > >& _rSelection) const; /** creates a default object (custom shape) * * @param _sType */ void createDefault(const ::rtl::OUString& _sType); /** creates a new default custom shape * * \param _sType * \param _pObj */ void createDefault(const ::rtl::OUString& _sType,SdrObject* _pObj); void stopScrollTimer(); /** deactivate the currect active ole object if any */ void deactivateOle(); /** returns true when an ole object is currently active */ bool isUiActive() const; }; //================================================================== } //rptui //================================================================== #endif // REPORT_REPORTSECTION_HXX