/**
* @file XTPDockingPaneManager.h
*
* @copyright
* (c) 1998-2025 Codejock Software, All Rights Reserved.
*
* This source file is the property of Codejock Software and must not be
* redistributed by any means without the explicit written permission of
* Codejock Software.
*
* The use of this source code is governed by the terms and conditions specified
* in the Toolkit Pro license agreement. Codejock Software grants you, as a
* single software developer, the limited right to use this software on one
* computer only.
*
* Contact Information:
* support@codejock.com
* http://www.codejock.com
*
*/
/** @cond */
#if !defined(__XTPDOCKINGPANEMANAGER_H__)
# define __XTPDOCKINGPANEMANAGER_H__
/** @endcond */
# if _MSC_VER >= 1000
# pragma once
# endif // _MSC_VER >= 1000
# include "Common/Base/Diagnostic/XTPDisableNoisyWarnings.h"
class CXTPDockingPane;
class CXTPDockingPaneBase;
class CXTPDockingPaneBase;
class CXTPDockingPaneManager;
class CXTPDockingPaneSplitterContainer;
class CXTPDockingPaneTabbedContainer;
class CXTPDockingPaneMiniWnd;
class CXTPDockingPaneContext;
class CXTPDockingPaneLayout;
class CXTPDockingPanePaintManager;
class CXTPImageManagerIcon;
class CXTPImageManager;
class CXTPToolTipContext;
class CXTPDockingPaneSidePanel;
class CXTPImageManagerIconHandle;
class CXTPPropExchange;
/**
* @brief
* CXTPDockingPaneManager is a CWnd derived class. It is used to manipulate
* docking panes.
*/
class _XTP_EXT_CLASS CXTPDockingPaneManager
: public CWnd
, public CXTPAccessible
{
public:
/**
* @brief
* Constructs a CXTPDockingPaneManager object.
*/
CXTPDockingPaneManager();
/**
* @brief
* Destroys a CXTPDockingPaneManager object, handles cleanup and
* deallocation.
*/
~CXTPDockingPaneManager();
public:
/**
* @brief
* Call this member function to install docking panes.
* @param pParent Parent frame of the panes.
* @param bClipChildren 'true' to add WS_CLIPCHILDREN and WS_CLIPSIBLING
* styles to frame windows so panes are displayed
* correctly from a hidden state.
* @return
* 'true' if the Docking Pane manager was correctly initialized,
* otherwise 'false'.
* @details
* You must call this member function first to initialize the Docking Pane
* manager. This must be called first before any other member functions
* are called.
*/
virtual bool InstallDockingPanes(CWnd* pParent, bool bClipChildren = true);
/**
* @brief
* Call this member function to create a docking pane.
* @param nID Unique identifier of the pane.
* @param rc Initial size of the pane.
* @param direction Docking direction. Can be any of the values listed in the
* Remarks section.
* @param pNeighbour Pane's Neighbor. It can be NULL to use the frame as a neighbor.
* @details
* direction parameter can be one of the following:
* xtpPaneDockTop: Docks the pane to the top of the neighbor.
* xtpPaneDockLeft: Docks the pane to the left of the neighbor.
* xtpPaneDockRight: Docks the pane to the right of the neighbor.
* xtpPaneDockBottom: Docks the pane to the bottom of the neighbor.
* @return
* The pointer to the created pane.
*/
virtual CXTPDockingPane* CreatePane(UINT nID, CRect rc, XTPDockingPaneDirection direction,
CXTPDockingPaneBase* pNeighbour = NULL);
/**
* @brief
* Call this member to dock an existing pane.
* @param pPane Pane to be docked.
* @param direction Docking direction. Can be any of the values listed in the
* Remarks section.
* @param pNeighbour Pane's Neighbor.
* @details
* direction parameter can be one of the following:
* xtpPaneDockTop: Docks the pane to the top of the neighbor.
* xtpPaneDockLeft: Docks the pane to the left of the neighbor.
* xtpPaneDockRight: Docks the pane to the right of the neighbor.
* xtpPaneDockBottom: Docks the pane to the bottom of the neighbor.
*/
virtual void DockPane(CXTPDockingPaneBase* pPane, XTPDockingPaneDirection direction,
CXTPDockingPaneBase* pNeighbour = NULL);
/**
* @brief
* Call this member to dock an existing pane to a dock panel.
* @param pPane Pane to be docked.
* @param direction Docking direction. Can be any of the values listed in the
* Remarks section.
* @param rc Number of pixels to offset the pane from the inside top edge
* of the client area. This only has an effect when using the
* DockLeftOf and DockRightOf direction.
* @details
* DockSidePane will dock a pane to the inside edge of the client using code.
* SideDocking must be enabled for DockSidePane to have any effect.
*
* SideDocking enables or disables "Visio" style client edge docking.
* Side docking can only occur to the inside edges of the client area.
* When SideDocking is enabled, any pane that is dragged to an inside edge
* of the client area will attempt to "snap" to that inside edge of the
* client. The pane will "snap" to the inside edge of the client and
* will leave a margin equal to that specified by SetSideDockingMargin.
*
* SideDocking does not affect normal docking of panes. You will need
* to drag the pane past the side docking margin for normal docking
* algorithms to be used.
* @return
* Reference to the side panel that the pane is docked to.
*/
virtual CXTPDockingPaneSidePanel* DockSidePane(CXTPDockingPaneBase* pPane,
XTPDockingPaneDirection direction, CRect rc);
/**
* @brief
* Call this member to float an existing pane.
* @param pPane Pane to be floated.
* @param rc Floating rectangle.
* @return A floating pane window object or NULL.
*/
virtual CXTPDockingPaneMiniWnd* FloatPane(CXTPDockingPaneBase* pPane, CRect rc);
/**
* @brief
* Call this member to attach a pane to another one.
* @param pPane Pane to be attached.
* @param pNeighbour Pane's Neighbor.
*/
virtual void AttachPane(CXTPDockingPaneBase* pPane, CXTPDockingPaneBase* pNeighbour);
/**
* @brief
* Call this member to switch the pane's position (docking/floating).
* @param pPane Docking Pane.
*/
virtual void ToggleDocking(CXTPDockingPaneBase* pPane);
/**
* @brief
* Call this member to switch the pane's auto-hide (docking/auto-hide).
* @param pPane Docking Pane.
*/
virtual void ToggleAutoHide(CXTPDockingPaneBase* pPane);
/**
* @brief
* Call this member to show (activate) a pane.
* @param nID Pane's identifier.
* @param bSetFocus TRUE to set focus to the selected pane.
*/
virtual void ShowPane(int nID, BOOL bSetFocus = TRUE);
/**
* @brief
* Call this member to show (activate) a pane.
* @param pPane Pane to show.
* @param bSetFocus TRUE to set focus to the selected pane.
*/
virtual void ShowPane(CXTPDockingPane* pPane, BOOL bSetFocus = TRUE);
/**
* @brief
* Call this member to close a pane.
* @param nID Pane's identifier.
*/
virtual void ClosePane(int nID);
/**
* @brief
* Call this member to close a pane.
* @param pPane Pane to close.
*/
virtual void ClosePane(CXTPDockingPane* pPane);
/**
* @brief
* Call this member to destroy a pane.
* @param nID Pane's identifier.
* @see
* ClosePane
*/
virtual void DestroyPane(int nID);
/**
* @brief
* Call this member to destroy a pane.
* @param pPane Pane to destroy.
* @see
* ClosePane
*/
virtual void DestroyPane(CXTPDockingPane* pPane);
/**
* @brief
* Call this member to hide a pane.
* @param nID Pane's identifier.
*/
virtual void HidePane(int nID);
/**
* @brief
* Call this member to hide a pane.
* @param pPane Pane to hide.
*/
virtual void HidePane(CXTPDockingPaneBase* pPane);
/**
* @brief
* Call this member to find a pane by its identifier.
* @param nID Pane's identifier.
* @return
* A pointer to a CXTPDockingPane object.
*/
CXTPDockingPane* FindPane(int nID) const;
/**
* @brief
* Call this member to check if a pane is closed.
* @param nID Pane's identifier.
* @return
* TRUE if the pane is closed.
*/
BOOL IsPaneClosed(int nID) const;
/**
* @brief
* Call this member to check if a pane is closed.
* @param pPane Pointer to a CXTPDockingPane object.
* @return
* TRUE if the pane is closed.
*/
BOOL IsPaneClosed(CXTPDockingPane* pPane) const;
/**
* @brief
* Call this member to check if a pane is hidden.
* @param nID Pane's identifier.
* @return
* TRUE if the pane is hidden.
*/
BOOL IsPaneHidden(int nID) const;
/**
* @brief
* Call this member to check if a pane is hidden.
* @param pPane Pointer to a CXTPDockingPane object.
* @return
* TRUE if the pane is hidden.
*/
BOOL IsPaneHidden(CXTPDockingPane* pPane) const;
/**
* @brief
* Call this member to check if a pane is selected.
* @param nID Pane's identifier.
* @return
* TRUE if the pane is selected.
*/
BOOL IsPaneSelected(int nID) const;
/**
* @brief
* Call this member to check if a pane is selected.
* @param pPane Pointer to a CXTPDockingPane object.
* @return
* TRUE if the pane is selected.
*/
BOOL IsPaneSelected(CXTPDockingPane* pPane) const;
/**
* @brief
* Call this member to set icons to panes.
* @param nIDResource Resource identifier.
* @param nIDs Pointer to an array of pane IDs.
* @param nCount Number of elements in the array pointed to by nIDs.
* @param clrMask An RGB value of a transparent color.
* @return
* TRUE if successful, otherwise FALSE.
*/
BOOL SetIcons(UINT nIDResource, const int* nIDs, int nCount, COLORREF clrMask = 0xC0C0C0);
/**
* @brief
* Call this member to set an icon to the pane.
* @param nID Docking pane's identifier.
* @param hIcon Icon handle.
*/
void SetIcon(UINT nID, const CXTPImageManagerIconHandle& hIcon);
/**
* @brief
* Call this member to get an icon of the pane.
* @param nID Docking pane's identifier.
* @param nWidth Width of the icon to retrieve.
* @return
* The docking pane's icon.
*/
CXTPImageManagerIcon* GetIcon(UINT nID, int nWidth = 16) const;
/**
* @brief
* Call this member to remove all icons.
*/
void ClearIconMap();
/**
* @brief
* Call this member to set the animation speed.
* @param dAnimationDelay Must be -1 to use nAnimationDuration and nAnimationInterval.
* @param nAnimationDuration Total time of the animation, in milliseconds.
* @param nAnimationInterval Amount of time to rest, in milliseconds, between
* each animation step.
* @details
* To disable the animation, set nAnimationDuration = 0.
* @see
* GetAnimationDelay
*/
void SetAnimationDelay(double dAnimationDelay = -1, int nAnimationDuration = 128,
int nAnimationInterval = 16);
/**
* @brief
* Call this member to get the animation speed.
* @param pAnimationDuration Pointer to an int that will receive the total time of
* the animation, in milliseconds.
* @param pAnimationInterval Pointer to an int that will receive the amount of time
* to rest, in milliseconds, between each animation step.
* @return
* The animation delay.
* @see
* SetAnimationDelay
*/
double GetAnimationDelay(int* pAnimationDuration = NULL, int* pAnimationInterval = NULL) const;
/**
* @brief
* Call this member to allow the user to switch and move panes using
* the keyboard.
* @param options Available keyboard keys that can be used to navigate
* items.
* @details
* options can be combination of the following:
* xtpPaneKeyboardUseAltMinus: To use Alt+'-' to show the
* context menu.
* xtpPaneKeyboardUseAltF6: To use Alt+F6 to select the
* next pane.
* xtpPaneKeyboardUseAltF7: To use Alt+F7 to show the window
* select dialog.
* xtpPaneKeyboardUseCtrlTab: To use Ctrl+Tab to show the
* window select dialog.
* xtpPaneKeyboardUseAll: To use all keys.
*
* You can call SetKeyboardWindowSelectClass to set a custom window
* for Ctrl-Tab and Alt_F7 operations.
* @see
* XTPDockingPaneKeyboardNavigate
*/
void EnableKeyboardNavigate(DWORD options = xtpPaneKeyboardUseAll);
/**
* @brief
* Determines if keyboard navigate options are enabled.
* @return
* A combination of XTPDockingPaneKeyboardNavigate flags indicating
* which keys can be used to navigate panes.
* @see
* EnableKeyboardNavigate, XTPDockingPaneKeyboardNavigate
*/
BOOL IsKeyboardNavigateEnabled() const;
/**
* @brief
* Call this method to set a custom CXTPDockingPaneWindowSelect window
* that will be used to show active panes and files.
* @param pWindowSelectClass A CRuntimeClass pointer to a custom
* CXTPDockingPaneWindowSelect window.
* @see
* EnableKeyboardNavigate, XTPDockingPaneKeyboardNavigate
*/
void SetKeyboardWindowSelectClass(CRuntimeClass* pWindowSelectClass);
/**
* @brief
* Determines the runtime class for a CXTPDockingPaneWindowSelect window
* that shows active panes and files.
* @return
* A CRuntimeClass pointer to a CXTPDockingPaneWindowSelect window.
* @see
* SetKeyboardWindowSelectClass, EnableKeyboardNavigate,
* XTPDockingPaneKeyboardNavigate
*/
CRuntimeClass* GetKeyboardWindowSelectClass() const;
/**
* @brief
* Call this method to activate a pane in cycle order.
* @param pPane Pane to start. NULL to select the first pane.
* @param bForward TRUE to select the next pane, FALSE to select the previous pane.
* @return
* TRUE if the pane was successfully activated.
*/
BOOL ActivateNextPane(CXTPDockingPane* pPane, BOOL bForward);
public:
/**
* @brief
* Call this member to get the list of created panes.
* @return
* The list of created panes.
* @see
* GetPaneStack, CXTPDockingPaneInfoList
*/
CXTPDockingPaneInfoList& GetPaneList() const;
/**
* @brief
* Call this member to get the list of created panes, including
* its virtual containers.
* @return
* The list of created panes, including its virtual containers.
* @see
* GetPaneList
*/
CXTPDockingPaneBaseList& GetPaneStack() const;
/**
* @brief
* Call this member to retrieve the docking site of the manager.
* @return
* The docking site.
*/
CWnd* GetSite() const;
/**
* @brief
* Call this member to switch the visual theme of the panes.
* @param theme New visual theme. Can be any of the values listed in the
* Remarks section.
* @details
* theme can be one of the following:
* xtpPaneThemeDefault: Enables the default theme.
* xtpPaneThemeVisualStudio2003: Enables Visual Studio .NET style theme.
* xtpPaneThemeGrippered: Enables Visual Studio 6 style theme.
* xtpPaneThemeOffice2002Visio: Enables Visio style theme.
* xtpPaneThemeOffice2003: Enables Office 2003 style theme.
* xtpPaneThemeWinNative: Enables XP Theme.
* xtpPaneThemeVisualStudio2005Beta1: Enables Visual Studio 2005 Beta 1 theme.
*/
void SetTheme(XTPDockingPanePaintTheme theme);
/**
* @brief
* Call this member to set a custom theme. See the DockingPane sample
* as a sample of creating a new theme.
* @param pTheme New Theme.
*/
void SetCustomTheme(CXTPDockingPanePaintManager* pTheme);
/**
* @brief
* Call this member to get the current visual theme.
* @return
* The current theme.
*/
XTPDockingPanePaintTheme GetCurrentTheme() const;
/**
* @brief
* Retrieves the paint manager of docking panes.
* @return
* The paint manager of docking panes.
*/
CXTPDockingPanePaintManager* GetPaintManager() const;
/**
* @brief
* Call this member to create a new layout.
* @details
* You must delete a layout when it no longer used.
* @return
* A pointer to a CXTPDockingPaneLayout object.
*/
virtual CXTPDockingPaneLayout* CreateLayout();
/**
* @brief
* Call this member to get the current layout.
* @param pLayout Pointer to a CXTPDockingPaneLayout object to receive
* the current layout.
*/
void GetLayout(CXTPDockingPaneLayout* pLayout) const;
/**
* @brief
* Call this member to set the current layout.
* @param pLayout Pointer to a CXTPDockingPaneLayout object.
*/
void SetLayout(const CXTPDockingPaneLayout* pLayout);
/**
* @brief
* Call this member to redraw all panes.
*/
void RedrawPanes();
/**
* @brief
* Call this member to retrieve the client pane.
* @return
* A pointer to a CXTPDockingPaneBase object.
*/
CXTPDockingPaneBase* GetClientPane() const;
/**
* @brief
* Call this member to destroy all panes.
*/
void DestroyAll();
/**
* @brief
* Call this member to close all panes.
*/
void CloseAll();
/**
* @brief
* Call this member to retrieve the image manager of docking panes.
* @return
* The image manager of docking panes.
*/
CXTPImageManager* GetImageManager() const;
/**
* @brief
* Call this member to set the image manager for docking panes.
* @param pImageManager Pointer to a CXTPImageManager object.
*/
void SetImageManager(CXTPImageManager* pImageManager);
/**
* @brief
* Call this member to hide the client area.
* @param bHide TRUE to hide the client area.
*/
void HideClient(BOOL bHide);
/**
* @brief
* Checks if the client area is hidden.
* @return
* TRUE if the client area is hidden, otherwise FALSE.
*/
BOOL IsClientHidden() const;
/**
* @brief
* Sets the width for the client margin.
* @param nMargin Width, in pixels, for the client margin.
*/
void SetClientMargin(int nMargin);
/**
* @brief
* Retrieves the width of the client margin.
* @return
* The width, in pixels, of the client margin.
*/
int GetClientMargin() const;
/**
* @brief
* Sets the width for each side of the client margin (left, top, right,
* and bottom) individually using a CRect object.
* @param rcClientMargins A CRect object representing the width, in pixels,
* for each side of the client margin. Use the
* left, top, right, and bottom members to specify
* the width for each side of the client margin.
*/
void SetClientMargins(CRect rcClientMargins);
/**
* @brief
* Retrieves the width for each side of the client margin (left, top,
* right, and bottom).
* @return
* A CRect object representing the width, in pixels, for each side of
* the client margin. The left, top, right, and bottom members specify
* the width for each side of the client margin.
*/
CRect GetClientMargins() const;
/**
* @brief
* Sets the margin between the client area's edge and a docking pane
* docked to the edge of the client area when side docking is enabled.
* @param rcMargin Side docking margins (margin between the right/top/left/bottom
* edge of the client area and any docking panes that are docked
* to the left/top/right/bottom edge of the client area.)
* @details
* SetSideDockingMargin sets the margins between the client areas's edge
* and a docking pane docked to the edge of the client area when side
* docking is enabled.
* @see
* SideDocking
*/
void SetSideDockingMargin(CRect rcMargin);
/**
* @brief
* Gets the margin between the client area's edge and a docking pane
* docked to the edge of the client area when side docking is enabled.
* @details
* SetSideDockingMargin sets the margins between the client areas's edge
* and a docking pane docked to the edge of the client area when side
* docking is enabled.
* @return
* Side docking margins (margin between the right/top/left/bottom
* edge of the client area and any docking panes that are docked
* to the left/top/right/bottom edge of the client area.)
* @see
* SideDocking, SetSideDockingMargin
*/
CRect GetSideDockingMargin() const;
/**
* @brief
* Call this member to use the splitter tracker.
* @param bSplitterTracker TRUE to use the splitter tracker.
* @details
* If bSplitterTracker is set to FALSE, then this member function will
* display the contents of a child pane while the splitter is resized.
* @see
* IsSplitterTrackerUsed
*/
void UseSplitterTracker(BOOL bSplitterTracker);
/**
* @brief
* Call this member to determine if the splitter tracker is used.
* @return
* TRUE if the splitter tracker is used, otherwise FALSE.
* @see
* UseSplitterTracker
*/
BOOL IsSplitterTrackerUsed() const;
/**
* @brief
* Call this member to set the direction of captions.
* @param captionDirection An XTPDockingPaneCaptionDirection flag indicating
* which direction the pane captions are to be displayed.
*
* @details
* captionDirection parameter can be one of the following:
* xtpPaneCaptionHorizontal
* xtpPaneCaptionVertical
* xtpPaneCaptionAutoByPosition
* xtpPaneCaptionAutoBySize
*
* Example:
* m_paneManager.GetPaintManager()->SetCaptionDirection(xtpPaneCaptionAutoSize);
*/
void SetCaptionDirection(XTPDockingPaneCaptionDirection captionDirection);
/**
* @brief
* Call this member to get the direction of captions.
* @details
* Can return one of the following direction:
* xtpPaneCaptionHorizontal
* xtpPaneCaptionVertical
* xtpPaneCaptionAutoByPosition
* xtpPaneCaptionAutoBySize
* @return
* An XTPDockingPaneCaptionDirection flag indicating which direction
* the pane captions are displayed.
* @see
* SetCaptionDirection
*/
XTPDockingPaneCaptionDirection GetCaptionDirection() const;
/**
* @brief
* Call this method to lock the splitters.
* @param bLock TRUE to prevent splitter window panes from being resized.
*/
void LockSplitters(BOOL bLock = TRUE);
/**
* @brief
* Call this member to determine if the splitters are locked.
* @return
* TRUE if the splitters are locked, otherwise FALSE.
*/
BOOL IsSplittersLocked() const;
/**
* @brief
* Call this method to set the common caption for floating frames.
* @param lpszCaption Caption to be set.
*/
void SetFloatingFrameCaption(LPCTSTR lpszCaption);
/**
* @brief
* Call this method to use themes for floating frames.
* @param bThemedFloatingFrames TRUE to use themes for floating panes,
* FALSE otherwise.
*/
void EnableFloatingFrameTheme(BOOL bThemedFloatingFrames);
/**
* @brief
* Determines if themes are used for floating frames.
* @return
* TRUE if themes are used for floating frames, otherwise FALSE.
*/
BOOL IsFloatingFrameThemeEnabled() const;
/** @cond */
_XTP_DEPRECATED_IN_FAVOR(EnableFloatingFrameTheme)
void SetThemedFloatingFrames(BOOL bThemedFloatingFrames)
{
EnableFloatingFrameTheme(bThemedFloatingFrames);
}
_XTP_DEPRECATED_IN_FAVOR(IsFloatingFrameThemeEnabled)
BOOL IsThemedFloatingFrames() const
{
return IsFloatingFrameThemeEnabled();
}
/** @endcond */
/**
* @brief
* Call this method to enable sticky floating frames.
* @param bSticky TRUE to enable sticky floating frames, FALSE otherwise.
*/
void SetStickyFloatingFrames(BOOL bSticky);
/**
* @brief
* Determines if sticky floating frames are enabled.
* @return
* TRUE if sticky floating frames are enabled, otherwise FALSE.
*/
BOOL IsStickyFloatingFrames() const;
/**
* @brief
* Call this method to set the opacity for inactive floating frames.
* @param nOpacity Alpha value. When nOpacity is 0, the window is completely
* transparent. When nOpacity is 255, the window is opaque.
*/
void SetFloatingFramesOpacity(int nOpacity);
/**
* @brief
* Determines the opacity for inactive floating frames.
* @return
* The opacity for inactive floating frames.
*/
int GetFloatingFramesOpacity() const;
/**
* @brief
* Call this member to keep the activation of floating frames windows
* in sync with the activation of the top-level frame window.
* @param bSyncActiveFloatingFrames TRUE to synchronizes the activation of
* the mini-frame window to the activation
* of its parent window.
*/
void SyncActiveFloatingFrames(BOOL bSyncActiveFloatingFrames);
/**
* @brief
* Call this member to determine if the current layout is Right-to-Left (RTL).
* @return
* TRUE if the current layout is Right-to-Left (RTL),
* FALSE if the current layout is Left-to-Right.
*/
BOOL IsLayoutRTL() const;
/**
* @brief
* Call this member to retrieve the Right-to-Left (RTL) docking direction
* equivalent to the docking direction passed in to this member. The return
* value for this member is dependent on the return value of IsLayoutRTL.
* @param direction Docking direction.
* @return
* If IsLayoutRTL returns TRUE, then this member returns the Right-to-Left
* (RTL) docking direction of the supplied direction. If IsLayoutRTL returns
* FALSE, then the direction passed in to this member remains the same.
*/
XTPDockingPaneDirection GetRTLDirection(XTPDockingPaneDirection direction) const;
/**
* @brief
* Call this member to determine the XTPDockingPaneDirection of pPane.
* @param pPane Pointer to a CXTPDockingPaneBase object.
* @return
* The current XTPDockingPaneDirection of pPane.
*/
XTPDockingPaneDirection GetPaneDirection(const CXTPDockingPaneBase* pPane) const;
/**
* @brief
* Retrieves the top-level virtual container for the site window.
* @details
* The top-level container is always the splitter container
* (xtpPaneTypeSplitterContainer).
* @return
* The top-level virtual container for the site window.
*/
CXTPDockingPaneBase* GetTopPane() const;
/**
* @brief
* Call this method to use a custom docking context.
* @param pDockingContext Pointer to a CXTPDockingPaneContext object.
*/
void SetDockingContext(CXTPDockingPaneContext* pDockingContext);
/**
* @brief
* Retrieves a pointer to the current docking context.
* @return
* A pointer to the current docking context.
*/
CXTPDockingPaneContext* GetDockingContext() const;
/**
* @brief
* Call this member to determine if alpha docking context is used when
* panes are being dragged and dropped.
* @return
* TRUE if AlphaDockingContext is enabled, FALSE if it is disabled.
* @details
* AlphaDockingContext must be TRUE if docking context stickers will
* be used.
* @see
* SetAlphaDockingContext, IsShowDockingContextStickers,
* SetShowDockingContextStickers
*/
BOOL IsAlphaDockingContext() const;
/**
* @brief
* Call this member to specify whether an alpha docking context is
* used to indicate where a pane can be docked while dragging the pane.
* @param bAlphaDockingContext TRUE to enable alpha colorization while docking.
* @details
* Specifies whether the area that a docking pane can occupy is
* shaded in gray as the pane is dragged to its new location. The
* shaded area indicates the area on the application the docking
* pane will occupy if docked in that location.
* AlphaDockingContext must be TRUE if docking context stickers will
* be used.
* @see
* IsAlphaDockingContext, IsShowDockingContextStickers,
* SetShowDockingContextStickers
*/
void SetAlphaDockingContext(BOOL bAlphaDockingContext);
/**
* @brief
* Call this member to determine whether docking context stickers are used.
* @return
* TRUE if docking context stickers are used, FALSE if they are not used.
* @see
* SetAlphaDockingContext, IsAlphaDockingContext, SetShowDockingContextStickers
*/
BOOL IsShowDockingContextStickers() const;
/**
* @brief
* Call this member to specify whether Visual Studio 2005 style docking
* context stickers should be used while dragging a docking pane.
* @param bShowDockingContextStickers If TRUE, then docking stickers are drawn
* on the screen indicating all the possible
* locations that the docking pane can be
* docked while the pane is dragged over the
* application.
* AlphaDockingContext must also be TRUE to
* display the stickers.
* @details
* AlphaDockingContext must be TRUE if docking context stickers will
* be used.
* @see
* SetAlphaDockingContext, IsAlphaDockingContext, IsShowDockingContextStickers,
* SetDockingContextStickerStyle
*/
void SetShowDockingContextStickers(BOOL bShowDockingContextStickers);
/**
* @brief
* Call this member to set the style for docking context stickers.
* @param style Style for docking context stickers.
* @details
* Call SetShowDockingContextStickers to enable Stickers.
* Style parameter can be one of the following:
* xtpPaneStickerStyleVisualStudio2005Beta: Visual Studio 2005 Beta stickers.
* xtpPaneStickerStyleVisualStudio2005: Visual Studio 2005 stickers.
* @see
* SetShowDockingContextStickers, GetDockingContextStickerStyle
*/
void SetDockingContextStickerStyle(XTPDockingContextStickerStyle style);
/**
* @brief
* Call this member to get the style of docking context stickers.
* @return
* Style of docking context stickers.
* @details
* Call SetShowDockingContextStickers to enable docking context stickers.
* @see
* SetShowDockingContextStickers, SetDockingContextStickerStyle
*/
XTPDockingContextStickerStyle GetDockingContextStickerStyle() const;
/**
* @brief
* Call this member to set the "Show window contents while dragging" option.
* @param bShow TRUE to enable the "Show window contents while dragging" option.
*/
void SetShowContentsWhileDragging(BOOL bShow = TRUE);
/**
* @brief
* Determines if the "Show window contents while dragging" option is enabled.
* @return
* TRUE if the "Show window contents while dragging" option is enabled.
*/
BOOL GetShowContentsWhileDragging() const;
/**
* @brief
* Call this method to show Maximize/Restore buttons for non-floating
* docking panes.
* @param bShowMaximizeButton TRUE to show Maximize/Restore buttons for non-floating
* docking panes.
* @see
* ShowFloatingCaptionMaximizeButton, IsCaptionMaximizeButtonsVisible,
* IsFloatingCaptionMaximizeButtonsVisible
*/
void ShowCaptionMaximizeButton(BOOL bShowMaximizeButton);
/**
* @brief
* Call this method to show Maximize/Restore buttons for floating
* docking panes.
* @param bShowMaximizeButton TRUE to show Maximize/Restore buttons for floating
* docking panes.
* @see
* ShowCaptionMaximizeButton, IsFloatingCaptionMaximizeButtonsVisible,
* IsCaptionMaximizeButtonsVisible
*/
void ShowFloatingCaptionMaximizeButton(BOOL bShowMaximizeButton);
/**
* @brief
* Determines if Maximize/Restore buttons for non-floating docking panes
* are visible.
* @return
* TRUE if Maximize/Restore buttons for non-floating docking panes are visible.
* @see
* ShowCaptionMaximizeButton, ShowFloatingCaptionMaximizeButton,
* IsFloatingCaptionMaximizeButtonsVisible
*/
BOOL IsCaptionMaximizeButtonsVisible() const;
/**
* @brief
* Determines if Maximize/Restore buttons for floating docking panes
* are visible.
* @return
* TRUE if Maximize/Restore buttons for floating docking panes are visible.
* @see
* ShowCaptionMaximizeButton, ShowFloatingCaptionMaximizeButton,
* IsCaptionMaximizeButtonsVisible
*/
BOOL IsFloatingCaptionMaximizeButtonsVisible() const;
/**
* @brief
* Call this method to save the current splitter positions for all
* splitter containers.
* @see
* CXTPDockingPaneSplitterContainer
*/
void NormalizeSplitters();
/**
* @brief
* Call this method to recalculate the layout for all parent frames of panes.
*/
void RecalcFramesLayout();
/**
* @brief
* This method updates the XTP_DOCKINGPANE_INFO structure for each pane filling
* its members.
*/
void SyncPanesState();
/**
* @brief
* Call this method to set the default options used for each pane.
* @param dwOptions Options applied for each pane. Can be any of the values
* listed in the Remarks section.
* @details
* dwOptions parameter can be one or more of the following:
* xtpPaneNoCloseable: Indicates that the pane cannot be closed.
* xtpPaneNoHideable: Indicates that the pane cannot be hidden.
* xtpPaneNoFloatable: Indicates that the pane cannot be floated.
* xtpPaneNoCaption: Indicates that the pane has no caption.
* @see
* GetDefaultPaneOptions, CXTPDockingPane::SetOptions, XTPDockingPaneOptions
*/
void SetDefaultPaneOptions(DWORD dwOptions);
/**
* @brief
* Call this method to retrieve the default options used for each pane.
* @return
* The default options used for each pane.
* @see
* SetDefaultPaneOptions, XTPDockingPaneOptions
*/
DWORD GetDefaultPaneOptions() const;
/**
* @brief
* Call this member function to set the application's panes into and
* out of print-preview mode.
* @param bPreview Specifies whether or not to place the application in
* print-preview mode. TRUE to place in print preview,
* FALSE to cancel print preview mode.
*/
void OnSetPreviewMode(BOOL bPreview);
/**
* @brief
* Call this member function to get the currently active (focused) pane.
* @return
* A pointer to the currently active (focused) pane.
*/
CXTPDockingPane* GetActivePane() const;
/**
* @brief
* Call this method to get a pointer to the tooltip context.
* @return
* A pointer to the tooltip context.
*/
CXTPToolTipContext* GetToolTipContext() const;
/**
* @brief
* Call this member function to save/restore the settings of the pane.
* @param pPX Pointer to a CXTPPropExchange object.
* @return
* TRUE if successful, otherwise FALSE.
*/
BOOL DoPropExchange(CXTPPropExchange* pPX);
/**
* @brief
* This method is called to recalculate a pane's site layout.
* @param pPane Pane whose site layout must be recalculated.
* @param bDelay TRUE to recalculate after a small delay.
*/
void RecalcFrameLayout(CXTPDockingPaneBase* pPane, BOOL bDelay = FALSE);
/**
* @brief
* This method is called to update panes state.
*/
virtual void UpdatePanes();
/**
* @brief
* This member is called to notify the parent window that an event
* has occurred in the docking pane.
* @param nCode Specifies the event that has occurred.
* @param lParam Additional message-specific information.
* @return Window message processing result.
*/
virtual LRESULT NotifyOwner(UINT nCode, LPARAM lParam);
/**
* @brief
* Call this method to ensure that a specified pane is visible
* @param pPane Pointer to the CXTPDockingPaneBase object whose visibility
* must be ensured.
* @see
* ShowPane
*/
void EnsureVisible(CXTPDockingPaneBase* pPane);
/**
* @brief
* Enables/disables side docking.
* @param bEnable TRUE to enable side docking, FALSE to disable side docking.
* @see
* SideDocking, SetSideDockingMargin
*/
void EnableSideDocking(BOOL bEnable = TRUE);
/**
* @brief
* Determines if side docking is enabled.
* @return
* TRUE if side docking is enabled, FALSE if side docking is disabled.
* @see
* SideDocking, SetSideDockingMargin, EnableSideDocking
*/
BOOL IsSideDockingEnabled() const;
public:
/**
* @brief
* This method is called when a pane is created.
* @param type Type of pane that was created.
* @param pLayout Pointer to a CXTPDockingPaneLayout object.
* @return
* A pointer to the newly created pane.
*/
virtual CXTPDockingPaneBase* OnCreatePane(XTPDockingPaneType type,
CXTPDockingPaneLayout* pLayout);
/**
* @brief
* This method is called when a pane is activated/deactivated.
* @param bActive TRUE if the pane was activated, FALSE if the pane was deactivated.
* @param pPane The pane that was activated/deactivated.
*/
virtual void OnActivatePane(BOOL bActive, CXTPDockingPane* pPane);
/**
* @brief
* The framework calls this method when a docking pane is performing an action.
* @param action The action that the docking pane is performing.
* @param pPane The pane performing the action.
* @param pDockContainer Object used to provide additional information about where
* a pane will be/has been docked.
* @param dockDirection Specifies the direction where a pane is docking.
* @return
* TRUE if the action was successful, FALSE if the action was cancelled or failed.
*/
BOOL NotifyAction(XTPDockingPaneAction action, CXTPDockingPane* pPane,
CXTPDockingPaneBase* pDockContainer = NULL,
XTPDockingPaneDirection dockDirection = xtpPaneDockLeft);
# ifndef _XTP_ACTIVEX
# ifdef _XTP_INCLUDE_COMMANDBARS
/**
* @brief
* This method is called when a pane need possibility to move to tabclient.
* @param pTabClient Pointer to a CXTPTabClientWnd object.
*/
void SetTabClient(CXTPTabClientWnd* pTabClient);
/**
* @brief
* Determines if possibility to move to tabclient is enabled.
* @return
* Pointer to a CXTPTabClientWnd object.
*/
CXTPTabClientWnd* GetTabClient();
protected:
BOOL AttachDockingPaneMiniWndToTabClientWnd(CXTPDockingPaneMiniWnd* pSource,
CXTPTabClientWnd* pTarget);
BOOL AttachTabbedContainerToTabClientWnd(CXTPDockingPaneBase* pTabbedContainer,
CXTPTabClientWnd* pTarget);
BOOL AttachSplitterContainerToTabClientWnd(CXTPDockingPaneBase* pSplitterContainer,
CXTPTabClientWnd* pTarget);
BOOL AttachDockingPaneToTabClientWnd(CXTPDockingPane* pSource, CXTPTabClientWnd* pTarget);
# endif
# endif
protected:
/** @cond */
DECLARE_MESSAGE_MAP()
//{{AFX_MSG(CXTPDockingPaneManager)
afx_msg void OnSysColorChange();
afx_msg void OnSettingChange(UINT uFlags, LPCTSTR lpszSection);
afx_msg LRESULT OnSizeParent(WPARAM, LPARAM lParam);
afx_msg LRESULT OnIdleUpdateCmdUI(WPARAM wParam, LPARAM);
afx_msg void OnInitialUpdate();
afx_msg LRESULT OnGetObject(WPARAM wParam, LPARAM lParam);
BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult);
//}}AFX_MSG
/** @endcond */
protected:
/** @cond */
// System accessibility support.
virtual HRESULT GetAccessibleParent(IDispatch** ppdispParent);
virtual HRESULT GetAccessibleChildCount(long* pcountChildren);
virtual HRESULT GetAccessibleChild(VARIANT varChild, IDispatch** ppdispChild);
virtual HRESULT GetAccessibleName(VARIANT varChild, BSTR* pszName);
virtual HRESULT GetAccessibleRole(VARIANT varChild, VARIANT* pvarRole);
virtual HRESULT AccessibleLocation(long* pxLeft, long* pyTop, long* pcxWidth, long* pcyHeight,
VARIANT varChild);
virtual HRESULT AccessibleHitTest(long xLeft, long yTop, VARIANT* pvarChild);
virtual HRESULT GetAccessibleState(VARIANT varChild, VARIANT* pvarState);
virtual CCmdTarget* GetAccessible();
DECLARE_INTERFACE_MAP()
XTP_DECLARE_CMDTARGETPROVIDER_INTERFACE()
/** @endcond */
private:
CXTPDockingPaneLayout* GetCurrentLayout() const;
CRect _CalculateResultDockingRect(CXTPDockingPaneBase* pPane, XTPDockingPaneDirection direction,
CXTPDockingPaneBase* pNeighbour);
void _InsertPane(CXTPDockingPaneBase* pPane, XTPDockingPaneDirection direction,
CXTPDockingPaneBase* pNeighbour);
void _RemovePane(CXTPDockingPaneBase* pPane);
void _AttachPane(CXTPDockingPaneBase* pPane, CXTPDockingPaneBase* pNeighbour);
CXTPDockingPaneBase* _GetHolder(CXTPDockingPaneBase* pPane, BOOL bFloating);
CXTPDockingPaneBase* _Clone(CXTPDockingPaneBase* pPane);
void _TrackPopupContextMenu(CXTPDockingPane* pPane);
void _Redraw();
void _DetachAll();
BOOL _ToggleDocking(CXTPDockingPane* pPane, CXTPDockingPaneBase* pHolder);
public:
int m_nSplitterGap; /**< Minimum available width of panes. */
BOOL m_bCloseGroupOnButtonClick; /**< If TRUE, when the close button on a group of panes is
clicked, then the entire group of panes is closed. If
FALSE, then only the currently visible pane in the group
will be closed. */
BOOL m_bHideGroupOnButtonClick; /**< If TRUE, when the hide button on a group of panes is
clicked, then the entire group of panes is hidden. If
FALSE, then only the currently visible pane in the
group will be hidden. */
BOOL m_bShowSizeCursorWhileDragging; /**< TRUE to show the size cursor while panes are dragged.
*/
CPoint m_ptMinClientSize; /**< Minimum client size. */
int m_nStickyGap; /**< Sticky gap. */
BOOL m_bShowPanelScrollButtons; /**< TRUE to show scroll buttons for auto-hide panels. */
BOOL m_bAutoInitialUpdate; /**< TRUE to send WM_INITIIALUPDATE to Pane Children. */
XTPTabNavigateButtonFlags m_bShowCloseTabButton; /**< Close Tab Button Flag. */
protected:
CWnd* m_pSite; /**< Parent window of the docking manager. */
CXTPDockingPaneLayout* m_pLayout; /**< Selected layout. */
CXTPDockingPanePaintManager* m_pPaintManager; /**< Current paint manager. */
CXTPDockingPane* m_pActivePane; /**< Current active pane. */
CRect m_rcClientMargins; /**< Specifies each client margin individually. */
CRect m_rcSideDockingMargin; /**< Side docking margin. This is the margin between the client
area's edge and a docking pane docked to the edge of the
client area when side docking is enabled. */
BOOL m_bStickyFloatingFrames; /**< TRUE to enable sticky option for floating panes. */
CXTPImageManager* m_pImageManager; /**< Image manager of docking panes. */
BOOL m_bSideDocking; /**< TRUE if side docking is enabled, FALSE if disabled. */
BOOL m_bHideClient; /**< If TRUE, then the client area is hidden so that only the docking panes
are visible and occupy the entire area. */
BOOL m_bUseSplitterTracker; /**< If TRUE, then splitter trackers are used. When resizing a
docking pane, an outline of the pane is drawn as the splitter is
dragged. If FALSE, then the docking pane will be resized in
"real-time." */
BOOL m_bShowMaximizeButton; /**< Allow non-floating panes to be maximized. */
BOOL m_bShowFloatingMaximizeButton; /**< Allow floating panes to be maximized. */
BOOL m_bLockSplitters; /**< If TRUE, then you can not resize the panes when they are docked.
However, panes can be resized via code and when they are floated. */
BOOL m_bAlphaDockingContext; /**< If TRUE, then alpha docking context is used when dragging a
pane. The shaded area indicates the panes new location if
dropped. */
BOOL m_bShowDockingContextStickers; /**< If TRUE, then docking context stickers are drawn when
the pane is being dragged and dropped.
m_bAlphaDockingContext must be TRUE. */
BOOL m_bShowContentsWhileDragging; /**< If TRUE, then window contents are visible while
dragging. */
BOOL m_bThemedFloatingFrames; /**< If TRUE, then floating docking panes will use the currently
set theme. */
BOOL m_bSyncActiveFloatingFrames; /**< Synchronizes the activation of the mini-frame window to
the activation of its parent window. */
BOOL m_nFloatingFramesOpacity; /**< Opacity of floating frames. */
DWORD m_bKeyboardEnabled; /**< XTPDockingPaneKeyboardNavigate options. */
DWORD m_dwDefaultPaneOptions; /**< Default Panes options. */
XTPDockingPaneCaptionDirection m_captionDirection; /**< Caption Direction. */
CString m_strFloatingFrameCaption; /**< The caption that is displayed in the title bar of a
floating frame that has panes docked. This is the floating
frame that contains other docking panes. */
XTPDockingContextStickerStyle m_nDockingContextStickerStyle; /**< Sticker style. */
CXTPDockingPaneContext* m_pDockingContext; /**< Docking context helper. */
CXTPDockingPaneLayout* m_pPreviewLayout; /**< Preview mode layout. */
CXTPToolTipContext* m_pToolTipContext; /**< Tooltip Context. */
typedef BOOL(WINAPI* PFNSETLAYEREDWINDOWATTRIBUTES)(HWND hwnd, COLORREF crKey, BYTE bAlpha,
DWORD dwFlags);
PFNSETLAYEREDWINDOWATTRIBUTES m_pfnSetLayeredWindowAttributes; /**< Pointer to
SetLayeredWindowAttributes API
function. */
CRuntimeClass* m_pWindowSelectClass; /**< Runtime class of WindowSelect. */
# ifndef _XTP_ACTIVEX
# ifdef _XTP_INCLUDE_COMMANDBARS
CXTPTabClientWnd* m_pTabClient;
# endif
# endif
private:
HWND m_hwndLastFocus;
BOOL m_bAttachingPane;
BOOL m_bLayoutCreated;
BOOL m_bInitialUpdateCalled;
CString m_strMove;
friend class CXTPDockingPaneBase;
friend class CXTPDockingPaneBaseContainer;
friend class CXTPDockingPaneSplitterContainer;
friend class CXTPDockingPaneTabbedContainer;
friend class CXTPDockingPaneMiniWnd;
friend class CXTPDockingPaneAutoHideWnd;
friend class CXTPDockingPaneContext;
friend class CXTPDockingPane;
friend class CXTPDockingPaneLayout;
friend class CXTPDockingPaneAutoHidePanel;
friend class CDockingPaneSite;
friend class CDockingPaneCtrl;
friend class CDockingPaneOptions;
# ifdef _XTP_ACTIVEX
CXTPDockingPaneManager* GetDockingPaneManager()
{
return this;
}
# endif
};
AFX_INLINE CWnd* CXTPDockingPaneManager::GetSite() const
{
return m_pSite;
}
AFX_INLINE CXTPDockingPaneLayout* CXTPDockingPaneManager::GetCurrentLayout() const
{
return m_pLayout;
}
AFX_INLINE void CXTPDockingPaneManager::RedrawPanes()
{
_Redraw();
}
AFX_INLINE CXTPDockingPanePaintManager* CXTPDockingPaneManager::GetPaintManager() const
{
return m_pPaintManager;
}
AFX_INLINE BOOL CXTPDockingPaneManager::IsClientHidden() const
{
return m_bHideClient;
}
AFX_INLINE void CXTPDockingPaneManager::UseSplitterTracker(BOOL bSplitterTracker)
{
m_bUseSplitterTracker = bSplitterTracker;
}
AFX_INLINE BOOL CXTPDockingPaneManager::IsSplitterTrackerUsed() const
{
return m_bUseSplitterTracker;
}
AFX_INLINE CXTPImageManager* CXTPDockingPaneManager::GetImageManager() const
{
return m_pImageManager;
}
AFX_INLINE BOOL CXTPDockingPaneManager::IsSplittersLocked() const
{
return m_bLockSplitters;
}
AFX_INLINE void CXTPDockingPaneManager::SetFloatingFrameCaption(LPCTSTR lpszCaption)
{
m_strFloatingFrameCaption = lpszCaption;
}
AFX_INLINE BOOL CXTPDockingPaneManager::IsFloatingFrameThemeEnabled() const
{
return m_bThemedFloatingFrames;
}
AFX_INLINE void CXTPDockingPaneManager::SetStickyFloatingFrames(BOOL bSticky)
{
m_bStickyFloatingFrames = bSticky;
}
AFX_INLINE BOOL CXTPDockingPaneManager::IsStickyFloatingFrames() const
{
return m_bStickyFloatingFrames;
}
AFX_INLINE CXTPDockingPaneContext* CXTPDockingPaneManager::GetDockingContext() const
{
return m_pDockingContext;
}
AFX_INLINE BOOL CXTPDockingPaneManager::IsAlphaDockingContext() const
{
return m_bAlphaDockingContext;
}
AFX_INLINE void CXTPDockingPaneManager::SetAlphaDockingContext(BOOL bAlphaDockingContext)
{
m_bAlphaDockingContext = bAlphaDockingContext;
}
AFX_INLINE BOOL CXTPDockingPaneManager::IsShowDockingContextStickers() const
{
return m_bShowDockingContextStickers;
}
AFX_INLINE void
CXTPDockingPaneManager::SetShowDockingContextStickers(BOOL bShowDockingContextStickers)
{
m_bShowDockingContextStickers = bShowDockingContextStickers;
}
AFX_INLINE void CXTPDockingPaneManager::SetDefaultPaneOptions(DWORD dwOptions)
{
m_dwDefaultPaneOptions = dwOptions;
}
AFX_INLINE DWORD CXTPDockingPaneManager::GetDefaultPaneOptions() const
{
return m_dwDefaultPaneOptions;
}
AFX_INLINE void CXTPDockingPaneManager::ClosePane(int nID)
{
ClosePane(FindPane(nID));
}
AFX_INLINE void CXTPDockingPaneManager::ShowPane(int nID, BOOL bSetFocus)
{
ShowPane(FindPane(nID), bSetFocus);
}
AFX_INLINE void CXTPDockingPaneManager::DestroyPane(int nID)
{
DestroyPane(FindPane(nID));
}
AFX_INLINE BOOL CXTPDockingPaneManager::IsPaneClosed(int nID) const
{
return IsPaneClosed(FindPane(nID));
}
AFX_INLINE BOOL CXTPDockingPaneManager::IsPaneHidden(int nID) const
{
return IsPaneHidden(FindPane(nID));
}
AFX_INLINE BOOL CXTPDockingPaneManager::IsPaneSelected(int nID) const
{
return IsPaneSelected(FindPane(nID));
}
AFX_INLINE CXTPDockingPane* CXTPDockingPaneManager::GetActivePane() const
{
return m_pActivePane;
}
AFX_INLINE CXTPToolTipContext* CXTPDockingPaneManager::GetToolTipContext() const
{
return m_pToolTipContext;
}
AFX_INLINE void CXTPDockingPaneManager::ShowCaptionMaximizeButton(BOOL bShowMaximizeButton)
{
m_bShowMaximizeButton = bShowMaximizeButton;
RedrawPanes();
}
AFX_INLINE void CXTPDockingPaneManager::ShowFloatingCaptionMaximizeButton(BOOL bShowMaximizeButton)
{
m_bShowFloatingMaximizeButton = bShowMaximizeButton;
RedrawPanes();
}
AFX_INLINE BOOL CXTPDockingPaneManager::IsCaptionMaximizeButtonsVisible() const
{
return m_bShowMaximizeButton;
}
AFX_INLINE BOOL CXTPDockingPaneManager::IsFloatingCaptionMaximizeButtonsVisible() const
{
return m_bShowFloatingMaximizeButton;
}
AFX_INLINE void
CXTPDockingPaneManager::SetDockingContextStickerStyle(XTPDockingContextStickerStyle style)
{
m_nDockingContextStickerStyle = style;
}
AFX_INLINE XTPDockingContextStickerStyle
CXTPDockingPaneManager::GetDockingContextStickerStyle() const
{
return m_nDockingContextStickerStyle;
}
AFX_INLINE void
CXTPDockingPaneManager::SetCaptionDirection(XTPDockingPaneCaptionDirection captionDirection)
{
m_captionDirection = captionDirection;
RedrawPanes();
}
AFX_INLINE XTPDockingPaneCaptionDirection CXTPDockingPaneManager::GetCaptionDirection() const
{
return m_captionDirection;
}
AFX_INLINE void CXTPDockingPaneManager::SetShowContentsWhileDragging(BOOL bShow)
{
m_bShowContentsWhileDragging = bShow;
}
AFX_INLINE BOOL CXTPDockingPaneManager::GetShowContentsWhileDragging() const
{
return m_bShowContentsWhileDragging;
}
AFX_INLINE void CXTPDockingPaneManager::SetClientMargin(int nMargin)
{
CRect rcClientMargins(nMargin, nMargin, nMargin, nMargin);
SetClientMargins(rcClientMargins);
}
AFX_INLINE int CXTPDockingPaneManager::GetClientMargin() const
{
return m_rcClientMargins.left;
}
AFX_INLINE void CXTPDockingPaneManager::SetClientMargins(CRect rcClientMargins)
{
if (m_rcClientMargins != rcClientMargins)
{
m_rcClientMargins = rcClientMargins;
RecalcFrameLayout(NULL, TRUE);
}
}
AFX_INLINE CRect CXTPDockingPaneManager::GetClientMargins() const
{
return m_rcClientMargins;
}
AFX_INLINE void CXTPDockingPaneManager::SetSideDockingMargin(CRect rcMargin)
{
if (m_rcSideDockingMargin != rcMargin)
{
m_rcSideDockingMargin = rcMargin;
RecalcFrameLayout(NULL, TRUE);
}
}
AFX_INLINE CRect CXTPDockingPaneManager::GetSideDockingMargin() const
{
return m_rcSideDockingMargin;
}
AFX_INLINE int CXTPDockingPaneManager::GetFloatingFramesOpacity() const
{
return m_nFloatingFramesOpacity;
}
AFX_INLINE BOOL CXTPDockingPaneManager::IsKeyboardNavigateEnabled() const
{
return (BOOL)m_bKeyboardEnabled;
}
AFX_INLINE void
CXTPDockingPaneManager::SetKeyboardWindowSelectClass(CRuntimeClass* pWindowSelectClass)
{
m_pWindowSelectClass = pWindowSelectClass;
}
AFX_INLINE CRuntimeClass* CXTPDockingPaneManager::GetKeyboardWindowSelectClass() const
{
return m_pWindowSelectClass;
}
AFX_INLINE void CXTPDockingPaneManager::EnableSideDocking(BOOL bEnable)
{
m_bSideDocking = bEnable;
}
AFX_INLINE BOOL CXTPDockingPaneManager::IsSideDockingEnabled() const
{
return m_bSideDocking;
}
# ifndef _XTP_ACTIVEX
# ifdef _XTP_INCLUDE_COMMANDBARS
AFX_INLINE void CXTPDockingPaneManager::SetTabClient(CXTPTabClientWnd* pTabClient)
{
m_pTabClient = pTabClient;
}
AFX_INLINE CXTPTabClientWnd* CXTPDockingPaneManager::GetTabClient()
{
return m_pTabClient;
}
# endif
# endif
/** @cond */
# include "Common/Base/Diagnostic/XTPEnableNoisyWarnings.h"
#endif //#if !defined(__XTPDOCKINGPANEMANAGER_H__)
/** @endcond */