| <?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>
|