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

📄 codetemplate.cpp

📁 用bcg库编写的java IDE 源码
💻 CPP
字号:
// CodeTemplate.cpp: implementation of the CCodeTemplate class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "VisualJava.h"
#include "CodeTemplate.h"

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

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CCodeTemplate::CCodeTemplate()
{

}

CCodeTemplate::~CCodeTemplate()
{
   for(POSITION nPos = m_CodeTemplates.GetHeadPosition();nPos != NULL;)
	   delete m_CodeTemplates.GetNext(nPos);
}


void CCodeTemplate::LoadCodeTemplates()
{
   CStdioFile reader_writer;
   if(!reader_writer.Open(m_szpPath,CFile::modeRead))return;
   
   CStringList szpLines;
   CString strBuff;
   while(reader_writer.ReadString(strBuff))
	   szpLines.AddTail(strBuff);
   
   reader_writer.Close();

   CCodeTemplate::_Template * pTemplate = NULL;
   
   for(POSITION nPos = szpLines.GetHeadPosition(); nPos != NULL;)
   {
      strBuff = szpLines.GetNext(nPos);
	  
	  //strBuff.TrimLeft();strBuff.TrimRight();
      //if(strBuff.IsEmpty())continue;

      if(strBuff.Compare("<FOR_LOOP>") == 0)
	  {
        if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);
        
		pTemplate = new CCodeTemplate::_Template;
		pTemplate->nTemplt = CT_FOR_LOOP;
	  }
	  else
	  if(strBuff.Compare("<WHILE_LOOP>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
		pTemplate->nTemplt = CT_WHILE_LOOP;

	  }
	  else
	  if(strBuff.Compare("<SWITCH_STATEMENT>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
        pTemplate->nTemplt = CT_SWITCH;
	  }
	  else
	  if(strBuff.Compare("<TRY_CATCH_CLAUSE>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
        pTemplate->nTemplt = CT_TRY_CATCH;
	  }
	  else
	  if(strBuff.Compare("<CLASS_DECLARATION>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
        pTemplate->nTemplt = CT_CLASS;
		pTemplate->m_strTemplate = "<CLASS_NAME>";
	  }
	  else
	  if(strBuff.Compare("<INTERFACE_DECLARATION>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
        pTemplate->nTemplt = CT_INTERFACE;
		pTemplate->m_strTemplate = "<CLASS_NAME>";
	  }
	  else
	  if(strBuff.Compare("<SWING_TEXT_EDITOR>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
        pTemplate->nTemplt = CT_FRAME_APP_EDITOR_SWING;
		pTemplate->m_strTemplate = "<CLASS_NAME>";
	  }
	  else
	  if(strBuff.Compare("<FRAME_APP_WITH_MENU_SWING>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
        pTemplate->nTemplt = CT_FRAME_APP_MENUBAR_SWING;
		pTemplate->m_strTemplate = "<CLASS_NAME>";
	  }
	  else
	  if(strBuff.Compare("<FRAME_APP_WITH_TOOLBAR_SWING>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
        pTemplate->nTemplt = CT_FRAME_APP_TOOLBAR_SWING;
		pTemplate->m_strTemplate = "<CLASS_NAME>";
	  }
	  else
	  if(strBuff.Compare("<FRAME_APP_SWING>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
        pTemplate->nTemplt = CT_FRAME_APP_NONE_SWING;
		pTemplate->m_strTemplate = "<CLASS_NAME>";
	  }
	  else
	  if(strBuff.Compare("<DIALOG_APP_SWING>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
		pTemplate->nTemplt = CT_DIALOG_APP_SWING;
		pTemplate->m_strTemplate = "<CLASS_NAME>";
	  }
	  else
	  if(strBuff.Compare("<FRAME_APP_AS_SIMPLE_TEXT_EDITOR_AWT>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
		pTemplate->nTemplt = CT_FRAME_APP_EDITOR_AWT;
		pTemplate->m_strTemplate = "<CLASS_NAME>";
	  }
	  else
	  if(strBuff.Compare("<FRAME_APP_WITH_MENU_AWT>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
        pTemplate->nTemplt =CT_FRAME_APP_MENUBAR_AWT;
		pTemplate->m_strTemplate = "<CLASS_NAME>";
	  }
	  else
	  if(strBuff.Compare("<FRAME_APP_WITH_TOOLBAR_AWT>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
		pTemplate->nTemplt = CT_FRAME_APP_TOOLBAR_AWT;
		pTemplate->m_strTemplate = "<CLASS_NAME>";
	  }
	  else
	  if(strBuff.Compare("<FRAME_APP_AWT>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
        pTemplate->nTemplt = CT_FRAME_APP_NONE_AWT;
		pTemplate->m_strTemplate = "<CLASS_NAME>";
	  }
	  else
	  if(strBuff.Compare("<DIALOG_APP_AWT>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
		pTemplate->nTemplt = CT_DIALOG_APP_AWT;
		pTemplate->m_strTemplate = "<CLASS_NAME>";
	  }
	  else
	  if(strBuff.Compare("<CONSOLE_APP>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
        pTemplate->nTemplt = CT_CONSOLE_APP;
		pTemplate->m_strTemplate = "<CLASS_NAME>";
	  }
	  else
	  if(strBuff.Compare("<APPLET_APP>") == 0)
	  {
         if(pTemplate != NULL)
          m_CodeTemplates.AddTail(pTemplate);

		pTemplate = new CCodeTemplate::_Template;
        pTemplate->nTemplt = CT_APPLET_APP;
		pTemplate->m_strTemplate = "<CLASS_NAME>";
	  }
	  else
	  if(pTemplate != NULL)
	    pTemplate->m_pBuffer->AddTail(strBuff);
   }
   if(pTemplate)
   m_CodeTemplates.AddTail(pTemplate);
}

void CCodeTemplate::WriteTemplate(__CodeTemplate nType,
                                  CString szpClass,CString strPath)
{
   CStdioFile writer;
   if(writer.Open(strPath,CFile::modeWrite|CFile::modeRead|CFile::modeCreate))
   {
      //get template we need based on user's choice
      CCodeTemplate::_Template* pTemplate = GetTemplate(nType);
      if(pTemplate)
	  {
	      //generate code from template
		  CStringList strlCode;
          GenerateCodeFromTemplate(pTemplate->m_pBuffer,pTemplate->m_strTemplate,
		                           szpClass,strlCode);
          //write the generated code 
          for(POSITION nPos = strlCode.GetHeadPosition(); nPos != NULL;)
	        writer.WriteString(strlCode.GetNext(nPos)+"\n");
	  }writer.Close();
   }
}

CCodeTemplate::_Template* CCodeTemplate::GetTemplate(__CodeTemplate nType)
{
  for(POSITION nPos = m_CodeTemplates.GetHeadPosition();nPos != NULL;)
  {
	  CCodeTemplate::_Template* pTemplate = m_CodeTemplates.GetNext(nPos);
	  if(pTemplate->nTemplt == nType)return pTemplate;
  }return NULL;
}


void CCodeTemplate::GenerateCodeFromTemplate(CStringList* pBuff,CString strFind,
								  CString strReplacement,
								  CStringList& strlCode)
{
   for(POSITION nPos = pBuff->GetHeadPosition(); nPos != NULL;)
   {
      CString strLine = pBuff->GetNext(nPos);
      strLine.Replace(strFind,strReplacement);
      strlCode.AddTail(strLine);
   }
}

⌨️ 快捷键说明

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