📄 coretooljavaw.cpp
字号:
// CoreToolJavaw.cpp : implementation file
//
#include "stdafx.h"
#include "VisualJava.h"
#include "CoreToolJavaw.h"
#include "ToolManager.h"
#include "WorkSpace.h"
#include "xmlsupport.h"
#include "JOptionsArgDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define CPropertyPage CSAPrefsSubDlg
//#define STRICT
#include <windows.h>
#include <shlobj.h>
INT CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lp,LPARAM pData)
{
TCHAR szDir[MAX_PATH];
switch(uMsg)
{
case BFFM_INITIALIZED:
if(GetCurrentDirectory(sizeof(szDir)/sizeof(TCHAR), szDir))
{
// WParam is TRUE since you are passing a path.
// It would be FALSE if you were passing a pidl.
SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)szDir);
}
break;
case BFFM_SELCHANGED:
// Set the status window to the currently selected path.
if(SHGetPathFromIDList((LPITEMIDLIST) lp ,szDir))
SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)szDir);
break;
}return 0;
}
/////////////////////////////////////////////////////////////////////////////
// CCoreToolJavaw property page
static BOOL m_bInit = TRUE;
#define PANEL_DIR_LIST_RECT CRect(0,25,210,195)
#define PANEL_DIR_LISTHEADER_RECT CRect(0,0,210,25)
#define DIR_PANEL_SIZE CSize(220,220)
#define ID_HEADER_SRC 0x2
#define ID_HEADER_ARG 0x3
LPCTSTR CCoreToolJavaw::m_pOptions[] =
{
_T("-client"),
_T("-server"),
_T("-classpath"),
_T("-D"),
_T("-enableassertions"),
_T("-disableassertions"),
_T("-enablesystemassertions"),
_T("-disablesystemassertions"),
_T("-jar"),
_T("-verbose"),
_T("-verbose:class"),
_T("-verbose:gc"),
_T("-verbose:jni"),
_T("-version"),
_T("-showversion"),
_T("-help"),
_T("-X"),
_T("-Xmixed"),
_T("-Xint"),
_T("-Xdebug"),
_T("-Xbootclasspath"),
_T("-Xbootclasspath/a"),
_T("-Xbootclasspath/p"),
_T("-Xcheck:jni"),
_T("-Xconcgc"),
_T("-Xfuture"),
_T("-Xnoclassgc"),
_T("-Xincgc"),
_T("-Xloggc"),
_T("-Xms"),
_T("-Xmx"),
_T("-Xprof"),
_T("-Xrunhprof"),
_T("-Xrunjdwp"),
_T("-Xrs"),
NULL
};
IMPLEMENT_DYNCREATE(CCoreToolJavaw, CPropertyPage)
CCoreToolJavaw::CCoreToolJavaw() : CPropertyPage(CCoreToolJavaw::IDD)
{
//{{AFX_DATA_INIT(CCoreToolJavaw)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
CCoreToolJavaw::~CCoreToolJavaw()
{
}
void CCoreToolJavaw::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCoreToolJavaw)
//}}AFX_DATA_MAP
}
// DDX_Control(pDX, IDC_JAVAW_OPTION_LIST, m_wndOpts);
BEGIN_MESSAGE_MAP(CCoreToolJavaw, CPropertyPage)
//{{AFX_MSG_MAP(CCoreToolJavaw)
ON_BN_CLICKED(IDC_CHECK_APPLY_TO_ALL_CLASSFILE, OnCheckApplyToAllClassfile)
//}}AFX_MSG_MAP
ON_HD_ITEMCLICKED(IDC_STATIC_HEADER_CLASSFILE,OnHeaderItemClicked)
ON_BL_ITEMBROWSE(IDC_CLASSFILE_LIST,OnBrowseClsList)
ON_LBN_SELCHANGE(IDC_CLASSFILE_LIST,OnSetCurClsSel)
ON_LBN_SETCURSEL(IDC_CLASSFILE_LIST,OnSetCurClsSel)
ON_LBN_ITEMADDED(IDC_CLASSFILE_LIST,OnAddItemClsFileList)
ON_LBN_ITEMDEL(IDC_CLASSFILE_LIST,OnDelItemClsFileList)
//relational listbox
ON_RL_CHECKCHANGED(IDC_JAVAW_OPTION_LIST,OnOptionCheckChanged)
ON_RL_PULLDOWN(IDC_JAVAW_OPTION_LIST,OnOptionPullDown)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCoreToolJavaw message handlers
BOOL CCoreToolJavaw::OnInitDialog()
{
CPropertyPage::OnInitDialog();
m_imglist.Create(IDB_HEADERCTRL,16,2,RGB(255,0,255));
m_wndOptions.SubclassDlgItem(IDC_JAVAW_OPTION_LIST,this);
//add options and thier associated data windows
m_wndOptions.AddString(m_pOptions[0]);
m_wndOptions.AddString(m_pOptions[1]);
m_wndOptions.AddRelationalString(m_pOptions[2]);
m_wndOptions.AddRelationalString(m_pOptions[3]);
m_wndOptions.AddRelationalString(m_pOptions[4]);
m_wndOptions.AddRelationalString(m_pOptions[5]);
m_wndOptions.AddString(m_pOptions[6]);
m_wndOptions.AddString(m_pOptions[7]);
m_wndOptions.AddString(m_pOptions[8]);
m_wndOptions.AddString(m_pOptions[9]);
m_wndOptions.AddString(m_pOptions[10]);
m_wndOptions.AddString(m_pOptions[11]);
m_wndOptions.AddString(m_pOptions[12]);
m_wndOptions.AddString(m_pOptions[13]);
m_wndOptions.AddString(m_pOptions[14]);
m_wndOptions.AddString(m_pOptions[15]);
m_wndOptions.AddString(m_pOptions[16]);
m_wndOptions.AddString(m_pOptions[17]);
m_wndOptions.AddString(m_pOptions[18]);
m_wndOptions.AddString(m_pOptions[19]);
m_wndOptions.AddRelationalString(m_pOptions[20]);
m_wndOptions.AddRelationalString(m_pOptions[21]);
m_wndOptions.AddRelationalString(m_pOptions[22]);
m_wndOptions.AddString(m_pOptions[23]);
m_wndOptions.AddString(m_pOptions[24]);
m_wndOptions.AddString(m_pOptions[25]);
m_wndOptions.AddString(m_pOptions[26]);
m_wndOptions.AddString(m_pOptions[27]);
m_wndOptions.AddRelationalString(m_pOptions[28]);
m_wndOptions.AddRelationalString(m_pOptions[29]);
m_wndOptions.AddRelationalString(m_pOptions[30]);
m_wndOptions.AddString(m_pOptions[31]);
m_wndOptions.AddRelationalString(m_pOptions[32]);
m_wndOptions.AddString(m_pOptions[33]);
m_wndOptions.AddString(m_pOptions[34]);
CRect rt;
GetClientRect(&rt);
//classfile static
{
CRect rc(rt.left+6,rt.top+8,rt.left+290,rt.bottom-10);
rc.InflateRect(2,4,4,4);
GetDlgItem(IDC_STATIC_CLASSFILE)->MoveWindow(&rc);
}
//classfile list
{
m_wndClassFileList.SubclassDlgItem(IDC_CLASSFILE_LIST,this);
CRect rc(rt.left+8,rt.top+43,rt.left+290,rt.bottom-85);
m_wndClassFileList.MoveWindow(&rc);
}
//display arg edit
{
CRect rc(rt.left+8,rt.bottom-85,rt.left+80,rt.bottom-65);
rc.OffsetRect(0,8);
GetDlgItem(IDC_STATIC_ARG_EDIT)->MoveWindow(&rc);
CRect rc1(rt.left+62,rt.bottom -85,rt.left+270,rt.bottom-65);
rc1.OffsetRect(0,8);
GetDlgItem(IDC_EDIT_ARG)->MoveWindow(&rc1);
}
//option edit
{
CRect rc(rt.left+8,rt.bottom-60,rt.left+80,rt.bottom-40);
rc.OffsetRect(0,8);
GetDlgItem(IDC_STATIC_EDIT_OPT)->MoveWindow(&rc);
CRect rc1(rt.left+62,rt.bottom -60,rt.left+290,rt.bottom-40);
rc1.OffsetRect(0,8);
GetDlgItem(IDC_OPTION_EDIT)->MoveWindow(&rc1);
}
//prompt
{
CRect rc(rt.left+8,rt.bottom-30,rt.left+120,rt.bottom-10);
GetDlgItem(IDC_CHECK_PROMPT_4_ARG)->MoveWindow(&rc);
}
//browse
{
CRect rc(rt.left+271,rt.bottom -85,rt.left+290,rt.bottom-65);
rc.OffsetRect(0,8);
GetDlgItem(IDC_ARG_BROWSE_BUTTON)->MoveWindow(&rc);
}
//classfile header
{
CRect rc(rt.left+8,rt.top+15,rt.left+290,rt.top+40);
m_wndClassFileHeader.SubclassDlgItem(IDC_STATIC_HEADER_CLASSFILE,this);
m_wndClassFileHeader.m_pMsgWnd = this;
m_wndClassFileHeader.MoveWindow(&rc);
{
m_wndClassFileHeader.SetImgList(&m_imglist);
m_wndClassFileHeader.AddItem(0,25,16,"New");
m_wndClassFileHeader.AddItem(1,25,16,"Delete");
m_wndClassFileHeader.AddItem(2,25,16,"Move up");
m_wndClassFileHeader.AddItem(3,25,16,"Move down");
}
}
//options static
{
CRect rc(rt.left+305,rt.top+8,rt.right-5,rt.bottom-10);
rc.InflateRect(4,4,4,4);
GetDlgItem(IDC_STATIC_CLASSFILE_OPTION)->MoveWindow(&rc);
}
//options list
{
CRect rc(rt.left+305,rt.top+20,rt.right-5,rt.bottom-30);
m_wndOptions.MoveWindow(&rc);
}
//apply check
{
CRect rc(rt.left+305,rt.bottom-25,rt.right-10,rt.bottom-10);
GetDlgItem(IDC_CHECK_APPLY_TO_ALL_CLASSFILE)->MoveWindow(&rc);
}
//load settings
if(CVisualJavaApp::m_pCurWorkSpace != NULL &&
CVisualJavaApp::m_pCurWorkSpace->GetActiveProject() != NULL)
{
//CVisualJavaApp::m_pCurWorkSpace->LoadJavawsetting(this);
XMLSerialize(0);
if(m_wndClassFileList.GetCount()==0)
{
for(int i=0; i<m_wndOptions.GetCount(); i++)
m_wndOptions.Enable(i,FALSE);
}
}
else
{
m_wndClassFileList.EnableWindow(FALSE);
m_wndClassFileHeader.EnableWindow(FALSE);
GetDlgItem(IDC_CHECK_APPLY_TO_ALL_CLASSFILE)->EnableWindow(FALSE);
GetDlgItem(IDC_EDIT_ARG)->EnableWindow(FALSE);
GetDlgItem(IDC_OPTION_EDIT)->EnableWindow(FALSE);
GetDlgItem(IDC_CHECK_PROMPT_4_ARG)->EnableWindow(FALSE);
GetDlgItem(IDC_ARG_BROWSE_BUTTON)->EnableWindow(FALSE);
for(int i=0; i<m_wndOptions.GetCount(); i++)
m_wndOptions.Enable(i,FALSE);
}
return TRUE;
}
void CCoreToolJavaw::OnHeaderItemClicked()
{
#define ACTION_ADDITEM 0
#define ACTION_DELETE 1
#define ACTION_MOVEUP 2
#define ACTION_MOVEDOWN 3
switch(m_wndClassFileHeader.GetClicked())
{
case ACTION_ADDITEM:
{
m_wndClassFileList.EditNew();
break;
}
case ACTION_DELETE:
{
m_wndClassFileList.DeleteSelected();
break;
}
case ACTION_MOVEUP:
{
if(m_wndClassFileList.GetCurSel() != LB_ERR)
m_wndClassFileList.MoveItemUp(m_wndClassFileList.GetCurSel());
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -