📄 codetemplate.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 + -