import com.asual.enflash.EnFlash;
import com.asual.enflash.EnFlashConfiguration;
import com.asual.enflash.ui.Button;
import com.asual.enflash.ui.Label;
import com.asual.enflash.ui.TextInput;
import com.asual.enflash.ui.TextArea;
import com.asual.enflash.ui.UITheme;
import com.asual.enflash.utils.*;
class XMLDemo extends EnFlash {
private var _themeTimer:Number = 0;
private var _zoomTimer:Number = 0;
private var _name:String = "XMLDemo";
public static function main():Void {
var conf = new EnFlashConfiguration();
conf.xmlMode = true;
conf.xmlFile = "xmldemo.xml";
conf.themesLoading = false;
conf.marginTop = (_root.enflash != undefined) ? 24 : 0;
(new XMLDemo()).init(conf);
}
public function uiLoad(evt:Object):Void {
logger = true;
getById("infoLabel").value = "EnFlash " + _enflash.version + " XMLDemo";
log("ui loaded");
}
public function themeSet(evt:Object):Void {
log("theme setted (" + (getTimer() - _themeTimer) + ")");
paneResize();
}
public function uiZoom(evt:Object):Void {
log("zoom setted (" + (getTimer() - _zoomTimer) + ")");
paneResize();
}
public function fileChange(evt:Object){
switch(evt.menuItem.value){
case "Exit":
getURL("javascript:window.close()");
break;
case "View XML":
var xml = XMLNodes.format(_enflash.getXML());
xml = Strings.replace(xml, "<p", "<p");
xml = Strings.replace(xml, "p>", "p>");
xml = Strings.replace(xml, "<", "<");
xml = Strings.replace(xml, ">", ">");
var xmlWindow = getById("xmlWindow");
var xmlLabel = getById("xmlLabel");
xmlLabel.value = xml;
xmlWindow.refresh();
xmlWindow.vScrollPosition = 0;
xmlWindow.setSize(ui.w - 400, ui.h - 300);
xmlWindow.x = Math.round((ui.w - xmlWindow.w)/2);
xmlWindow.y = Math.round((ui.h - xmlWindow.h)/2);
xmlWindow.open();
break;
}
}
public function randomComponent(type:Number) {
switch(type){
case 0:
return new Label();
break;
case 1:
return new Button();
break;
case 2:
return new TextInput();
break;
case 3:
return new TextArea();
break;
}
}
public function randomLabel(type:Number):String {
switch(type){
case 0:
return "New Label";
break;
case 1:
return "New Button";
break;
case 2:
return "New TextInput";
break;
case 3:
return "New TextArea";
break;
}
}
public function randomChange(evt:Object):Void {
var pane = getById("mainPane");
var type = Math.floor(Math.random()*4);
var index = parseInt(Strings.replace(evt.menuItem.value, "At index ", ""));
var component = randomComponent(type);
component.value = randomLabel(type);
pane.addItemAt(index, component);
}
public function createChange(evt:Object):Void {
var component;
var pane = getById("mainPane");
var index = Math.round(Math.random()*3);
switch(evt.menuItem.value){
case "Label":
component = new Label();
component.value = "New Label";
break;
case "Button":
component = new Button();
component.value = "New Button";
break;
case "TextInput":
component = new TextInput();
component.value = "New TextInput";
break;
case "TextArea":
component = new TextArea();
component.value = "New TextArea";
break;
}
pane.addItem(component);
}
public function removeChange(evt:Object):Void {
var pane = getById("mainPane");
switch(evt.menuItem.value){
case "All":
pane.removeAll();
break;
case "Item at index 0":
pane.removeItemAt(0).remove();
break;
case "Item at index 1":
pane.removeItemAt(1).remove();
break;
case "Item at index 2":
pane.removeItemAt(2).remove();
break;
case "Item at index 3":
pane.removeItemAt(3).remove();
break;
case "Item at index 4":
pane.removeItemAt(4).remove();
break;
case "Item at index 5":
pane.removeItemAt(5).remove();
break;
}
}
public function themeLoad(evt:Object):Void {
var item;
var i:Number = evt.target.length;
while(i--) {
item = evt.target.getItem(i);
if (item.value == ui.theme.name + " theme") {
item.checked = true;
} else {
item.checked = false;
}
}
}
public function themeChange(evt:Object):Void {
_themeTimer = getTimer();
switch(evt.menuItem.value){
case "Default theme":
ui.theme = new UITheme(_enflash.conf.themesRepository + "default.swf");
break;
case "Oasis theme":
ui.theme = new UITheme(_enflash.conf.themesRepository + "oasis.swf");
break;
case "Office theme":
ui.theme = new UITheme(_enflash.conf.themesRepository + "office.swf");
break;
case "Robo theme":
ui.theme = new UITheme(_enflash.conf.themesRepository + "robo.swf");
break;
}
}
public function zoomLoad(evt:Object):Void {
var item;
var i:Number = evt.target.length;
while(i--) {
item = evt.target.getItem(i);
if (item.value == (ui.zoom + "%")) {
item.checked = true;
}
}
}
public function zoomChange(evt:Object):Void {
if (ui.zoom + "%" == evt.menuItem.value) return;
_zoomTimer = getTimer();
switch(evt.menuItem.value){
case "80%":
ui.zoom = 80;
break;
case "100%":
ui.zoom = 100;
break;
case "120%":
ui.zoom = 120;
break;
case "150%":
ui.zoom = 150;
break;
case "200%":
ui.zoom = 200;
break;
}
}
public function helpChange(evt:Object):Void {
switch(evt.menuItem.value){
case "Homepage":
getURL("http://www.asual.com/enflash/", "_blank");
break;
case "About":
var dialog = getById("aboutDialog");
dialog.open();
break;
}
}
public function editChange(evt:Object):Void {
var pane = getById("infoPane");
var label = getById("infoLabel");
switch(evt.menuItem.value){
case "Clear":
label.value = "";
pane.refresh();
break;
case "Copy":
var cb = label.value.split("
").join("%0D%0A");
cb = cb.split("\n").join("%0D%0A");
System.setClipboard(unescape(cb));
break;
case "Cut":
var cb = label.value.split("
").join("%0D%0A");
cb = cb.split("\n").join("%0D%0A");
System.setClipboard(unescape(cb));
label.value = "";
pane.refresh();
break;
}
}
public function optionsChange(evt:Object):Void {
var pane = getById("infoPane");
var label = getById("infoLabel");
switch(evt.menuItem.value){
case "Enable":
label.enabled = evt.menuItem.checked;
pane.refresh();
break;
case "Increase Font":
label.fontSize++;
pane.refresh();
break;
case "Decrease Font":
label.fontSize--;
pane.refresh();
break;
}
}
public function toggleButton(evt:Object):Void {
var subHeading = getById("subHeading");
subHeading.fontSize = (subHeading.fontSize == 20) ? 6 : 20;
getById("mainPane").refresh();
}
public function okButton(evt:Object):Void {
getById("userInput").enabled = true;
getById("passInput").enabled = true;
getById("textArea").enabled = true;
getById("comboBox").enabled = true;
getById("listBox").enabled = true;
}
public function cancelButton(evt:Object):Void {
getById("userInput").enabled = false;
getById("passInput").enabled = false;
getById("textArea").enabled = false;
getById("comboBox").enabled = false;
getById("listBox").enabled = false;
}
public function paneResize(evt:Object):Void {
selectedUpdate();
var pane = getById("leftPane");
pane.getItem(2).h = pane.h - (pane.getItem(0).h + pane.getItem(3).h + 4);
pane.refresh();
}
public function expandTree(evt:Object):Void {
var tree = getById("projectTree");
tree.autoRefresh = false;
var i:Number = tree.length;
while(i--) {
tree.getItem(i).expanded = true;
}
tree.autoRefresh = true;
}
public function collapseTree(evt:Object):Void {
var tree = getById("projectTree");
tree.autoRefresh = false;
var i:Number = tree.length;
while(i--) {
tree.getItem(i).expanded = false;
}
tree.autoRefresh = true;
while (tree.selectedItem.depth != 0) {
tree.selectedItem = tree.selectedItem.treeParent;
}
}
public function selectedUpdate():Void {
var selectedItem = getById("projectTree").selectedItem;
var info = "
id: " + selectedItem.ref;
info += "
value: " + selectedItem.value;
info += "
depth: " + selectedItem.depth;
getById("selectedLabel").value = "Selected Item" + info;
}
}