// settings
public var panelBgColor:int=0x808088, tileListBgColor:int=0x484848, overlayListBgColor:int=0xb0b0b0;
public var unselectedGridTabColor:int=0x202020, unselectedThemeTabColor:int=0xa0a0a0;
public var iconTileX:int=90+7*2, iconTileY:int=90+2*2;
public var tilePaddingX:int=6, tilePaddingY:int=4;
public var generalPadding:int=4, tabSpacing:int=6;
public var overlayPanel_width:int=212;
public var innerWidth:int, innerWidthMinusOverlay:int, innerHeight:int;
public var selectedColor:int=0xffff80, selectedBorder:int=0x808040;
public function Build():void
{
var bgOpacity:Number=1.0, panelOpacity:Number=1.0, borderSize:int=generalPadding*2;
innerWidth = sizeX-2*generalPadding-(borderSize/2)*2;
innerWidthMinusOverlay = innerWidth-overlayPanel_width-1*generalPadding;
innerHeight = sizeY-2*generalPadding-(borderSize/2)*2 - 36;
graphic.effects.SetBackground(new FillStyle({color:panelBgColor, opacity:bgOpacity}));
graphic.effects.SetBorder(new LineStyle({color:config.tempSettings.panelBorderColor, thickness:borderSize}), 0); // was 30
var posX:int, posY:int, loop:int;
var bg:Graphic, text:Text;
var panel:Panel, tab:Panel;
// HEADER
bg = config.Create('Graphic');
bg.SetId('TilePicker_Panel.bg');
bg.effects.SetBackground(new FillStyle({color:config.tempSettings.panelBorderColor, opacity:1.0}));
bg.SetSize(sizeX-(borderSize-2), 40);
bg.SetOrigin(0.5, 0);
bg.SetAnchor(0.5, 0);
bg.SetDepth(-Graphic.MAX_DEPTH);
AttachGraphic(bg);
text = config.Create('Text');
text.SetId('grid title');
text.ApplyStylePreset('panel_title');
text.SetFontSize(20);
text.effects.SetScale(0.6666, 1.0);
text.SetOrigin(0, 0);
text.SetAnchor(0.5, 0, 0, 8);
AttachGraphic(text);
panel = config.Create('Panel', 'Text');
panel.SetId('X to close');
panel.SetOrigin(1, 0);
panel.SetSize(24, 24);
panel.SetAnchor(1, 0, -12, 5);
Text(panel.graphic).SetText("X");
Text(panel.graphic).ApplyStylePreset('panel_title');
Text(panel.graphic).SetColor(0xa0a0a0);
panel.ReceivePlatformEvents();
panel.commandHook = CloseButton_Handler;
panel.DisableKeyboardFocus();
AttachChild(panel);
//--------------------------------------
// TILE PANEL
// grid tabs
posX = generalPadding;
posY = 40;
for(var gridId:int=0 ; gridId<7 ; gridId++)
{
tab = CreateTab(String(gridId),
config.assMan.Get('__library', TilePicker_Panel['IMAGE_GridIcon_'+gridId], GraphicData),
unselectedGridTabColor, SelectGrid_Handler);
tab.SetPos(posX, posY);
AttachChild(tab);
gridTabs.Add(tab, gridId);
posX += tab.sizeX+tabSpacing;
}
posX = generalPadding+generalPadding;
posY += generalPadding;
tilePanel = new Panel();
tilePanel.SetSize(innerWidthMinusOverlay, innerHeight);
tilePanel.SetOrigin(0, 0);
tilePanel.SetPos(posX, posY);
AttachChild(tilePanel);
//--------------------------------------
// GENERAL PANEL
posX = 0;
posY = 0;
generalPanel = new TileGrid();
generalPanel.SetDirection(false, 5);
generalPanel.SetTileSize(iconTileX, iconTileY);
generalPanel.SetTilePadding(tilePaddingX, tilePaddingY);
generalPanel.SetSize(innerWidthMinusOverlay, 2*(iconTileY+tilePaddingY)+tilePaddingY);
generalPanel.SetOrigin(0, 0);
generalPanel.SetPos(posX, posY);
generalPanel.graphic.effects.SetBackground(new FillStyle({color:tileListBgColor, opacity:panelOpacity}));
tilePanel.AttachChild(generalPanel);
posY += generalPanel.sizeY;
posY += generalPadding;
// rotate button
rotateButton = config.Create('Button');
rotateButton.SetId('rotate');
rotateButton.SetLabel('Rotate / Alternate');
rotateButton.SetOrigin(1, 0);
rotateButton.SetAnchor(1, 0, -generalPadding, posY);
rotateButton.commandHook = RotateButtonCmd;
tilePanel.AttachChild(rotateButton);
posY += generalPadding+36;
// theme title
themeTitle = config.Create('Text');
themeTitle.SetId('theme title');
themeTitle.ApplyStylePreset('panel_title');
themeTitle.SetFontSize(16);
themeTitle.effects.SetScale(0.6666, 1.0);
themeTitle.SetOrigin(1, 1);
themeTitle.SetAnchor(1, 0, -generalPadding, posY);
tilePanel.AttachGraphic(themeTitle);
//--------------------------------------
// THEME PANEL
// theme tabs
for each(var themeId:String in jconfig.themeList)
{
tab = CreateTab(themeId,
config.assMan.Get('__library', TilePicker_Panel['IMAGE_ThemeIcon_'+themeId], GraphicData),
unselectedThemeTabColor, SelectTheme_Handler);
tab.SetPos(posX, posY);
tilePanel.AttachChild(tab);
themeTabs.Add(tab, 0, themeId);
posX += tab.sizeX+tabSpacing;
}
posX = 0;
themePanel = new TileGrid();
themePanel.SetDirection(false, 5);
themePanel.SetTileSize(iconTileX, iconTileY);
themePanel.SetTilePadding(tilePaddingX, tilePaddingY);
themePanel.SetSize(innerWidthMinusOverlay, 3*(iconTileY+tilePaddingY)+tilePaddingY);
themePanel.SetOrigin(0, 0);
themePanel.SetPos(posX, posY);
themePanel.graphic.effects.SetBackground(new FillStyle({color:tileListBgColor, opacity:panelOpacity}));
tilePanel.AttachChild(themePanel);
//--------------------------------------
// OVERLAY PANEL
posX = sizeX-2*generalPadding;
posY = 40+20+generalPadding;
overlayPanel = config.Create('Panel');
overlayPanel.SetId('TP.overlayPanel');
overlayPanel.SetOrigin(1, 0);
overlayPanel.SetSize(overlayPanel_width, innerHeight);
overlayPanel.SetPos(posX, posY);
AttachChild(overlayPanel);
text = config.Create('Text');
text.SetText("Overlays");
text.ApplyStylePreset('panel_title');
text.SetFontSize(18);
text.effects.SetScale(0.6666, 1.0);
text.SetOrigin(0.5, 1);
text.SetAnchor(0.5, 0, 0, 4);
overlayPanel.AttachGraphic(text);
overlayGrid = new TileGrid();
overlayGrid.SetPadding(generalPadding, generalPadding);
overlayGrid.SetDirection(false, 2);
overlayGrid.SetTileSize(90, 90-6);
overlayGrid.SetTilePadding(8, 0);
overlayGrid.SetSize(overlayPanel_width, sizeY-posY-2*generalPadding-10);
overlayGrid.SetOrigin(0, 0);
overlayGrid.SetPos(0, 4);
overlayGrid.graphic.effects.SetBackground(new FillStyle({color:overlayListBgColor, opacity:panelOpacity}));
overlayPanel.AttachChild(overlayGrid);
}
// UI HELPERS
private function CreateTab(tabId:String, grdata:GraphicData, color:int, cmdHandler:Function):Panel
{
var tab:Panel = config.Create('Panel');
tab.SetId(tabId);
tab.ReceivePlatformEvents();
tab.graphic.effects.SetBackground(new FillStyle({color:color}));
//tab.graphic.effects.SetBorder(new LineStyle({color:0x000000, thickness:1, opacity:1.0}));
tab.SetOrigin(0, 1);
tab.SetSize(44, 36);
tab.commandHook = cmdHandler;
var image:Graphic = grdata.CreateGraphic();
image.SetAnchor(0.5, 0.5);
tab.AttachGraphic(image);
return tab;
}