windows-nt/Source/XPSP1/NT/net/wlbs/nlbmgr/exe/mainform.cpp
2020-09-26 16:20:57 +08:00

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();
}