CWindowManager Class Reference

Search Toolkit Book for CWindowManager

#include <window_manager.hpp>

Inheritance diagram for CWindowManager:

Inheritance graph
[legend]
Collaboration diagram for CWindowManager:

Collaboration graph
[legend]
List of all members.

Detailed Description

CWindowManager - component controlling windowing of client windows.

CWindowManager provides centralized control other multiple clients (views) associated with an application. Window Manager provides two major ways to place clients - in independent top-level frame windows (floating) or in containers emdedded into manager's main window (docked). CWindowManager allows for dynamic creation of hierarchical layouts consisting of containers such as CSplitter and CTabControl and clients. IWMClient interface represents an abstract client window that can be managed by CWindowManager. IWMContainer interface represents an abstract container that can be embedded into CWindowManager. IWMCPosition represents abstract notion of position in IWMContainer.

Definition at line 68 of file window_manager.hpp.

Public Types

typedef CWMDockContainer::EDockPos TDockPos
typedef vector< IWMClient * > TClients
typedef CWindowManagerEvent TEvent
enum  EClientState { eInvalidClientState = -1, eFloating, eEmbedded, eHidden }
enum  EFrameCmd { eActivate, eMaximize, eMinimize, eRestore }

Public Member Functions

 CWindowManager (CResourceManager &res_mgr)
virtual ~CWindowManager ()
Fl_Group * GetRootWMContainer ()
bool AddClientInFrame (IWMClient &client)
bool AddClientInTab (IWMClient &client)
bool AddClientToDock (IWMClient &client, const string &dock_pos)
bool AddClient (IWMClient &client, IWMContainer &cont, const IWMPosition &pos)
bool MoveClientToFrame (IWMClient &client)
bool MoveClientToTab (IWMClient &client)
bool CloseClient (IWMClient &client)
void CloseAllClients ()
bool Contains (IWMClient &client) const
 checks if the client in registered in the Manager
void GetAllClients (vector< IWMClient * > &clients)
IWMClientGetActiveClient ()
void ActivateClient (IWMClient &client)
void ActivateClients (TClients &clients)
EClientState GetClientState (IWMClient &client)
bool FrameCommand (IWMClient &client, EFrameCmd cmd)
void OnMoveToFrame (IWMContainer &container, const IWMPosition &pos)
virtual string GetDockPosLabel (IWMClient &client)
virtual TDockPos GetDockPos (IWMClient &client)
void OnFocusChanged (Fl_Widget *new_focus)
virtual objects::CUser_object * LayoutToUserObject (const IWMContainer &cont) const
 focus listener
virtual bool Dispatch (CEvent *evt, EDispatch disp_how, int pool)
Event handlers
void OnCloseContainer (CEvent *evt)
void OnCloseClient (CEvent *evt)
void OnMoveToTopLevel (CEvent *evt)
void OnDockClient (CEvent *evt)
void OnMaximize (CEvent *evt)
void OnRestoreMaximizedEvt (CEvent *evt)
IWindowManager implementation
virtual void GetPopupItems (IWMContainer &container, const IWMPosition &pos, vector< CMenuItem * > &items)
virtual bool OnContainerCommand (IWMContainer &container, const IWMPosition &pos, TCmdID cmd)
virtual bool OnContainerUpdateCommand (IWMContainer &container, const IWMPosition &pos, TCmdID cmd, ICmdUI *pCmdUI)
virtual CMenuItemGetCaptionPanelMenu (CWMCaptionPanel &panel)
virtual bool OnCaptionPanelCommand (CWMCaptionPanel &panel, TCmdID cmd)
virtual bool OnCaptionPanelUpdateCommand (CWMCaptionPanel &panel, TCmdID cmd, ICmdUI *pCmdUI)
virtual CResourceManagerGetResourceManager ()
IFrameWindowClient implementation
virtual void SetFrameWindow (CFrameWindow *frame)
virtual CMenuItemGetMenu ()
 return a menu that will be merged with the Frame's menu; the caller must delete the item
