newprojectpage.cpp

来自「用bcg库编写的java IDE 源码」· C++ 代码 · 共 214 行

CPP
214
字号
// NewProjectPage.cpp : implementation file
//

#include "stdafx.h"
#include "NewProjectPage.h"
#include "FileNewDlg.h"
#include "VisualJava.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CNewProjectPage property page



void PASCAL DDV_Dir(CDataExchange* pDX, LPCTSTR szpDir, BOOL bFuture)
{
   if(pDX->m_bSaveAndValidate)
   {





   }
}

IMPLEMENT_DYNCREATE(CNewProjectPage, CPropertyPage)

CNewProjectPage::CNewProjectPage() : CPropertyPage(CNewProjectPage::IDD)
{
	//{{AFX_DATA_INIT(CNewProjectPage)
//	m_szpProjectPath = _T("C:\\My Documents\\");
	m_szpProjectName = _T("");
	//}}AFX_DATA_INIT
	m_bCreateWorkSpc = TRUE;
}

CNewProjectPage::~CNewProjectPage()
{
}

void CNewProjectPage::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CNewProjectPage)
	DDX_Control(pDX, IDC_LIST_PROJECT_OPTIONS, m_wndProjectOptions);
	DDX_Text(pDX, IDC_EDIT_PROJECT_DIR, m_szpProjectPath);
	DDX_Text(pDX, IDC_EDIT_PROJECT_NAME, m_szpProjectName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CNewProjectPage, CPropertyPage)
	//{{AFX_MSG_MAP(CNewProjectPage)
	ON_BN_CLICKED(IDC_BROWSE_TO, OnBrowseTo)
	ON_NOTIFY(NM_CLICK, IDC_LIST_PROJECT_OPTIONS, OnClickProjList)
	ON_BN_CLICKED(IDC_NEXT_BUTTON, OnNext)
	ON_BN_CLICKED(IDC_ADDTOWORKSPC_RADIO,OnAddToCurWorkSpc)
	ON_BN_CLICKED(IDC_CREATE_NEW_WORKSPC_RADIO,OnCreateNewWorkSpc)
	ON_EN_CHANGE(IDC_EDIT_PROJECT_NAME,OnEditName)
    ON_EN_CHANGE(IDC_EDIT_PROJECT_DIR,OnEditDir)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CNewProjectPage message handlers

BOOL CNewProjectPage::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();

	m_projectOptionsImgs.Create(IDB_PROJECT_OPTIONS,16,1,RGB(255,0,0));
	m_wndProjectOptions.SetImageList(&m_projectOptionsImgs,LVSIL_SMALL);

	//project options
    m_wndProjectOptions.InsertItem(0,"Abstract Windows Toolkit Application",0);
    //m_wndProjectOptions.InsertItem(1,"Console Application",1);
    m_wndProjectOptions.InsertItem(2,"Java Swing Application",2);

	m_wndProjectOptions.InsertItem(LVIF_TEXT|LVIF_STATE|LVIF_IMAGE, 
	  1, "Console Application",LVIS_SELECTED,LVIS_SELECTED,1, 0);

    /*
    LVITEM lv;
	lv.mask = LVIF_STATE|LVIF_IMAGE|LVIF_TEXT;
	lv.iItem = 1;
	lv.iImage = 1;
	lv.pszText = "Console Application";
	lv.state = LVIS_SELECTED;
	m_wndProjectOptions.InsertItem(&lv);
	*/

    if(CVisualJavaApp::m_pCurWorkSpace != NULL)
	{
	   CButton *pButton =(CButton*)GetDlgItem(IDC_CREATE_NEW_WORKSPC_RADIO);
	   pButton->SetCheck(BST_CHECKED);
	}
	else
	{
      GetDlgItem(IDC_ADDTOWORKSPC_RADIO)->EnableWindow(FALSE);
	  CButton *pButton =(CButton*)GetDlgItem(IDC_CREATE_NEW_WORKSPC_RADIO);
	  pButton->SetCheck(BST_CHECKED);
	}
	m_szpProjectPath = _T("C:\\My Documents\\");
	UpdateData(FALSE);
	m_szpBasePath = m_szpProjectPath;
	m_wndBrowse.SubclassDlgItem(IDC_BROWSE_TO,this);
    m_wndNext.SubclassDlgItem(IDC_NEXT_BUTTON,this);
	return TRUE;  
}

void CNewProjectPage::OnBrowseTo() 
{
	
}


void CNewProjectPage::OnClickProjList(NMHDR* pNMHDR, LRESULT* pResult) 
{
	POSITION n = m_wndProjectOptions.GetFirstSelectedItemPosition( );
	int i =  m_wndProjectOptions.GetNextSelectedItem(n);
	CString szpItem =
    m_wndProjectOptions.GetItemText(i,0);
	if(szpItem.Compare("Abstract Windows Toolkit Application") == 0)
	{
		GetDlgItem(IDC_NEXT_BUTTON)->ShowWindow(SW_SHOW);
	}
	else
	if(szpItem.Compare("Java Swing Application") == 0)
	{
		GetDlgItem(IDC_NEXT_BUTTON)->ShowWindow(SW_SHOW);
	}
	else
	if(GetDlgItem(IDC_NEXT_BUTTON)->IsWindowVisible())
		GetDlgItem(IDC_NEXT_BUTTON)->ShowWindow(SW_HIDE);
    m_nSel = i;
	*pResult = 0;
}

void CNewProjectPage::OnNext()
{
   CPropertySheet* psheet = (CPropertySheet*) GetParent();   
   //psheet->SetWizardButtons(PSWIZB_NEXT);
   UpdateData(TRUE);
   m_AppType.m_szpPath = m_szpProjectPath;
   m_AppType.m_szpName = m_szpProjectName;
   psheet->AddPage(&m_AppType);
   psheet->SetActivePage(4);

}

BOOL CNewProjectPage::OnSetActive()
{
  //if(!CPropertyPage::OnSetActive())return FALSE;

  // CPropertySheet* psheet = (CPropertySheet*) GetParent();   
   //psheet->SetWizardMode();
   //psheet->SetWizardButtons(PSWIZB_NEXT);
	if(CFileNewDlg::m_pTemp != NULL)
	{
      CFileNewDlg* psheet = (CFileNewDlg*)GetParent();
	  psheet->RemovePage(CFileNewDlg::m_pTemp);
	  CFileNewDlg::m_pTemp = NULL;
	}

  return CPropertyPage::OnSetActive();
}


void CNewProjectPage::OnCreateNewWorkSpc()
{
	m_bCreateWorkSpc = TRUE;
}

void CNewProjectPage::OnAddToCurWorkSpc()
{
	m_bCreateWorkSpc = FALSE;
}


void CNewProjectPage::OnEditName()
{
  UpdateData(TRUE);

  if(!m_szpBasePath.IsEmpty())
  {
     if((m_szpBasePath[m_szpBasePath.GetLength()-1] != '\\'))
		m_szpBasePath += '\\';
		
	 //put this here so we don't have the path growing exponentialy
	 m_szpProjectPath = m_szpBasePath;
  }
  else
  {
     m_szpProjectPath = '\\';
	 m_szpBasePath    = '\\';
  }


  //concatenate new project name to base path
  m_szpProjectPath += m_szpProjectName;
  UpdateData(FALSE);
}

void CNewProjectPage::OnEditDir()
{
  UpdateData(TRUE);
  m_szpBasePath = m_szpProjectPath;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?