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

📄 coretooljavaw.cpp

📁 用bcg库编写的java IDE 源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	 case ACTION_MOVEDOWN:
		 {
		   if(m_wndClassFileList.GetCurSel() != LB_ERR)
           m_wndClassFileList.MoveItemDown(m_wndClassFileList.GetCurSel());
           break;
		 }
  }  
}

void CCoreToolJavaw::OnBrowseClsList()
{
   static char BASED_CODE szFilter[]="Java Source Files (*.class)|*.class|";
   DWORD flags = OFN_CREATEPROMPT|OFN_ALLOWMULTISELECT;
   CFileDialog dlg(TRUE,NULL,NULL,flags,szFilter);

      if(dlg.DoModal() == IDOK)
	  {
	     POSITION nPos = dlg.GetStartPosition();	 

		 m_wndClassFileList.EndEditing(TRUE);
         for(nPos; nPos != NULL;)
		 {
           CString szpPathName = dlg.GetNextPathName(nPos);
		   
		   //extract name
		   int nDot = szpPathName.Find('.');

		   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 class name to list
				 szpName.TrimLeft();szpName.TrimRight();
				 int nIndex = m_wndClassFileList.AddString(szpName);

				 //add source path for src
				 szpPath.TrimLeft();szpPath.TrimRight();
				 CArray<__option*,__option*>*parray = (CArray<__option*,__option*>*)m_wndClassFileList.GetItemData(nIndex);
				 (*parray)[2]->m_szpData = szpPath;//classpath
				 (*parray)[2]->m_bChecked = TRUE;
				 break;
			  }
		   }
		 }
	  }

}



