/*-----------------------------------------------------------------------------
[名称]	CustomSettingHTML.cpp
[概要]	HTML用設定情報の実装
[備考]	システム標準で用意するHTML用設定情報クラス。
[履歴]	2003-02-25	NC		コメント付加(moralog)
-----------------------------------------------------------------------------*/

//-----------------------------------------------------------------------------
// インクルード
//-----------------------------------------------------------------------------
#include "stdafx.h"
#include "shitarabian.h"
#include "CustomSettingHTML.h"
#include "EmphasisDefine.h"

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



static const char*	f_ppszKeyWords[] = {
	"_blank",
	"_parent",
	"_self",
	"_top",
	"A",
	"ABBR",
	"ABOVE",
	"absbottom",
	"absmiddle",
	"ACCESSKEY",
	"ACRONYM",
	"ACTION",
	"ADDRESS",
	"ALIGN",
	"all",
	"APPLET",
	"AREA",
	"AUTOPLAY",
	"AUTOSTART",
	"B",
	"BACKGROUND",
	"BASE",
	"BASEFONT",
	"baseline",
	"BEHAVIOR",
	"BELOW",
	"BGCOLOR",
	"BGSOUND",
	"BIG",
	"BLINK",
	"BLOCKQUOTE",
	"BODY",
	"BORDER",
	"BORDERCOLOR",
	"BORDERCOLORDARK",
	"BORDERCOLORLIGHT",
	"BOTTOM",
	"box",
	"BR",
	"BUTTON",
	"CAPTION",
	"CELLPADDING",
	"CELLSPACING",
	"CENTER",
	"CHALLENGE",
	"char",
	"checkbox",
	"CHECKED",
	"CITE",
	"CLEAR",
	"CLIP",
	"CODE",
	"CODEBASE",
	"CODETYPE",
	"COL",
	"COLGROUP",
	"COLOR",
	"COLS",
	"COLSPAN",
	"COMMENT",
	"CONTROLS",
	"DATA",
	"DD",
	"DECLARE",
	"DEFER",
	"DEL",
	"DELAY",
	"DFN",
	"DIR",
	"DIRECTION",
	"DISABLED",
	"DIV",
	"DL",
	"DOCTYPE",
	"DT",
	"EM",
	"EMBED",
	"ENCTYPE",
	"FACE",
	"FIELDSET",
	"file",
	"FONT",
	"FOR",
	"FORM",
	"FRAME",
	"FRAMEBORDER",
	"FRAMESET",
	"GET",
	"groups",
	"GROUPS",
	"GUTTER",
	"H1",
	"H2",
	"H3",
	"H4",
	"H5",
	"H6",
	"H7",
	"HEAD",
	"HEIGHT",
	"HIDDEN",
	"Hn",
	"HR",
	"HREF",
	"hsides",
	"HSPACE",
	"HTML",
	"I",
	"ID",
	"IFRAME",
	"ILAYER",
	"image",
	"IMG",
	"INDEX",
	"inherit",
	"INPUT",
	"INS",
	"ISINDEX",
	"JavaScript",
	"justify",
	"KBD",
	"KEYGEN",
	"LABEL",
	"LANGUAGE",
	"LAYER",
	"LEFT",
	"LEGEND",
	"lhs",
	"LI",
	"LINK",
	"LISTING",
	"LOOP",
	"MAP",
	"MARQUEE",
	"MAXLENGTH",
	"MENU",
	"META",
	"METHOD",
	"METHODS",
	"MIDDLE",
	"MULTICOL",
	"MULTIPLE",
	"NAME",
	"NEXT",
	"NEXTID",
	"NOBR",
	"NOEMBED",
	"NOFRAMES",
	"NOLAYER",
	"none",
	"NOSAVE",
	"NOSCRIPT",
	"NOTAB",
	"NOWRAP",
	"OBJECT",
	"OL",
	"onBlur",
	"onChange",
	"onClick",
	"onFocus",
	"onLoad",
	"onMouseOut",
	"onMouseOver",
	"onReset",
	"onSelect",
	"onSubmit",
	"OPTION",
	"P",
	"PAGEX",
	"PAGEY",
	"PALETTE",
	"PANEL",
	"PARAM",
	"PARENT",
	"password",
	"PLAINTEXT",
	"PLUGINSPAGE",
	"POST",
	"PRE",
	"PREVIOUS",
	"Q",
	"radio",
	"REL",
	"REPEAT",
	"reset",
	"REV",
	"rhs",
	"RIGHT",
	"rows",
	"ROWSPAN",
	"RULES",
	"S",
	"SAMP",
	"SAVE",
	"SCRIPT",
	"SCROLLAMOUNT",
	"SCROLLDELAY",
	"SELECT",
	"SELECTED",
	"SERVER",
	"SHAPES",
	"show",
	"SIZE",
	"SMALL",
	"SONG",
	"SPACER",
	"SPAN",
	"SRC",
	"STANDBY",
	"STRIKE",
	"STRONG",
	"STYLE",
	"SUB",
	"submit",
	"SUMMARY",
	"SUP",
	"TABINDEX",
	"TABLE",
	"TARGET",
	"TBODY",
	"TD",
	"TEXT",
	"TEXTAREA",
	"textbottom",
	"TEXTFOCUS",
	"textmiddle",
	"texttop",
	"TFOOT",
	"TH",
	"THEAD",
	"TITLE",
	"TOP",
	"TR",
	"TT",
	"TXTCOLOR",
	"TYPE",
	"U",
	"UL",
	"URN",
	"USEMAP",
	"VALIGN",
	"VALUE",
	"VALUETYPE",
	"VAR",
	"VISIBILITY",
	"void",
	"vsides",
	"VSPACE",
	"WBR",
	"WIDTH",
	"WRAP",
	"XMP"
};

/*-----------------------------------------------------------------------------
[名称]	コンストラクタ
[機能]	インスタンスの生成。
[戻値]	なし
[備考]	なし
-----------------------------------------------------------------------------*/
CCustomSettingHTML::CCustomSettingHTML()
{
	m_strSettingName = "ＨＴＭＬソース";
	m_strExt = "html,htm,shtml,plg";

	// 色設定
	{
		CEmphasisDefine*	pEmphasis = GetEmphasisDefine();
		CEmphasisItem		Item;

		// コメント
		Item.SetPattern((CString)"\\<\\!--");
		Item.SetTerminator((CString)"--\\>");
		Item.SetForeColor( RGB(0,128,0) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		pEmphasis->GetItemz().Add( Item );
/*
		// リテラル文字列
		Item.SetPattern((CString)"(\\\"\\\")|(\\\"[^\\\"]+?\\\")");
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(0,0,255) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		pEmphasis->GetItemz().Add( Item );
*/
		// リテラル数字
		Item.SetPattern((CString)"(\\#[0-9a-fA-F]+(\\b)*)|(\\b[0-9]+\\b)");
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(255,0,0) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		pEmphasis->GetItemz().Add( Item );

		// タグ
		CString	strKeyWordz;
		StrArrayToKeyWordzString( (char**)f_ppszKeyWords, sizeof(f_ppszKeyWords)/sizeof(char*), &strKeyWordz );
		Item.SetPattern( strKeyWordz );
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(128,128,128) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		TFindCondition* pFind = Item.GetFindCondition();
		pFind->bCaseCare = FALSE;
		pEmphasis->GetItemz().Add( Item );

		// ハイパーリンク１
		Item.SetPattern((CString)"\\b(http|ftp|mailto)\\:[^\\s\\\"]*");
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(0,0,255) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		Item.SetUnderLine( TRUE );
		pEmphasis->GetItemz().Add( Item );

		// ハイパーリンク２
		Item.SetPattern((CString)"www\\.[^\\s\\\"]*");
		Item.SetTerminator((CString)"");
		Item.SetForeColor( RGB(0,0,255) );
		Item.SetBackColor( RGB(255,255,255) );
		Item.SetEnableToggle( TRUE );
		Item.SetUnderLine( TRUE );
		pEmphasis->GetItemz().Add( Item );
	}
}


/*-----------------------------------------------------------------------------
[名称]	デストラクタ
[機能]	インスタンスの破棄。
[戻値]	なし
[備考]	なし
-----------------------------------------------------------------------------*/
CCustomSettingHTML::~CCustomSettingHTML()
{

}
