| /************************************************************** |
| * |
| * 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 _SFX_TEMPDLGI_HXX |
| #define _SFX_TEMPDLGI_HXX |
| |
| class SfxTemplateControllerItem; |
| |
| #ifndef _BUTTON_HXX //autogen |
| #include <vcl/button.hxx> |
| #endif |
| #ifndef _TOOLBOX_HXX //autogen |
| #include <vcl/toolbox.hxx> |
| #endif |
| #ifndef _LSTBOX_HXX //autogen |
| #include <vcl/lstbox.hxx> |
| #endif |
| #include <svl/lstner.hxx> |
| #include <svtools/svtreebx.hxx> |
| #include <svl/eitem.hxx> |
| |
| #define _SVSTDARR_USHORTS |
| #include <svl/svstdarr.hxx> // SvUShorts |
| |
| #include <rsc/rscsfx.hxx> |
| #include <tools/rtti.hxx> |
| |
| #include <sfx2/childwin.hxx> |
| #include <sfx2/templdlg.hxx> |
| |
| class SfxStyleFamilies; |
| class SfxStyleFamilyItem; |
| class SfxTemplateItem; |
| class SfxBindings; |
| class SfxStyleSheetBasePool; |
| class SvTreeListBox ; |
| class StyleTreeListBox_Impl; |
| class SfxTemplateDialog_Impl; |
| class SfxCommonTemplateDialog_Impl; |
| class SfxTemplateDialogWrapper; |
| class SfxDockingWindow; |
| |
| namespace com { namespace sun { namespace star { namespace frame { class XModuleManager; } } } } |
| |
| // class DropListBox_Impl ------------------------------------------------ |
| |
| class DropListBox_Impl : public SvTreeListBox |
| { |
| private: |
| DECL_LINK( OnAsyncExecuteDrop, SvLBoxEntry* ); |
| DECL_LINK( OnAsyncExecuteError, void* ); |
| |
| protected: |
| SfxCommonTemplateDialog_Impl* pDialog; |
| sal_uInt16 nModifier; |
| |
| public: |
| DropListBox_Impl( Window* pParent, const ResId& rId, SfxCommonTemplateDialog_Impl* pD ) : |
| SvTreeListBox( pParent, rId ), pDialog( pD ) {} |
| DropListBox_Impl( Window* pParent, WinBits nWinBits, SfxCommonTemplateDialog_Impl* pD ) : |
| SvTreeListBox( pParent, nWinBits ), pDialog( pD ) {} |
| |
| virtual void MouseButtonDown( const MouseEvent& rMEvt ); |
| virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ); |
| using SvLBox::ExecuteDrop; |
| virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ); |
| |
| sal_uInt16 GetModifier() const { return nModifier; } |
| |
| virtual long Notify( NotifyEvent& rNEvt ); |
| }; |
| |
| // class SfxActionListBox ------------------------------------------------ |
| |
| class SfxActionListBox : public DropListBox_Impl |
| { |
| protected: |
| public: |
| SfxActionListBox( SfxCommonTemplateDialog_Impl* pParent, WinBits nWinBits ); |
| SfxActionListBox( SfxCommonTemplateDialog_Impl* pParent, const ResId &rResId ); |
| |
| virtual PopupMenu* CreateContextMenu( void ); |
| }; |
| |
| // class SfxCommonTemplateDialog_Impl ------------------------------------ |
| |
| struct Deleted |
| { |
| bool bDead; |
| |
| Deleted() : bDead(false) {} |
| |
| inline bool operator()() { return bDead; } |
| }; |
| |
| class SfxCommonTemplateDialog_Impl : public SfxListener |
| { |
| private: |
| class ISfxTemplateCommon_Impl : public ISfxTemplateCommon |
| { |
| private: |
| SfxCommonTemplateDialog_Impl* pDialog; |
| public: |
| ISfxTemplateCommon_Impl( SfxCommonTemplateDialog_Impl* pDialogP ) : pDialog( pDialogP ) {} |
| virtual SfxStyleFamily GetActualFamily() const { return pDialog->GetActualFamily(); } |
| virtual String GetSelectedEntry() const { return pDialog->GetSelectedEntry(); } |
| }; |
| |
| ISfxTemplateCommon_Impl aISfxTemplateCommon; |
| |
| void ReadResource(); |
| void ClearResource(); |
| |
| protected: |
| #define MAX_FAMILIES 5 |
| #define COUNT_BOUND_FUNC 13 |
| |
| #define UPDATE_FAMILY_LIST 0x0001 |
| #define UPDATE_FAMILY 0x0002 |
| |
| friend class DropListBox_Impl; |
| friend class SfxTemplateControllerItem; |
| friend class SfxTemplateDialogWrapper; |
| |
| SfxBindings* pBindings; |
| SfxTemplateControllerItem* pBoundItems[COUNT_BOUND_FUNC]; |
| |
| Window* pWindow; |
| SfxModule* pModule; |
| Timer* pTimer; |
| |
| ResId* m_pStyleFamiliesId; |
| SfxStyleFamilies* pStyleFamilies; |
| SfxTemplateItem* pFamilyState[MAX_FAMILIES]; |
| SfxStyleSheetBasePool* pStyleSheetPool; |
| SvTreeListBox* pTreeBox; |
| SfxObjectShell* pCurObjShell; |
| ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModuleManager > |
| xModuleManager; |
| Deleted* pbDeleted; |
| |
| SfxActionListBox aFmtLb; |
| ListBox aFilterLb; |
| Size aSize; |
| |
| sal_uInt16 nActFamily; // Id in der ToolBox = Position - 1 |
| sal_uInt16 nActFilter; // FilterIdx |
| sal_uInt16 nAppFilter; // Filter, den die Applikation gesetzt hat (fuer automatisch) |
| |
| sal_Bool bDontUpdate :1, |
| bIsWater :1, |
| bEnabled :1, |
| bUpdate :1, |
| bUpdateFamily :1, |
| bCanEdit :1, |
| bCanDel :1, |
| bCanNew :1, |
| bWaterDisabled :1, |
| bNewByExampleDisabled :1, |
| bUpdateByExampleDisabled:1, |
| bTreeDrag :1, |
| bHierarchical :1, |
| bBindingUpdate :1; |
| |
| DECL_LINK( FilterSelectHdl, ListBox * ); |
| DECL_LINK( FmtSelectHdl, SvTreeListBox * ); |
| DECL_LINK( ApplyHdl, Control * ); |
| DECL_LINK( DropHdl, StyleTreeListBox_Impl * ); |
| DECL_LINK( TimeOut, Timer * ); |
| |
| |
| virtual void EnableItem( sal_uInt16 /*nMesId*/, sal_Bool /*bCheck*/ = sal_True ) {} |
| virtual void CheckItem( sal_uInt16 /*nMesId*/, sal_Bool /*bCheck*/ = sal_True ) {} |
| virtual sal_Bool IsCheckedItem( sal_uInt16 /*nMesId*/ ) { return sal_True; } |
| virtual void LoadedFamilies() {} |
| virtual void Update() { UpdateStyles_Impl(UPDATE_FAMILY_LIST); } |
| virtual void InvalidateBindings(); |
| virtual void InsertFamilyItem( sal_uInt16 nId, const SfxStyleFamilyItem* pIten ) = 0; |
| virtual void EnableFamilyItem( sal_uInt16 nId, sal_Bool bEnabled = sal_True ) = 0; |
| virtual void ClearFamilyList() = 0; |
| virtual void ReplaceUpdateButtonByMenu(); |
| |
| void NewHdl( void* ); |
| void EditHdl( void* ); |
| void DeleteHdl( void* ); |
| |
| sal_Bool Execute_Impl( sal_uInt16 nId, const String& rStr, const String& rRefStr, |
| sal_uInt16 nFamily, sal_uInt16 nMask = 0, |
| sal_uInt16* pIdx = NULL, const sal_uInt16* pModifier = NULL ); |
| |
| void UpdateStyles_Impl(sal_uInt16 nFlags); |
| const SfxStyleFamilyItem* GetFamilyItem_Impl() const; |
| sal_Bool IsInitialized() { return nActFamily != 0xffff; } |
| void ResetFocus(); |
| void EnableDelete(); |
| void Initialize(); |
| |
| void FilterSelect( sal_uInt16 nFilterIdx, sal_Bool bForce = sal_False ); |
| void SetFamilyState( sal_uInt16 nSlotId, const SfxTemplateItem* ); |
| void SetWaterCanState( const SfxBoolItem* pItem ); |
| |
| void SelectStyle( const String& rStyle ); |
| sal_Bool HasSelectedStyle() const; |
| void FillTreeBox(); |
| void Update_Impl(); |
| void UpdateFamily_Impl(); |
| |
| // In welchem FamilyState muss ich nachsehen, um die Info der i-ten |
| // Family in der pStyleFamilies zu bekommen. |
| sal_uInt16 StyleNrToInfoOffset( sal_uInt16 i ); |
| sal_uInt16 InfoOffsetToStyleNr( sal_uInt16 i ); |
| |
| void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); |
| |
| void FamilySelect( sal_uInt16 nId ); |
| void SetFamily( sal_uInt16 nId ); |
| void ActionSelect( sal_uInt16 nId ); |
| |
| sal_Int32 LoadFactoryStyleFilter( SfxObjectShell* i_pObjSh ); |
| void SaveFactoryStyleFilter( SfxObjectShell* i_pObjSh, sal_Int32 i_nFilter ); |
| |
| public: |
| TYPEINFO(); |
| |
| SfxCommonTemplateDialog_Impl( SfxBindings* pB, Window*, bool ); |
| SfxCommonTemplateDialog_Impl( SfxBindings* pB, Window* ); |
| virtual ~SfxCommonTemplateDialog_Impl(); |
| |
| DECL_LINK( MenuSelectHdl, Menu * ); |
| |
| virtual void EnableEdit( sal_Bool b = sal_True ) { bCanEdit = b; } |
| virtual void EnableDel( sal_Bool b = sal_True ) { bCanDel = b; } |
| virtual void EnableNew( sal_Bool b = sal_True ) { bCanNew = b; } |
| |
| ISfxTemplateCommon* GetISfxTemplateCommon() { return &aISfxTemplateCommon; } |
| Window* GetWindow() { return pWindow; } |
| |
| void EnableTreeDrag( sal_Bool b = sal_True ); |
| void ExecuteContextMenu_Impl( const Point& rPos, Window* pWin ); |
| void EnableExample_Impl( sal_uInt16 nId, sal_Bool bEnable ); |
| SfxStyleFamily GetActualFamily() const; |
| String GetSelectedEntry() const; |
| SfxObjectShell* GetObjectShell() const { return pCurObjShell; } |
| |
| virtual void PrepareDeleteAction(); // disable buttons, change button text, etc. when del is going to happen |
| |
| inline sal_Bool CanEdit( void ) const { return bCanEdit; } |
| inline sal_Bool CanDel( void ) const { return bCanDel; } |
| inline sal_Bool CanNew( void ) const { return bCanNew; } |
| |
| // normaly for derivates from SvTreeListBoxes, but in this case the dialog handles context menus |
| virtual PopupMenu* CreateContextMenu( void ); |
| |
| // Rechnet von den SFX_STYLE_FAMILY Ids auf 1-5 um |
| static sal_uInt16 SfxFamilyIdToNId( SfxStyleFamily nFamily ); |
| |
| void SetAutomaticFilter(); |
| }; |
| /* -----------------10.12.2003 11:42----------------- |
| |
| --------------------------------------------------*/ |
| |
| class DropToolBox_Impl : public ToolBox, public DropTargetHelper |
| { |
| SfxTemplateDialog_Impl& rParent; |
| protected: |
| virtual sal_Int8 AcceptDrop( const AcceptDropEvent& rEvt ); |
| virtual sal_Int8 ExecuteDrop( const ExecuteDropEvent& rEvt ); |
| public: |
| DropToolBox_Impl(Window* pParent, SfxTemplateDialog_Impl* pTemplateDialog); |
| ~DropToolBox_Impl(); |
| }; |
| // class SfxTemplateDialog_Impl ------------------------------------------ |
| |
| class SfxTemplateDialog_Impl : public SfxCommonTemplateDialog_Impl |
| { |
| private: |
| friend class SfxTemplateControllerItem; |
| friend class SfxTemplateDialogWrapper; |
| friend class DropToolBox_Impl; |
| friend class SfxTemplatePanelControl; |
| |
| Window* m_pFloat; |
| sal_Bool m_bZoomIn; |
| DropToolBox_Impl m_aActionTbL; |
| ToolBox m_aActionTbR; |
| |
| DECL_LINK( ToolBoxLSelect, ToolBox * ); |
| DECL_LINK( ToolBoxRSelect, ToolBox * ); |
| DECL_LINK( ToolBoxRClick, ToolBox * ); |
| DECL_LINK( MenuSelectHdl, Menu* ); |
| |
| protected: |
| virtual void Command( const CommandEvent& rMEvt ); |
| virtual void EnableEdit( sal_Bool = sal_True ); |
| virtual void EnableItem( sal_uInt16 nMesId, sal_Bool bCheck = sal_True ); |
| virtual void CheckItem( sal_uInt16 nMesId, sal_Bool bCheck = sal_True ); |
| virtual sal_Bool IsCheckedItem( sal_uInt16 nMesId ); |
| virtual void LoadedFamilies(); |
| virtual void InsertFamilyItem( sal_uInt16 nId, const SfxStyleFamilyItem* pIten ); |
| virtual void EnableFamilyItem( sal_uInt16 nId, sal_Bool bEnabled = sal_True ); |
| virtual void ClearFamilyList(); |
| virtual void ReplaceUpdateButtonByMenu(); |
| |
| void Resize(); |
| Size GetMinOutputSizePixel(); |
| |
| void updateFamilyImages(); |
| void updateNonFamilyImages(); |
| |
| public: |
| friend class SfxTemplateDialog; |
| TYPEINFO(); |
| |
| SfxTemplateDialog_Impl( SfxBindings*, SfxTemplateDialog* pDlgWindow ); |
| SfxTemplateDialog_Impl( SfxBindings*, SfxTemplatePanelControl* pDlgWindow ); |
| ~SfxTemplateDialog_Impl(); |
| |
| void Initialize (void); |
| }; |
| |
| // class SfxTemplateCatalog_Impl ----------------------------------------- |
| |
| class SfxTemplateCatalog_Impl : public SfxCommonTemplateDialog_Impl |
| { |
| private: |
| friend class SfxTemplateControllerItem; |
| friend class SfxCommonTemplateDialog_Impl; |
| |
| ListBox aFamList; |
| OKButton aOkBtn; |
| CancelButton aCancelBtn; |
| PushButton aNewBtn; |
| PushButton aChangeBtn; |
| PushButton aDelBtn; |
| PushButton aOrgBtn; |
| HelpButton aHelpBtn; |
| |
| SfxTemplateCatalog* pReal; |
| SvUShorts aFamIds; |
| SfxModalDefParentHelper aHelper; |
| |
| protected: |
| virtual void EnableItem( sal_uInt16 nMesId, sal_Bool bCheck = sal_True ); |
| virtual void CheckItem( sal_uInt16 nMesId, sal_Bool bCheck = sal_True ); |
| virtual sal_Bool IsCheckedItem( sal_uInt16 nMesId ); |
| virtual void InsertFamilyItem( sal_uInt16 nId, const SfxStyleFamilyItem* pIten ); |
| virtual void EnableFamilyItem( sal_uInt16 nId, sal_Bool bEnabled = sal_True ); |
| virtual void ClearFamilyList(); |
| virtual void EnableEdit( sal_Bool = sal_True ); |
| virtual void EnableDel( sal_Bool = sal_True ); |
| virtual void EnableNew( sal_Bool = sal_True ); |
| |
| using SfxCommonTemplateDialog_Impl::NewHdl; |
| DECL_LINK( FamListSelect, ListBox * ); |
| DECL_LINK( OkHdl, Button * ); |
| DECL_LINK( CancelHdl, Button * ); |
| DECL_LINK( NewHdl, Button * ); |
| DECL_LINK( ChangeHdl, Button * ); |
| DECL_LINK( DelHdl, Button * ); |
| DECL_LINK( OrgHdl, Button * ); |
| |
| public: |
| TYPEINFO(); |
| SfxTemplateCatalog_Impl( Window* pParent, SfxBindings*, SfxTemplateCatalog* pWindow ); |
| ~SfxTemplateCatalog_Impl(); |
| |
| friend class SfxTemplateCatalog; |
| |
| virtual void PrepareDeleteAction(); |
| }; |
| |
| #endif // #ifndef _SFX_TEMPDLGI_HXX |
| |
| |