📄 workspcbase.cpp
字号:
// WorkSpcBase.cpp : implementation file
//
#include "stdafx.h"
#include "VisualJava.h"
#include "WorkSpcBase.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CWorkSpcBase dialog
//CCustomTreeCtrl CWorkSpcBase::m_wndFileView;
CWorkSpcBase::CWorkSpcBase(CWnd* pParent /*=NULL*/)
: CDialog(CWorkSpcBase::IDD, pParent)
{
//{{AFX_DATA_INIT(CWorkSpcBase)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CWorkSpcBase::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWorkSpcBase)
DDX_Control(pDX, IDC_WORKSPACE_TAB, m_wndWorkSpcTab);
DDX_Control(pDX, IDC_STATIC_STYLE, m_wndStyler);
DDX_Control(pDX, IDC_FILE_TREE, m_wndFileView);
DDX_Control(pDX, IDC_CLASS_TREE, m_wndClassView);
//}}AFX_DATA_MAP
}
UINT WM_WORKSPACE_OPENED = ::RegisterWindowMessage("WorkSpacedOpen");
UINT WM_WORKSPACE_CLOSED = ::RegisterWindowMessage("WorkSpacedClosed");
BEGIN_MESSAGE_MAP(CWorkSpcBase, CDialog)
//{{AFX_MSG_MAP(CWorkSpcBase)
ON_WM_CREATE()
ON_WM_SIZE()
ON_NOTIFY(NM_DBLCLK, IDC_CLASS_TREE, OnDblclkClassTree)
ON_NOTIFY(TCN_SELCHANGE, IDC_WORKSPACE_TAB, OnTabSelChange)
//ON_WM_RBUTTONDOWN()
//}}AFX_MSG_MAP
//ON_REGISTERED_MESSAGE(WM_WORKSPACE_OPENED,OnWorkSpaceOpened)
//ON_REGISTERED_MESSAGE(WM_WORKSPACE_CLOSED,OnWorkSpaceClosed)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CWorkSpcBase message handlers
void CWorkSpcBase::CreateViews()
{
m_wndWorkSpcTab.DeleteAllItems();
// set "normal" GUI-font
CFont *font = CFont::FromHandle((HFONT)::GetStockObject(DEFAULT_GUI_FONT));
m_wndWorkSpcTab.SetFont(font);
m_imgList.Create(IDB_TABIMG,16,1,RGB(255,0,0));
m_wndWorkSpcTab.SetImageList(&m_imgList);
TC_ITEM tci;
tci.mask = TCIF_TEXT | TCIF_IMAGE;
tci.pszText = "ClassView";
tci.iImage = 0;
m_wndWorkSpcTab.InsertItem(0, &tci);
/*
TC_ITEM tci1;
tci1.mask = TCIF_TEXT | TCIF_IMAGE;
tci1.pszText = "ResourceView";
tci1.iImage = 1;
m_wndWorkSpcTab.InsertItem(1, &tci1);
*/
TC_ITEM tci2;
tci2.mask = TCIF_TEXT | TCIF_IMAGE;
tci2.pszText = "FileView";
tci2.iImage = 2;
m_wndWorkSpcTab.InsertItem(2, &tci2);
m_wndWorkSpcTab.SetPadding(CSize(3,3));
m_classImg.Create(IDB_CLASSIMG,16,1,RGB(255,0,0));
m_wndClassView.SetImageList(&m_classImg,TVSIL_NORMAL);
//m_resImg.Create(IDB_RESIMGS,16,1,RGB(255,0,0));
//m_wndResView.SetImageList(&m_resImg,TVSIL_NORMAL);
//m_wndResView.InsertItem("Resources",2,2);
m_fileImg.Create(16,16,ILC_COLOR24|ILC_MASK,7,2);
CBitmap bm;
bm.LoadBitmap(IDB_FILE_BUNDLE);
m_fileImg.Add(&bm,RGB(255,0,255));
m_wndFileView.SetImageList(&m_fileImg,TVSIL_NORMAL);
m_pCurView = &m_wndClassView;
}
int CWorkSpcBase::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
return 0;
}
void CWorkSpcBase::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
//CRect rc;
//GetClientRect(&rc);
if(m_wndWorkSpcTab.m_hWnd == NULL)return;
m_wndWorkSpcTab.AdjustRect(FALSE,CRect(0,0,cx,cy-5));
m_wndWorkSpcTab.MoveWindow(&CRect(0,0,cx,cy));
m_wndStyler.MoveWindow(4,0,cx-8,cy-35);
if(m_wndClassView.m_hWnd != NULL)
m_wndClassView.MoveWindow(10,10,cx-20,cy-50);
// if(m_wndResView.m_hWnd != NULL)
// m_wndResView.MoveWindow(10,10,cx-20,cy-50);
if(m_wndFileView.m_hWnd != NULL)
m_wndFileView.MoveWindow(10,10,cx-20,cy-50);
}
HTREEITEM CWorkSpcBase::AddItem(CString pszItem,int nLineIndex /*= -1*/,
HTREEITEM hParent /*=0*/,
UINT ntype /*= 0*/,UINT naccess /*=0*/)
{
HTREEITEM hHwnd= NULL;
switch(ntype)
{
case IS_CLASS:
hHwnd= m_wndClassView.InsertItem(pszItem,0,0,hParent,TVI_SORT);
m_wndClassView.SetItemData(hHwnd,(DWORD)nLineIndex);
return hHwnd;
case IS_FUNC:
return AddFunc(pszItem,nLineIndex,hParent,naccess);
case IS_VAR:
return AddVar(pszItem,nLineIndex,hParent,naccess);
case IS_LOCAL:
{
hHwnd= m_wndClassView.InsertItem(pszItem,2,2,hParent,TVI_LAST);
m_wndClassView.SetItemData(hHwnd,(DWORD)nLineIndex);
/* if(hHwnd == NULL)
{
// ASSERT(NULL);
m_wndClassView.InsertItem("NULL PARENT:"+m_wndClassView.GetItemText(hParent),8,8,TVI_ROOT,TVI_LAST);
}*/
return hHwnd;
}
case IS_BLOCK:
hHwnd = m_wndClassView.InsertItem(pszItem,10,10,hParent,TVI_LAST);
m_wndClassView.SetItemData(hHwnd,(DWORD)nLineIndex);
return hHwnd;
default:;
m_wndClassView.InsertItem(pszItem,8,8,TVI_ROOT,TVI_LAST);
return 0;
}
return 0;
}
void CWorkSpcBase::RemoveItem(HTREEITEM hItem)
{
m_wndClassView.DeleteItem(hItem);
}
HTREEITEM CWorkSpcBase::AddFunc(CString pszItem,int nLineIndex,HTREEITEM hParent,
UINT naccess)
{
HTREEITEM hHwnd = NULL;
switch(naccess)
{
case IS_PUBLIC:
{
hHwnd = m_wndClassView.InsertItem(pszItem,1,1,hParent,TVI_LAST);
if(hHwnd == NULL)
m_wndClassView.InsertItem("NULL PARENT",8,8,TVI_ROOT,TVI_LAST);
m_wndClassView.SetItemData(hHwnd,(DWORD)nLineIndex);
//CMainFrame *pMainFrm = GETMAINFRAME;
//pMainFrm->AddFunction(0,pszItem,nLineIndex);
return hHwnd;
}
case IS_PROTECTED:
{
hHwnd = m_wndClassView.InsertItem(pszItem,6,6,hParent,TVI_LAST);
if(hHwnd == NULL)
m_wndClassView.InsertItem("NULL PARENT",8,8,TVI_ROOT,TVI_LAST);
m_wndClassView.SetItemData(hHwnd,(DWORD)nLineIndex);
//CMainFrame *pMainFrm = GETMAINFRAME;
//pMainFrm->AddFunction(2,pszItem,nLineIndex);
return hHwnd;
}
default:;
{
hHwnd = m_wndClassView.InsertItem(pszItem,4,4,hParent,TVI_LAST);
if(hHwnd == NULL)
m_wndClassView.InsertItem("NULL PARENT",8,8,TVI_ROOT,TVI_LAST);
m_wndClassView.SetItemData(hHwnd,(DWORD)nLineIndex);
//CMainFrame *pMainFrm = GETMAINFRAME;
//pMainFrm->AddFunction(1,pszItem,nLineIndex);
return hHwnd;
}
}
return 0;
}
HTREEITEM CWorkSpcBase::AddVar(CString pszItem,int nLineIndex ,HTREEITEM hParent,
UINT naccess)
{
HTREEITEM hHwnd = NULL;
switch(naccess)
{
case IS_PUBLIC:
{
hHwnd = m_wndClassView.InsertItem(pszItem,3,3,hParent,TVI_LAST);
if(hHwnd == NULL)
m_wndClassView.InsertItem("NULL PARENT",8,8,TVI_ROOT,TVI_LAST);
m_wndClassView.SetItemData(hHwnd,(DWORD)nLineIndex);
return hHwnd;
}
case IS_PROTECTED:
{
hHwnd = m_wndClassView.InsertItem(pszItem,7,7,hParent,TVI_LAST);
if(hHwnd == NULL)
m_wndClassView.InsertItem("NULL PARENT",8,8,TVI_ROOT,TVI_LAST);
m_wndClassView.SetItemData(hHwnd,(DWORD)nLineIndex);
return hHwnd;
}
default:;
{
hHwnd= m_wndClassView.InsertItem(pszItem,5,5,hParent,TVI_LAST);
if(hHwnd == NULL)
m_wndClassView.InsertItem("NULL PARENT",8,8,TVI_ROOT,TVI_LAST);
m_wndClassView.SetItemData(hHwnd,(DWORD)nLineIndex);
return hHwnd;
}
}
return 0;
}
void CWorkSpcBase::OnDblclkClassTree(NMHDR* pNMHDR, LRESULT* pResult)
{
/*if(pNMHDR->idFrom == IDC_CLASS_TREE)
{
HTREEITEM hItem = m_wndClassView.GetSelectedItem();
int nLineIndex = (int)m_wndClassView.GetItemData(hItem);
// Get the active MDI child window.
CChildFrame *pChild = (CChildFrame *)GETACTIVEFRAME;
// Get the active view attached to the active MDI child
// window.
CCrystalTextView *pView = (CCrystalTextView*)pChild->GetActiveView();
if(pChild->IsIconic())
pChild->MDIRestore();
pView->SetCursorPos(CPoint(0,nLineIndex));
pView->ScrollToLine(nLineIndex);
}*/
*pResult = 0;
}
void CWorkSpcBase::OnContextMultContext()
{
}
void CWorkSpcBase::OnRButtonDown(UINT nFlags, CPoint point)
{
CDialog::OnRButtonDown(nFlags, point);
}
void CWorkSpcBase::OnWorkSpaceOpened()
{
MessageBox("debug");
ModifyStyle(WS_DLGFRAME,0);
}
void CWorkSpcBase::OnWorkSpaceClosed()
{
}
void CWorkSpcBase::OnTabSelChange(NMHDR* pNMHDR, LRESULT* pResult)
{
switch(m_wndWorkSpcTab.GetCurSel())
{
case 0:
{
m_pCurView->EnableWindow(FALSE);
m_pCurView->ShowWindow(SW_HIDE);
m_wndClassView.EnableWindow(TRUE);
m_wndClassView.ShowWindow(SW_SHOW);
m_pCurView = &m_wndClassView;
return;
}
/*case 1:
{
m_pCurView->EnableWindow(FALSE);
m_pCurView->ShowWindow(SW_HIDE);
m_wndResView.EnableWindow(TRUE);
m_wndResView.ShowWindow(SW_SHOW);
m_pCurView = &m_wndResView;
return;
}*/
case 1:
{
m_pCurView->EnableWindow(FALSE);
m_pCurView->ShowWindow(SW_HIDE);
m_wndFileView.EnableWindow(TRUE);
m_wndFileView.ShowWindow(SW_SHOW);
m_pCurView = &m_wndFileView;
return;
}
}
pResult =0;
}
void CWorkSpcBase::CloseWorkSpc()
{
ModifyStyle(0,WS_DLGFRAME);
m_wndClassView.DeleteAllItems();
m_wndFileView.DeleteAllItems();
//later on replace this with registry info
m_pCurView = &m_wndClassView;
m_wndFileView.ShowWindow(SW_HIDE);
m_wndClassView.ShowWindow(SW_HIDE);
}
void CWorkSpcBase::OpenWorkSpc()
{
//ASSERT(ModifyStyle(WS_DLGFRAME,0));
m_wndClassView.ShowWindow(SW_SHOW);
m_wndWorkSpcTab.ShowWindow(SW_SHOW);
m_wndWorkSpcTab.SetCurSel(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -