flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aha...@apache.org
Subject [27/30] Radii8 code base as accepted by IP Clearance
Date Wed, 03 Sep 2014 00:18:00 GMT
http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/Main.mxml
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/Main.mxml b/Radii8Designer/src/Main.mxml
new file mode 100644
index 0000000..c42e7b4
--- /dev/null
+++ b/Radii8Designer/src/Main.mxml
@@ -0,0 +1,1228 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
+			   xmlns:s="library://ns.adobe.com/flex/spark"
+			   xmlns:mx="library://ns.adobe.com/flex/mx"
+			   xmlns:c="com.flexcapacitor.controls.*"
+			   xmlns:handlers="com.flexcapacitor.handlers.*" 
+			   xmlns:popup="com.flexcapacitor.effects.popup.*" 
+			   xmlns:navigation="com.flexcapacitor.effects.navigation.*"
+			   xmlns:utils="com.flexcapacitor.utils.*" 
+			   xmlns:model="com.flexcapacitor.model.*" 
+			   xmlns:fc="com.flexcapacitor.effects.popup.*"
+			   xmlns:flexiframe="com.google.code.flexiframe.*"
+			   xmlns:services="com.flexcapacitor.effects.services.*"
+			   xmlns:core="com.flexcapacitor.effects.core.*"
+			   xmlns:views="com.flexcapacitor.views.*"
+			   xmlns:renderers="com.flexcapacitor.views.renderers.*"
+			   xmlns:filters="com.flexcapacitor.filters.*"
+			   xmlns:windows="com.flexcapacitor.views.windows.*" 
+			   xmlns:local="*"
+			   
+			   width="100%" height="100%" 
+			   minWidth="800" minHeight="400"
+			   uncaughtError="uncaughtErrorHandler(event)" 
+			   applicationComplete="applicationCompleteHandler(event)"
+			   pageTitle="Radiate" 
+			   frameRate="40" 
+			   >
+	
+	<!-- NOTICE! There are notes that go with this project. They have been moved to readme.txt -->
+	
+	<!--
+	show all properties if inspector is not available 
+	add option to hide code in html view 
+	upload image automatically 
+	add delete attachment 
+	add automatically save document 
+	remove inspector panel 
+	remove focus rect in properties panel items 
+	add items from documents to assets array 
+	attach uploads to project document 
+	add uploaded icon to assets
+=-->
+	
+	<fx:Style source="styles.css" />
+	
+	<fx:Script>
+		<![CDATA[
+			import com.flexcapacitor.controller.Radiate;
+			import com.flexcapacitor.events.RadiateEvent;
+			import com.flexcapacitor.model.DocumentData;
+			import com.flexcapacitor.model.DocumentMetaData;
+			import com.flexcapacitor.model.IDocument;
+			import com.flexcapacitor.model.IProject;
+			import com.flexcapacitor.model.MenuItem;
+			import com.flexcapacitor.utils.XMLUtils;
+			import com.flexcapacitor.views.windows.ContactWindow;
+			import com.flexcapacitor.views.windows.DeleteDocumentWindow;
+			import com.flexcapacitor.views.windows.ExportDocumentWindow;
+			import com.flexcapacitor.views.windows.ImportWindow;
+			import com.flexcapacitor.views.windows.LoginWindow;
+			import com.flexcapacitor.views.windows.NewDocumentWindow;
+			import com.flexcapacitor.views.windows.PrintWindow;
+			
+			import mx.core.UIComponentGlobals;
+			import mx.events.FlexEvent;
+			import mx.events.MenuEvent;
+			
+			import spark.collections.Sort;
+			import spark.collections.SortField;
+			import spark.events.IndexChangeEvent;
+			
+			private var remoteTestURL:String = "";
+			private var testURL:String = "";
+			
+			include "build.as";
+			
+			public static const HOME_STATE:String = "home";
+			public static const DESIGN_STATE:String = "design";
+			public static const DESCRIPTION_STATE:String = "description";
+			
+			/**
+			 * 
+			 * */
+			[Bindable]
+			public var radiate:Radiate;
+			
+			private function uncaughtErrorHandler(event:UncaughtErrorEvent):void {
+				event.preventDefault();
+				
+				//to capture the error message
+				var errorMessage:String = new String();
+				
+				if (event.error is Error) {
+					errorMessage = Error( event.error ).message;
+				}
+				else if (event.error is ErrorEvent) {
+					errorMessage = ErrorEvent( event.error ).text;
+				}
+				else {
+					errorMessage = event.error.toString();
+				}
+				
+				Radiate.log.error(errorMessage);
+				
+			}
+			
+			/**
+			 * Switch views on logo click
+			 * */
+			protected function logo_clickHandler(event:MouseEvent):void {
+				
+				if (currentState==HOME_STATE) {
+					currentState = DESIGN_STATE;
+				}
+				else {
+					currentState = HOME_STATE;
+				}
+				
+			}
+			
+			/**
+			 * Setup the environment. If remote set WP host and path. 
+			 * If running on the desktop or not using remote service
+			 * we will need to change the message
+			 * */
+			protected function applicationCompleteHandler(event:FlexEvent):void {
+				radiate = Radiate.getInstance();
+				radiate.buildNumber = BUILD_NUMBER;
+				radiate.buildDate = BUILD_DATE;
+				radiate.buildTime = BUILD_TIME;
+				Radiate.WP_HOST = "http://www.radii8.com";
+				Radiate.WP_PATH = "/r8m/";
+				Radiate.startup();
+				radiate.getLoggedInStatus();
+				radiate.addEventListener(RadiateEvent.LOGGED_IN_STATUS, initialLoggedInStatusHandler, false, 0, true);
+				
+				if (statusLabel) {
+					statusLabel.text = "Checking to see if you're logged in... one second.";
+				}
+				
+				UIComponentGlobals.designMode = true; // can we do it???
+				//radiate.openInitialProjects();
+				//LayoutManager.getInstance().usePhasedInstantiation = false;
+			}
+			
+			/**
+			 * Open project
+			 * */
+			protected function openProject_itemClickHandler(event:MenuEvent):void {
+				radiate.openProject(radiate.selectedProject);
+			}
+			
+			/**
+			 * Open document
+			 * */
+			private function openDocument_itemClickHandler(event:MenuEvent):void {
+				radiate.openDocument(radiate.selectedDocument, DocumentData.INTERNAL_LOCATION, true);
+			}
+			
+			/**
+			 * Redispatches our custom menu events (so we can use custom menu data types)
+			 * */
+			private function menuItemEventHandler(event:MenuEvent):void {
+				
+				if (event.item is MenuItem) {
+					EventDispatcher(event.item).dispatchEvent(event);
+				} 
+				else if (event.menu && event.menu.dataProvider && 
+					event.menu.dataProvider[0] is MenuItem && 
+					event.menu.dataProvider[0].parent is MenuItem)
+				{
+					EventDispatcher(event.menu.dataProvider[0].parent).dispatchEvent(event);
+				}
+			}
+			
+			/**
+			 * Handle when getting result of call that checks if user is logged in
+			 * */
+			protected function initialLoggedInStatusHandler(event:RadiateEvent):void {
+				//checkOnlineEffect.play();
+				
+				if (radiate.isUserLoggedIn) {
+					//checkOnlineEffect.play();
+					radiate.removeEventListener(RadiateEvent.LOGGED_IN_STATUS, initialLoggedInStatusHandler);
+					checkForProjects();
+					radiate.addEventListener(RadiateEvent.PROJECTS_LIST_RECEIVED, receivedProjectsHandler, false, 0, true);
+					
+					radiate.enableAutoSave = true;
+					
+					if (statusLabel) {
+						statusLabel.text = "";
+					}
+				}
+				else {
+					if (statusLabel) {
+						statusLabel.text = "You must be logged in to save projects";
+					}
+				}
+				
+				radiate.addEventListener(RadiateEvent.LOGGED_IN_STATUS, loggedInStatusHandler, false, 0, true);
+			}
+			
+			/**
+			 * Handle when getting result of call that checks if user is logged in
+			 * */
+			protected function loggedInStatusHandler(event:RadiateEvent):void {
+				//checkOnlineEffect.play();
+				
+				if (radiate.isUserLoggedIn) {
+					radiate.enableAutoSave = true;
+					
+					if (statusLabel) {
+						statusLabel.text = "";
+					}
+				}
+				else {
+					// display you have been logged out message
+					if (statusLabel) {
+						statusLabel.text = "You must be logged in to save projects";
+					}
+				}
+			}
+			
+			/**
+			 * Handle when getting result of list of projects
+			 * */
+			protected function receivedProjectsHandler(event:RadiateEvent):void {
+				//checkOnlineEffect.play();
+				var data:Object = event.data;
+				
+				var length:int;
+				var post:Object;
+				var project:IProject
+				var xml:XML;
+				var isValid:Boolean;
+				var firstProject:IProject;
+				var potentialProjects:Array = [];
+				var source:String;
+				
+				length = data && data is Object ? data.count : 0;
+				
+				for (var i:int;i<length;i++) {
+					post = data.posts[i];
+					//isValid = XMLUtils.isValidXML(post.content);
+					source = post.custom_fields.source;
+					isValid = XMLUtils.isValidXML(source);
+					
+					if (isValid) {
+						xml = new XML(source);
+						// should have an unmarshall from data method
+						project = radiate.createProjectFromXML(xml);
+						
+						// maybe we should keep an array of the projects we just loaded
+						// then we can unmarshall them rather than creating them from xml
+						if (post.attachments) {
+							project.parseAttachments(post.attachments);
+						}
+						// if id is not set in the XML set it manually
+						// we need id for delete
+						if (project.id==null) {
+							project.id = post.id;
+						}
+						//addProject(project);
+						potentialProjects.push(project);
+					}
+					else {
+						Radiate.log.info("Could not import project:" + post.title);
+					}
+				}
+				
+				var sort:Sort = new Sort();
+				var sortField:SortField = new SortField("dateSaved");
+				sort.fields = [sortField];
+				//projectsCollection.sort = sort;
+				projectsCollection.source = potentialProjects;
+				documentsCollection.source = [];
+				
+				
+				if (projectsCollection.length==0 && checkingForProjectsLabel) {
+					checkingForProjectsLabel.text = "No projects.";
+					checkingForProjectsLabel.includeInLayout = true;
+					checkingForProjectsLabel.visible = true;
+				}
+				else if (checkingForProjectsLabel) {
+					checkingForProjectsLabel.text = "";
+					checkingForProjectsLabel.includeInLayout = false;
+					checkingForProjectsLabel.visible = false;
+				}
+				
+			}
+			
+			/**
+			 * Show project info and show documents in the project
+			 * */
+			protected function projectsList_changeHandler(event:IndexChangeEvent = null):void {
+				var project:IProject = projectsList.selectedItem;
+				
+				if (project && project is IProject) {
+					projectLastSavedLabel.text = "" + project.dateSaved;
+					documentsCollection.source = project.documentsMetaData;
+				}
+			}
+			
+			/**
+			 * Open project selected in project list
+			 * */
+			protected function openProject(event:IndexChangeEvent = null):void {
+				var project:IProject = projectsList.selectedItem;
+				
+				if (project && project is IProject) {
+					currentState = DESIGN_STATE;
+					validateNow();
+					radiate.addProject(project, false);
+					//radiate.openProject(project, DocumentData.REMOTE_LOCATION, true);
+					radiate.openProjectFromMetaData(project, DocumentData.REMOTE_LOCATION, true);
+					radiate.setProject(project, true);
+					//projectsList.selectedIndex = -1;
+				}
+			}
+			
+			/**
+			 * Handle login result
+			 * */
+			protected function loginPopUp_closeHandler(event:Event):void {
+				if (radiate.isUserLoggedIn) {
+					checkForProjects();
+					radiate.addEventListener(RadiateEvent.PROJECTS_LIST_RECEIVED, receivedProjectsHandler, false, 0, true);
+					statusLabel.text = "";
+				}
+				else {
+					radiate.getLoggedInStatus();
+				}
+			}
+			
+			/**
+			 * Check online status after logout
+			 * */
+			protected function logoutPopUp_closeHandler(event:Event):void {
+				checkOnline();
+			}
+			
+			/**
+			 * Check if the user is online
+			 * */
+			protected function checkOnline():void {
+				radiate.getLoggedInStatus();
+			}
+			
+			/**
+			 * Work offline clicked. May not be functioning at this time? 
+			 * */
+			protected function workOfflineMenuItem_itemClickHandler(event:MenuEvent):void {
+				if (workOfflineMenuItem.toggled) {
+					checkOnlineEffect.stop();
+				}
+				else {
+					if (!checkOnlineEffect.isPlaying) {
+						checkOnlineEffect.play();
+					}
+				}
+			}
+			
+			/**
+			 * Create a new project
+			 * */
+			protected function createNewProjectLabel_clickHandler(event:Event):void {
+				var openNewProject:OpenPopUp = event.currentTarget as OpenPopUp;
+				var popUp:NewDocumentWindow = openNewProject.popUp as NewDocumentWindow;
+				var projectName:String = popUp.projectName;
+				var documentName:String = popUp.documentName;
+				
+				if (popUp.action==NewDocumentWindow.FINISH) {
+					currentState = DESIGN_STATE;
+					validateNow();
+					radiate.createBlankDemoDocument(projectName, documentName);
+					
+					if (radiate.isUserLoggedIn) {
+						radiate.saveProject(radiate.selectedProject);
+					}
+					else {
+						//Radiate.log.info("The project will not be saved");
+					}
+				}
+			}
+			
+			/**
+			 * Get projects by user that is logged in. 
+			 * Right now this is checking a remote WP server. We could have it point 
+			 * to a local directory of projects or workspace. 
+			 * */
+			protected function getProjectsByUser_clickHandler(event:MouseEvent):void {
+				checkForProjects(true);
+			}
+			
+			/**
+			 * Get public projects / examples. There are no public or shared examples yet. 
+			 * */
+			protected function getPublicProjects_clickHandler(event:MouseEvent):void {
+				checkForProjects(false);
+			}
+			
+			/**
+			 * Get a list of projects by user or that are shared by the public or are examples. 
+			 * Shared public projects and example projects should be in their own category. 
+			 * */
+			protected function checkForProjects(byUser:Boolean = false):void {
+				//projectsList.dataProvider = null;
+				projectsList.selectedItem = null;
+				
+				if (byUser) {
+					radiate.getProjectsByUser(radiate.userID);
+				}
+				else {
+					radiate.getProjects();
+				}
+				
+				if (checkingForProjectsLabel) {
+					checkingForProjectsLabel.text = "Checking for projects...";
+					checkingForProjectsLabel.visible = true;
+					checkingForProjectsLabel.includeInLayout = true;
+				}
+			}
+			
+			/**
+			 * Check for projects 
+			 * */
+			protected function removeProject_itemClickHandler(event:MenuEvent):void {
+				checkForProjects();
+			}
+			
+			/**
+			 * Undo last action
+			 * */
+			protected function undo_itemClickHandler(event:MenuEvent):void {
+				Radiate.undo();
+			}
+			
+			/**
+			 * Redo last action
+			 * */
+			protected function redo_itemClickHandler(event:MenuEvent):void {
+				Radiate.redo();
+			}
+			
+			/**
+			 * Check if connected to remote WP server and update checkbox
+			 * */
+			protected function isConnectedCheckbox_clickHandler(event:MouseEvent):void {
+				if (radiate.isUserConnected) {
+					isConnectedCheckbox.selected = radiate.isUserConnected;
+				}
+				
+				checkOnline();
+			}
+			
+			/**
+			 * Show project string for debugging purposes
+			 * */
+			protected function showProjectSource_itemClickHandler(event:MenuEvent):void {
+				var iProject:IProject = radiate.selectedProject;
+				
+				if (iProject) {
+					Radiate.log.info(iProject.toString());
+				}
+			}
+			
+			/**
+			 * Show document string for debugging purposes
+			 * */
+			protected function showDocumentSource_itemClickHandler(event:MenuEvent):void {
+				var iDocument:IDocument = radiate.selectedDocument;
+				
+				if (iDocument) {
+					var source:String = iDocument.marshall(DocumentMetaData.STRING_TYPE, true) as String;
+					Radiate.log.info(source);
+				}
+				
+			}
+			
+			/**
+			 * Handle if user icon is not available
+			 * */
+			protected function userIcon_securityErrorHandler(event:SecurityErrorEvent):void {
+				//trace("security error ");
+			}
+			
+			/**
+			 * Handle if user icon is not available
+			 * */
+			protected function userIcon_ioErrorHandler(event:IOErrorEvent):void {
+				//trace("ioerror ");
+				userIcon.source = null;
+				userIcon.source = radiate.defaultUserAvatarPath;
+			}
+			
+		]]>
+	</fx:Script>
+	
+	<fx:Declarations>
+		
+		<!--- show about popup -->
+		<handlers:EventHandler target="{logo}" eventName="click">
+			<popup:ShowPopupAnchor target="{aboutPopUp}" closeOnMouseOut="true" displayObjectExceptions="{[logo]}"/>
+		</handlers:EventHandler>
+
+		<!--- hide about popup -->
+		<handlers:EventHandler target="{popUpGroup}" eventName="mouseDownOutside">
+			<popup:HidePopupAnchor target="{aboutPopUp}" />
+		</handlers:EventHandler>
+		
+		<!--- show contact popup -->
+		<handlers:EventHandler targets="{[contactLabel,feedbackLabel]}" eventName="click" >
+			<fc:OpenPopUp id="openContactPopUp" 
+						  popUpType="{ContactWindow}" 
+						  modalDuration="100" 
+						  percentWidth="75"
+						  percentHeight="90"
+						  width="600"
+						  parent="{parentApplication}"/>
+		</handlers:EventHandler>
+		
+		<handlers:EventHandler targets="{[logoutLabel,logoutLabel2]}" eventName="click" >
+			<fc:OpenPopUp id="openLogoutPopUp" 
+						  popUpType="{LoginWindow}" 
+						  modalDuration="100" 
+						  percentWidth="75"
+						  percentHeight="90"
+						  width="600"
+						  parent="{parentApplication}"
+						  popUpOptions="{{currentState:LoginWindow.LOGOUT}}"
+						  close="logoutPopUp_closeHandler(event)"/>
+		</handlers:EventHandler>
+		
+		<handlers:EventHandler targets="{[newProjectButton,menuNewProject,newDocumentButton]}" eventNames="{['click','itemClick']}" >
+			<fc:OpenPopUp id="openNewProjectPopUp" 
+						  popUpType="{NewDocumentWindow}" 
+						  modalDuration="100" 
+						  percentWidth="75"
+						  percentHeight="90"
+						  width="600"
+						  parent="{parentApplication}"
+						  popUpOptions="{{currentState:NewDocumentWindow.PROJECT}}"
+						  close="createNewProjectLabel_clickHandler(event);"
+						  />
+		</handlers:EventHandler>
+		
+		<handlers:EventHandler target="{removeDocument}" eventName="itemClick" >
+			<fc:OpenPopUp id="openDeleteDocumentPopUp" 
+						  popUpType="{DeleteDocumentWindow}" 
+						  modalDuration="100" 
+						  percentWidth="75"
+						  percentHeight="90"
+						  width="600"
+						  parent="{parentApplication}"
+						  popUpOptions="{{currentState:DeleteDocumentWindow.DOCUMENT}}"
+						  />
+		</handlers:EventHandler>
+		
+		<handlers:EventHandler target="{logoPopUpGroup}" eventName="mouseDownOutside">
+			<popup:HidePopupAnchor target="{logoPopUp}" />
+		</handlers:EventHandler>
+		
+		<handlers:EventHandler target="{moreInfoLabel}" eventName="click">
+			<popup:HidePopupAnchor target="{aboutPopUp}" />
+			<navigation:OpenURL URL="http://www.radii8.com/blog/?page_id=2" window="_blank" />
+		</handlers:EventHandler>
+				
+		<handlers:EventHandler targets="{[deleteProjectIcon,removeProject]}" eventNames="{['click','itemClick']}" >
+			<fc:OpenPopUp id="openDeleteProjectPopUp" 
+						  popUpType="{DeleteDocumentWindow}" 
+						  modalDuration="100" 
+						  percentWidth="75"
+						  percentHeight="90"
+						  width="600"
+						  parent="{parentApplication}"
+						  popUpOptions="{{currentState:DeleteDocumentWindow.PROJECT, documentData:projectsList.selectedItem}}"
+						  close="checkForProjects();"
+						  />
+		</handlers:EventHandler>
+		
+		<handlers:EventHandler eventName="itemClick" target="{saveDocumentAs}">
+			<fc:OpenPopUp id="openExportPopUp" 
+						  popUpType="{ExportDocumentWindow}" 
+						  modalDuration="150" 
+						  percentWidth="75"
+						  percentHeight="90"
+						  width="800"
+						  parent="{parentApplication}"/>
+		</handlers:EventHandler>
+		
+		<handlers:EventHandler eventName="itemClick" target="{importMenuItem}">
+			<fc:OpenPopUp id="openImportPopUp" 
+						  popUpType="{ImportWindow}" 
+						  modalDuration="150" 
+						  percentWidth="75"
+						  percentHeight="90"
+						  width="600"
+						  parent="{parentApplication}"/>
+		</handlers:EventHandler>
+		
+		
+		<handlers:EventHandler eventName="itemClick" target="{printItem}">
+			<fc:OpenPopUp id="openPrintPopUp" 
+						  popUpType="{PrintWindow}" 
+						  modalDuration="150" 
+						  percentWidth="75"
+						  percentHeight="90"
+						  width="600"
+						  parent="{parentApplication}"/>
+		</handlers:EventHandler>
+		
+		<handlers:EventHandler eventName="click" targets="{[loginLabel,loginLabel2]}">
+			<fc:OpenPopUp id="openLoginPopUp" 
+						  popUpType="{LoginWindow}" 
+						  modalDuration="150" 
+						  percentWidth="75"
+						  percentHeight="90"
+						  width="600"
+						  parent="{parentApplication}"
+						  popUpOptions="{{currentState:LoginWindow.LOGIN}}"
+						  close="loginPopUp_closeHandler(event)"/>
+		</handlers:EventHandler>
+		
+		<handlers:EventHandler eventName="click" targets="{[registerLabel,registerLabel2]}">
+			<fc:OpenPopUp popUpType="{LoginWindow}" 
+						  modalDuration="150" 
+						  percentWidth="75"
+						  percentHeight="90"
+						  width="600"
+						  parent="{parentApplication}"
+						  popUpOptions="{{currentState:LoginWindow.REGISTRATION_WITH_SITE}}"
+						  close="loginPopUp_closeHandler(event)"/>
+		</handlers:EventHandler>
+		
+		<model:MenuItem id="rootMenu">
+			<model:MenuItem label="File">
+				<model:MenuItem id="menuNewDocument" label="New Document" itemClick="{radiate.createNewDocument()}"/>
+				<model:MenuItem id="menuNewProject" label="New Project" />
+				<model:MenuItem type="separator"/>
+				<model:MenuItem label="Open Project" itemClick="openProject_itemClickHandler(event)"/>
+				<model:MenuItem label="Open Document" itemClick="openDocument_itemClickHandler(event)"/>
+				<model:MenuItem type="separator"/>
+				<model:MenuItem label="Close Project" itemClick="{radiate.closeProject(radiate.selectedProject)}"/>
+				<model:MenuItem label="Close Document" itemClick="{radiate.closeDocument(radiate.selectedDocument)}"/>
+				<model:MenuItem type="separator"/>
+				<model:MenuItem label="Save Project" itemClick="{radiate.saveProject(radiate.selectedProject)}"/>
+				<model:MenuItem label="Save Document" itemClick="{radiate.saveDocument(radiate.selectedDocument)}"/>
+				<model:MenuItem label="Save All Documents" itemClick="{radiate.saveAllDocuments()}"/>
+				<model:MenuItem id="saveDocumentAs" label="Save Document As..." />
+				<model:MenuItem type="separator"/>
+				<model:MenuItem id="removeDocument" label="Remove Document" />
+				<model:MenuItem id="removeProject" label="Remove Project" itemClick="removeProject_itemClickHandler(event)"/>
+				<model:MenuItem type="separator"/>
+				<model:MenuItem id="printItem" label="Print" />
+				<model:MenuItem type="separator"/>
+				<model:MenuItem id="importMenuItem" label="Import..." />
+				<model:MenuItem type="separator"/>
+				<model:MenuItem id="workOfflineMenuItem" label="Work Offline" type="check" itemClick="workOfflineMenuItem_itemClickHandler(event)"/>
+			</model:MenuItem>
+			<model:MenuItem label="Edit" >
+				<model:MenuItem id="undo" label="Undo" itemClick="undo_itemClickHandler(event)" 
+								enabled="{Radiate.canUndo}"/>
+				<model:MenuItem id="redo" label="Redo" itemClick="redo_itemClickHandler(event)"
+								enabled="{Radiate.canRedo}"/>
+				<model:MenuItem type="separator"/>
+				<model:MenuItem id="cut" label="Cut" enabled="false"/>
+				<model:MenuItem id="copy" label="Copy" enabled="false"/>
+				<model:MenuItem id="paste" label="Paste" name="paste" enabled="false"/>
+			</model:MenuItem>
+			<model:MenuItem label="Commands" >
+				<model:MenuItem id="showProjectSource" label="Show Project Source" itemClick="showProjectSource_itemClickHandler(event)" />
+				<model:MenuItem id="showDocumentSource" label="Show Document Source" itemClick="showDocumentSource_itemClickHandler(event)"/>
+			</model:MenuItem>
+<!--			<model:MenuItem label="Edit" menuShow="editHandler(event)">
+				<model:MenuItem id="cut" label="Cut" itemClick="cutHandler(event)"/>
+				<model:MenuItem id="copy" label="Copy" itemClick="copyHandler(event)"/>
+				<model:MenuItem id="paste" label="Paste" enabled="false" name="paste"/>
+				<model:MenuItem type="separator"/>
+				<model:MenuItem label="Other menu item"/>
+			</model:MenuItem>-->
+			<model:MenuItem id="windowMenu" label="Window">
+				<!--<model:MenuItem id="d1" label="Document 1" group="docs" toggled="false" type="radio"/>
+				<model:MenuItem label="Document 2" group="docs" toggled="true" type="radio"/>
+				<model:MenuItem id="d3" label="Document 3" group="docs" name="d3" toggled="false"
+								type="radio"/>
+				<model:MenuItem label="Document 4" group="docs" toggled="false" type="radio"/>-->
+			</model:MenuItem>
+		</model:MenuItem>
+		
+		<mx:ArrayCollection id="projectsCollection" />
+		<mx:ArrayCollection id="documentsCollection" />
+		<mx:ArrayCollection id="examplesCollection" />
+		<mx:ArrayCollection id="templatesCollection" />
+		
+		<s:Parallel id="fadeInLogo">
+			<s:Rotate3D angleZFrom="0" 
+						angleZTo="90" 
+						autoCenterProjection="true" 
+						autoCenterTransform="true" 
+						duration="250"
+						target="{logo3}" />
+			<s:Fade alphaFrom="0" alphaTo="1" target="{logo3}" duration="250" />
+		</s:Parallel>
+		
+		<core:CallMethod id="checkOnlineEffect" 
+						 repeatCount="0" 
+						 method="checkOnline" 
+						 repeatDelay="60000"/>
+		
+		<!--
+		Enable CMD click on a display object and get information in the console about it 
+		Should be turned off in release build. 
+		-->
+		<utils:MiniInspector showDisplayObjectOutlines="true"
+							 showRuler="false"
+							 showStyleInheritanceInformation="false"
+							 showAllStyleDeclarations="false"
+							 showColorUnderMouse="false"
+							 />
+	</fx:Declarations>
+	
+	<s:states>
+		<s:State name="home"/>
+		<s:State name="login"/>
+		<s:State name="homeLoggedIn" basedOn="home"/>
+		<s:State name="homeLoggedOut" basedOn="home"/>
+		<s:State name="design"/>
+	</s:states>
+	
+	
+	<s:Image id="backgroundLogoImage" 
+			 y="0" x="-200" 
+			 width="80%" height="80%" 
+			 source="{Radii8LibraryAssets.logo3}"
+			 alpha=".05"
+			 includeIn="home"/>
+	
+	<!-- HOME SCREEN MENU -->
+	<s:RectangularDropShadow height="380" width="640" 
+							 horizontalCenter="0" verticalCenter="-20"
+							 includeIn="home"
+							 blurX="6" blurY="6"
+							 distance="0"/>
+	
+	<!-- HOME SCREEN MENU -->
+	<s:BorderContainer height="380" width="640" 
+					   horizontalCenter="0" verticalCenter="-20" 
+					   includeIn="home">
+		<s:BorderContainer left="0" x="81" top="0" y="82" height="120" 
+						   right="0" borderVisible="false" backgroundColor="#CCCCCC"/>
+		<s:Image id="logo3" x="0" y="0" width="128" height="128" source="{Radii8LibraryAssets.logo3}"
+				 rollOver="{fadeInLogo.play()}" rollOut="{fadeInLogo.play(null, true)}"
+				 alpha="0"/>
+		<s:BitmapImage id="logo4" x="32" y="32" source="{Radii8LibraryAssets.logo64}"/>
+		<s:Label x="130" y="44" text="Radiate" fontSize="45">
+			<s:filters> 
+				<filters:BorderStrokeFilter color="#EEEEEE" weight="1"/>
+				<filters:BorderStrokeFilter color="#DDDDDD" weight="1"/>
+				<filters:BorderStrokeFilter color="#CFCFCF" weight="1"/>
+			</s:filters>
+		</s:Label>
+		
+		<s:HGroup left="20" y="170" width="100%" right="20">
+			
+			<s:VGroup width="100%" gap="0">
+				
+				<s:Spacer height="8"/>
+				<renderers:EditableDocumentRenderer id="newProjectButton" label="New Project" width="100%"
+													useHandCursor="true" buttonMode="true"
+													autoDrawBackground="false"/>
+				<renderers:EditableDocumentRenderer id="newDocumentButton" label="New Document" width="100%"
+													useHandCursor="true" buttonMode="true"
+													autoDrawBackground="false"/>
+				<renderers:EditableDocumentRenderer label="Get My Projects" width="100%"
+													useHandCursor="true" buttonMode="true"
+													click="getProjectsByUser_clickHandler(event)"/>
+				<renderers:EditableDocumentRenderer label="Get All Projects" width="100%"
+													useHandCursor="true" buttonMode="true"
+													click="getPublicProjects_clickHandler(event)"/>
+			</s:VGroup>
+		
+			<s:VGroup width="100%">
+				<s:Label text="Projects" fontWeight="bold"/>
+				<s:Label id="checkingForProjectsLabel" 
+						 text="Checking for projects..." 
+						 fontStyle="italic"
+						 color="#989898"
+						 visible="false"
+						 includeInLayout="false"/>
+				<s:List id="projectsList" 
+						width="100%"
+						maxHeight="110"
+						borderVisible="false"
+						dataProvider="{projectsCollection}"
+						labelField="name"
+						change="projectsList_changeHandler(event)"
+						itemRenderer="com.flexcapacitor.views.renderers.EditableProjectRenderer"
+						/>
+				
+				<s:Label id="projectLastSavedLabel" text="" 
+						 visible="false" includeInLayout="false"/>
+			</s:VGroup>
+			
+			<s:VGroup width="100%">
+				<s:Label text="Examples" fontWeight="bold"/>
+				<s:List width="100%" borderVisible="false"
+						dataProvider="{examplesCollection}"
+						labelField="name"
+						maxHeight="110"
+						/>
+			</s:VGroup>
+			
+			<s:VGroup width="100%" includeInLayout="false" visible="false">
+				<s:Label text="Templates" fontWeight="bold"/>
+				<s:List width="100%" 
+						dataProvider="{templatesCollection}"
+						/>
+			</s:VGroup>
+			
+		</s:HGroup>
+		
+		
+		<s:Label id="statusLabel" bottom="60" left="20" textAlign="left"/>
+		
+		<s:HGroup bottom="20" left="20" right="20"
+				  width="100%"
+				  verticalAlign="middle">
+			<s:Label id="logoutLabel2" 
+					 text="Logout" 
+					 useHandCursor="true"
+					 buttonMode="true"
+					 verticalAlign="middle" 
+					 textAlign="center"
+					 styleName="loginLabel"
+					 visible="{radiate.isUserLoggedIn}"
+					 includeInLayout="{radiate.isUserLoggedIn}"
+					 />
+			
+			<s:Label id="loginLabel2" 
+					 text="Login" 
+					 useHandCursor="true"
+					 buttonMode="true"
+					 verticalAlign="middle" 
+					 textAlign="center"
+					 styleName="loginLabel"
+					 visible="{!radiate.isUserLoggedIn}"
+					 includeInLayout="{!radiate.isUserLoggedIn}"
+					 />
+			
+			<c:VerticalLine visible="{!radiate.isUserLoggedIn}"
+							includeInLayout="{!radiate.isUserLoggedIn}"/>
+			
+			<s:Label id="registerLabel2" 
+					 text="Register" 
+					 useHandCursor="true"
+					 buttonMode="true"
+					 verticalAlign="middle" 
+					 textAlign="center"
+					 styleName="loginLabel"
+					 visible="{!radiate.isUserLoggedIn}"
+					 includeInLayout="{!radiate.isUserLoggedIn}"
+					 />
+			
+			<s:Spacer width="100%" />
+			
+			<s:HGroup id="_visibleButtonGroup" 
+					 mouseEnabledWhereTransparent="true"
+					 right="0" 
+					 height="100%" 
+					 enabled="{projectsList.selectedItem!=null}"
+					 >
+				
+				<renderers:ItemRendererButton iconSource="{Radii8LibraryAssets.openFolder}"
+											  label="Open Project"
+											  click="openProject()"
+											  />
+				
+				<renderers:ItemRendererButton id="deleteProjectIcon" 
+											  iconSource="{Radii8LibraryAssets.trashCan}"
+											  label="Trash"
+											  />
+				
+			</s:HGroup>
+		</s:HGroup>
+		
+	</s:BorderContainer>
+	
+	<s:Label id="productionLabel" text="Not ready for production work" 
+			 typographicCase="lowercaseToSmallCaps" bottom="60" horizontalCenter="0" 
+			 textAlign="left"
+			 color="#888888"
+			 includeIn="home"
+			 />
+	
+	<local:Remote id="remote" width="100%" height="100%" top="38" includeIn="design" />
+	
+	<s:PopUpAnchor id="logoPopUp" width="100" height="100" top="34" left="10" >
+		<s:Group id="logoPopUpGroup" 
+				 mouseEnabledWhereTransparent="true" 
+				 width="100" height="100" 
+				 >
+			<s:filters>
+				<s:DropShadowFilter distance="3" strength=".75"/>
+			</s:filters>
+			
+			
+			<s:Rect width="100%" height="100%" radiusX="8" radiusY="8">
+				<s:fill>
+					<s:SolidColor color="#ffffff" alpha=".9" />
+				</s:fill>
+				<s:stroke>
+					<s:SolidColorStroke color="#000000" pixelHinting="true" weight="0" />
+				</s:stroke>
+			</s:Rect>
+			
+			<s:BitmapImage id="logo2" 
+						   source="assets/images/logo2.png" 
+						   width="68" height="69"
+						   verticalCenter="0"
+						   horizontalCenter="0"
+						   >
+			</s:BitmapImage>
+		</s:Group>
+	</s:PopUpAnchor>
+	
+	<!-- TOP MENU BAR --> 
+	<s:BorderContainer backgroundColor="#3d3d3d"
+					   borderVisible="false"
+					   width="100%" height="28" 
+					   top="0"
+					   color="#DFDFDF"
+					   >
+		
+		<s:layout>
+			<s:HorizontalLayout verticalAlign="middle" 
+								paddingLeft="8" 
+								paddingRight="8"
+								gap="8"/>
+		</s:layout>
+		
+		<s:Image id="logo" 
+					   source="{Radii8LibraryAssets.logo}" 
+					   width="20" height="20"
+					   verticalAlign="middle" 
+					   horizontalAlign="center"
+					   includeInLayout="true"
+					   useHandCursor="true"
+					   buttonMode="true"
+					   >
+		</s:Image>
+		
+		<s:Spacer width="-6"/>
+		
+		<s:Label text="RADII8" 
+				 fontSize="12" 
+				 fontWeight="bold"
+				 color="#ffffff"
+				 paddingTop="2"
+				 top="10"
+				 left="10"
+				 buttonMode="true"
+				 useHandCursor="true"
+				 click="logo_clickHandler(event)"/>
+		<s:Label text="alpha" 
+				 fontSize="8" 
+				 fontWeight="bold"
+				 color="#ffffff"
+				 paddingBottom="6"
+				 top="10"
+				 left="10"/>
+		
+		<c:VerticalLine includeIn="design"/>
+		
+		<mx:MenuBar id="mainMenuBar" 
+					dataProvider="{rootMenu}"
+					labelField="label"
+					height="100%"
+					useHandCursor="true"
+					buttonMode="true"
+					showRoot="false"
+					includeIn="design"
+					menuShow="menuItemEventHandler(event)" 
+					menuHide="menuItemEventHandler(event)"
+					itemClick="menuItemEventHandler(event)" 
+					itemRollOut="menuItemEventHandler(event)"
+					itemRollOver="menuItemEventHandler(event)" 
+					change="menuItemEventHandler(event)"
+					>
+		</mx:MenuBar>
+		<!--
+	    <mx:PopUpMenuButton id="p1"
+							showRoot="true"
+							useHandCursor="true"
+							buttonMode="true"
+							dataProvider="{popUpMenuDataProvider}" 
+							openAlways="true"
+							rollOver="p1.open()"
+							color="#EEEEEE"
+							paddingBottom="1"
+							skin="com.flexcapacitor.skins.PopUpButtonSkin"
+							visible="false"
+							includeInLayout="false"
+							/>-->
+		
+		<s:Spacer width="100%"/>
+		
+		<!--<s:CheckBox id="loadCompatible" label="Compatible" selected="false" visible="false"/>
+		<s:CheckBox id="trustContent" label="Trust Content" selected="true" visible="false"/>
+		<s:TextInput id="appURL" width="90%" prompt="Enter a URL to a SWF" text="" visible="false" enter="textinput1_enterHandler(event)"/>
+		<s:Label id="loadLabel" 
+				 text="Load" 
+				 useHandCursor="true"
+				 buttonMode="true"
+				 verticalAlign="middle" 
+				 textAlign="center"
+				 click="loadProject_clickHandler(event)" 
+				 visible="false"/>
+		<s:Label id="resetLabel" 
+				 text="Restore" 
+				 verticalAlign="middle" 
+				 textAlign="center"
+				 visible="false"
+				 includeInLayout="false"
+				 click="loadNewProject_clickHandler(event)" />
+		<s:Label id="closeLabel" 
+				 text="Close" 
+				 verticalAlign="middle" 
+				 textAlign="center"
+				 visible="false"
+				 includeInLayout="false"
+				 click="closeLabel_clickHandler(event)" />-->
+		
+		<s:Label id="loginLabel" 
+				 text="Login" 
+				 useHandCursor="true"
+				 buttonMode="true"
+				 verticalAlign="middle" 
+				 textAlign="center"
+				 color="#DDDDDD"
+				 visible="{!radiate.isUserLoggedIn}"
+				 includeInLayout="{!radiate.isUserLoggedIn}"
+				 />
+		
+		<s:Label text="|" 
+				 verticalAlign="middle" 
+				 textAlign="center"
+				 color="#DDDDDD"
+				 visible="{!radiate.isUserLoggedIn}"
+				 includeInLayout="{!radiate.isUserLoggedIn}"
+				 />
+		
+		
+		<s:Label id="registerLabel" 
+				 text="Register" 
+				 useHandCursor="true"
+				 buttonMode="true"
+				 verticalAlign="middle" 
+				 textAlign="center"
+				 color="#DDDDDD"
+				 visible="{!radiate.isUserLoggedIn}"
+				 includeInLayout="{!radiate.isUserLoggedIn}"
+				 />
+		
+		<c:VerticalLine visible="{!radiate.isUserLoggedIn}"
+						includeInLayout="{!radiate.isUserLoggedIn}"
+						/>
+		
+		<s:Label id="userLabel" 
+				 text="Hello, {radiate.userDisplayName}" 
+				 useHandCursor="true"
+				 buttonMode="true"
+				 verticalAlign="middle" 
+				 textAlign="center"
+				 color="#DDDDDD"
+				 visible="{radiate.isUserLoggedIn}"
+				 includeInLayout="{radiate.isUserLoggedIn}"
+				 />
+		
+		<s:Image id="userIcon" 
+				 width="22" height="22" 
+				 top="3"
+				 source="{radiate.userAvatar}"
+				 showErrorSkin="false"
+				 smooth="true"
+				 clearOnLoad="false"
+				 securityError="userIcon_securityErrorHandler(event)"
+				 ioError="userIcon_ioErrorHandler(event)"
+				 />
+		
+		<c:VerticalLine 
+				 visible="{radiate.isUserLoggedIn}"
+				 includeInLayout="{radiate.isUserLoggedIn}"/>
+		
+		<s:Label id="logoutLabel" 
+				 text="Logout" 
+				 useHandCursor="true"
+				 buttonMode="true"
+				 verticalAlign="middle" 
+				 textAlign="center"
+				 color="#DDDDDD"
+				 visible="{radiate.isUserLoggedIn}"
+				 includeInLayout="{radiate.isUserLoggedIn}"
+				 />
+		
+		<c:VerticalLine />
+		
+		
+		<s:ToggleButton id="isConnectedCheckbox" 
+					selected="{radiate.isUserConnected}"
+					skinClass="com.flexcapacitor.views.skins.OnlineToggleButton"
+					useHandCursor="true"
+					buttonMode="true"
+					enabled="true"
+					toolTip="Indicates if Radii8 is reachable."
+					click="isConnectedCheckbox_clickHandler(event)"
+					/>
+			
+		
+		<!---http://0.gravatar.com/avatar/ad516503a11cd5ca435acc9bb6523536?s=96 // assets/avatar/gravar-default-96.png -->
+	</s:BorderContainer>
+	
+	<s:PopUpAnchor id="aboutPopUp" width="250" height="250" top="30" left="10" >
+		<s:Group id="popUpGroup" 
+				 mouseEnabledWhereTransparent="true" 
+				 width="250" height="100%" 
+				 >
+			
+			<s:Rect width="100%" height="100%" radiusX="8" radiusY="8">
+				<s:fill>
+					<s:SolidColor color="#ffffff" alpha=".9" />
+				</s:fill>
+				<s:stroke>
+					<s:SolidColorStroke color="#000000" pixelHinting="true" weight="2" />
+				</s:stroke>
+			</s:Rect>
+			
+			<s:VGroup paddingLeft="12" paddingRight="12" paddingTop="12" paddingBottom="12"
+					  gap="8">
+				<s:HGroup verticalAlign="middle">
+					<s:Label text="Build Date:" minWidth="100" /> 
+					<s:Label text="{radiate.buildDate}" /> 
+				</s:HGroup>
+				<s:HGroup verticalAlign="middle">
+					<s:Label text="Build Time:" minWidth="100" /> 
+					<s:Label text="{radiate.buildTime}" /> 
+				</s:HGroup>
+				<s:HGroup verticalAlign="middle">
+					<s:Label text="Build Number:" width="100" />
+					<s:Label text="{radiate.buildNumber}" />
+					<s:Label text="" />
+				</s:HGroup>
+				<s:HGroup verticalAlign="middle">
+					<s:Label id="moreInfoLabel" text="More info" color="blue" fontWeight="bold"
+							 useHandCursor="true" buttonMode="true"/>
+				</s:HGroup>
+				<s:HGroup verticalAlign="middle">
+					<s:Label id="feedbackLabel" text="Feedback" color="blue" fontWeight="bold"
+							 useHandCursor="true" buttonMode="true"/>
+				</s:HGroup>
+			</s:VGroup>
+			<s:filters>
+				<s:DropShadowFilter distance="6" blurX="3" blurY="3" strength=".35"/>
+			</s:filters>
+		</s:Group>
+	</s:PopUpAnchor>
+	
+	
+	<s:Rect width="100%" height="28" bottom="0">
+		<s:fill>
+			<s:SolidColor color="#3d3d3d"/>
+		</s:fill>
+	</s:Rect>
+	
+
+	
+	<s:HGroup verticalAlign="middle"
+			  right="10" 
+			  bottom="6"
+			  left="10"
+			  color="#888888"
+			  >
+		<c:LabelButton id="contactLabel" 
+				 bottom="6" 
+				 left="10" 
+				 text="Contact" 
+				 color="#888888" 
+				 typographicCase="capsToSmallCaps"
+				 />
+		<s:Spacer width="1"/>
+		<c:VerticalLine height="16" />
+		<s:Spacer width="1"/>
+		<s:Label text="Build Date:"  />
+		<s:Label id="buildDate" text="{radiate.buildDate}" />
+		<s:Label text="Build Time:" /> 
+		<s:Label id="buildTime" text="{radiate.buildTime}" />
+		<s:Label text="Build Number:" />
+		<s:Label id="buildNumber" text="{radiate.buildNumber}" />
+			
+		<s:Spacer width="100%"/>
+		<s:Label text="Last saved:"  includeInLayout="{radiate.lastSaveDate!=null}" visible="{radiate.lastSaveDate!=null}"/>
+		<s:Label id="lastSavedDate" text="{radiate.lastSaveDate}" includeInLayout="{radiate.lastSaveDate!=null}" visible="{radiate.lastSaveDate!=null}"/>
+		<c:VerticalLine height="100%" includeInLayout="{radiate.lastSaveDate!=null}" visible="{radiate.lastSaveDate!=null}"/>
+
+		<s:Label right="10" 
+				 bottom="6"
+				 textAlign="right" 
+				 text=""
+				 />
+	</s:HGroup>
+</s:Application>

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/Remote.mxml
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/Remote.mxml b/Radii8Designer/src/Remote.mxml
new file mode 100644
index 0000000..90bb895
--- /dev/null
+++ b/Radii8Designer/src/Remote.mxml
@@ -0,0 +1,683 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
+		 xmlns:s="library://ns.adobe.com/flex/spark" 
+		 xmlns:mx="library://ns.adobe.com/flex/mx" 
+		 xmlns:controls="com.flexcapacitor.controls.*"
+		 xmlns:components="com.flexcapacitor.components.*"
+		 xmlns:supportClasses="spark.components.supportClasses.*" 
+		 xmlns:handlers="com.flexcapacitor.handlers.*" 
+		 xmlns:core="com.flexcapacitor.effects.core.*"
+		 xmlns:flexiframe="com.google.code.flexiframe.*" 
+		 xmlns:views="com.flexcapacitor.views.*"
+		 xmlns:panels="com.flexcapacitor.views.panels.*"
+		 xmlns:fc="com.flexcapacitor.effects.popup.*"
+		 xmlns:ns1="*" 
+		 
+		 width="400" 
+		 height="100%" 
+		 creationComplete="creationCompleteHandler(event)" 
+		 >
+		
+	<fx:Style>
+		@namespace s "library://ns.adobe.com/flex/spark";
+		@namespace mx "library://ns.adobe.com/flex/mx";
+		@namespace controls "com.flexcapacitor.controls.*";
+		@namespace inspectors "com.flexcapacitor.inspectors.*";
+		@namespace ns1 "*";
+		@namespace supportClasses "spark.components.supportClasses.*";
+		
+		.formItem {
+			/* backgroundColor:#e6e6e6; */
+			backgroundColor:#a2a2a2;
+			backgroundAlpha:.25;
+			paddingLeft:6;
+			paddingTop:5;
+			paddingBottom:3;
+			fontSize:10;
+			fontWeight:bold;
+			textAlpha:.75;
+			typographicCase:uppercase;
+		}
+	</fx:Style>
+	
+	<fx:Script>
+		<![CDATA[
+			import com.flexcapacitor.controller.Radiate;
+			import com.flexcapacitor.events.RadiateEvent;
+			import com.flexcapacitor.model.IDocument;
+			import com.flexcapacitor.utils.ClassUtils;
+			import com.flexcapacitor.views.IInspector;
+			import com.flexcapacitor.views.windows.ContactWindow;
+			import com.flexcapacitor.views.windows.SaveBeforeCloseWindow;
+			
+			import mx.core.UIComponent;
+			import mx.events.FlexEvent;
+			import mx.events.IndexChangedEvent;
+			
+			import spark.events.IndexChangeEvent;
+			
+			
+			[Bindable]
+			private var radiate:Radiate;
+			
+			protected function panelsLabelFunction(item:Object):String {
+				var name:String = item is Label ? Label(item).text : " • ";
+				return name;
+			}
+			
+			protected function list1_changeHandler(event:IndexChangeEvent):void {
+				/*var point:Point = panels.layout.getScrollPositionDeltaToElement(event.newIndex +1);
+				
+				// if going up get the selected item
+				if (point && point.y<0) {
+					point = panels.layout.getScrollPositionDeltaToElement(event.newIndex);
+					scrollMotionPath.valueBy = point.y;
+					scrollPanelsAnimation.play();
+				}
+				else if (point) {
+					//panels.layout.verticalScrollPosition = panels.layout.verticalScrollPosition + point.y;
+					scrollMotionPath.valueBy = point.y;
+					scrollPanelsAnimation.play();
+				}
+				
+				event.preventDefault();*/
+			}
+			
+			protected function closeDocumentIcon_clickHandler():void {
+				radiate.closeVisibleDocument();
+			}
+			
+			protected function navigatorContent_changeHandler(event:IndexChangedEvent):void {
+				var index:int = event.newIndex;
+				var document:IDocument;
+				
+				document = radiate.getDocumentAtIndex(event.newIndex);
+				radiate.setProject(document.project);
+				radiate.setDocument(document, true);
+				return;
+				
+				/*
+				if (index==1) {
+					//Radiate.desetDocuments(true);
+					radiate.isPreviewVisible = true;
+				}
+				else {
+					document = NavigatorContent(documentsTagNavigator.getItemAt(0)).getElementAt(0) as DocumentContainer;
+					
+					if (document) {
+						Radiate.setDocuments(document.targetApplication);
+						radiate.isPreviewVisible = false;
+					}
+				}
+				*/
+			}
+			
+			protected function creationCompleteHandler(event:FlexEvent):void {
+				radiate = Radiate.getInstance();
+				
+				radiate.documentsTabNavigator = documentsTagNavigator;
+				radiate.addEventListener(RadiateEvent.TARGET_CHANGE, targetChange, false, 0, true);
+			}
+			
+			private var previewCreated:Boolean;
+			private var initialDocument:Boolean;
+
+
+			private var navigatorContent:NavigatorContent;
+			
+			
+			protected function documentsTagNavigator_clickHandler(event:MouseEvent):void {
+				/*var target:Object = radiate.target;
+				var navigatorContent:INavigatorContent = documentsTagNavigator.selectedChild;
+				
+				if (target && "setFocus" in target) {
+					target["setFocus"]();
+				}
+				
+				if (navigatorContent is DisplayObject) {
+					var filter:BorderStrokeFilter = new BorderStrokeFilter();
+					navigatorContent.filters = [filter];
+				}*/
+			}
+			
+			/**
+			 * Activate selected inspector and deactivate hidden inspectors
+			 * */
+			public function activateInspector(viewstack:ViewStack, selectedNavigator:NavigatorContent):void {
+				var navigatorItem:NavigatorContent;
+				var selectedNavigatorContent:IInspector;
+				var navigatorInspector:IInspector;
+				
+				if (selectedNavigator && selectedNavigator.numElements>0) {
+					selectedNavigatorContent = selectedNavigator.getElementAt(0) as IInspector;
+				}
+				
+				var length:int = viewstack.numElements;
+				
+				// deactivate hidden inspectors
+				for (var i:int;i<length;i++) {
+					navigatorItem = viewstack.getElementAt(i) as NavigatorContent;
+					
+					if (navigatorItem && navigatorItem.numElements>0) {
+						navigatorInspector = navigatorItem.getElementAt(0) as IInspector;
+						
+						if (navigatorInspector) {
+							navigatorInspector.deactivate();
+						}
+					}
+				}
+				
+				// activate the current inspector
+				if (selectedNavigatorContent) {
+					UIComponent(selectedNavigatorContent).validateNow();// make sure everythings created
+					selectedNavigatorContent.activate();
+				}
+			}
+
+			/**
+			 * 
+			 * This error occured on switching from design view to the home screen
+			TypeError: Error #1009: Cannot access a property or method of a null object reference.
+				at mx.containers::TabNavigator/keyDownHandler()[E:\dev\4.y\frameworks\projects\mx\src\mx\containers\TabNavigator.as:895]
+				 * 
+			    override protected function keyDownHandler(event:KeyboardEvent):void
+			    {
+			        if (focusManager.getFocus() == this) // error here line 895
+			        {
+			            // Redispatch the event from the TabBar so that it can handle it.
+			            tabBar.dispatchEvent(event);
+			        }
+			    }
+
+			*/
+			
+			protected function firstViewStack_changeHandler(event:IndexChangedEvent):void {
+				activateInspector(firstViewStack, event.relatedObject as NavigatorContent);
+			}
+			
+			protected function secondViewStack_changeHandler(event:IndexChangedEvent):void {
+				activateInspector(secondViewStack, event.relatedObject as NavigatorContent);
+			}
+			
+			protected function thirdViewStack_changeHandler(event:IndexChangedEvent):void {				
+				activateInspector(thirdViewStack, event.relatedObject as NavigatorContent);
+			}
+			
+			protected function forthViewStack_changeHandler(event:IndexChangedEvent):void {
+				activateInspector(forthViewStack, event.relatedObject as NavigatorContent);
+			}
+			
+			protected function firstViewStack_creationCompleteHandler(event:FlexEvent):void {
+				activateInspector(firstViewStack, firstViewStack.selectedChild as NavigatorContent);
+			}
+			
+			protected function secondViewStack_creationCompleteHandler(event:FlexEvent):void {
+				activateInspector(secondViewStack, secondViewStack.selectedChild as NavigatorContent);
+			}
+			
+			protected function thirdViewStack_creationCompleteHandler(event:FlexEvent):void {
+				activateInspector(thirdViewStack, thirdViewStack.selectedChild as NavigatorContent);
+			}
+			
+			protected function forthViewStack_creationCompleteHandler(event:FlexEvent):void {
+				activateInspector(forthViewStack, forthViewStack.selectedChild as NavigatorContent);
+			}
+			
+			protected function targetChange(event:RadiateEvent):void {
+				var targetNameValue:String = ClassUtils.getClassNameOrID(event.selectedItem);
+				
+				if (targetNameValue) {
+					targetName = targetNameValue;
+				}
+				else {
+					targetName = null;
+				}
+			}
+			
+			/**
+			 * Name or class name of target
+			 * */
+			[Bindable]
+			public var targetName:String;
+		]]>
+	</fx:Script>
+	
+	
+	<fx:Declarations>
+		
+		<!--<s:Animate id="scrollPanelsAnimation" target="{panels.layout}" >
+			<s:SimpleMotionPath id="scrollMotionPath" property="verticalScrollPosition" />
+		</s:Animate>-->
+		
+		<!-- FADE IN APPLICATION -->
+		<!--<s:Sequence id="fadeIn">
+			
+			<s:SetAction target="{radiateScroller}" property="alpha" value="0"/>
+			
+			<s:Fade target="{applicationGroup}" alphaFrom="0" alphaTo="1" duration="0"/>
+			
+			<s:SetAction target="{radiateScroller}" property="alpha" value="0"/>
+			
+			<s:Animate target="{applicationGroup}" startDelay="500" >
+				<s:SimpleMotionPath valueFrom="0" valueTo="270" property="left" />
+			</s:Animate>
+			
+			<s:SetAction target="{radiateScroller}" property="alpha" value="1"/>
+			
+			<s:Animate target="{radiateScroller.viewport}" duration="750">
+				<s:SimpleMotionPath valueFrom="0" valueTo="1" property="alpha"/>
+				<s:SimpleMotionPath valueFrom="{radiateScroller.viewport.contentHeight}" 
+									valueTo="0" property="verticalScrollPosition" />
+			</s:Animate>
+			
+		</s:Sequence>-->
+		
+		<!--<handlers:EventHandler eventName="creationComplete" target="{this}">
+			<core:PlayEffect effect="{fadeIn}"/>
+		</handlers:EventHandler>-->
+		
+		
+		<!--- show contact popup -->
+		<handlers:EventHandler target="{closeDocument}" eventName="click" >
+			<fc:OpenPopUp id="openSaveBeforeClosePopUp" 
+						  popUpType="{SaveBeforeCloseWindow}" 
+						  modalDuration="100" 
+						  percentWidth="75"
+						  percentHeight="90"
+						  width="600"
+						  parent="{parentApplication}"/>
+		</handlers:EventHandler>
+	</fx:Declarations>
+	
+	
+	<s:Group width="100%" height="100%" bottom="35" left="5" right="5">
+		
+		<s:HGroup id="toolBarGroup" width="100%" height="26" >
+			<s:BitmapImage source="{Radii8LibraryToolAssets.DragStripIcon}"/>
+			<views:SelectedToolToolBar />
+			<s:BitmapImage source="{Radii8LibraryToolAssets.DragStripIcon}"/>
+			<views:HistoryToolBar />
+			<s:Spacer width="100%"/>
+			<views:SizesInspector showRestoreSize="true" height="100%"/>
+			<views:ZoomInspector showActualSize="false" height="100%"/>
+		</s:HGroup>
+	
+		<mx:HDividedBox width="100%" height="100%" 
+						top="32">
+				
+			<!-- EXAMPLE RADIATE CONTAINER -->
+			<!--<s:Scroller id="radiateScroller" 
+						width="300"  
+						height="100%"
+						left="0"
+						top="0" 
+						bottom="0">
+				
+				<s:DataGroup id="panels" width="100%" height="100%" >
+					<s:layout>
+						<s:VerticalLayout paddingRight="4" variableRowHeight="true"/>
+					</s:layout>
+					<s:ArrayCollection>-->
+						<!--<ns1:Panel width="100%" >
+						<s:Button label="hello"/>
+						</ns1:Panel>-->
+						
+						<!-- SELECTION -->
+						<!--<s:Label text="SELECTION" width="100%" styleName="formItem"/>
+						<inspectors:Selection height="100%" width="100%" />-->
+			
+			
+			<mx:VDividedBox width="350" height="100%">
+				<!--<s:layout>
+					<s:VerticalLayout gap="0" />
+				</s:layout>-->
+				
+				<!-- TOOLS -->
+				<s:VGroup width="100%" height="48" minHeight="48">
+					<s:Label text="TOOLS" width="100%" styleName="formItem"/>
+					<views:Tools width="100%" height="24"/>
+				</s:VGroup>
+				
+				<!--<s:Spacer height="8"/>-->
+				
+				<!--<s:TabBar dataProvider="{firstViewStack}" width="100%" height="22"/>-->
+				
+				<mx:TabNavigator id="firstViewStack" 
+								 width="100%"
+								 height="100%"
+								 clipContent="true"
+								 change="firstViewStack_changeHandler(event)"
+								 creationComplete="firstViewStack_creationCompleteHandler(event)">
+					
+					<!-- PROJECT -->
+					<s:NavigatorContent label="PROJECTS"  >
+						<panels:ProjectInspector width="100%" />
+					</s:NavigatorContent>
+					
+					<!-- COMPONENTS -->
+					<s:NavigatorContent label="COMPONENTS">
+						<panels:ComponentsInspector height="100%" width="100%" />
+					</s:NavigatorContent>
+					
+					<!-- LAYERS -->
+					<s:NavigatorContent label="LAYERS"  >
+						<views:LayersInspector width="100%" minHeight="180"/>
+					</s:NavigatorContent>
+					
+					<!-- HISTORY -->
+					<s:NavigatorContent label="HISTORY">
+						<panels:HistoryInspector id="history" minHeight="100" 
+											clearOnTargetChange="false"
+											height="100%" width="100%"/>
+					</s:NavigatorContent>
+					
+					<!-- OTHER -->
+					<s:NavigatorContent label="OTHERS">
+						
+						<s:Scroller width="100%"  
+									height="100%"
+									left="0"
+									top="0" 
+									bottom="0">
+				
+						<s:Group id="panels" width="100%" height="100%" >
+							<s:layout>
+								<s:VerticalLayout paddingRight="4" variableRowHeight="true"/>
+							</s:layout>
+						
+							<!-- BLEND MODES -->
+							<!--<s:Label text="BLEND MODE" width="100%" styleName="formItem"/>
+							<inspectors:BlendMode height="100%" width="100%" />-->
+							
+							<!-- SNAPSHOT -->
+							<s:Label text="SNAPSHOT" width="100%" styleName="formItem" />
+							<views:Snapshot height="100%" width="100%" />
+							
+							<!-- EDIT DECISION LIST -->
+							<s:Label text="CHANGE LOG" width="100%" styleName="formItem"/>
+							<views:ChangeHistory minHeight="22" height="100%" width="100%" removeDuplicates="false"/>
+							
+							
+							<!-- SEARCH EXPRESSION -->
+							<s:Label text="SEARCH EXPRESSION" width="100%" styleName="formItem"/>
+							<views:SearchExpression height="100%" width="100%"/>
+							
+							<!-- REDRAW REGIONS -->
+							<s:Label text="REDRAW REGIONS" width="100%" styleName="formItem"/>
+							<views:RedrawRegions width="20" height="20" />
+							
+							<!-- FRAMERATE -->
+							<s:Label text="FRAMERATE" width="100%"
+									 styleName="formItem"/>
+							<views:FrameRate />
+							
+							<!-- MEMORY -->
+							<s:Label text="MEMORY" width="100%" styleName="formItem"/>
+							<views:Memory height="100%" width="100%" 
+											   showCurrentlyUsedPlayerMemory="true"/>
+							<s:Spacer height="10"/>
+						</s:Group>
+						</s:Scroller>
+					</s:NavigatorContent>
+				</mx:TabNavigator>
+				
+				<mx:TabNavigator id="secondViewStack" 
+								 borderStyle="solid"
+								 width="100%"
+								 height="100%"
+								 selectedIndex="0"
+								 change="secondViewStack_changeHandler(event)"
+								 creationComplete="secondViewStack_creationCompleteHandler(event)">
+					
+					<!-- DOCUMENTS -->
+					<s:NavigatorContent width="100%" height="100%" label="DOCUMENTS">
+						<panels:DocumentsInspector height="100%" width="100%"/>
+					</s:NavigatorContent>
+					
+					<!-- LIBRARY -->
+					<s:NavigatorContent label="LIBRARY">
+						<panels:LibraryInspector minHeight="180" height="100%" width="100%"/>
+					</s:NavigatorContent>
+					
+					<!-- LAYOUT CONSTRAINTS -->
+					<s:NavigatorContent label="LAYOUT">
+						<s:Scroller width="100%" height="100%">
+							<panels:ConstraintsInspector height="100%" width="100%" />
+						</s:Scroller>
+					</s:NavigatorContent>
+					
+					<!-- PROPERTIES -->
+					<s:NavigatorContent label="PROPERTIES">
+						<!-- TODO Convert this into a composite component -->
+						<s:HGroup width="100%" verticalAlign="baseline">
+							<s:Label width="100%" text="{targetName}" paddingLeft="6" color="#888888"/>
+							<s:Spacer width="100%" />
+							<mx:LinkBar dataProvider="{forthViewStack}" right="0"/>
+						</s:HGroup>
+						
+						<mx:ViewStack id="forthViewStack" 
+										 width="100%"
+										 height="100%"
+										 minHeight="24"
+										 top="28"
+										 change="forthViewStack_changeHandler(event)"
+										 creationComplete="forthViewStack_creationCompleteHandler(event)">
+							
+							<!-- DYNAMIC INSPECTOR -->
+							<s:NavigatorContent label="COMMON">
+								<panels:DynamicComponentInspector width="100%" height="100%"/>
+							</s:NavigatorContent>
+							
+							<!-- PROPERTY INSPECTOR -->
+							<s:NavigatorContent label="ALL">
+								<panels:PropertyInspector minHeight="180" height="100%" width="100%"/>
+							</s:NavigatorContent>
+						</mx:ViewStack>
+						<!--<mx:TabNavigator id="forthViewStack" 
+										 borderStyle="none"
+										 width="100%"
+										 height="100%"
+										 minHeight="24">
+						</mx:TabNavigator>-->
+					</s:NavigatorContent>
+					
+					<!-- EVENTS -->
+					<s:NavigatorContent label="EVENTS">
+						<s:Scroller width="100%" height="100%">
+							<panels:Events height="100%" width="100%"/>
+						</s:Scroller>
+					</s:NavigatorContent>
+					
+					<!-- EVENT LISTENERS -->
+					<!--<s:NavigatorContent label="EVENTS">
+						<s:Scroller width="100%" height="100%">
+							<inspectors:EventListeners height="100%" width="100%"/>
+						</s:Scroller>
+					</s:NavigatorContent>-->
+					
+					<!-- STATES -->
+					<s:NavigatorContent label="STATES">
+						<s:Scroller width="100%" height="100%">
+							<panels:States height="100%" width="100%" />
+						</s:Scroller>
+					</s:NavigatorContent>
+					
+					<!-- PROFILING -->
+					<s:NavigatorContent width="100%" height="100%" label="PROFILE">
+						<panels:Profiling height="100%" width="100%"/>
+					</s:NavigatorContent>
+					
+				</mx:TabNavigator>
+				
+			</mx:VDividedBox>
+						
+					<!-- DESCRIPTION -->
+					<!--<s:Label text="DESCRIPTION" width="100%" styleName="formItem"/>-->
+					<!--<inspectors:Description showDescriptionLabel="false" left="10" right="10" top="10"/>-->
+					<!--</s:ArrayCollection>
+				</s:DataGroup>
+				
+			</s:Scroller>-->
+			
+			<!-- EXAMPLE APPLICATION -->
+			<mx:VDividedBox id="documentsGroup" width="100%" height="100%" >
+		
+				
+				<mx:TabNavigator id="documentsTagNavigator" width="100%" height="100%"
+								  change="navigatorContent_changeHandler(event)"
+								  click="documentsTagNavigator_clickHandler(event)"
+								  >
+					<!--<s:NavigatorContent width="100%" height="100%" label="HELL0!">
+						<ns1:StartPage id="startPage" width="100%" height="100%" />
+					</s:NavigatorContent>-->
+					<!--<s:NavigatorContent width="100%" height="100%" label="DOCUMENT">
+						<components:DocumentContainer id="document1" width="100%" height="100%" />
+					</s:NavigatorContent>-->
+					<!--<s:NavigatorContent width="100%" height="100%" label="PREVIEW" creationPolicy="all">
+						<flexiframe:IFrame id="iframe" 
+										   top="20"
+										   left="20"
+										   width="100%" height="100%" 
+										   debug="false"
+										   />
+					</s:NavigatorContent>-->
+					
+					<!--<s:NavigatorContent width="100%" height="100%" label="" >
+						<ns1:Document id="document2" width="100%" height="100%" />
+					</s:NavigatorContent>-->
+				</mx:TabNavigator>
+				
+				<!--<s:Label id="noDocumentsLabel"
+						 text="To create a new project or document select File > New Project or File > New Document."
+						 visible="{documentsTagNavigator.length==0}" 
+						 height="100%"/>-->
+				
+				<!-- BREADCRUMBS -->
+				<!--<s:Label text="BREADCRUMBS" width="100%" styleName="formItem"/>-->
+				
+				<!--<s:HGroup width="100%" paddingTop="8" >
+					<s:Label id="showConsoleLabel" 
+							 text="Console" 
+							 typographicCase="uppercase" 
+							 textAlign="center"
+							 verticalAlign="middle"
+							 paddingLeft="5"
+							 paddingRight="5"
+							 paddingBottom="5"
+							 paddingTop="5"
+							 fontWeight="bold"
+							 fontSize="10"
+							 backgroundAlpha=".75"
+							 backgroundColor="#FFFFFF"
+							 useHandCursor="true"
+							 buttonMode="true"
+							 click="showConsoleHandler(event)"
+							 />
+				</s:HGroup>-->
+				<s:VGroup width="100%" height="45%" minHeight="12">
+					<views:Breadcrumbs width="100%" />
+				
+					<mx:TabNavigator id="thirdViewStack" 
+									 borderStyle="solid"
+									 width="100%"
+									 height="100%"
+									 minHeight="24"
+									 change="thirdViewStack_changeHandler(event)"
+									 creationComplete="thirdViewStack_creationCompleteHandler(event)">
+						
+						<!-- DYNAMIC INSPECTOR -->
+						<!--<s:NavigatorContent label="INSPECTOR">
+							<panels:DynamicComponentInspector width="100%" height="100%"/>
+						</s:NavigatorContent>-->
+						
+						<!-- CONSOLE -->
+						<s:NavigatorContent label="CONSOLE">
+							<panels:ConsoleInspector width="100%" height="100%"/>
+						</s:NavigatorContent>
+					
+						<!-- CODE INSPECTOR -->
+						<s:NavigatorContent width="100%" height="100%" label="CODE">
+							<panels:CodeInspector id="code1" width="100%" height="100%" />
+						</s:NavigatorContent>
+					
+						<!-- METADATA INSPECTOR -->
+						<s:NavigatorContent width="100%" height="100%" label="METADATA">
+							<panels:MetaDataInspector id="metadataInspector" width="100%" height="100%" />
+						</s:NavigatorContent>
+					
+						<!-- DOCS INSPECTOR -->
+						<s:NavigatorContent width="100%" height="100%" label="DOCS">
+							<panels:DocumentationInspector id="docsInspector" width="100%" height="100%" />
+						</s:NavigatorContent>
+					
+						<!-- FEATURE INSPECTOR -->
+						<!--<s:NavigatorContent width="100%" height="100%" label="FEATURE">
+							<views:Features id="featureInspector" width="100%" height="100%" />
+						</s:NavigatorContent>-->
+					
+						
+						<!-- PROPERTY INSPECTOR -->
+						<!--<s:NavigatorContent label="PROPERTY INSPECTOR">
+						</s:NavigatorContent>-->
+					</mx:TabNavigator>
+				</s:VGroup>
+				
+				
+			</mx:VDividedBox>
+		
+		</mx:HDividedBox>
+		
+			
+		<controls:ImageButton id="closeDocument" 
+							  source="{Radii8LibraryAssets.clear}" 
+							  toolTip="Closes the visible document. Use the open button to reopen the document."
+							  right="8"
+							  top="34"
+							  width="16"
+							  height="16"
+							  horizontalAlign="center"
+							  verticalAlign="middle"
+							  />
+	</s:Group>
+
+					
+	<!--<s:List id="shortcutList" 
+			width="100%" 
+			height="14" 
+			bottom="8" 
+			left="10"
+			contentBackgroundAlpha="0"
+			labelFunction="panelsLabelFunction"
+			borderVisible="false"
+			fontSize="8"
+			color="#dddddd"
+			rollOverColor="#222222"
+			changing="list1_changeHandler(event)"
+			horizontalScrollPolicy="off"
+			dataProvider="{panels.dataProvider}"
+			>
+		<s:layout>
+			<s:HorizontalLayout variableColumnWidth="true" 
+								verticalAlign="middle"/>
+		</s:layout>
+	</s:List>-->
+	
+</s:Group>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/TestingAceEditor.mxml
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/TestingAceEditor.mxml b/Radii8Designer/src/TestingAceEditor.mxml
new file mode 100644
index 0000000..6daae68
--- /dev/null
+++ b/Radii8Designer/src/TestingAceEditor.mxml
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
+			   xmlns:s="library://ns.adobe.com/flex/spark" 
+			   xmlns:mx="library://ns.adobe.com/flex/mx" 
+			   xmlns:flexiframe="com.google.code.flexiframe.*"
+			   
+			   minWidth="955" minHeight="600"
+			   creationComplete="application1_creationCompleteHandler(event)"
+			   >
+	
+	<fx:Script>
+		<![CDATA[
+			import mx.events.FlexEvent;
+			import mx.events.ResizeEvent;
+			
+			private var aceEditorCreated:Boolean;
+			private var aceEditorVisible:Boolean;
+			public var settingEditorText:Boolean;
+			
+			protected function editor_resizeHandler(event:ResizeEvent):void {
+				//trace("resize from : " + event.currentTarget);
+				ExternalInterface.call("resizeEditor");
+			}
+			
+			protected function createEditor():void {
+				var createEditor:String = "createEditor";
+				var result:Object;
+				currentState = "editor";
+				
+				if (true || !aceEditorCreated) {
+					editor.content = "<div id='editor1' style='display:block;position:absolute;top:0px;left:0px;right:0px;bottom:0px;height:100%;width:100%'></div>";
+					editor.validateNow();
+					result = ExternalInterface.call(createEditor, "editor0", ExternalInterface.objectID);
+					ExternalInterface.addCallback("editorChange", editorChange);
+					ExternalInterface.addCallback("cursorChange", cursorChange);
+                	aceEditorCreated = true;
+				}
+				
+				updateContent();
+			}
+			
+			public function editorChange(value:String = ""):void {
+				//if (settingEditorText || value==sourceCode) return;
+				updatePreviewDocument();
+			}
+			
+			public function cursorChange(value:String = ""):void {
+				//trace("cursor change:" + getTimer());
+			}
+			
+			/**
+			 * Handle updating preview and set if code is modified by user
+			 * */
+			public function updatePreviewDocument():void {
+				
+				var preview:Object;
+				
+				if (preview is IFrame) {
+					preview.content = template;
+				}
+				
+			}
+			
+			public function updateContent():void {
+				
+				settingEditorText = true;
+				var result:String = ExternalInterface.call("setEditorText", template);
+				settingEditorText = false;
+			}
+			
+			protected function switchStates(event:MouseEvent):void {
+				if (currentState=="normal") {
+					currentState = "editor";
+					createEditor();
+				}
+				else {
+					currentState = "normal";
+				}
+			}
+			
+			protected function application1_creationCompleteHandler(event:FlexEvent):void {
+				//createEditor();
+			}
+			
+		]]>
+	</fx:Script>
+	
+	<fx:Declarations>
+		
+		<fx:String id="template">
+<![CDATA[<!DOCTYPE html>
+<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
+<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
+<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
+    <head>
+        <meta charset="utf-8">
+        <meta http-equiv="X-UA-Compatible" content="IE=edge">
+        <title></title>
+        <meta name="description" content="">
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+
+        <!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
+
+        <link rel="stylesheet" href="css/normalize.css">
+        <link rel="stylesheet" href="css/main.css">
+        <script src="js/vendor/modernizr-2.6.2.min.js"></script>
+    </head>
+    <body>
+        <!--[if lt IE 7]>
+            <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
+        <![endif]-->
+
+<!--template_content-->
+
+        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
+        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>
+        <script src="js/plugins.js"></script>
+        <script src="js/main.js"></script>
+
+        <!-- Google Analytics: change UA-XXXXX-X to be your site's ID. -->
+        <script>
+            (function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]=
+            function(){(b[l].q=b[l].q||[]).push(arguments)});b[l].l=+new Date;
+            e=o.createElement(i);r=o.getElementsByTagName(i)[0];
+            e.src='//www.google-analytics.com/analytics.js';
+            r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));
+            ga('create','UA-XXXXX-X');ga('send','pageview');
+        </script>
+    </body>
+</html>
+]]>
+		</fx:String>
+	</fx:Declarations>
+	
+	
+	<s:states>
+		<s:State name="normal"/>
+		<s:State name="editor"/>
+	</s:states>
+	
+	<s:Label id="label" 
+					   top="50" left="0"
+					   width="100%" 
+					   text="Press the set content button"
+					   includeIn="normal"
+					   >
+	</s:Label>
+	
+	<flexiframe:IFrame id="editor" 
+					   top="50" left="0"
+					   width="100%" height="100%" 
+					   resize="editor_resizeHandler(event)"
+					   overlayDetection="true"
+					   includeIn="editor"
+					   >
+	</flexiframe:IFrame>
+
+	<s:HGroup>
+		<s:Button label="Set contents" click="createEditor()"/>
+		<s:Button label="Switch States" click="switchStates(event)"/>
+	</s:HGroup>
+</s:Application>

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/application.mxml
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/application.mxml b/Radii8Designer/src/application.mxml
new file mode 100644
index 0000000..94c7f22
--- /dev/null
+++ b/Radii8Designer/src/application.mxml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
+			   xmlns:s="library://ns.adobe.com/flex/spark" 
+			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="640" minHeight="480">
+	<fx:Script>
+		<![CDATA[
+			import mx.core.IVisualElement;
+			public var version:String = "4.6.0";
+		]]>
+	</fx:Script>
+	<fx:Declarations>
+		<mx:UIComponent/>
+	</fx:Declarations>
+	<s:Button creationComplete="removeElement(IVisualElement(event.currentTarget))"/>
+</s:Application>

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/BorderContainer.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/BorderContainer.png b/Radii8Designer/src/assets/images/components/BorderContainer.png
new file mode 100644
index 0000000..49ab36c
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/BorderContainer.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/Button.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/Button.png b/Radii8Designer/src/assets/images/components/Button.png
new file mode 100644
index 0000000..1bf63c3
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/Button.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/ButtonBar.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/ButtonBar.png b/Radii8Designer/src/assets/images/components/ButtonBar.png
new file mode 100644
index 0000000..49ab36c
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/ButtonBar.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/CheckBox.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/CheckBox.png b/Radii8Designer/src/assets/images/components/CheckBox.png
new file mode 100644
index 0000000..21fb8d8
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/CheckBox.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/ComboBox.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/ComboBox.png b/Radii8Designer/src/assets/images/components/ComboBox.png
new file mode 100644
index 0000000..49ab36c
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/ComboBox.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/DataGrid.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/DataGrid.png b/Radii8Designer/src/assets/images/components/DataGrid.png
new file mode 100644
index 0000000..21fb8d8
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/DataGrid.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/DataGroup.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/DataGroup.png b/Radii8Designer/src/assets/images/components/DataGroup.png
new file mode 100644
index 0000000..21fb8d8
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/DataGroup.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/DropDownList.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/DropDownList.png b/Radii8Designer/src/assets/images/components/DropDownList.png
new file mode 100644
index 0000000..49ab36c
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/DropDownList.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/Form.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/Form.png b/Radii8Designer/src/assets/images/components/Form.png
new file mode 100644
index 0000000..21fb8d8
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/Form.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/FormHeading.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/FormHeading.png b/Radii8Designer/src/assets/images/components/FormHeading.png
new file mode 100644
index 0000000..21fb8d8
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/FormHeading.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/GridColumnHeaderGroup.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/GridColumnHeaderGroup.png b/Radii8Designer/src/assets/images/components/GridColumnHeaderGroup.png
new file mode 100644
index 0000000..49ab36c
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/GridColumnHeaderGroup.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/Group.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/Group.png b/Radii8Designer/src/assets/images/components/Group.png
new file mode 100644
index 0000000..21fb8d8
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/Group.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/HGroup.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/HGroup.png b/Radii8Designer/src/assets/images/components/HGroup.png
new file mode 100644
index 0000000..21fb8d8
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/HGroup.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/HScrollBar.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/HScrollBar.png b/Radii8Designer/src/assets/images/components/HScrollBar.png
new file mode 100644
index 0000000..1bf63c3
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/HScrollBar.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/HSlider.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/HSlider.png b/Radii8Designer/src/assets/images/components/HSlider.png
new file mode 100644
index 0000000..49ab36c
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/HSlider.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/Image.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/Image.png b/Radii8Designer/src/assets/images/components/Image.png
new file mode 100644
index 0000000..21fb8d8
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/Image.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/Label.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/Label.png b/Radii8Designer/src/assets/images/components/Label.png
new file mode 100644
index 0000000..1bf63c3
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/Label.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/LinkButton.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/LinkButton.png b/Radii8Designer/src/assets/images/components/LinkButton.png
new file mode 100644
index 0000000..49ab36c
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/LinkButton.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/List.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/List.png b/Radii8Designer/src/assets/images/components/List.png
new file mode 100644
index 0000000..1bf63c3
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/List.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/NumericStepper.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/NumericStepper.png b/Radii8Designer/src/assets/images/components/NumericStepper.png
new file mode 100644
index 0000000..1bf63c3
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/NumericStepper.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/Panel.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/Panel.png b/Radii8Designer/src/assets/images/components/Panel.png
new file mode 100644
index 0000000..21fb8d8
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/Panel.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/RadioButton.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/RadioButton.png b/Radii8Designer/src/assets/images/components/RadioButton.png
new file mode 100644
index 0000000..21fb8d8
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/RadioButton.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/RadioButtonGroup.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/RadioButtonGroup.png b/Radii8Designer/src/assets/images/components/RadioButtonGroup.png
new file mode 100644
index 0000000..21fb8d8
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/RadioButtonGroup.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/RichEditableText.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/RichEditableText.png b/Radii8Designer/src/assets/images/components/RichEditableText.png
new file mode 100644
index 0000000..5dd063f
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/RichEditableText.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/RichText.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/RichText.png b/Radii8Designer/src/assets/images/components/RichText.png
new file mode 100644
index 0000000..49ab36c
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/RichText.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/Scroller.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/Scroller.png b/Radii8Designer/src/assets/images/components/Scroller.png
new file mode 100644
index 0000000..39d86fd
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/Scroller.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/SkinnableContainer.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/SkinnableContainer.png b/Radii8Designer/src/assets/images/components/SkinnableContainer.png
new file mode 100644
index 0000000..39d86fd
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/SkinnableContainer.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/SkinnableDataContainer.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/SkinnableDataContainer.png b/Radii8Designer/src/assets/images/components/SkinnableDataContainer.png
new file mode 100644
index 0000000..21fb8d8
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/SkinnableDataContainer.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/Spacer.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/Spacer.png b/Radii8Designer/src/assets/images/components/Spacer.png
new file mode 100644
index 0000000..49ab36c
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/Spacer.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/Spinner.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/Spinner.png b/Radii8Designer/src/assets/images/components/Spinner.png
new file mode 100644
index 0000000..d5e8a8f
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/Spinner.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/TabBar.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/TabBar.png b/Radii8Designer/src/assets/images/components/TabBar.png
new file mode 100644
index 0000000..49ab36c
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/TabBar.png differ

http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Designer/src/assets/images/components/TextArea.png
----------------------------------------------------------------------
diff --git a/Radii8Designer/src/assets/images/components/TextArea.png b/Radii8Designer/src/assets/images/components/TextArea.png
new file mode 100644
index 0000000..1bf63c3
Binary files /dev/null and b/Radii8Designer/src/assets/images/components/TextArea.png differ


Mime
View raw message