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 RPTUI_UNDO_HXX 24*b1cdbd2cSJim Jagielski #define RPTUI_UNDO_HXX 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski #include "UndoActions.hxx" 27*b1cdbd2cSJim Jagielski #include <functional> 28*b1cdbd2cSJim Jagielski 29*b1cdbd2cSJim Jagielski FORWARD_DECLARE_INTERFACE(awt,XControl) 30*b1cdbd2cSJim Jagielski FORWARD_DECLARE_INTERFACE(awt,XControlContainer) 31*b1cdbd2cSJim Jagielski FORWARD_DECLARE_INTERFACE(drawing,XShape) 32*b1cdbd2cSJim Jagielski namespace dbaui 33*b1cdbd2cSJim Jagielski { 34*b1cdbd2cSJim Jagielski class IController; 35*b1cdbd2cSJim Jagielski } 36*b1cdbd2cSJim Jagielski namespace rptui 37*b1cdbd2cSJim Jagielski { 38*b1cdbd2cSJim Jagielski class OObjectBase; 39*b1cdbd2cSJim Jagielski 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski /** \class OSectionUndo 42*b1cdbd2cSJim Jagielski * Undo class for section add and remove. 43*b1cdbd2cSJim Jagielski */ 44*b1cdbd2cSJim Jagielski class OSectionUndo : public OCommentUndoAction 45*b1cdbd2cSJim Jagielski { 46*b1cdbd2cSJim Jagielski OSectionUndo(const OSectionUndo&); 47*b1cdbd2cSJim Jagielski void operator =(const OSectionUndo&); 48*b1cdbd2cSJim Jagielski protected: 49*b1cdbd2cSJim Jagielski ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape> > 50*b1cdbd2cSJim Jagielski m_aControls; 51*b1cdbd2cSJim Jagielski ::std::vector< ::std::pair< ::rtl::OUString ,::com::sun::star::uno::Any> > 52*b1cdbd2cSJim Jagielski m_aValues; 53*b1cdbd2cSJim Jagielski Action m_eAction; 54*b1cdbd2cSJim Jagielski sal_uInt16 m_nSlot; 55*b1cdbd2cSJim Jagielski bool m_bInserted; 56*b1cdbd2cSJim Jagielski 57*b1cdbd2cSJim Jagielski virtual void implReInsert( ) = 0; 58*b1cdbd2cSJim Jagielski virtual void implReRemove( ) = 0; 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski void collectControls(const ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection >& _xSection); 61*b1cdbd2cSJim Jagielski public: 62*b1cdbd2cSJim Jagielski TYPEINFO(); 63*b1cdbd2cSJim Jagielski OSectionUndo( OReportModel& rMod 64*b1cdbd2cSJim Jagielski ,sal_uInt16 _nSlot 65*b1cdbd2cSJim Jagielski ,Action _eAction 66*b1cdbd2cSJim Jagielski ,sal_uInt16 nCommentID); 67*b1cdbd2cSJim Jagielski virtual ~OSectionUndo(); 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielski virtual void Undo(); 70*b1cdbd2cSJim Jagielski virtual void Redo(); 71*b1cdbd2cSJim Jagielski }; 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski /** Undo action for the group header, footer, page header, footer 74*b1cdbd2cSJim Jagielski */ 75*b1cdbd2cSJim Jagielski class OReportSectionUndo : public OSectionUndo 76*b1cdbd2cSJim Jagielski { 77*b1cdbd2cSJim Jagielski OReportHelper m_aReportHelper; 78*b1cdbd2cSJim Jagielski ::std::mem_fun_t< ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection > 79*b1cdbd2cSJim Jagielski ,OReportHelper> m_pMemberFunction; 80*b1cdbd2cSJim Jagielski 81*b1cdbd2cSJim Jagielski void implReInsert( ); 82*b1cdbd2cSJim Jagielski void implReRemove( ); 83*b1cdbd2cSJim Jagielski OReportSectionUndo(const OReportSectionUndo&); 84*b1cdbd2cSJim Jagielski void operator =(const OReportSectionUndo&); 85*b1cdbd2cSJim Jagielski public: 86*b1cdbd2cSJim Jagielski TYPEINFO(); 87*b1cdbd2cSJim Jagielski //OReportSectionUndo( const ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection >& _xSection 88*b1cdbd2cSJim Jagielski OReportSectionUndo( OReportModel& rMod 89*b1cdbd2cSJim Jagielski ,sal_uInt16 _nSlot 90*b1cdbd2cSJim Jagielski ,::std::mem_fun_t< ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection > 91*b1cdbd2cSJim Jagielski ,OReportHelper> _pMemberFunction 92*b1cdbd2cSJim Jagielski ,const ::com::sun::star::uno::Reference< ::com::sun::star::report::XReportDefinition >& _xReport 93*b1cdbd2cSJim Jagielski ,Action _eAction 94*b1cdbd2cSJim Jagielski ,sal_uInt16 nCommentID); 95*b1cdbd2cSJim Jagielski virtual ~OReportSectionUndo(); 96*b1cdbd2cSJim Jagielski }; 97*b1cdbd2cSJim Jagielski 98*b1cdbd2cSJim Jagielski /** Undo action for the group header, footer 99*b1cdbd2cSJim Jagielski */ 100*b1cdbd2cSJim Jagielski class OGroupSectionUndo : public OSectionUndo 101*b1cdbd2cSJim Jagielski { 102*b1cdbd2cSJim Jagielski OGroupHelper m_aGroupHelper; 103*b1cdbd2cSJim Jagielski ::std::mem_fun_t< ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection > 104*b1cdbd2cSJim Jagielski ,OGroupHelper> m_pMemberFunction; 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski mutable ::rtl::OUString m_sName; 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski void implReInsert( ); 109*b1cdbd2cSJim Jagielski void implReRemove( ); 110*b1cdbd2cSJim Jagielski OGroupSectionUndo(const OGroupSectionUndo&); 111*b1cdbd2cSJim Jagielski void operator =(const OGroupSectionUndo&); 112*b1cdbd2cSJim Jagielski public: 113*b1cdbd2cSJim Jagielski TYPEINFO(); 114*b1cdbd2cSJim Jagielski //OGroupSectionUndo( const ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection >& _xSection 115*b1cdbd2cSJim Jagielski OGroupSectionUndo( OReportModel& rMod 116*b1cdbd2cSJim Jagielski ,sal_uInt16 _nSlot 117*b1cdbd2cSJim Jagielski ,::std::mem_fun_t< ::com::sun::star::uno::Reference< ::com::sun::star::report::XSection > 118*b1cdbd2cSJim Jagielski ,OGroupHelper> _pMemberFunction 119*b1cdbd2cSJim Jagielski ,const ::com::sun::star::uno::Reference< ::com::sun::star::report::XGroup >& _xGroup 120*b1cdbd2cSJim Jagielski ,Action _eAction 121*b1cdbd2cSJim Jagielski ,sal_uInt16 nCommentID); 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski virtual String GetComment() const; 124*b1cdbd2cSJim Jagielski }; 125*b1cdbd2cSJim Jagielski 126*b1cdbd2cSJim Jagielski /** /class OGroupUndo 127*b1cdbd2cSJim Jagielski * \brief Undo action for removing a group object. 128*b1cdbd2cSJim Jagielski */ 129*b1cdbd2cSJim Jagielski class OGroupUndo : public OCommentUndoAction 130*b1cdbd2cSJim Jagielski { 131*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::report::XGroup> m_xGroup; ///<! the group for the undo redo action 132*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::report::XReportDefinition > m_xReportDefinition; ///<! the parent report definition 133*b1cdbd2cSJim Jagielski Action m_eAction; ///<! the current action 134*b1cdbd2cSJim Jagielski sal_Int32 m_nLastPosition; ///<! the last position of the group 135*b1cdbd2cSJim Jagielski 136*b1cdbd2cSJim Jagielski void implReInsert( ); 137*b1cdbd2cSJim Jagielski void implReRemove( ); 138*b1cdbd2cSJim Jagielski public: 139*b1cdbd2cSJim Jagielski TYPEINFO(); 140*b1cdbd2cSJim Jagielski OGroupUndo(OReportModel& rMod 141*b1cdbd2cSJim Jagielski ,sal_uInt16 nCommentID 142*b1cdbd2cSJim Jagielski ,Action _eAction 143*b1cdbd2cSJim Jagielski ,const ::com::sun::star::uno::Reference< ::com::sun::star::report::XGroup>& _xGroup 144*b1cdbd2cSJim Jagielski ,const ::com::sun::star::uno::Reference< ::com::sun::star::report::XReportDefinition >& _xReportDefinition); 145*b1cdbd2cSJim Jagielski virtual void Undo(); 146*b1cdbd2cSJim Jagielski virtual void Redo(); 147*b1cdbd2cSJim Jagielski }; 148*b1cdbd2cSJim Jagielski } 149*b1cdbd2cSJim Jagielski #endif // RPTUI_UNDO_HXX 150