void CCoreToolJavaw::OnSetCurClsSel()
{
 int item = m_wndClassFileList.GetCurSel();
 if(item>=0)
 {
   for(int i=0; i<m_wndOptions.GetCount(); i++)
	   m_wndOptions.SetCheck(i,0);


   CArray<__option*,__option*>*plist = (CArray<__option*,__option*>*)
   m_wndClassFileList.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
 {
	int count = m_wndOptions.GetCount();
    for(int i=0; i<count; i++)
	     m_wndOptions.Enable(i,FALSE);  
 }
}


void CCoreToolJavaw::OnOptionCheckChanged()
{
  int sel = m_wndOptions.GetCurSel();
  __option* option = (__option*)m_wndOptions.GetItemData(sel);
  option->m_bChecked = m_wndOptions.GetCheck(sel);
}

void CCoreToolJavaw::OnOptionPullDown()
{
  CJOptionsArgDlg dlg(this);
  dlg.m_nIndex = m_wndOptions.GetCurSel();
  dlg.m_nContext = JAVAW_CONTEXT;

  if(dlg.DoModal() == IDOK)
  {


  }
}


void CCoreToolJavaw::OnAddItemClsFileList()
{
   int add = m_wndClassFileList.GetNewlyAdded();
   if(add!=-1)
   {
     __srcinfo *pSrcInfo = new __srcinfo;
     m_wndClassFileList.SetItemData(add,(DWORD)pSrcInfo);

     int nCount = m_wndOptions.GetCount();
     for(int i =0; i<nCount; i++)
	 {
	   m_wndOptions.Enable(i,TRUE);
       __option* pOpt = new __option();
	   pOpt->m_nIndex    = i;
	   pOpt->m_szpOption = m_pOptions[i];pSrcInfo->m_lOptions.Add(pOpt);
	 }m_wndClassFileList.SetCurSel(m_wndClassFileList.GetNewlyAdded());
   }
}

void CCoreToolJavaw::OnDelItemClsFileList()
{
  int del = m_wndClassFileList.GetNewlyDeleted();
  if(del != -1)
  {
      __srcinfo* pSrcInfo = (__srcinfo*)m_wndClassFileList.GetItemData(del);
  
     for(int i =0; i<pSrcInfo->m_lOptions.GetSize(); i++)
       delete pSrcInfo->m_lOptions[i];
	    
     delete pSrcInfo;
	  
  
     if(m_wndClassFileList.GetCount()==1||m_wndClassFileList.GetCurSel() == -1)
	 {
        for(i=0; i<m_wndOptions.GetCount(); i++)
	      m_wndOptions.Enable(i,FALSE);
	 }
  }
}



void CCoreToolJavaw::OnCheckApplyToAllClassfile() 
{
   int nSel = m_wndClassFileList.GetCurSel();
   if(nSel != -1)
   {
     __srcinfo* pSelSrcInfo = (__srcinfo*)m_wndClassFileList.GetItemData(nSel);


	 int nCount = m_wndClassFileList.GetCount();
	 for(int I=0; I<nCount; I++)
	 {
        __srcinfo* pSrcInfo = (__srcinfo*)m_wndClassFileList.GetItemData(I);

	    if(pSrcInfo != pSelSrcInfo)
		{
          int nOptionCount = pSrcInfo->m_lOptions.GetSize();
		  for(int I=0; I<nOptionCount; I++)
		  {
		    pSrcInfo->m_lOptions[I]->m_bChecked = pSelSrcInfo->m_lOptions[I]->m_bChecked;
            pSrcInfo->m_lOptions[I]->m_nIndex   = pSelSrcInfo->m_lOptions[I]->m_nIndex;
			pSrcInfo->m_lOptions[I]->m_szpData   = pSelSrcInfo->m_lOptions[I]->m_szpData;
			pSrcInfo->m_lOptions[I]->m_szpOption   = pSelSrcInfo->m_lOptions[I]->m_szpOption;
		  }
		}
	 }
   }
}




void CCoreToolJavaw::OnCancel() 
{
  int nCount = m_wndClassFileList.GetCount();
  for(int i=0; i<nCount;i++)
  {
	__srcinfo* pSrcInfo = (__srcinfo*)m_wndClassFileList.GetItemData(i);

	int nOptionCount = pSrcInfo->m_lOptions.GetSize();
	for(int nIndex = 0; nIndex<nOptionCount; nIndex++)
		delete pSrcInfo->m_lOptions[nIndex];
	delete pSrcInfo;
  }CPropertyPage::OnCancel();
}



void CCoreToolJavaw::OnOK() 
{
 UpdateData();
 if(CVisualJavaApp::m_pCurWorkSpace != NULL && CVisualJavaApp::m_pCurWorkSpace->GetActiveProject() != NULL)
	XMLSerialize(1);
	   

  int nCount = m_wndClassFileList.GetCount();
  for(int i=0; i<nCount;i++)
  {
	__srcinfo* pSrcInfo = (__srcinfo*)m_wndClassFileList.GetItemData(i);

	int nOptionCount = pSrcInfo->m_lOptions.GetSize();
	for(int nIndex = 0; nIndex<nOptionCount; nIndex++)
		delete pSrcInfo->m_lOptions[nIndex];
	delete pSrcInfo;
  }CPropertyPage::OnOK();
}



void CCoreToolJavaw::XMLSerialize(int type)
{
  #define LOADING 0
  #define STORING 1

  if(type == LOADING)
  {
     //get settings in xml objects
    if(CVisualJavaApp::m_pCurWorkSpace->GetActiveProject())
	{
       XMLelement* pXMLJavaw = CVisualJavaApp::m_pCurWorkSpace->GetActiveProject()
	                           ->GetToolMgr()->GetXMLObject("javaw");
	
       if(!pXMLJavaw)return;

	   XMLelement* pXMLClsFiles = pXMLJavaw->m_lNestedElements.GetHead();//<classFiles>
	   //match settings
       for(POSITION pos = pXMLClsFiles->m_lNestedElements.GetHeadPosition();pos != NULL;)
	   {
         XMLelement* pXMLFile = pXMLClsFiles->m_lNestedElements.GetNext(pos);
		 int index = m_wndClassFileList.AddString(pXMLFile->m_lAttributes.GetHead()->m_strValue);

		 __srcinfo* pSrcInfo = (__srcinfo*)m_wndClassFileList.GetItemData(index);
		 pSrcInfo->m_nPrompt = atoi(pXMLFile->m_lAttributes.GetTail()->m_strValue);

         if(index != -1)
		 {
            CArray<__option*,__option*>*plOptions = (CArray<__option*,__option*>*)m_wndClassFileList.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* pXMLJavaw = CVisualJavaApp::m_pCurWorkSpace->GetActiveProject()
	                            ->GetToolMgr()->GetXMLObject("javaw");

	if(!pXMLJavaw)
	{
       pXMLJavaw = new XMLelement;pXMLJavaw->m_strElementName = "javaw";
	   XMLelement* pXMLClss = new XMLelement;pXMLClss->m_strElementName = "classFiles";
	   pXMLJavaw->m_lNestedElements.AddTail(pXMLClss);
       CVisualJavaApp::m_pCurWorkSpace->GetActiveProject()
	   ->GetToolMgr()->m_lxmlSettings.GetHead()
	   ->m_lNestedElements.AddTail(pXMLJavaw);
	}

	XMLelement* pXMLClsFile = pXMLJavaw->m_lNestedElements.GetHead();
	for(POSITION _pos = pXMLClsFile->m_lNestedElements.GetHeadPosition(); _pos !=NULL;)
	      delete pXMLClsFile->m_lNestedElements.GetNext(_pos);
	pXMLClsFile->m_lNestedElements.RemoveAll();

    int count = m_wndClassFileList.GetCount();
    for(int i = 0; i<count; i++)
	{
       __srcinfo* pSrcInfo = (__srcinfo*)m_wndClassFileList.GetItemData(i);
       CString strPrompt;strPrompt.Format("%d",pSrcInfo->m_nPrompt);


       XMLelement* pXMLCls = new XMLelement;pXMLCls->m_strElementName = "file";
	   XMLattribute* pXMLClsAttr = new XMLattribute;pXMLClsAttr->m_strName = "name";	    
	   m_wndClassFileList.GetText(i,pXMLClsAttr->m_strValue);
       pXMLCls->m_lAttributes.AddTail(pXMLClsAttr);
	   
       pXMLClsAttr = new XMLattribute;pXMLClsAttr->m_strName = "prompt";
	   pXMLClsAttr->m_strValue = strPrompt;
       pXMLCls->m_lAttributes.AddTail(pXMLClsAttr);



	   XMLelement* pXMLOpts = new XMLelement;pXMLOpts->m_strElementName = "options";


       
	   int count =   pSrcInfo->m_lOptions.GetSize();
       for(int oi = 0; oi<count; oi++)
	   {
          __option* option = pSrcInfo->m_lOptions[oi];
          XMLelement* pXMLOpt = new XMLelement;
		  pXMLOpt->m_strElementName = "option";
          
		  pXMLOpt->m_strElementName = option->m_szpOption;
		  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);

	   }
	   pXMLCls->m_lNestedElements.AddTail(pXMLOpts);
	   pXMLClsFile->m_lNestedElements.AddTail(pXMLCls);
	}
  }
}

⌨️ 快捷键说明

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