310 lines
8 KiB
C++
310 lines
8 KiB
C++
|
#include "MainForm.h"
|
||
|
#include "LeftView.h"
|
||
|
#include "RightTopView.h"
|
||
|
#include "RightBottomView.h"
|
||
|
|
||
|
#include "resource.h"
|
||
|
|
||
|
IMPLEMENT_DYNCREATE( MainForm, CFrameWnd )
|
||
|
|
||
|
BEGIN_MESSAGE_MAP( MainForm, CFrameWnd )
|
||
|
|
||
|
ON_WM_CREATE()
|
||
|
|
||
|
END_MESSAGE_MAP()
|
||
|
|
||
|
MainForm::MainForm()
|
||
|
{
|
||
|
m_bAutoMenuEnable = FALSE;
|
||
|
}
|
||
|
|
||
|
int
|
||
|
MainForm::OnCreate( LPCREATESTRUCT lpCreateStruct )
|
||
|
{
|
||
|
static const unsigned int indicator = ID_SEPARATOR;
|
||
|
|
||
|
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
|
||
|
return -1;
|
||
|
|
||
|
statusBar.Create( this );
|
||
|
statusBar.SetIndicators( &indicator, 1 );
|
||
|
|
||
|
#if 0
|
||
|
if ( !toolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
|
||
|
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC)
|
||
|
||
|
||
|
!toolBar.LoadToolBar(IDR_MAINFRAME) )
|
||
|
return -1;
|
||
|
#endif
|
||
|
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
BOOL MainForm::PreCreateWindow(CREATESTRUCT& cs)
|
||
|
{
|
||
|
if( !CFrameWnd::PreCreateWindow(cs) )
|
||
|
return FALSE;
|
||
|
// The following will prevent the "-" getting added to the window title
|
||
|
cs.style &= ~FWS_ADDTOTITLE;
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
BOOL
|
||
|
MainForm::OnCreateClient( LPCREATESTRUCT lpcs, CCreateContext* pContext )
|
||
|
{
|
||
|
#if 0
|
||
|
|
||
|
// create the splitter window.
|
||
|
// it is really a splitter within a splitter
|
||
|
|
||
|
// ---------------------------------
|
||
|
// | | List |
|
||
|
// | | |
|
||
|
// | | |
|
||
|
// | Tree | |
|
||
|
// | -----------------------|
|
||
|
// | | Edit |
|
||
|
// | | |
|
||
|
// | | |
|
||
|
// ---------------------------------
|
||
|
|
||
|
|
||
|
// left pane is a treeview control
|
||
|
// right pane is another splitter with listview control
|
||
|
// and editview control.
|
||
|
splitterWindow.CreateStatic( this, 1, 2 );
|
||
|
|
||
|
// create left hand tree view.
|
||
|
splitterWindow.CreateView( 0,
|
||
|
0,
|
||
|
RUNTIME_CLASS( LeftView ),
|
||
|
CSize( 300, 300 ),
|
||
|
pContext );
|
||
|
|
||
|
// create nested splitter.
|
||
|
splitterWindow2.CreateStatic( &splitterWindow, 2, 1,
|
||
|
WS_CHILD | WS_VISIBLE | WS_BORDER,
|
||
|
splitterWindow.IdFromRowCol( 0, 1 )
|
||
|
);
|
||
|
|
||
|
splitterWindow2.CreateView( 0,
|
||
|
0,
|
||
|
RUNTIME_CLASS( RightTopView ),
|
||
|
CSize( 100, 400 ),
|
||
|
pContext );
|
||
|
|
||
|
splitterWindow2.CreateView( 1,
|
||
|
0,
|
||
|
RUNTIME_CLASS( RightBottomView ),
|
||
|
CSize( 100, 200 ),
|
||
|
pContext );
|
||
|
|
||
|
|
||
|
return TRUE;
|
||
|
|
||
|
#else
|
||
|
// create the splitter window.
|
||
|
// it is really a splitter within a splitter
|
||
|
|
||
|
// ---------------------------------
|
||
|
// | | List |
|
||
|
// | | |
|
||
|
// | Tree | |
|
||
|
// | | |
|
||
|
// |-------------------------------|
|
||
|
// | Edit |
|
||
|
// | |
|
||
|
// | |
|
||
|
// ---------------------------------
|
||
|
|
||
|
// left pane is a treeview control
|
||
|
// right pane is another splitter with listview control
|
||
|
// and bottom is editview control.
|
||
|
|
||
|
splitterWindow.CreateStatic( this, 2, 1 );
|
||
|
|
||
|
|
||
|
// create nested splitter.
|
||
|
splitterWindow2.CreateStatic( &splitterWindow, 1, 2,
|
||
|
WS_CHILD | WS_VISIBLE | WS_BORDER,
|
||
|
splitterWindow.IdFromRowCol( 0, 0 )
|
||
|
);
|
||
|
|
||
|
splitterWindow2.CreateView( 0,
|
||
|
0,
|
||
|
RUNTIME_CLASS( LeftView ),
|
||
|
CSize( 0, 0 ),
|
||
|
pContext );
|
||
|
|
||
|
splitterWindow2.CreateView( 0,
|
||
|
1,
|
||
|
RUNTIME_CLASS( RightTopView ),
|
||
|
CSize( 0, 0 ),
|
||
|
pContext );
|
||
|
|
||
|
|
||
|
|
||
|
// create bottom text view
|
||
|
splitterWindow.CreateView( 1,
|
||
|
0,
|
||
|
RUNTIME_CLASS( RightBottomView ),
|
||
|
CSize( 0, 0 ),
|
||
|
pContext );
|
||
|
|
||
|
|
||
|
// go for 30-70 split column split
|
||
|
// and 60-40 row split.
|
||
|
CRect rect;
|
||
|
GetWindowRect( &rect );
|
||
|
splitterWindow2.SetColumnInfo( 0, rect.Width() * 0.3, 10 );
|
||
|
splitterWindow2.SetColumnInfo( 1, rect.Width() * 0.6, 10 );
|
||
|
splitterWindow2.RecalcLayout();
|
||
|
|
||
|
splitterWindow.SetRowInfo( 0, rect.Height() * 0.6, 10 );
|
||
|
splitterWindow.SetRowInfo( 1, rect.Height() * 0.4, 10 );
|
||
|
splitterWindow.RecalcLayout();
|
||
|
|
||
|
return TRUE;
|
||
|
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
|
||
|
void
|
||
|
MainForm::clusterMenuClicked( CCmdUI* pCmdUI )
|
||
|
{
|
||
|
return;
|
||
|
|
||
|
// find out what is present selection
|
||
|
// whether cluster, world or host.
|
||
|
// disable all menu items if current selection
|
||
|
// not cluster level, else enable.
|
||
|
//
|
||
|
|
||
|
CTreeView* treeView = (CTreeView * ) splitterWindow2.GetPane( 0, 0 );
|
||
|
|
||
|
// Find the item from TreeCtrl which has been selected.
|
||
|
HTREEITEM hdlSelItem = treeView->GetTreeCtrl().GetSelectedItem();
|
||
|
|
||
|
TVITEM selItem;
|
||
|
selItem.hItem = hdlSelItem;
|
||
|
selItem.mask = TVIF_IMAGE ;
|
||
|
|
||
|
treeView->GetTreeCtrl().GetItem( &selItem );
|
||
|
|
||
|
int level;
|
||
|
switch( selItem.iImage )
|
||
|
{
|
||
|
case 0: // this is world level.
|
||
|
level = 0;
|
||
|
break;
|
||
|
|
||
|
case 1: // this is some cluster
|
||
|
level = 1;
|
||
|
break;
|
||
|
|
||
|
default: // this has to be host.
|
||
|
level = 2;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
if( level == 1 )
|
||
|
{
|
||
|
pCmdUI->m_pMenu->EnableMenuItem(
|
||
|
ID_CLUSTER_ADD_HOST,
|
||
|
MF_BYCOMMAND | MF_ENABLED );
|
||
|
|
||
|
pCmdUI->m_pMenu->EnableMenuItem(
|
||
|
ID_CLUSTER_REMOVE,
|
||
|
MF_BYCOMMAND | MF_ENABLED );
|
||
|
|
||
|
pCmdUI->m_pMenu->EnableMenuItem(
|
||
|
ID_CLUSTER_PROPERTIES,
|
||
|
MF_BYCOMMAND | MF_ENABLED );
|
||
|
|
||
|
pCmdUI->m_pMenu->EnableMenuItem(
|
||
|
ID_CLUSTER_UNMANAGE,
|
||
|
MF_BYCOMMAND | MF_ENABLED );
|
||
|
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
pCmdUI->m_pMenu->EnableMenuItem(
|
||
|
ID_CLUSTER_ADD_HOST,
|
||
|
MF_BYCOMMAND | MF_GRAYED | MF_DISABLED );
|
||
|
|
||
|
pCmdUI->m_pMenu->EnableMenuItem(
|
||
|
ID_CLUSTER_REMOVE,
|
||
|
MF_BYCOMMAND | MF_GRAYED | MF_DISABLED );
|
||
|
|
||
|
pCmdUI->m_pMenu->EnableMenuItem(
|
||
|
ID_CLUSTER_PROPERTIES,
|
||
|
MF_BYCOMMAND | MF_GRAYED | MF_DISABLED );
|
||
|
|
||
|
pCmdUI->m_pMenu->EnableMenuItem(
|
||
|
ID_CLUSTER_UNMANAGE,
|
||
|
MF_BYCOMMAND | MF_GRAYED | MF_DISABLED );
|
||
|
|
||
|
}
|
||
|
|
||
|
this->DrawMenuBar();
|
||
|
}
|
||
|
|
||
|
|
||
|
void
|
||
|
MainForm::hostMenuClicked( CCmdUI* pCmdUI )
|
||
|
{
|
||
|
return;
|
||
|
|
||
|
// find out what is present selection
|
||
|
// whether cluster, world or host.
|
||
|
// disable all menu items if current selection
|
||
|
// not host level, else enable.
|
||
|
//
|
||
|
CTreeView* treeView = (CTreeView * ) splitterWindow2.GetPane( 0, 0 );
|
||
|
|
||
|
// Find the item from TreeCtrl which has been selected.
|
||
|
HTREEITEM hdlSelItem = treeView->GetTreeCtrl().GetSelectedItem();
|
||
|
|
||
|
TVITEM selItem;
|
||
|
selItem.hItem = hdlSelItem;
|
||
|
selItem.mask = TVIF_IMAGE ;
|
||
|
|
||
|
treeView->GetTreeCtrl().GetItem( &selItem );
|
||
|
|
||
|
int level;
|
||
|
switch( selItem.iImage )
|
||
|
{
|
||
|
case 0: // this is world level.
|
||
|
level = 0;
|
||
|
break;
|
||
|
|
||
|
case 1: // this is some cluster
|
||
|
level = 1;
|
||
|
break;
|
||
|
|
||
|
default: // this has to be host.
|
||
|
level = 2;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
if( level == 2 )
|
||
|
{
|
||
|
pCmdUI->m_pMenu->EnableMenuItem(
|
||
|
pCmdUI->m_nID,
|
||
|
// ID_HOST_REMOVE,
|
||
|
MF_BYCOMMAND | MF_ENABLED );
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
pCmdUI->m_pMenu->EnableMenuItem(
|
||
|
pCmdUI->m_nID,
|
||
|
MF_BYCOMMAND | MF_GRAYED | MF_DISABLED );
|
||
|
|
||
|
}
|
||
|
|
||
|
this->DrawMenuBar();
|
||
|
}
|
||
|
|
||
|
|