classbrowsertree.cpp
来自「用bcg库编写的java IDE 源码」· C++ 代码 · 共 120 行
CPP
120 行
// ClassBrowserTree.cpp : implementation file
//
#include "stdafx.h"
#include "VisualJava.h"
#include "ClassBrowserTree.h"
#include "JavaDeclManager.h"
#include "VisualJavaView.h"
#include "VisualJavaDoc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// Sort the item in reverse alphabetical order.
static int CALLBACK MyCompareProc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
// lParamSort contains a pointer to the tree control.
// The lParam of an item is just its handle,
// as specified with SetItemData
CTreeCtrl* pmyTreeCtrl = (CTreeCtrl*) lParamSort;
CString strItem1 = pmyTreeCtrl->GetItemText((HTREEITEM) lParam1);
CString strItem2 = pmyTreeCtrl->GetItemText((HTREEITEM) lParam2);
return strcmp(strItem2, strItem1);
}
/////////////////////////////////////////////////////////////////////////////
// CClassBrowserTree
IMPLEMENT_DYNAMIC(CClassBrowserTree,CJavaTreeCtrl)
CClassBrowserTree::CClassBrowserTree()
{
}
CClassBrowserTree::~CClassBrowserTree()
{
}
BEGIN_MESSAGE_MAP(CClassBrowserTree, CJavaTreeCtrl)
//{{AFX_MSG_MAP(CClassBrowserTree)
//}}AFX_MSG_MAP
ON_WM_PAINT()
ON_WM_ERASEBKGND()
ON_WM_CREATE()
ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclk)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CClassBrowserTree message handlers
void CClassBrowserTree::OnPaint()
{
CPaintDC dc(this); // device context for painting
CTreeCtrl::DefWindowProc(WM_PAINT,(WPARAM)dc.m_hDC,0);
// Do not call CTreeCtrl::OnPaint() for painting messages
}
BOOL CClassBrowserTree::OnEraseBkgnd(CDC* pDC)
{
return TRUE;
}
int CClassBrowserTree::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CJavaTreeCtrl::OnCreate(lpCreateStruct) == -1)
return -1;
TVSORTCB tvs;
// Sort the tree control's items using my
// callback procedure.
tvs.hParent = TVI_ROOT;
tvs.lpfnCompare = MyCompareProc;
tvs.lParam = (LPARAM)this;
SortChildrenCB(&tvs);
return 0;
}
void CClassBrowserTree::OnDblclk(NMHDR* pNMHDR, LRESULT* pResult)
{
HTREEITEM hItem = GetSelectedItem();
if(hItem != NULL)
{
__CBaseDecl* pDecl = (__CBaseDecl*)GetItemData(hItem);
if(pDecl)
{
CVisualJavaApp *pApp = (CVisualJavaApp*)AfxGetApp();
CString strPath = pDecl->m_pDeclMgr->GetPathName();
CVisualJavaDoc* pDoc = pApp->GetDocument(strPath);
if(pDoc == NULL)
pDoc = (CVisualJavaDoc*)pApp->OpenDocumentFileEx(strPath,0);
//scroll to clicked item
if(pDoc)
{
CVisualJavaView* pView = (CVisualJavaView*)pDoc->getBuffer()->getHeadView();
int lines = pView->GetScreenLinesExt();
//scroll such that the line the item is on, is in the middle of the view
int scrollto = pDecl->GetBound()->m_nStartLine - (lines/2);
pView->ScrollToLineExt(scrollto);
CPoint ptStart(0,pDecl->GetBound()->m_nStartLine);
CPoint ptEnd(pDoc->getBuffer()->GetLineLength(pDecl->GetBound()->m_nStartLine),
pDecl->GetBound()->m_nStartLine);
pView->SetFocus();
pView->SetCursorPos(ptEnd);
pView->SetSelectionExt(ptStart,ptEnd);
}
}
}*pResult = 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?