virtual void UpdateMenu (CMenuItem &root)
 update existing menu; only dynamic parts of the menu need to be updated
Settings support
void SetRegistryPath (const string &path)
void LoadSettings ()
void SaveSettings () const
Command handling
void OnInsertSplitter (TCmdID cmd)
void OnActivateWindow (TCmdID cmd)
bool OnResizeClient (TCmdID resize_cmd, CWMCaptionPanel &panel)
bool OnMinimizeClient (CWMCaptionPanel &panel)
bool OnRestoreClient (CWMCaptionPanel &panel)
bool OnRestoreMaximized ()
bool OnRestoreMinimizedClient (CWMCaptionPanel &panel)
bool IsMaximized () const
bool PostDockEvent (TCmdID cmd, CWMCaptionPanel &panel)
bool OnSetClientColor (CWMCaptionPanel &panel)

Protected Types

typedef map< IWMClient *,
SClientRec * > 
TClientToRecMap
typedef map< Fl_Widget *,
IWMClient * > 
TWidgetToClientMap
typedef map< int, pair< IWMClient *,
int > > 
TPseudoCmdMap
typedef map< int, IWMClient * > TCmdToWindowMap
 maps generated commands to pair IWMClient, Command
enum  EAddOption { eAddToRootTab, eAddToFrame, eAddToContainer }

Protected Member Functions

 DECLARE_EVENT_MAP ()
virtual void x_CreateRootContainers ()
virtual void x_RegisterIcons ()
bool x_RegisterClient (IWMClient &client)
bool x_UnRegisterClient (IWMClient &client)
SClientRecx_GetClientRec (IWMClient *client)
const SClientRecx_GetClientRec (IWMClient *client) const
int x_GeneratePseudoCommand (IWMClient &client, int cmd)
 generates a pseudo-command for popup menus.
CMenuItemx_GetMoveFromFrameMenu (IWMContainer &container, const IWMPosition &pos)
CMenuItemx_GetMoveHereMenu (IWMContainer &container, const IWMPosition &pos)
void x_GetDockItems (vector< CMenuItem * > &items) const
bool x_OnPseudoCommand (IWMContainer &container, const IWMPosition &pos, TCmdID cmd)
bool x_UpdateDockCommand (CWMCaptionPanel &panel, TCmdID cmd, ICmdUI *cmd_ui)
bool x_UpdateMinMaxCommand (CWMCaptionPanel &panel, TCmdID cmd, ICmdUI *cmd_ui)
bool x_OnContainerUpdateCommand (IWMContainer &container, const IWMPosition &pos, TCmdID cmd, ICmdUI *cmd_ui)
bool x_AddClient (IWMClient &client, EAddOption option, IWMContainer *cont=NULL, const IWMPosition *pos=NULL)
bool x_IsFloatingEnabled () const
void x_PutClientInFrame (IWMClient &client)
 Creates new CWMFrameWindow and inserts client into it.
void x_PutClientInTab (IWMClient &client)
void x_GetFramedClients (TClients &clients)
CWMCaptionPanelx_InsertClient (IWMClient &client, IWMContainer &container, const IWMPosition &pos, bool minimized=false)
void x_MoveInContainer (IWMClient &client, IWMContainer &container, const IWMPosition &pos)
void x_MoveClientToTopLevel (IWMClient &client)
void x_MoveToDockPos (IWMClient &client, TDockPos pos)
void x_Close (IWMContainer &container, const IWMPosition &pos)
 removes Client or container from specified position
bool x_CloseClient (IWMClient &client)
void x_RemoveContainer (IWMContainer &container)
void x_RemoveClient (IWMClient &client)
void x_RemoveClient (SClientRec &rec)
void x_CascadeClose (IWMContainer &container, Fl_Widget *child)
 removes widgets from it's container and recursively removes all its children
void x_InsertSplitter (IWMContainer &container, const IWMPosition &pos, CSplitter::EMode mode)
CWMTabControlx_WrapClientInTabControl (IWMContainer &cont, IWMPosition &pos)
void x_Maximize (IWMClient &client)
void x_RestoreMaximized ()
void x_UpdateListener (IWMClient &client)
void x_ResetMenu ()
 Regenerate Window Manager's menu and request Frame Window to reset it's menu.
virtual void x_UpdateActiveClient (void)
virtual void x_SetActiveClient (void)
virtual void x_OnSaveLayout (IWMContainer &cont, const IWMPosition *pos)
virtual bool OnCommand (const TCmdID cmd)
 overrdining CCommandTarget behavior
IWMClientx_GetClientByWidget (Fl_Widget *widget) const
const IWMClientx_GetClientByWidget (const Fl_Widget *widget) const
CWMCaptionPanelx_GetCaptionPanelByClient (Fl_Widget *widget)
CWMCaptionPanelx_GetCaptionPanelByWidget (Fl_Widget *widget)
CWMCaptionPanelx_GetCaptionPanelByClient (IWMClient &client)
IWMContainerx_GetContainerByWidget (IWMClient &client)
virtual void x_UpdateWindowsMenu (CMenuItem &root)
virtual Fl_Widget * x_CreateWindowFromUserObject (IWMContainer *cont, const IWMPosition *pos, const objects::CUser_object &descr)
virtual objects::CUser_object * x_ChildToUserObject (const IWMContainer::TChild *child) const
string x_GetClientLabelForMenu (IWMClient &client)

Protected Attributes

CResourceManagerm_ResourceManager
bool m_bEnableFloating
CWMTabControlm_RootCont
 enable support for floating frames
TClientToRecMap m_ClientToRec
 root IWMContainer
TWidgetToClientMap m_WidgetToClient
TPseudoCmdMap m_PseudoCmdMap
int m_PseudoCmdCount
int m_DefFrameW
 number of generated commands (for current popup)
int m_DefFrameH
int m_PosIncr
int m_FrameX
int m_FrameY
CFrameWindowm_FrameWindow
Fl_Widget * m_PrevFocus
IWMClientm_ActiveClient
 widget that was previously focused
CCommandTargetm_ActiveClientTarget
TCmdToWindowMap m_CmdToWindow
 belonging to focused IWMClient
CWMDockContainerm_DockContainer
CWMCaptionPanelm_MaximizedPanel
auto_ptr< IWMPositionm_RestorePos
IWMContainerm_RestoreCont
string m_RegPath

Classes

struct  SClientRec


Member Typedef Documentation

typedef vector<IWMClient*> CWindowManager::TClients
 

Definition at line 91 of file window_manager.hpp.

typedef map<IWMClient*, SClientRec*> CWindowManager::TClientToRecMap [protected]
 

Definition at line 298 of file window_manager.hpp.

typedef map<int, IWMClient*> CWindowManager::TCmdToWindowMap [protected]
 

maps generated commands to pair IWMClient, Command

Definition at line 303 of file window_manager.hpp.

typedef CWMDockContainer::EDockPos CWindowManager::TDockPos
 

Definition at line 89 of file window_manager.hpp.

typedef CWindowManagerEvent CWindowManager::TEvent
 

Definition at line 92 of file window_manager.hpp.

typedef map<int, pair<IWMClient*, int> > CWindowManager::TPseudoCmdMap [protected]
 

Definition at line 300 of file window_manager.hpp.

typedef map<Fl_Widget*, IWMClient*> CWindowManager::TWidgetToClientMap [protected]
 

Definition at line 299 of file window_manager.hpp.


Member Enumeration Documentation

enum CWindowManager::EAddOption [protected]
 

Enumerator:
eAddToRootTab 
eAddToFrame 
eAddToContainer 

Definition at line 232 of file window_manager.hpp.

enum CWindowManager::EClientState
 

Enumerator:
eInvalidClientState 
eFloating 
eEmbedded 
eHidden 

Definition at line 75 of file window_manager.hpp.

