📄 devtooljavacpage.cpp
字号:
for(int i=nDot;i--;)//reverse
{
if(szpPathName.GetAt(i) == '\\')
{
++i;
CString szpName = szpPathName.Right(szpPathName.GetLength()-i);
CString szpPath = szpPathName.Left(i-1);
//add source name to list
szpName.TrimLeft();szpName.TrimRight();
int nIndex = m_wndSources.AddString(szpName);
//add source path for src
szpPath.TrimLeft();szpPath.TrimRight();
CArray<__option*,__option*>*parray = (CArray<__option*,__option*>*)m_wndSources.GetItemData(nIndex);
(*parray)[10]->m_szpData = szpPath;//sourcepath
(*parray)[10]->m_bChecked = TRUE;
break;
}
}
}
}
}
void CDevToolJavacPage::OnBrowseArgList()
{
int iItem = m_wndArgList.GetCurSel();;
static char BASED_CODE szFilter[]="Java Source Files (*.java)|*.java|";
DWORD flags = OFN_CREATEPROMPT|OFN_ALLOWMULTISELECT;
CFileDialog dlg(TRUE,NULL,NULL,flags,szFilter);
if(dlg.DoModal() == IDOK)
{
POSITION nPos = dlg.GetStartPosition();
CString szpPath;
m_wndArgList.EndEditing(TRUE);
for(nPos; nPos != NULL;)
{
szpPath = dlg.GetNextPathName(nPos);
m_wndArgList.AddString(szpPath);
}
}
}
//#define STRICT
#include <windows.h>
#include <shlobj.h>
INT CALLBACK BrowseCallbackProc_1(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;
}
void CDevToolJavacPage::OnCheckApplyToAll()
{
int nSel = m_wndSources.GetCurSel();
if(nSel != -1)
{
CArray<__option*,__option*>*pSellist =(CArray<__option*,__option*>*)
m_wndSources.GetItemData(nSel);
int nCount = m_wndSources.GetCount();
for(int I=0; I<nCount; I++)
{
CArray<__option*,__option*>*plist =(CArray<__option*,__option*>*)
m_wndSources.GetItemData(I);
if(plist != pSellist)
{
int nOptionCount = plist->GetSize();
for(int I=0; I<nOptionCount; I++)
{
(*plist)[I]->m_bChecked = (*pSellist)[I]->m_bChecked;
(*plist)[I]->m_nIndex = (*pSellist)[I]->m_nIndex;
(*plist)[I]->m_szpData = (*pSellist)[I]->m_szpData;
(*plist)[I]->m_szpOption = (*pSellist)[I]->m_szpOption;
}
}
}
}
}
void CDevToolJavacPage::OnSetCurSelSrcList()
{
int item = m_wndSources.GetCurSel();
if(item>=0)
{
for(int i=0; i<m_wndOptions.GetCount(); i++)
m_wndOptions.SetCheck(i,0);
//load current option selections
CArray<__option*,__option*>*plist = (CArray<__option*,__option*>*)
m_wndSources.GetItemData(item);
int count = plist->GetSize();
for(i =0; i<count; i++)
{
__option* pOpt = (*plist)[i];
m_wndOptions.SetCheck(i,pOpt->m_bChecked);
m_wndOptions.SetItemData(i,(DWORD)pOpt);
}
}
else
{
for(int i=0; i<m_wndOptions.GetCount(); i++)
m_wndOptions.Enable(i,FALSE);
}
}
void CDevToolJavacPage::OnSetCurSelArgList()
{
}
void CDevToolJavacPage::OnAddItemSourceList()
{
CArray<__option*,__option*>*plist = new CArray<__option*,__option*>;
m_wndSources.SetItemData(m_wndSources.GetNewlyAdded(),(DWORD)plist);
int nCount = m_wndOptions.GetCount();
for(int i =0; i<nCount; i++)
{
m_wndOptions.Enable(i);
__option* pOpt = new __option;
pOpt->m_nIndex = i;
pOpt->m_szpOption = m_pOptions[i];plist->Add(pOpt);
}m_wndSources.SetCurSel(m_wndSources.GetNewlyAdded());
}
void CDevToolJavacPage::OnDelItemSourceList()
{
int nIndex = m_wndSources.GetNewlyDeleted();
if(nIndex != -1)
{
CArray<__option*,__option*>*plist = (CArray<__option*,__option*>*)
m_wndSources.GetItemData(nIndex);
{
int count = plist->GetSize();
for(int i =0; i<count; i++)
delete (*plist)[i];
delete plist;
}
}
if(m_wndSources.GetCount()==1||nIndex == -1)
{
for(int i=0; i<m_wndOptions.GetCount(); i++)
m_wndOptions.Enable(i,FALSE);
}
}
void CDevToolJavacPage::OnOptionCheckChanged()
{
int sel = m_wndOptions.GetCurSel();
__option* option = (__option*)m_wndOptions.GetItemData(sel);
option->m_bChecked = m_wndOptions.GetCheck(sel);
}
void CDevToolJavacPage::OnOptionPullDown()
{
CJOptionsArgDlg dlg(this);;
dlg.m_nIndex = m_wndOptions.GetCurSel();
dlg.m_nContext = JAVAC_CONTEXT;
if(dlg.DoModal() == IDOK)
{
}
}
void CDevToolJavacPage::OnOK()
{
UpdateData();
if(CVisualJavaApp::m_pCurWorkSpace != NULL && CVisualJavaApp::m_pCurWorkSpace->GetActiveProject() != NULL)
XMLSerialize(1);
int nCount = m_wndSources.GetCount();
for(int i=0; i<nCount;i++)
{
CArray<__option*,__option*>*plist = (CArray<__option*,__option*>*)
m_wndSources.GetItemData(i);
int nOptionCount = plist->GetSize();
for(int nIndex = 0; nIndex<nOptionCount; nIndex++)
delete (*plist)[nIndex];
delete plist;
}CPropertyPage::OnOK();
}
void CDevToolJavacPage::OnCancel()
{
int nCount = m_wndSources.GetCount();
for(int i=0; i<nCount;i++)
{
CArray<__option*,__option*>*plist = (CArray<__option*,__option*>*)
m_wndSources.GetItemData(i);
int nOptionCount = plist->GetSize();
for(int nIndex = 0; nIndex<nOptionCount; nIndex++)
delete (*plist)[nIndex];
}CPropertyPage::OnCancel();
}
void CDevToolJavacPage::XMLSerialize(int type)
{
#define LOADING 0
#define STORING 1
if(type == LOADING)
{
//get settings in xml objects
if(CVisualJavaApp::m_pCurWorkSpace->GetActiveProject())
{
XMLelement* pXMLJavac = CVisualJavaApp::m_pCurWorkSpace->GetActiveProject()
->GetToolMgr()->GetXMLObject("javac");
if(!pXMLJavac)return;
m_wndOptOpt.SetCurSel(atoi(pXMLJavac->m_lAttributes.GetHead()->m_strValue));
OnSelchangeComboOptionsOptions();
XMLelement* pXMLClsFiles = pXMLJavac->m_lNestedElements.GetHead();//<srcFiles>
//match settings
for(POSITION pos = pXMLClsFiles->m_lNestedElements.GetHeadPosition(); pos != NULL;)
{
XMLelement* pXMLFile = pXMLClsFiles->m_lNestedElements.GetNext(pos);
int index = m_wndSources.AddString(pXMLFile->m_lAttributes.GetHead()->m_strValue);
if(index != -1)
{
CArray<__option*,__option*>*plOptions = (CArray<__option*,__option*>*)m_wndSources.GetItemData(index);
int i = 0;
XMLelement* pXMLOpts = pXMLFile->m_lNestedElements.GetHead();//<options>
for(POSITION pos = pXMLOpts->m_lNestedElements.GetHeadPosition(); pos !=NULL;)
{
XMLelement* pXMLOption = pXMLOpts->m_lNestedElements.GetNext(pos);
__option* option = (*plOptions)[i];
{
POSITION apos = pXMLOption->m_lAttributes.GetHeadPosition();pXMLOption->m_lAttributes.GetNext(apos);
option->m_bChecked = atoi(pXMLOption->m_lAttributes.GetNext(apos)->m_strValue);
m_wndOptions.SetCheck(i,option->m_bChecked);
if(apos)//there's associated arguments
option->m_szpData = pXMLOption->m_lAttributes.GetNext(apos)->m_strValue;
}++i;
}
}
}
}
}
else
{
CVisualJavaApp::m_pCurWorkSpace->GetActiveProject()
->GetToolMgr()->m_bModified = TRUE;
XMLelement* pXMLJavac = CVisualJavaApp::m_pCurWorkSpace->GetActiveProject()
->GetToolMgr()->GetXMLObject("javac");
if(!pXMLJavac)
{
pXMLJavac = new XMLelement;pXMLJavac->m_strElementName = "javac";
XMLattribute* pAttr = new XMLattribute;pAttr->m_strName = "configsrc";
pAttr->m_strValue = "0";
pXMLJavac->m_lAttributes.AddTail(pAttr);
XMLelement* pXMLSrcFiles = new XMLelement;
pXMLSrcFiles->m_strElementName = "srcFiles";
pXMLJavac->m_lNestedElements.AddTail(pXMLSrcFiles);
CVisualJavaApp::m_pCurWorkSpace->GetActiveProject()
->GetToolMgr()->m_lxmlSettings.GetHead()
->m_lNestedElements.AddTail(pXMLJavac);
}
int sel = m_wndOptOpt.GetCurSel();(sel == -1)?sel = 0:sel = sel;
CString strConfig;strConfig.Format("%d",sel);
pXMLJavac->m_lAttributes.GetHead()->m_strValue = strConfig;
XMLelement* pXMLSrcFiles = pXMLJavac->m_lNestedElements.GetHead();//<srcFiles>
//decard previous setting
for(POSITION pos = pXMLSrcFiles->m_lNestedElements.GetHeadPosition(); pos != NULL;)
delete pXMLSrcFiles->m_lNestedElements.GetNext(pos);
pXMLSrcFiles->m_lNestedElements.RemoveAll();
int count =m_wndSources.GetCount();
for(int i = 0; i<count; i++)
{
XMLelement* pXMLSrc = new XMLelement;pXMLSrc->m_strElementName = "file";
XMLattribute* pNameAttr = new XMLattribute;
pNameAttr->m_strName = "name";
m_wndSources.GetText(i,pNameAttr->m_strValue);
pXMLSrc->m_lAttributes.AddTail(pNameAttr);
CArray<__option*,__option*>*plOptions = (CArray<__option*,__option*>*)m_wndSources.GetItemData(i);
int count =plOptions->GetSize();
XMLelement* pXMLOpts = new XMLelement;pXMLOpts->m_strElementName = "options";
for(int oi = 0; oi<count; oi++)
{
__option* option = (*plOptions)[oi];
XMLelement* pXMLOpt = new XMLelement;
pXMLOpt->m_strElementName = "option";
CString strCheck;strCheck.Format("%d",option->m_bChecked);
XMLattribute* pAttrb = new XMLattribute;
pAttrb->m_strName = "name";
pAttrb->m_strValue = option->m_szpOption;
pXMLOpt->m_lAttributes.AddTail(pAttrb);
pAttrb = new XMLattribute;
pAttrb->m_strName = "check";
pAttrb->m_strValue = strCheck;
pXMLOpt->m_lAttributes.AddTail(pAttrb);
if(!option->m_szpData.IsEmpty())
{
pAttrb = new XMLattribute;pAttrb->m_strName = "args";
pAttrb->m_strValue = option->m_szpData;
pXMLOpt->m_lAttributes.AddTail(pAttrb);
}
pXMLOpts->m_lNestedElements.AddTail(pXMLOpt);
}
pXMLSrc->m_lNestedElements.AddTail(pXMLOpts);
pXMLSrcFiles->m_lNestedElements.AddTail(pXMLSrc);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -