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

📄 devtooljavacpage.cpp

📁 用bcg库编写的java IDE 源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		 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 + -