enum CWindowManager::EFrameCmd
 

Enumerator:
eActivate 
eMaximize 
eMinimize 
eRestore 

Definition at line 82 of file window_manager.hpp.


Constructor & Destructor Documentation

&CWindowManager::OnCloseClient &CWindowManager::OnDockClient &CWindowManager::OnRestoreMaximizedEvt CWindowManager::CWindowManager CResourceManager res_mgr  ) 
 

Definition at line 154 of file window_manager.cpp.

References m_DefFrameH, m_DefFrameW, m_FrameX, m_FrameY, x_CreateRootContainers(), and x_RegisterIcons().

CWindowManager::~CWindowManager  )  [virtual]
 

Definition at line 177 of file window_manager.cpp.

References CloseAllClients(), and m_RootCont.


Member Function Documentation

void CWindowManager::ActivateClient IWMClient client  ) 
 

Definition at line 1257 of file window_manager.cpp.

References ActivateClients().

Referenced by CWorkspaceWindow::ActivateClient(), CWorkspaceWindow::AddClient(), and CWorkspaceWindow::AddClientToDock().

void CWindowManager::ActivateClients TClients clients  ) 
 

Definition at line 1267 of file window_manager.cpp.

References CWMDockContainer::eCenter, CWMDockContainer::eInvalidDockPos, set< Key, Compare >::end(), set< Key, Compare >::find(), CTabControl::GetTabIndex(), IWMClient::GetWidget(), set< Key, Compare >::insert(), CWMDockContainer::IsDockMinimized(), IsMaximized(), m_DockContainer, CWindowManager::SClientRec::m_DockPos, CWindowManager::SClientRec::m_Panel, NON_CONST_ITERATE, CWMDockContainer::RestoreMinimized(), CTabControl::SelectTab(), x_GetClientRec(), and x_RestoreMaximized().

Referenced by ActivateClient(), CGBenchWorkspaceWindow::ActivateClients(), and OnActivateWindow().

bool CWindowManager::AddClient IWMClient client,
IWMContainer cont,
const IWMPosition pos
 

Definition at line 289 of file window_manager.cpp.

References eAddToContainer, pos, and x_AddClient().

Referenced by CWorkspaceWindow::AddClient().

bool CWindowManager::AddClientInFrame IWMClient client  ) 
 

Definition at line 265 of file window_manager.cpp.

References eAddToFrame, x_AddClient(), and x_IsFloatingEnabled().

bool CWindowManager::AddClientInTab IWMClient client  ) 
 

Definition at line 271 of file window_manager.cpp.

References eAddToRootTab, and x_AddClient().

Referenced by CWorkspaceWindow::AddClient(), and CWinManagerApp::OnCreateClient().

bool CWindowManager::AddClientToDock IWMClient client,
const string &  dock_pos
 

Definition at line 277 of file window_manager.cpp.

References eAddToContainer, eAddToRootTab, CWMDockContainer::eInvalidDockPos, CWMDockContainer::GetDefInsertPos(), m_DockContainer, pos, StrToDockPos(), and x_AddClient().

Referenced by CWorkspaceWindow::AddClientToDock().

void CWindowManager::CloseAllClients  ) 
 

Definition at line 1209 of file window_manager.cpp.

References map_checker< Container >::begin(), m_ClientToRec, map_checker< Container >::size(), and x_CloseClient().

Referenced by CWorkspaceWindow::x_CloseAllClients(), and ~CWindowManager().

bool CWindowManager::CloseClient IWMClient client  ) 
 

Definition at line 1199 of file window_manager.cpp.

References x_CloseClient(), and x_ResetMenu().

Referenced by CGBenchWorkspaceWindow::OnCloseAllViews(), OnCloseClient(), CWinManagerApp::OnDestroyClient(), x_CascadeClose(), and CWorkspaceWindow::x_CloseClient().

bool CWindowManager::Contains IWMClient client  )  const
 

checks if the client in registered in the Manager

Definition at line 1251 of file window_manager.cpp.

References x_GetClientRec().

Referenced by CGBenchWorkspaceWindow::Contains().

CWindowManager::DECLARE_EVENT_MAP  )  [protected]
 

Reimplemented in CGBenchWindowManager.

bool CWindowManager::Dispatch CEvent evt,
EDispatch  disp_how,
int  pool
[virtual]
 

Definition at line 2101 of file window_manager.cpp.

References CEventHandler::Dispatch(), CEventHandler::eDispatch_FirstHandler, GetActiveClient(), CEventHandler::HasListener(), and CEventHandler::Send().

bool CWindowManager::FrameCommand IWMClient client,
EFrameCmd  cmd
 

Definition at line 362 of file window_manager.cpp.

References eActivate, eMaximize, eMinimize, eRestore, CWindowManager::SClientRec::m_Container, and x_GetClientRec().

IWMClient * CWindowManager::GetActiveClient  ) 
 

Definition at line 1336 of file window_manager.cpp.

References m_ActiveClient.

Referenced by Dispatch(), CGBenchWorkspaceWindow::GetActiveClient(), CWinManagerApp::OnDestroyClient(), and CWinManagerApp::OnUpdateDestroyClient().

void CWindowManager::GetAllClients vector< IWMClient * > &  clients  ) 
 

Definition at line 1243 of file window_manager.cpp.

References ITERATE, and m_ClientToRec.

Referenced by CGBenchWorkspaceWindow::GetAllClients().

CMenuItem * CWindowManager::GetCaptionPanelMenu CWMCaptionPanel panel  )  [virtual]
 

Implements IWindowManager.

Definition at line 625 of file window_manager.cpp.

References CMenuItem::AddSeparator(), CMenuItem::AddSubItem(), eCmdCPanelClose, eCmdCPanelMaximize, eCmdCPanelMinimize, eCmdCPanelMoveToTopLevel, eCmdCPanelRestoreMaximized, eCmdCPanelRestoreMinimized, eCmdDockBottom, eCmdDockCenter, eCmdDockLeft, eCmdDockRight, eCmdDockTop, IMinMaxClient::eMaximized, IMinMaxClient::GetState(), CTabControl::GetTabIndex(), and m_RootCont.

CWindowManager::EClientState CWindowManager::GetClientState IWMClient client  ) 
 

Definition at line 1389 of file window_manager.cpp.

References eEmbedded, eFloating, eHidden, eInvalidClientState, CWindowManager::SClientRec::m_bFrame, CWindowManager::SClientRec::m_Container, and x_GetClientRec().

Referenced by MoveClientToFrame(), and MoveClientToTab().

CWindowManager::TDockPos CWindowManager::GetDockPos IWMClient client  )  [virtual]
 

Definition at line 2094 of file window_manager.cpp.

References CWMDockContainer::eInvalidDockPos, CWindowManager::SClientRec::m_DockPos, and x_GetClientRec().

string CWindowManager::GetDockPosLabel IWMClient client  )  [virtual]
 

Definition at line 2083 of file window_manager.cpp.

References DockPosToStr(), CWindowManager::SClientRec::m_DockPos, and x_GetClientRec().

Referenced by CWorkspaceWindow::GetDockPos().

CMenuItem * CWindowManager::GetMenu  )  [virtual]
 

return a menu that will be merged with the Frame's menu; the caller must delete the item

Implements IFrameWindowClient.

Definition at line 1515 of file window_manager.cpp.

References CreateMenuItems(), IWMClient::GetMenu(), ITERATE, CWindowManager::SClientRec::m_Client, m_ClientToRec, CWindowManager::SClientRec::m_Container, CMenuItem::Merge(), and x_UpdateWindowsMenu().

Referenced by CWorkspaceWindow::GetMenu(), and CGBenchWorkspaceWindow::GetMenu().

void CWindowManager::GetPopupItems IWMContainer container,
const IWMPosition pos,
vector< CMenuItem * > &  items
[virtual]
 

