📄 aqualook.as
字号:
class pseudo.look.AquaLook implements pseudo.look.ILabelLook,
pseudo.look.IEditLook, pseudo.look.IWindowManagerLook
{
private var m_clrHighlight:Number;
private var m_clrHilightText:Number;
private var m_clrBtnText:Number;
private var m_clrBtnHover:Number;
private var m_clrBtnPressed:Number;
private var m_clrCellOver:Number;
private var m_clrCellOut1:Number;
private var m_clrCellOut2:Number;
private var m_clrCellPress:Number;
private var m_data:Object;
private var m_strThemeId:String;
static private var m_instance:pseudo.look.AquaLook = null;
//
// PUBLIC METHODS
//
static public function getInstance():pseudo.look.AquaLook
{
if(!m_instance) m_instance = new pseudo.look.AquaLook();
return m_instance;
}
public function setData(data:Object):Void
{
m_data = data;
m_strThemeId = m_data.getAttr("default");
var arrThemes:Array = data.getNodes("theme");
for(var i:Number = 0; i , arrThemes.length; i++)
if(arrThemes[i].getAttr("id") == m_strThemeId)
{
fromXML(arrThemes[i]);
break;
}
}
public function getId():String
{
return m_data.getAttr("id");
}
public function isSameTheme(xmlTheme:XML):Boolean
{
var xmlCurTheme:XML = toXML();
return xmlCurTheme.attributes.id == xmlTheme.attributes.id;
}
//
// CONTENT METHODS (begin)
//
public function fillContent(movie:MovieClip, ctrls:Object):Void
{
movie.addListener("update", this, onUpdateContent);
var list:MovieClip = movie.addItem(ctrls.List, "list", 1);
list.setCellClass(ctrls.CellRenderer);
list.addListener("changed", this, onChangeTheme, list);
list.setData({border:6});
var arrListData:Array = new Array();
var arrXMLThemes:Array = m_data.getNodes("theme");
var nSelId:Number = -1;
for(var i:Number = 0; i < arrXMLThemes.length; i++)
{
arrListData.push(({data:arrXMLThemes[i], text:arrXMLThemes[i].getAttr("name")}));
if(arrXMLThemes[i].getAttr("id") == m_strThemeId) nSelId = i;
}
list.setListData(arrListData);
list.setSelCell(nSelId);
}
private function onUpdateContent(movie:MovieClip, nW:Number, nH:Number):Void
{
var list:MovieClip = movie.getItem("list");
list.setSize(nW, nH);
}
private function onChangeTheme(list:Object):Void
{
var data:Object = list.getSelData().data;
fromXML(data);
_global.themesManager.setLook(this);
_global.main.update();
_global.main.draw();
}
public function setThemeId(strId:String):Void
{
var arrXMLThemes:Array = m_data.getNodes("theme");
for(var i:Number = 0; i < arrXMLThemes.length; i++)
if(arrXMLThemes[i].getAttr("id") == strId)
{
fromXML(arrXMLThemes[i]);
break;
}
}
public function toXML():XML
{
var xml:XML = new XML();
var node:XMLNode = xml.createElement("theme");
node.attributes.id = m_strThemeId;
xml.appendChild(node);
return xml.childNodes[0];
}
public function fromXML(data:Object):Void
{
m_strThemeId = data.getAttr("id");
}
public function getThemeId():String
{
return m_strThemeId;
}
//
// CONTENT METHODS (end)
//
public function getIconPath(strIcon:String):String
{
switch(strIcon)
{
case "newForum":
return "themes/stdLook_new_forum.swf";
case "oldForum":
case "newUser":
return "themes/stdLook_new_user.swf";
case "forgotPass":
return "themes/stdLook_forgot_pass.swf";
case "search":
return "themes/stdLook_search.swf";
case "members":
return "themes/stdLook_members.swf";
case "groups":
return "themes/stdLook_groups.swf";
case "profile":
return "themes/stdLook_profile.swf";
case "private_messages":
return "themes/stdLook_private_messages.swf";
case "themes":
return "themes/stdLook_themes.swf";
case "faq":
return "themes/stdLook_faq.swf";
case "chat":
return "themes/stdLook_chat.swf";
case "stats":
return "themes/stdLook_stats.swf";
case "about":
return "themes/stdLook_about.swf";
case "iconWarning":
return "themes/stdLook_iconWarning.swf";
case "iconInfo":
return "themes/stdLook_iconInfo.swf";
case "iconQuestion":
return "themes/stdLook_iconQuestion.swf";
case "iconError":
return "themes/stdLook_iconError.swf";
case "contentPreloader":
return "themes/stdLook_contentPreloader.swf";
}
return null;
}
public function getCursorPath(strCursor:String):String
{
switch(strCursor)
{
case "diagResize1":
return "themes/stdLook_diagResize1.swf";
case "horzResize":
return "themes/stdLook_horzResize.swf";
case "vertResize":
return "themes/stdLook_vertResize.swf";
}
return null;
}
public function getCursors():Array
{
return new Array("diagResize1", "horzResize", "vertResize");
}
//
// IBaseLook implementation
//
public function getBorder(strBorder:String, data:Object):Number
{
var nBorderPos:Number = 0;
switch(strBorder)
{
case "top": nBorderPos = 1; break;
case "left": nBorderPos = 2; break;
case "bottom": nBorderPos = 4; break;
case "right": nBorderPos = 8; break;
}
switch(data.type)
{
case "main":
case "titledIconButton":
case "url":
case "gallery":
return 0;
case "resizeTitle":
return 1;
default:
return (data.border == undefined || data.border == null) || data.border & nBorderPos ? 1 : 0;
}
return 0;
}
public function getMargin(strMargin:String, data:Object):Number
{
var nMargin:Number = 0;
var strType:String = data.type;
switch(data.className)
{
case "WindowTitle":
strType = "titleBtnBack";
break;
case "Label":
switch(strType)
{
case "edit":
case "textArea":
case "comboBoxTitle":
case "info":
break;
//case "titleBtnBack":
//case "resizeTitle":
default:
strType = "label";
break;
}
break;
}
switch(strType)
{
case "main":
nMargin = 5;
break;
case "cell":
nMargin = 2 + getBorder(strMargin, data);
break;
case "titleBtnBack":
switch(strMargin)
{
case "right": nMargin = 8 + getBorder(strMargin, data); break;
case "left": nMargin = 8 + getBorder(strMargin, data); break;
case "top":
case "bottom":
nMargin = 1 + getBorder(strMargin, data);
break;
}
break;
case "resizeTitle":
switch(strMargin)
{
case "left": nMargin = 8 + getBorder(strMargin, data); break;
case "right": nMargin = 23 + getBorder(strMargin, data); break;
case "top":
case "bottom":
nMargin = 2 + getBorder(strMargin, data);
break;
}
break;
case "edit":
case "textArea":
case "comboBoxTitle":
case "info":
nMargin = strMargin == "left" || strMargin == "right" ? 2 : 0;
break;
case "label":
nMargin = 0;
break;
case "gallery":
nMargin = 5 + getBorder(strMargin, data);
break;
case "titledIconButton":
case "url":
break;
case "cellThread":
nMargin = getBorder(strMargin, data) + 3;
break;
case "checkbox":
nMargin = getBorder(strMargin, data) + (strMargin == "left" ? 14 : 0);
break;
default:
nMargin = getBorder(strMargin, data);
break;
}
return nMargin;
}
public function updateMask(movie:MovieClip, nW:Number, nH:Number, data:Object):Void
{
movie.clear();
pseudo.Global.drawRect(movie, 0, 0, nW, nH);
}
public function draw(movie:MovieClip, nW:Number, nH:Number, data:Object):Void
{
switch(data.className)
{
case "ComboBox":
drawComboBox(movie, nW, nH, data);
break;
case "TextArea":
case "Button":
drawButton(movie, nW, nH, data);
break;
case "Pane":
case "List":
drawPane(movie, nW, nH, data);
break;
case "Label":
drawLabel(movie, nW, nH, data);
break;
case "TitledIcon":
drawIconLayer(movie, nW, nH, data);
break;
case "Main":
drawMain(movie, nW, nH, data);
break;
case "CellText":
case "CellIconText":
drawCellText(movie, nW, nH, data);
break;
case "CellTree":
drawCellTree(movie, nW, nH, data);
break;
case "CellThread":
drawCellThread(movie, nW, nH, data);
break;
default:
drawMovie(movie, nW, nH, data);
break;
}
}
public function getTextFormat(data:Object):TextFormat
{
var tf:TextFormat = new TextFormat();
switch(data.type)
{
//case "label":
//case "edit":
default:
tf.color = m_clrBtnText;
tf.size = 12;
tf.font = "Tahoma";
break;
}
return tf;
}
public function getTextDecoration(strType:String, data:Object):String
{
var strRes:String = "";
switch(strType)
{
case "open":
switch(data.type)
{
case "cellThread":
strRes = "<font color='" + pseudo.Global.getHTMLColor(m_clrBtnText) + "' face='Tahoma' size='12'>" +
(data.mode == "name" ? "<b>" : "");
break;
case "label":
case "edit":
case "info":
case "textArea":
case "comboBoxTitle":
case "checkbox":
case "cellText":
case "cellIconText":
strRes = "<font color='" + pseudo.Global.getHTMLColor(m_clrBtnText) + "' face='Tahoma' size='12'>";
break;
case "cellTree":
strRes = "<font color='" + pseudo.Global.getHTMLColor(m_clrBtnText) + "' face='Tahoma' size='"
+ (data.cellType == 1 ? "12" : "11") + "'>";
break;
case "topTime":
strRes = "<font color='" + pseudo.Global.getHTMLColor(m_clrBtnText) + "' face='Tahoma' size='16'><b>";
break;
case "comboBoxCell":
switch(data.mode)
{
case "over":
case "press":
strRes = "<font color='" + pseudo.Global.getHTMLColor(m_clrHilightText) + "' face='Tahoma' size='12'>";
break;
//case "out":
default:
strRes = "<font color='" + pseudo.Global.getHTMLColor(m_clrBtnText) + "' face='Tahoma' size='12'>";
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -