/**************************************************************
 * 
 * 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 _SW_ABSTDLG_HXX
#define _SW_ABSTDLG_HXX

// include ---------------------------------------------------------------

#include <tools/solar.h>
#include <tools/string.hxx>
#include <sfx2/sfxdlg.hxx>
#include <svx/svxdlg.hxx>
#include <vcl/syswin.hxx>
#ifndef _GLOBALS_HRC
#include <globals.hrc>
#endif
#include <com/sun/star/uno/Reference.h>
#include <com/sun/star/uno/Sequence.h>
#include <com/sun/star/frame/XModel.hpp>
#include <com/sun/star/frame/XController.hpp>
#include <com/sun/star/text/XTextCursor.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/awt/XControl.hpp>
#include <com/sun/star/container/XNamed.hpp>
#include "swunodef.hxx"
#include "itabenum.hxx"

class SfxViewFrame;
class SfxBindings;
class SfxItemSet;
class ResId;
class Window;
class String;
class SfxItemPool;
class SfxStyleSheetBase;
class SwGlossaryHdl;
class SwField;

class SwLabFmtPage;
class SwLabRec;
class SwAsciiOptions;
class SwDocShell;
class SvStream;
class SwWrtShell;
class SfxRequest;
class SwView;
class SwTableAutoFmt;
class SwTOXMgr;
class SwForm;
struct CurTOXType;
class SwTOXDescription;
class SwTOXBase;
class SwSectionData;
struct SwDBData;
class SwField;
class Printer;
class SwLabItem;
class SwNewDBMgr;
class SwTableFUNC;
class SwChildWinWrapper;
struct SfxChildWinInfo;
class SwTOXMark;
struct SwDocStat;
#include <cnttab.hxx> //add for struct CurTOXType

namespace com{namespace sun{namespace star{
    namespace frame{
        class XFrame;
    }
	namespace sdbcx{
	class XColumnsSupplier;
	}
	namespace sdbc{
	class XDataSource;
	class XConnection;
	class XResultSet;
	}
}}}

typedef   void (*SwLabDlgMethod) (::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel>& xModel,	const SwLabItem& rItem);

typedef String		(*GlossaryGetCurrGroup)();
typedef void   		(*GlossarySetActGroup)(const String& rNewGroup);

class AbstractGlossaryDlg : public VclAbstractDialog  //add for SwGlossaryDlg
{
public:
	virtual	String			GetCurrGrpName() const = 0;
	virtual String			GetCurrShortName() const = 0;
};

class AbstractFldInputDlg : public VclAbstractDialog  //add for SwFldInputDlg
{
public:
	//from class SalFrame
	virtual void            SetWindowState( const ByteString& rStr ) = 0;
	virtual ByteString      GetWindowState( sal_uLong nMask = WINDOWSTATE_MASK_ALL ) const = 0;
};

class AbstractInsFootNoteDlg : public VclAbstractDialog  //add for SwInsFootNoteDlg
{
public:
    virtual String          GetFontName() = 0;
    virtual sal_Bool            IsEndNote() = 0;
    virtual String          GetStr() = 0;
	//from class Window
	virtual void    SetHelpId( const rtl::OString& sHelpId ) = 0;
	virtual void    SetText( const XubString& rStr ) = 0;
};

class AbstractInsertGrfRulerDlg : public VclAbstractDialog  //add for SwInsertGrfRulerDlg
{
public:
	virtual String 			GetGraphicName() = 0;
	virtual sal_Bool			IsSimpleLine() = 0;
	virtual sal_Bool 			HasImages() const  = 0;
};

class AbstractInsTableDlg : public VclAbstractDialog  //add for SwInsTableDlg
{
public:
	virtual void			GetValues( String& rName, sal_uInt16& rRow, sal_uInt16& rCol,
								SwInsertTableOptions& rInsTblFlags, String& rTableAutoFmtName,
								SwTableAutoFmt *& prTAFmt ) = 0;
};

class AbstractJavaEditDialog : public VclAbstractDialog  //add for SwJavaEditDialog
{
public:
    virtual String              GetText() = 0;
    virtual String              GetType() = 0;
    virtual sal_Bool                IsUrl() = 0;
    virtual sal_Bool                IsNew() = 0;
    virtual sal_Bool                IsUpdate() = 0;
};

class AbstractMailMergeDlg : public VclAbstractDialog  //add for SwMailMergeDlg
{
public:
	virtual sal_uInt16	GetMergeType() = 0;
    virtual const ::rtl::OUString& GetSaveFilter() const = 0;
	virtual const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > GetSelection() const = 0;
    virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> GetResultSet() const = 0;
    virtual bool IsSaveIndividualDocs() const = 0;
    virtual bool IsGenerateFromDataBase() const = 0;
    virtual String GetColumnName() const = 0;
    virtual String GetPath() const = 0;

};
class AbstractMailMergeCreateFromDlg : public VclAbstractDialog  //add for SwMailMergeCreateFromDlg
{
public:
    virtual sal_Bool    IsThisDocument() const = 0;
};
class AbstractMailMergeFieldConnectionsDlg : public VclAbstractDialog  //add for SwMailMergeFieldConnectionsDlg
{
public:
    virtual sal_Bool    IsUseExistingConnections() const = 0;
};

class AbstractMultiTOXTabDialog : public VclAbstractDialog  //add for SwMultiTOXTabDialog
{
public:
	virtual SwForm*				GetForm(CurTOXType eType) = 0;
	virtual CurTOXType			GetCurrentTOXType() const = 0;
	virtual SwTOXDescription&	GetTOXDescription(CurTOXType eTOXTypes) = 0;
	//from SfxTabDialog
	virtual const SfxItemSet* 	GetOutputItemSet() const = 0;
};

class AbstractEditRegionDlg : public VclAbstractDialog  //add for SwEditRegionDlg
{
public:
    virtual void    SelectSection(const String& rSectionName) = 0;
};
class AbstractInsertSectionTabDialog : public VclAbstractDialog  //add for SwInsertSectionTabDialog
{
public:
    virtual void     SetSectionData(SwSectionData const& rSect) = 0;
};

class AbstractSwWordCountDialog : public VclAbstractDialog
{
public:
    virtual void    SetValues(const SwDocStat& rCurrent, const SwDocStat& rDoc) = 0;
};

class AbstractSwInsertAbstractDlg : public VclAbstractDialog    // add for SwInsertAbstractDlg
{
public:
	virtual sal_uInt8	GetLevel() const = 0;
	virtual sal_uInt8	GetPara() const = 0;
};

class AbstractSwAsciiFilterDlg : public VclAbstractDialog // add for SwAsciiFilterDlg
{
public:
	virtual void FillOptions( SwAsciiOptions& rOptions ) = 0;

};

class AbstractSwBreakDlg : public VclAbstractDialog // add for SwBreakDlg
{
public:
	virtual String  GetTemplateName() = 0;
    virtual sal_uInt16  GetKind() = 0;
    virtual sal_uInt16  GetPageNumber() = 0;

};

class AbstractSplitTableDialog : public VclAbstractDialog // add for 
{
public:
    virtual sal_uInt16 GetSplitMode() = 0;
};

class AbstractSwConvertTableDlg :  public VclAbstractDialog // add for SwConvertTableDlg
{
public:
	virtual void GetValues( sal_Unicode& rDelim,
					SwInsertTableOptions& rInsTblFlags,
					SwTableAutoFmt *& prTAFmt ) = 0;
};

class AbstractSwInsertDBColAutoPilot :  public VclAbstractDialog // add for SwInsertDBColAutoPilot
{
public:

	virtual void DataToDoc( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rSelection,
		::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource> rxSource,
		::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection> xConnection,
		::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > xResultSet) = 0;
};

class AbstractDropDownFieldDialog : public VclAbstractDialog //add for DropDownFieldDialog
{
public:
	 virtual ByteString      GetWindowState( sal_uLong nMask = WINDOWSTATE_MASK_ALL ) const = 0; //this method inherit from SystemWindow
	 virtual void            SetWindowState( const ByteString& rStr ) =0;//this method inherit from SystemWindow
};

class AbstarctSwLabDlg  : public SfxAbstractTabDialog //add for SwLabDlg
{
public:
	 virtual const String& GetBusinessCardStr() const = 0;
	 virtual Printer *GetPrt() =0;
};

class AbstarctSwSelGlossaryDlg : public VclAbstractDialog //add for SwSelGlossaryDlg
{
public:
	virtual void InsertGlos(const String &rRegion, const String &rGlosName) = 0;	// inline
	virtual sal_uInt16 GetSelectedIdx() const = 0;	// inline
	virtual void SelectEntryPos(sal_uInt16 nIdx) = 0; 	// inline
};

class AbstractSwSplitTableDlg :public VclAbstractDialog //add for SwSplitTableDlg
{
public:
	virtual sal_Bool                IsHorizontal() const = 0;
    virtual sal_Bool                IsProportional() const = 0;
    virtual long                GetCount() const = 0;
};

class AbstractSwAutoFormatDlg : public VclAbstractDialog //add for SwAutoFormatDlg
{
public:
	virtual void FillAutoFmtOfIndex( SwTableAutoFmt*& rToFill ) const = 0;
};

class AbstractSwFldDlg : public SfxAbstractTabDialog //add for SwFldDlg
{
public:
	virtual void				Start( sal_Bool bShow = sal_True ) = 0;  //this method from sfxtabdialog
	virtual void				Initialize(SfxChildWinInfo *pInfo) = 0;
	virtual void				ReInitDlg() = 0;
	virtual void                ActivateDatabasePage() = 0;
	virtual void				ShowPage( sal_uInt16 nId ) = 0;// this method from SfxTabDialog
	virtual Window *			GetWindow() = 0; //this method is added for return a Window type pointer
};

class AbstractSwRenameXNamedDlg : public VclAbstractDialog //add for SwRenameXNamedDlg
{
public:
	virtual void	SetForbiddenChars( const String& rSet ) = 0;
	virtual void SetAlternativeAccess(
			 STAR_REFERENCE( container::XNameAccess ) & xSecond,
			 STAR_REFERENCE( container::XNameAccess ) & xThird ) = 0;
};

class AbstractSwModalRedlineAcceptDlg : public VclAbstractDialog //add for SwModalRedlineAcceptDlg
{
public:
	virtual void			AcceptAll( sal_Bool bAccept ) = 0;
};

class AbstractMarkFloatDlg : public VclAbstractDialog     //add for SwIndexMarkFloatDlg & SwAuthMarkFloatDlg
{
public:
    virtual void    ReInitDlg(SwWrtShell& rWrtShell) = 0;
	virtual Window *	GetWindow() = 0; //this method is added for return a Window type pointer
};

#define RET_LOAD_DOC            100
#define RET_EDIT_DOC            101
#define RET_EDIT_RESULT_DOC     102
#define RET_TARGET_CREATED      103
#define RET_REMOVE_TARGET       104

class SwView;
class SwMailMergeConfigItem;

class AbstractMailMergeWizard : public VclAbstractDialog2
{
public:
    virtual void                SetReloadDocument(const String& rURL) = 0;
    virtual const String&       GetReloadDocument() const = 0;
    virtual sal_Bool                ShowPage( sal_uInt16 nLevel ) = 0;
    virtual sal_uInt16          GetRestartPage() const = 0;
};


//-------Swabstract fractory
class SwAbstractDialogFactory
{
public:
	static SwAbstractDialogFactory* 	Create();

	virtual SfxAbstractDialog*				CreateSfxDialog( Window* pParent, //add for SvxMeasureDialog & SvxConnectionDialog
																		const SfxItemSet& rAttr,
									const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxFrame,
																		sal_uInt32 nResId
																		) = 0;
    virtual AbstractSwWordCountDialog* CreateSwWordCountDialog( Window* pWindow ) = 0;
    virtual AbstractSwInsertAbstractDlg * CreateSwInsertAbstractDlg ( Window* pParent, int nResId) = 0; // add for SwInsertAbstractDlg
	virtual AbstractSwAsciiFilterDlg*  CreateSwAsciiFilterDlg ( Window* pParent, SwDocShell& rDocSh,
                                                                SvStream* pStream, int nResId ) = 0;// add for SwAsciiFilterDlg
    virtual VclAbstractDialog * CreateSwInsertBookmarkDlg( Window *pParent, SwWrtShell &rSh, SfxRequest& rReq, int nResId ) = 0;// add for SwInsertBookmarkDlg

	virtual	AbstractSwBreakDlg * CreateSwBreakDlg( Window *pParent, SwWrtShell &rSh,int nResId ) = 0; // add for SwBreakDlg
	virtual VclAbstractDialog	* CreateSwChangeDBDlg( SwView& rVw, int nResId ) = 0; //add for SwChangeDBDlg
	virtual SfxAbstractTabDialog *  CreateSwCharDlg( Window* pParent, SwView& pVw, const SfxItemSet& rCoreSet, int nResId, // add for SwCharDlg
												const String* pFmtStr = 0, sal_Bool bIsDrwTxtDlg = sal_False) = 0;
	virtual AbstractSwConvertTableDlg* CreateSwConvertTableDlg ( SwView& rView , int nResId, bool bToTable) = 0; //add for SwConvertTableDlg
	virtual VclAbstractDialog * CreateSwCaptionDialog ( Window *pParent, SwView &rV,int nResId) = 0; //add for SwCaptionDialog

	virtual AbstractSwInsertDBColAutoPilot* CreateSwInsertDBColAutoPilot( SwView& rView, // add for SwInsertDBColAutoPilot
		::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource> rxSource,
		com::sun::star::uno::Reference<com::sun::star::sdbcx::XColumnsSupplier> xColSupp,
		const SwDBData& rData,  int nResId) = 0;
	virtual SfxAbstractTabDialog * CreateSwFootNoteOptionDlg( Window *pParent, SwWrtShell &rSh,int nResId) = 0;//add for  SwFootNoteOptionDlg

	virtual AbstractDropDownFieldDialog * CreateDropDownFieldDialog ( Window *pParent, SwWrtShell &rSh, //add for DropDownFieldDialog
                                SwField* pField,int nResId, sal_Bool bNextButton = sal_False ) = 0;
	virtual SfxAbstractTabDialog* CreateSwEnvDlg ( Window* pParent, const SfxItemSet& rSet, SwWrtShell* pWrtSh, Printer* pPrt, sal_Bool bInsert,int nResId ) = 0; //add for SwEnvDlg


	virtual AbstarctSwLabDlg* CreateSwLabDlg ( Window* pParent, const SfxItemSet& rSet, //add for SwLabDlg
	 												SwNewDBMgr* pNewDBMgr, sal_Bool bLabel,int nResId  ) = 0;

	virtual SwLabDlgMethod GetSwLabDlgStaticMethod () =0;//add for SwLabDlg

	virtual SfxAbstractTabDialog* CreateSwParaDlg ( Window *pParent, //add for SwParaDlg
													SwView& rVw,
													const SfxItemSet& rCoreSet,
													sal_uInt8 nDialogMode,
													int nResId,
													const String *pCollName = 0,
													sal_Bool bDraw = sal_False,
													sal_uInt16 nDefPage = 0) = 0;

	virtual AbstarctSwSelGlossaryDlg * CreateSwSelGlossaryDlg ( Window * pParent, const String &rShortName, int nResId ) = 0; //add for SwSelGlossaryDlg

    virtual VclAbstractDialog * CreateVclAbstractDialog ( Window * pParent, SwWrtShell &rSh, int nResId ) = 0; //add for  SwTableHeightDlg SwSortDlg 
    virtual AbstractSplitTableDialog * CreateSplitTblDialog ( Window * pParent, SwWrtShell &rSh ) = 0; //add for  SwSplitTblDlg

	virtual AbstractSwAutoFormatDlg * CreateSwAutoFormatDlg( Window* pParent, SwWrtShell* pShell, //add for SwAutoFormatDlg
															int nResId,
															sal_Bool bSetAutoFmt = sal_True,
															const SwTableAutoFmt* pSelFmt = 0 ) = 0;
	virtual SfxAbstractDialog * CreateSwBorderDlg ( Window* pParent, SfxItemSet& rSet, sal_uInt16 nType, int nResId ) = 0;//add for SwBorderDlg
	virtual SfxAbstractDialog * CreateSwWrapDlg ( Window* pParent, SfxItemSet& rSet, SwWrtShell* pSh, sal_Bool bDrawMode, int nResId ) = 0; //add for SwWrapDlg

	virtual VclAbstractDialog * CreateSwTableWidthDlg ( Window *pParent, SwTableFUNC &rFnc , int nResId ) = 0; //add for SwTableWidthDlg
	virtual SfxAbstractTabDialog* CreateSwTableTabDlg( Window* pParent, SfxItemPool& Pool,
														const SfxItemSet* pItemSet, SwWrtShell* pSh,int nResId ) = 0; //add for SwTableTabDlg

	virtual AbstractSwFldDlg * CreateSwFldDlg ( SfxBindings* pB, SwChildWinWrapper* pCW, Window *pParent, int nResId ) = 0; //add for SwFldDlg
	virtual SfxAbstractDialog*	 CreateSwFldEditDlg ( SwView& rVw, int nResId ) = 0; //add for SwFldEditDlg
	virtual AbstractSwRenameXNamedDlg * CreateSwRenameXNamedDlg( Window* pParent, //add for SwRenameXNamedDlg
																STAR_REFERENCE( container::XNamed ) & xNamed,
																STAR_REFERENCE( container::XNameAccess ) & xNameAccess, int nResId ) = 0;
	virtual AbstractSwModalRedlineAcceptDlg * CreateSwModalRedlineAcceptDlg ( Window *pParent, int nResId ) = 0; //add for SwModalRedlineAcceptDlg

    virtual VclAbstractDialog*          CreateSwVclDialog( int nResId, Window* pParent, sal_Bool& rWithPrev ) = 0; //add for SwMergeTblDlg
    virtual SfxAbstractTabDialog*       CreateFrmTabDialog( int nResId,
												SfxViewFrame *pFrame, Window *pParent,
												const SfxItemSet& rCoreSet,
												sal_Bool			bNewFrm  = sal_True,
												sal_uInt16			nResType = DLG_FRM_STD,
												sal_Bool			bFmt 	 = sal_False,
												sal_uInt16			nDefPage = 0,
												const String* 	pFmtStr  = 0) = 0;  //add for SwFrmDlg
    // @param nSlot
    // Identifies optional Slot by which the creation of the Template (Style) dialog is triggered.
    // Currently used, if nRegion == SFX_STYLE_FAMILY_PAGE in order to activate certain dialog pane
    virtual SfxAbstractTabDialog*       CreateTemplateDialog( int nResId,
                                                Window*             pParent,
                                                SfxStyleSheetBase&  rBase,
                                                sal_uInt16              nRegion,
                                                const sal_uInt16 nSlot = 0,
                                                SwWrtShell* 		pActShell = 0,
                                                sal_Bool 				bNew = sal_False ) = 0; //add for SwTemplateDlg
    virtual AbstractGlossaryDlg*		CreateGlossaryDlg( int nResId,
												SfxViewFrame* pViewFrame,
												SwGlossaryHdl* pGlosHdl,
												SwWrtShell *pWrtShell) = 0; //add for SwGlossaryDlg
	virtual AbstractFldInputDlg*		CreateFldInputDlg( int nResId,
												Window *pParent, SwWrtShell &rSh,
												SwField* pField, sal_Bool bNextButton = sal_False ) = 0; //add for SwFldInputDlg
	virtual AbstractInsFootNoteDlg*		CreateInsFootNoteDlg( int nResId,
												Window * pParent, SwWrtShell &rSh, sal_Bool bEd = sal_False) = 0; //add for SwInsFootNoteDlg
	virtual VclAbstractDialog *			CreateVclSwViewDialog( int nResId,
												SwView& rView, sal_Bool bCol = sal_False ) = 0; //add for SwInsRowColDlg, SwLineNumberingDlg
	virtual AbstractInsertGrfRulerDlg*		CreateInsertGrfRulerDlg( int nResId,
												Window * pParent ) = 0; //add for SwInsertGrfRulerDlg
	virtual AbstractInsTableDlg*		CreateInsTableDlg( int nResId,
												SwView& rView ) = 0; //add for SwInsTableDlg
	virtual AbstractJavaEditDialog*		CreateJavaEditDialog( int nResId,
												Window* pParent, SwWrtShell* pWrtSh ) = 0; //add for SwJavaEditDialog
	virtual AbstractMailMergeDlg*		CreateMailMergeDlg( int nResId,
												Window* pParent, SwWrtShell& rSh,
	 											const String& rSourceName,
												const String& rTblName,
												sal_Int32 nCommandType,
												const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& xConnection,
												::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >* pSelection = 0 ) = 0; //add for SwMailMergeDlg
	virtual AbstractMailMergeCreateFromDlg*		CreateMailMergeCreateFromDlg( int nResId,
													Window* pParent ) = 0; //add for SwMailMergeCreateFromDlg
	virtual AbstractMailMergeFieldConnectionsDlg*		CreateMailMergeFieldConnectionsDlg( int nResId,
															Window* pParent ) = 0; //add for SwMailMergeFieldConnectionsDlg
	virtual VclAbstractDialog* 			CreateMultiTOXMarkDlg( int nResId,
												Window* pParent, SwTOXMgr &rTOXMgr ) = 0; //add for SwMultiTOXMarkDlg
	virtual SfxAbstractTabDialog*		CreateSwTabDialog( int nResId,
												Window* pParent,
												const SfxItemSet* pSwItemSet,
												SwWrtShell &) = 0; //add for SwSvxNumBulletTabDialog, SwOutlineTabDialog
	virtual AbstractMultiTOXTabDialog*		CreateMultiTOXTabDialog( int nResId,
												Window* pParent, const SfxItemSet& rSet,
												SwWrtShell &rShell,
												SwTOXBase* pCurTOX, sal_uInt16 nToxType = USHRT_MAX,
												sal_Bool bGlobal = sal_False) = 0; //add for SwMultiTOXTabDialog
	virtual AbstractEditRegionDlg*		CreateEditRegionDlg( int nResId,
												Window* pParent, SwWrtShell& rWrtSh ) = 0; //add for SwEditRegionDlg
	virtual AbstractInsertSectionTabDialog*		CreateInsertSectionTabDialog( int nResId,
													Window* pParent, const SfxItemSet& rSet, SwWrtShell& rSh ) = 0; //add for SwInsertSectionTabDialog
	virtual AbstractMarkFloatDlg*		CreateIndexMarkFloatDlg( int nResId,
													SfxBindings* pBindings,
				   									SfxChildWindow* pChild,
				   									Window *pParent,
													SfxChildWinInfo* pInfo,
				   									sal_Bool bNew=sal_True) = 0; //add for SwIndexMarkFloatDlg
	virtual AbstractMarkFloatDlg*		CreateAuthMarkFloatDlg( int nResId,
													SfxBindings* pBindings,
				   									SfxChildWindow* pChild,
				   									Window *pParent,
													SfxChildWinInfo* pInfo,
				   									sal_Bool bNew=sal_True) = 0; //add for SwAuthMarkFloatDlg
	virtual VclAbstractDialog *			CreateIndexMarkModalDlg( int nResId,
												Window *pParent, SwWrtShell& rSh, SwTOXMark* pCurTOXMark ) = 0; //add for SwIndexMarkModalDlg

    virtual AbstractMailMergeWizard*    CreateMailMergeWizard(SwView& rView, SwMailMergeConfigItem& rConfigItem) = 0;

    //add for static func in SwGlossaryDlg
	virtual GlossaryGetCurrGroup		GetGlossaryCurrGroupFunc( sal_uInt16 nId ) = 0;
	virtual GlossarySetActGroup			SetGlossaryActGroupFunc( sal_uInt16 nId ) = 0;

	// for tabpage
	virtual CreateTabPage				GetTabPageCreatorFunc( sal_uInt16 nId ) = 0;
	virtual GetTabPageRanges			GetTabPageRangesFunc( sal_uInt16 nId ) = 0;
};

#endif