Implements IWindowManager.

Reimplemented in CGBenchWindowManager.

Definition at line 388 of file window_manager.cpp.

References map_checker< Container >::clear(), eCmdDelContainer, eCmdIns2x2Splitter, eCmdInsHorzSplitter, eCmdInsTabControl, eCmdInsVertSplitter, IWMContainer::IsAvailable(), m_PseudoCmdCount, m_PseudoCmdMap, m_RootCont, pos, x_GetMoveFromFrameMenu(), and x_GetMoveHereMenu().

Referenced by CGBenchWindowManager::GetPopupItems().

CResourceManager * CWindowManager::GetResourceManager  )  [virtual]
 

Implements IWindowManager.

Definition at line 981 of file window_manager.cpp.

References m_ResourceManager.

Fl_Group * CWindowManager::GetRootWMContainer  ) 
 

Definition at line 259 of file window_manager.cpp.

References m_RootCont.

bool CWindowManager::IsMaximized  )  const
 

Definition at line 826 of file window_manager.cpp.

References m_MaximizedPanel.

Referenced by ActivateClients(), x_AddClient(), x_CloseClient(), x_Maximize(), and x_MoveToDockPos().

CUser_object * CWindowManager::LayoutToUserObject const IWMContainer cont  )  const [virtual]
 

focus listener

Definition at line 1960 of file window_manager.cpp.

References CUser_object::AddField(), IWMContainer::GetDescr(), IWMContainer::GetPosToChildMap(), m_RootCont, NON_CONST_ITERATE, pos, CUser_object_Base::SetType(), and x_ChildToUserObject().

Referenced by x_ChildToUserObject().

void CWindowManager::LoadSettings  ) 
 

Definition at line 1628 of file window_manager.cpp.

References CGuiRegistry::GetInstance(), CGuiRegistry::CReadView::GetInt(), CGuiRegistry::GetReadWriteView(), m_DockContainer, m_RegPath, CGuiRegistryUtil::MakeKey(), CWMDockContainer::SetDockSize(), size, and StrToDockPos().

Referenced by CGBenchWorkspaceWindow::LoadSettings().

bool CWindowManager::MoveClientToFrame IWMClient client  ) 
 

Definition at line 337 of file window_manager.cpp.

References eFloating, GetClientState(), x_IsFloatingEnabled(), x_PutClientInFrame(), x_RemoveClient(), and x_UpdateListener().

bool CWindowManager::MoveClientToTab IWMClient client  ) 
 

Definition at line 350 of file window_manager.cpp.

References eEmbedded, GetClientState(), x_PutClientInTab(), x_RemoveClient(), and x_UpdateListener().

void CWindowManager::OnActivateWindow TCmdID  cmd  ) 
 

Definition at line 1748 of file window_manager.cpp.

References ActivateClients(), and m_CmdToWindow.

bool CWindowManager::OnCaptionPanelCommand CWMCaptionPanel panel,
TCmdID  cmd
[virtual]
 

Implements IWindowManager.

Definition at line 681 of file window_manager.cpp.

References _ASSERT, CWindowManagerEvent::eCloseClient, eCmdCPanelClose, eCmdCPanelMaximize, eCmdCPanelMinimize, eCmdCPanelMoveToTopLevel, eCmdCPanelRestoreMaximized, eCmdCPanelRestoreMinimized, eCmdDockBottom, eCmdDockCenter, eCmdDockLeft, eCmdDockRight, eCmdDockTop, eCmdSetClientColor, CWindowManagerEvent::eMaximize, CWindowManagerEvent::eMoveToTopLevel, CWindowManagerEvent::eRestoreMaximized, CWMCaptionPanel::GetClient(), OnMinimizeClient(), OnRestoreMinimizedClient(), OnSetClientColor(), PostDockEvent(), and x_PostWMEvent().

bool CWindowManager::OnCaptionPanelUpdateCommand CWMCaptionPanel panel,
TCmdID  cmd,
ICmdUI