⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 workspcbase.cpp

📁 用bcg库编写的java IDE 源码
💻 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 + -