http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/controller/RadiateReferences.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/controller/RadiateReferences.as b/Radii8Library/src/com/flexcapacitor/controller/RadiateReferences.as new file mode 100644 index 0000000..f605d43 --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/controller/RadiateReferences.as @@ -0,0 +1,75 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + +package com.flexcapacitor.controller { + import com.flexcapacitor.tools.EyeDropper; + import com.flexcapacitor.tools.Selection; + import com.flexcapacitor.tools.Zoom; + import com.flexcapacitor.views.inspectors.BorderStyles; + import com.flexcapacitor.views.EyeDropperInspector; + import com.flexcapacitor.views.SelectionInspector; + import com.flexcapacitor.views.Size; + import com.flexcapacitor.views.ZoomInspector; + import com.flexcapacitor.views.inspectors.BasicBackgroundStyles; + import com.flexcapacitor.views.inspectors.FontStyles; + import com.flexcapacitor.views.inspectors.Identity; + import com.flexcapacitor.views.inspectors.Image; + import com.flexcapacitor.views.inspectors.TextInspector; + + /** + * Create references so classes are included. + * */ + public class RadiateReferences { + + + public function RadiateReferences() + { + + } + + /////////////////////////////////////////////////////// + // TOOLS CLASSES + /////////////////////////////////////////////////////// + + public static var selectionTool:com.flexcapacitor.tools.Selection; + public static var selectionInspector:com.flexcapacitor.views.SelectionInspector; + + public static var zoomTool:com.flexcapacitor.tools.Zoom; + public static var zoomInspector:com.flexcapacitor.views.ZoomInspector; + + public static var eyeDropperTool:com.flexcapacitor.tools.EyeDropper; + public static var eyeDropperInspector:com.flexcapacitor.views.EyeDropperInspector; + + /////////////////////////////////////////////////////// + // TOOLS CLASSES + /////////////////////////////////////////////////////// + + public static var identity:com.flexcapacitor.views.inspectors.Identity; + public static var size:com.flexcapacitor.views.Size; + public static var borderStyles:com.flexcapacitor.views.inspectors.BorderStyles; + public static var fontStyles:com.flexcapacitor.views.inspectors.FontStyles; + public static var textInspector:com.flexcapacitor.views.inspectors.TextInspector; + public static var basicBackgroundInspector:com.flexcapacitor.views.inspectors.BasicBackgroundStyles; + public static var imageInspector:com.flexcapacitor.views.inspectors.Image; + public static var borderStylesInspector:com.flexcapacitor.views.inspectors.BorderStyles; + + + + } +} \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/controller/RadiateTest.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/controller/RadiateTest.as b/Radii8Library/src/com/flexcapacitor/controller/RadiateTest.as new file mode 100644 index 0000000..613f06f --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/controller/RadiateTest.as @@ -0,0 +1,61 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + +package com.flexcapacitor.controller { + + /** + * Used to test radiate calls + * */ + public class RadiateTest { + + public function RadiateTest() { + + + } + + public function start():void { + + // import project XML + // - check if properties on + // - check if documents created + + // import project data + // - check if properties set + // - check if documents created + + // import document xml + // - check if properties set + + // export project XML + // - check if properties on + // - check if documents created + + // export project data + // - check if properties set + // - check if documents created + + // export document xml + // - check if properties set + + + } + + + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/events/DragDropEvent.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/events/DragDropEvent.as b/Radii8Library/src/com/flexcapacitor/events/DragDropEvent.as new file mode 100644 index 0000000..edf0f0c --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/events/DragDropEvent.as @@ -0,0 +1,81 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + +package com.flexcapacitor.events { + import flash.events.Event; + import flash.geom.Point; + + import mx.core.DragSource; + import mx.core.IUIComponent; + import spark.layouts.supportClasses.DropLocation; + import mx.events.DragEvent; + + + public class DragDropEvent extends Event { + + public static var DRAG_OVER:String = "dragOver"; + public static var DRAG_DROP:String = "dragDrop"; + public static var DRAG_DROP_COMPLETE:String = "dragDropComplete"; + + public var dragInitiator:IUIComponent; + public var dropTarget:Object; + public var draggedItem:Object; + public var dragSource:DragSource; + public var dropPoint:Point; + public var dropLocation:DropLocation; + public var dragEvent:DragEvent; + public var offsetPoint:Point; + public var isSkinnableContainer:Boolean; + public var isGroup:Boolean; + public var isTile:Boolean; + public var isVertical:Boolean; + public var isHorizontal:Boolean; + public var isBasicLayout:Boolean; + public var isDropTargetParent:Boolean; + public var isDropTargetOwner:Boolean; + + public function DragDropEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + } + + + override public function clone():Event { + var event:DragDropEvent = new DragDropEvent(type, bubbles, cancelable); + event.dragInitiator = dragInitiator; + event.dropTarget = dropTarget; + event.draggedItem = draggedItem; + event.dragSource = dragSource; + event.dropPoint = dropPoint; + event.dropLocation = dropLocation; + event.dragEvent = dragEvent; + event.offsetPoint = offsetPoint; + event.isGroup = isGroup; + event.isTile = isTile; + event.isVertical = isVertical; + event.isHorizontal = isHorizontal; + event.isBasicLayout = isBasicLayout; + event.isSkinnableContainer = isSkinnableContainer; + event.isDropTargetOwner = isDropTargetOwner; + event.isDropTargetParent = isDropTargetParent; + return event; + } + + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/events/HistoryEvent.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/events/HistoryEvent.as b/Radii8Library/src/com/flexcapacitor/events/HistoryEvent.as new file mode 100644 index 0000000..417eaa6 --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/events/HistoryEvent.as @@ -0,0 +1,40 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + +package com.flexcapacitor.events { + + /** + * Container for history event items + * */ + public class HistoryEvent extends HistoryEventItem { + + public function HistoryEvent() { + + } + + /** + * Array of history event items + * */ + public var historyEventItems:Array; + + override public function purge():void { + super.purge(); + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/events/HistoryEventItem.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/events/HistoryEventItem.as b/Radii8Library/src/com/flexcapacitor/events/HistoryEventItem.as new file mode 100644 index 0000000..ca12635 --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/events/HistoryEventItem.as @@ -0,0 +1,124 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + +package com.flexcapacitor.events { + import flash.utils.Dictionary; + + import mx.core.UIComponent; + import mx.effects.effectClasses.PropertyChanges; + import mx.states.AddItems; + + /** + * Contains the information used to go forward and back in history. + * + * This is a description value object of a history event not a dispatched Event object. + * + * There are three types of events, + * add display object + * remove display object + * set property / style + * */ + public class HistoryEventItem { + + public static const ADD_ITEM:String = "addItem"; + public static const REMOVE_ITEM:String = "removeItem"; + public static const PROPERTY_CHANGE:String = "propertyChanged"; + public static const STYLE_CHANGE:String = "styleChanged"; + + public function HistoryEventItem() { + + } + + /** + * Names of affected properties + * */ + public var properties:Array; + + /** + * Names of affected styles + * */ + public var styles:Array; + + /** + * Contains the original property changes object + * */ + public var propertyChanges:PropertyChanges; + + /** + * List of targets + * */ + public var targets:Array = []; + + /** + * Indicates if the property change has been reversed + * */ + [Bindable] + public var reversed:Boolean; + + /** + * Description of change. + * */ + public var description:String; + + /** + * Description of the action this event contains + * */ + [Inspectable(enumeration="addItem,removeItem,propertyChanged,styleChanged")] + public var action:String; + + /** + * @copy mx.states.AddItems + * */ + public var addItemsInstance:AddItems; + + /** + * @copy mx.states.AddItems + * */ + public var removeItemsInstance:AddItems; + + /** + * @copy mx.states.AddItems + * */ + public var reverseItemsInstance:AddItems; + + /** + * @copy mx.states.AddItems.apply() + * */ + public var parent:UIComponent; + + /** + * Stores the parents + * */ + public var reverseRemoveItemsDictionary:Dictionary = new Dictionary(); + + /** + * Stores the parents + * */ + public var reverseAddItemsDictionary:Dictionary = new Dictionary(); + + /** + * Called when item is removed from history. + * Needs to null out all references??? Does GC do that? + * We are only nulling targets. + * */ + public function purge():void { + targets = null; + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/events/InspectorEvent.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/events/InspectorEvent.as b/Radii8Library/src/com/flexcapacitor/events/InspectorEvent.as new file mode 100644 index 0000000..24ed3ef --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/events/InspectorEvent.as @@ -0,0 +1,49 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + + + + + +package com.flexcapacitor.events { + + import flash.display.DisplayObject; + import flash.events.Event; + + public class InspectorEvent extends Event { + + public static const CHANGE:String = "change"; + public static const HIGHLIGHT:String = "highlight"; + public static const SELECT:String = "select"; + + public var targetItem:Object; + + public function InspectorEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, target:Object = null) { + super(type, bubbles, cancelable); + + targetItem = target; + } + + + // override the inherited clone() method + override public function clone():Event { + return new InspectorEvent(type, bubbles, cancelable, targetItem); + } + } +} http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/events/RadiateEvent.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/events/RadiateEvent.as b/Radii8Library/src/com/flexcapacitor/events/RadiateEvent.as new file mode 100644 index 0000000..e10ac23 --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/events/RadiateEvent.as @@ -0,0 +1,363 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + +package com.flexcapacitor.events { + import com.flexcapacitor.tools.ITool; + + import flash.events.Event; + + import mx.states.AddItems; + + /** + * Handles Radiate events. + * Need to refactor. + * */ + public class RadiateEvent extends Event { + + /** + * Dispatched when an asset is removed + * */ + public static const ASSET_REMOVED:String = "assetRemoved"; + + /** + * Dispatched when an asset is added + * */ + public static const ASSET_ADDED:String = "assetAdded"; + + /** + * Dispatched when the login results are received + * */ + public static const LOGIN_RESULTS:String = "loginResults"; + + /** + * Dispatched when the logout results are received + * */ + public static const LOGOUT_RESULTS:String = "logoutResults"; + + /** + * Dispatched when the register results are received + * */ + public static const REGISTER_RESULTS:String = "registerResults"; + + /** + * Dispatched when the change password results are received + * */ + public static const CHANGE_PASSWORD_RESULTS:String = "changePasswordResults"; + + /** + * Dispatched when the lost password results are received + * */ + public static const LOST_PASSWORD_RESULTS:String = "lostPasswordResults"; + + /** + * Dispatched when the project is created + * */ + public static const PROJECT_CREATED:String = "projectCreated"; + + /** + * Dispatched when the project is deleted + * */ + public static const PROJECT_DELETED:String = "projectDeleted"; + + /** + * Dispatched when the project is added + * */ + public static const PROJECT_ADDED:String = "projectAdded"; + + /** + * Dispatched when the project is removed + * */ + public static const PROJECT_REMOVED:String = "projectRemoved"; + + /** + * Dispatched when the project is closing + * */ + public static const PROJECT_CLOSING:String = "projectClosing"; + + /** + * Dispatched when the project is opened + * */ + public static const PROJECT_OPENED:String = "projectOpened"; + + /** + * Dispatched when the project is closed + * */ + public static const PROJECT_CLOSED:String = "projectClosed"; + + /** + * Dispatched when the projects are set + * */ + public static const PROJECTS_SET:String = "projectsSet"; + + /** + * Dispatched when the project is changed + * */ + public static const PROJECT_CHANGE:String = "projectChange"; + + /** + * Dispatched when the project is saved + * */ + public static const PROJECT_SAVED:String = "projectSaved"; + + /** + * Dispatched when a list of projects are received + * */ + public static const PROJECTS_LIST_RECEIVED:String = "projectsListReceived"; + + /** + * Dispatched when the project name is changed + * */ + public static const PROJECT_RENAME:String = "projectRename"; + + /** + * Dispatched when the document name is changed + * */ + public static const DOCUMENT_RENAME:String = "documentRename"; + + /** + * Dispatched when the document is removed + * */ + public static const DOCUMENT_REMOVED:String = "documentRemoved"; + + /** + * Dispatched when the document is deleted + * */ + public static const DOCUMENT_DELETED:String = "documentDeleted"; + + /** + * Dispatched when the document is added + * */ + public static const DOCUMENT_ADDED:String = "documentAdded"; + + /** + * Dispatched when the document save is complete + * */ + public static const DOCUMENT_SAVE_COMPLETE:String = "documentSaveComplete"; + + /** + * Dispatched when the document save is not complete + * */ + public static const DOCUMENT_SAVE_FAULT:String = "documentSaveFault"; + + /** + * Dispatched when the document save as is canceled + * */ + public static const DOCUMENT_SAVE_AS_CANCEL:String = "documentSaveAsCancel"; + + /** + * Dispatched when the document is changed + * */ + public static const DOCUMENT_CHANGE:String = "documentChange"; + + /** + * Dispatched when the documents are set + * */ + public static const DOCUMENTS_SET:String = "documentsSet"; + + /** + * Dispatched when the document is opening + * */ + public static const DOCUMENT_OPENING:String = "documentOpening"; + + /** + * Dispatched when the document is open + * */ + public static const DOCUMENT_OPEN:String = "documentOpen"; + + /** + * Dispatched when the canvas is changed + * */ + public static const CANVAS_CHANGE:String = "canvasChange"; + + /** + * Dispatched when attachments are received + * */ + public static const ATTACHMENTS_RECEIVED:String = "attachmentsReceived"; + + /** + * Dispatched when attachment is uploaded + * */ + public static const ATTACHMENT_UPLOADED:String = "attachmentUploaded"; + + /** + * Dispatched when logged in status is received + * */ + public static const LOGGED_IN_STATUS:String = "loggedInStatus"; + + /** + * Dispatched when the target is changed + * */ + public static const TARGET_CHANGE:String = "targetChange"; + + /** + * Dispatched when a preview is requested + * */ + public static const REQUEST_PREVIEW:String = "requestPreview"; + + /** + * Dispatched when a property is selected + * */ + public static const PROPERTY_SELECTED:String = "propertySelected"; + + /** + * Dispatched when a color is selected + * */ + public static const COLOR_SELECTED:String = "colorSelected"; + + /** + * Dispatched when a color is previewed before color selected event. + * */ + public static const COLOR_PREVIEW:String = "colorPreview"; + + /** + * Dispatched when the generated code is updated + * */ + public static const CODE_UPDATED:String = "codeUpdated"; + + /** + * Dispatched when an item (usually a display object) is added + * */ + public static const ADD_ITEM:String = "addItem"; + + /** + * Dispatched when an item (usually a display object) is moved + * */ + public static const MOVE_ITEM:String = "moveItem"; + + /** + * Dispatched when an item (usually a display object) is removed + * */ + public static const REMOVE_ITEM:String = "removeItem"; + + /** + * Dispatched when an object is selected + * */ + public static const OBJECT_SELECTED:String = "objectSelected"; + + /** + * Dispatched when a property on the target is changed + * */ + public static const PROPERTY_CHANGED:String = "propertyChanged"; + + /** + * Dispatched when a property edit is requested + * */ + public static const PROPERTY_EDIT:String = "propertyEdit"; + + /** + * Dispatched when at the beginning of the undo history stack + * */ + public static const BEGINNING_OF_UNDO_HISTORY:String = "beginningOfUndoHistory"; + + /** + * Dispatched when at the end of the undo history stack + * */ + public static const END_OF_UNDO_HISTORY:String = "endOfUndoHistory"; + + /** + * Dispatched when history is changed. + * */ + public static const HISTORY_CHANGE:String = "historyChange"; + + /** + * Dispatched when document scale is changed. + * */ + public static const SCALE_CHANGE:String = "scaleChange"; + + /** + * Dispatched when document size or scale is changed. + * */ + public static const DOCUMENT_SIZE_CHANGE:String = "documentSizeChange"; + + /** + * Dispatched when the tool is changed. + * */ + public static const TOOL_CHANGE:String = "toolChange"; + + /** + * Dispatched when the tools list is updated. + * */ + public static const TOOLS_UPDATED:String = "toolsUpdated"; + + /** + * Dispatched when print job is cancelled. + * */ + public static const PRINT_CANCELLED:String = "printCancelled"; + + /** + * Dispatched when print job is complete or sent to the printer. + * */ + public static const PRINT_COMPLETE:String = "printComplete"; + + + public var data:Object; + public var selectedItem:Object; + public var property:String; + public var properties:Array; + public var changes:Array; + public var value:*; + public var multipleSelection:Boolean; + public var addItemsInstance:AddItems; + public var moveItemsInstance:AddItems; + public var newIndex:int; + public var oldIndex:int; + public var historyEventItem:HistoryEventItem; + public var targets:Array; + public var tool:ITool; + public var previewType:String; + public var openInBrowser:Boolean; + public var color:uint; + public var invalid:Boolean; + public var isRollOver:Boolean; + public var scaleX:Number; + public var scaleY:Number; + public var status:String; + public var successful:Boolean; + public var faultEvent:Event; + + /** + * Constructor. This is not up to date. + * */ + public function RadiateEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false, + target:Object=null, changes:Array=null, properties:Array=null, + value:*=null, multipleSelection:Boolean = false, tool:ITool = null) { + super(type, bubbles, cancelable); + + this.selectedItem = target; + this.properties = properties; + this.changes = changes; + this.value = value; + this.multipleSelection = multipleSelection; + this.tool = tool; + + // not kept up + } + + /** + * This is not up to date. + * */ + override public function clone():Event { + throw new Error("do this"); + return new RadiateEvent(type, bubbles, cancelable, selectedItem, changes, properties, value, multipleSelection, tool); + } + + + + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/graphics/LayoutLines.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/graphics/LayoutLines.as b/Radii8Library/src/com/flexcapacitor/graphics/LayoutLines.as new file mode 100644 index 0000000..d290b36 --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/graphics/LayoutLines.as @@ -0,0 +1,280 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + + + + + +package com.flexcapacitor.graphics { + + import flash.display.DisplayObject; + import flash.display.MovieClip; + import flash.geom.Point; + + import mx.core.FlexGlobals; + import mx.graphics.SolidColorStroke; + import mx.managers.ISystemManager; + import mx.managers.SystemManager; + + import spark.components.Group; + import spark.primitives.Line; + + /** + * Draws an outline around the target object + * */ + public class LayoutLines { + + public var backgroundFillAlpha:Number = 0; + public var backgroundFillColor:uint = 0x000000; + public var lineAlpha:Number = 1; + public var lineColor:uint = 0x2da6e9; + public var horizontalOffset:int = -5; + public var verticalOffset:int = -5; + public var lineThickness:int = 1; + public var group:Group; + + public function LayoutLines() { + + } + private static var _instance:LayoutLines; + + public static function getInstance():LayoutLines { + + if (_instance!=null) { + return _instance; + } + else { + _instance = new LayoutLines(); + return _instance; + } + } + + /** + * Reference to LayoutLines instance + * */ + public static function get instance():LayoutLines { + + if (_instance==null) { + _instance = new LayoutLines(); + } + return _instance; + } + + /** + * Draws an outline around the target object + * */ + public function drawLines(target:Object, systemManager:ISystemManager):void { + var point:Point; + var targetWidth:int; + var targetHeight:int; + var displayObject:DisplayObject; + + if (target == null) { + if (group) { + group.graphics.clear(); + } + return; + } + + if (systemManager!=null) { + var isPopUp:Boolean;// = target is UIComponent ? UIComponent(target).isPopUp : false; + + // if we add to the application we won't show on pop up manager elements + if (group==null || group.parent==null) { + group = new Group(); + group.mouseEnabled = false; + + systemManager.addChild(DisplayObject(group)); + } + else { + group.graphics.clear(); + } + } + else { + return; + } + + if (!(target is DisplayObject)) { + return; + } + displayObject = DisplayObject(target); + + targetWidth = displayObject.width; + targetHeight = displayObject.height; + + point = new Point(); + point = displayObject.localToGlobal(point); + + var topOffset:Number = 0 - (lineThickness / 2); + var leftOffset:Number = 0 - (lineThickness / 2); + var rightOffset:Number = targetWidth + 0 - (lineThickness / 2); + var bottomOffset:Number = targetHeight + 0 - (lineThickness / 2); + + // move group to new location + group.x = point.x; + group.y = point.y; + + // add a background fill + group.graphics.beginFill(backgroundFillColor, backgroundFillAlpha); + group.graphics.drawRect(0, 0, targetWidth, targetHeight); + group.graphics.endFill(); + + // adds a thin line at the top + group.graphics.beginFill(lineColor, lineAlpha); + group.graphics.drawRect(horizontalOffset, topOffset, targetWidth + 10, lineThickness); + group.graphics.endFill(); + + // adds a thin line to the bottom of the spacer + group.graphics.beginFill(lineColor, lineAlpha); + group.graphics.drawRect(horizontalOffset, bottomOffset, targetWidth + 10, lineThickness); + group.graphics.endFill(); + + // adds a thin line to the left + group.graphics.beginFill(lineColor, lineAlpha); + group.graphics.drawRect(leftOffset, verticalOffset, lineThickness, targetHeight + 10); + group.graphics.endFill(); + + // adds a thin line to the right + group.graphics.beginFill(lineColor, lineAlpha); + group.graphics.drawRect(rightOffset, verticalOffset, lineThickness, targetHeight + 10); + group.graphics.endFill(); + } + + public function drawLines2(target:DisplayObject, groupTarget:DisplayObject = null):void { + var point:Point; + var targetWidth:int; + var targetHeight:int; + var systemManager:MovieClip = MovieClip(SystemManager.getSWFRoot(target)); + + if (target == null) + return; + + if (systemManager!=null) { + + if (group==null) { + group = new Group(); + group.mouseEnabled = false; + systemManager.addChild(DisplayObject(group)); + } + else { + group.removeAllElements(); + } + } + else { + return; + } + + targetWidth = DisplayObject(target).width; + targetHeight = DisplayObject(target).height; + + point = new Point(); + point = DisplayObject(target).localToGlobal(point); + + var topLine:Line = new Line(); + var bottomLine:Line = new Line(); + var leftLine:Line = new Line(); + var rightLine:Line = new Line(); + + var stroke:SolidColorStroke = new SolidColorStroke(); + stroke.color = lineColor; + stroke.alpha = lineAlpha; + topLine.stroke = stroke; + bottomLine.stroke = stroke; + leftLine.stroke = stroke; + rightLine.stroke = stroke; + + topLine.xFrom = 0; + topLine.xTo = systemManager.width; + topLine.y = point.y - (lineThickness / 2); + + bottomLine.xFrom = 0; + bottomLine.xTo = systemManager.width; + bottomLine.y = point.y + targetHeight - (lineThickness / 2); + + leftLine.x = point.x - (lineThickness / 2); + leftLine.yFrom = 0; + leftLine.yTo = systemManager.height; + + rightLine.x = point.x + targetWidth - (lineThickness / 2); + rightLine.yFrom = 0; + rightLine.yTo = systemManager.height; + + group.addElement(topLine); + group.addElement(bottomLine); + group.addElement(leftLine); + group.addElement(rightLine); + + if (group.parent!=systemManager) { + systemManager.addChild(group); + } + + } + + /** + * Clears the outline + * */ + public function clear(target:Object, systemManager:ISystemManager, remove:Boolean=false):void { + + if (group) { + group.graphics.clear(); + + if (remove) { + + if (systemManager.contains(group)) { + systemManager.removeChild(group); + } + } + } + + } + + public function remove(target:Object, groupTarget:Object=null):void { + var application:Object = FlexGlobals.topLevelApplication; + var systemManager:MovieClip = MovieClip(SystemManager.getSWFRoot(target)); + + if (systemManager) { + + if (group && group.parent==systemManager) { + group.graphics.clear(); + systemManager.removeChild(group); + } + } + + if (application) { + + if (group && group.parent==application) { + group.graphics.clear(); + application.removeChild(group); + } + } + } + + public function clear2(target:Object, groupTarget:Object=null):void { + var systemManager:MovieClip = MovieClip(SystemManager.getSWFRoot(target)); + + if (systemManager) { + + if (group!=null) { + group.graphics.clear(); + } + } + } + + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/logging/RadiateLogTarget.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/logging/RadiateLogTarget.as b/Radii8Library/src/com/flexcapacitor/logging/RadiateLogTarget.as new file mode 100644 index 0000000..49977b4 --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/logging/RadiateLogTarget.as @@ -0,0 +1,91 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + +package com.flexcapacitor.logging { + import mx.core.mx_internal; + import mx.logging.targets.LineFormattedTarget; + + use namespace mx_internal; + + /** + * Logging target + * */ + public class RadiateLogTarget extends LineFormattedTarget { + + + public function RadiateLogTarget(console:Object = null) { + super(); + + this.console = console; + } + + private var _console:Object; + + public var messages:String = ""; + + public var storedMessages:String = ""; + + public var fallBackToTraceConsole:Boolean = true; + + /** + * Store messages + * */ + public var storeMessages:Boolean = false; + + /** + * Shows messages deferred until console is created + * */ + public var showDeferredMessages:Boolean = true; + + [Bindable] + public function get console():Object { + return _console; + } + + public function set console(value:Object):void { + if (_console == value) return; + + _console = value; + + if (value && showDeferredMessages && storedMessages) { + internalLog (storedMessages); + } + } + + override mx_internal function internalLog(message : String) : void { + var shortMessage:String = message + "\n"; + + if (console) { + //console.text += shortMessage; + console.appendText(shortMessage); + } + else { + storedMessages += shortMessage; + + if (fallBackToTraceConsole) { + trace(message); + } + } + + if (storedMessages) { + messages += shortMessage; + } + } + } +} http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/managers/HistoryManager.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/managers/HistoryManager.as b/Radii8Library/src/com/flexcapacitor/managers/HistoryManager.as new file mode 100644 index 0000000..34cd81d --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/managers/HistoryManager.as @@ -0,0 +1,36 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// +package com.flexcapacitor.managers +{ + + import flash.events.EventDispatcher; + + + /** + * Track changes + * */ + public class HistoryManager extends EventDispatcher { + + + public function HistoryManager():void { + + } + + } +} http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/managers/PersistantDataManager.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/managers/PersistantDataManager.as b/Radii8Library/src/com/flexcapacitor/managers/PersistantDataManager.as new file mode 100644 index 0000000..0f17f68 --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/managers/PersistantDataManager.as @@ -0,0 +1,60 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + +package com.flexcapacitor.managers { + import com.flexcapacitor.model.Settings; + import com.flexcapacitor.utils.SharedObjectUtils; + + import flash.net.SharedObject; + + + /** + * Handles saving and loading settings data + * */ + public class PersistantDataManager { + + + + public function PersistantDataManager() { + + } + + public var settings:Settings; + + /** + * Get saved project + * */ + public function getSavedSettings():Boolean { + var so:Object = SharedObjectUtils.getSharedObject("settings"); + + if (so is SharedObject) { + if (so.data && so.data is Settings) { + settings = Settings(so.data); + } + else { + settings = new Settings(); + } + } + else { + } + + return true; + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/managers/layoutClasses/LayoutDebugHelper.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/managers/layoutClasses/LayoutDebugHelper.as b/Radii8Library/src/com/flexcapacitor/managers/layoutClasses/LayoutDebugHelper.as new file mode 100644 index 0000000..b3338fd --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/managers/layoutClasses/LayoutDebugHelper.as @@ -0,0 +1,240 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + +package com.flexcapacitor.managers.layoutClasses +{ + +import flash.display.DisplayObject; +import flash.display.DisplayObjectContainer; +import flash.display.Sprite; +import flash.events.Event; +import flash.geom.Point; +import flash.geom.Rectangle; +import flash.utils.Dictionary; +import flash.utils.getTimer; + +import mx.core.ILayoutElement; +import mx.managers.ISystemManager; +import mx.managers.LayoutManager; +import mx.managers.SystemManagerGlobals; + + +/** + * @private + * The LayoutDebugHelper class renders the layout bounds for the most + * recently validated visual items. + * + * Adapted from import mx.managers.layoutClasses.LayoutDebugHelper; + */ +public class LayoutDebugHelper extends Sprite { + //include "../../core/Version.as"; + + //-------------------------------------------------------------------------- + // + // Constructor + // + //-------------------------------------------------------------------------- + + /** + * Constructor. + * + * @langversion 3.0 + * @playerversion Flash 9 + * @playerversion AIR 1.1 + * @productversion Flex 3 + */ + public function LayoutDebugHelper() { + super(); + activeInvalidations = new Dictionary(); + addEventListener("enterFrame", onEnterFrame); + + } + + /** + * @private + * The sole instance of this singleton class. + */ + private static var instance:LayoutDebugHelper; + + public static function getInstance():LayoutDebugHelper { + if (!instance) + instance = new LayoutDebugHelper(); + + return instance; + } + + public function enable():void { + if (!instance) { + instance = getInstance(); + } + + Object(instance).mouseEnabled = false; + var sm:ISystemManager = SystemManagerGlobals.topLevelSystemManagers[0] + sm.addChild(instance); + + // return instance; + } + + public function disable():void { + if (instance) { + var sm:ISystemManager = SystemManagerGlobals.topLevelSystemManagers[0] + var index:int = sm.getChildIndex(instance); + + if (index!=-1) { + sm.removeChildAt(index); + } + } + + // return instance; + } + + //-------------------------------------------------------------------------- + // + // Variables + // + //-------------------------------------------------------------------------- + + /** + * + */ + public static const highlightDelay:Number = 2500; + + /** + * @private + */ + public static const highlightColor:Number = 0xFF00; + + /** + * @private + */ + public var activeInvalidations:Dictionary; + + /** + * @private + */ + private var lastUpdate:Number = 0; + + //-------------------------------------------------------------------------- + // + // Methods + // + //-------------------------------------------------------------------------- + private static var _layoutDebugHelper:Boolean; + + /** + * @private + */ + public function addElement(item:ILayoutElement):void + { + activeInvalidations[item] = getTimer(); + } + + /** + * @private + */ + public function removeElement(item:ILayoutElement):void + { + activeInvalidations[item] = null; + delete activeInvalidations[item]; + } + + /** + * @private + */ + public function render():void + { + graphics.clear(); + for (var item:* in activeInvalidations) + { + var lifespan:Number = getTimer() - activeInvalidations[item]; + if (lifespan > highlightDelay) + { + removeElement(item); + } + else + { + var alpha:Number = 1.0 - (lifespan / highlightDelay); + + if (item.parent) + { + var w:Number = item.getLayoutBoundsWidth(true); + var h:Number = item.getLayoutBoundsHeight(true); + + var position:Point = new Point(); + position.x = item.getLayoutBoundsX(true); + position.y = item.getLayoutBoundsY(true); + position = item.parent.localToGlobal(position); + + graphics.lineStyle(2, highlightColor, alpha); + graphics.drawRect(position.x, position.y, w, h); + graphics.endFill(); + } + } + } + } + + /** + * Get a rectangle of the item + * */ + public function getRectangleBounds(item:Object, container:* = null):Rectangle { + + if (item && item.parent) { + var w:Number = item.getLayoutBoundsWidth(true); + var h:Number = item.getLayoutBoundsHeight(true); + + var position:Point = new Point(); + position.x = item.getLayoutBoundsX(true); + position.y = item.getLayoutBoundsY(true); + position = item.parent.localToGlobal(position); + + var rectangle:Rectangle = new Rectangle(); + + if (container && container is DisplayObjectContainer) { + var anotherPoint:Point = DisplayObjectContainer(container).globalToLocal(position); + rectangle.x = anotherPoint.x; + rectangle.y = anotherPoint.y; + } + else { + rectangle.x = position.x; + rectangle.y = position.y; + } + + rectangle.width = w; + rectangle.height = h; + + return rectangle; + } + + return null; + } + + /** + * @private + */ + public function onEnterFrame(e:Event):void + { + if (getTimer() - lastUpdate >= 100) + { + render(); + lastUpdate = getTimer(); + } + } +} + +} http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/model/AccessorMetaData.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/model/AccessorMetaData.as b/Radii8Library/src/com/flexcapacitor/model/AccessorMetaData.as new file mode 100644 index 0000000..aef2683 --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/model/AccessorMetaData.as @@ -0,0 +1,182 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// +package com.flexcapacitor.model { + + + /** + * Contains information on style metadata + * */ + public class AccessorMetaData extends MetaData { + + + public function AccessorMetaData(item:XML = null, target:* = null) { + if (item) unmarshall(item, target); + } + + /** + * Access type. Readonly, readwrite, writeonly. + * */ + public var access:String; + + /** + * Is property inspectable + * */ + public var inspectable:Boolean; + + + /** + * Import metadata XML Style node into this instance + * */ + override public function unmarshall(item:XML, target:* = null, getValue:Boolean = true):void { + super.unmarshall(item, target, getValue); + if (item==null) return; + var metadata:XMLList = item.metadata; + var args:XMLList; + var keyName:String; + var keyValue:String; + var propertyValue:*; + var dataname:String; + + access = item.@access; + + // loop through metadata objects + outerloop: + for each (var data:XML in metadata) { + dataname = data.@name; + args = data.arg; + + + // loop through arguments in each metadata + innerloop: + for each (var arg:XML in args) { + keyName = arg.@key; + keyValue = String(arg.@value); + + // get inspectable meta data + if (dataname=="Inspectable") { + inspectable = true; + + if (keyName=="arrayType") { + arrayType = keyValue; + continue innerloop; + } + + else if (keyName=="category") { + category = keyValue; + continue innerloop; + } + + else if (keyName=="defaultValue") { + defaultValue = keyValue; + continue innerloop; + } + + else if (keyName=="enumeration") { + enumeration = keyValue.split(","); + continue innerloop; + } + + else if (keyName=="environment") { + environment = keyValue; + continue innerloop; + } + + else if (keyName=="format") { + format = keyValue; + continue innerloop; + } + + else if (keyName=="minValue") { + minValue = int(keyValue); + continue innerloop; + } + + else if (keyName=="maxValue") { + maxValue = int(keyValue); + continue innerloop; + } + + else if (keyName=="theme") { + theme = keyValue; + continue innerloop; + } + + else if (keyName=="type") { + type = keyValue; + continue innerloop; + } + + else if (keyName=="verbose") { + verbose = keyValue=="1"; + continue innerloop; + } + + } + + else if (dataname=="__go_to_definition_help") { + if (keyName=="pos") { + if (helpPositions==null) helpPositions = []; + helpPositions.push(keyValue); + } + } + + else if (dataname=="ArrayElementType") { + if (keyName=="") { + arrayElementType = keyValue; + } + } + + else if (dataname=="Bindable") { + if (keyName=="") { + if (bindable==null) bindable = []; + bindable.push(keyValue); + } + } + + else if (dataname=="PercentProxy") { + if (keyName=="") { + if (percentProxy==null) percentProxy = []; + percentProxy.push(keyValue); + } + } + else if (dataname=="SkinPart") { + if (keyName=="") { + if (skinPart==null) skinPart = []; + skinPart.push(keyValue); + } + } + + } + + } + + if (access!="writeonly") { + value = target && name in target ? target[name] : undefined; + + textValue = value===undefined || value==null ? "": "" + value; + + if (!getValue) value = undefined; + } + + raw = item.toXMLString(); + + } + + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/model/AttachmentData.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/model/AttachmentData.as b/Radii8Library/src/com/flexcapacitor/model/AttachmentData.as new file mode 100644 index 0000000..7d28e3c --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/model/AttachmentData.as @@ -0,0 +1,40 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + +package com.flexcapacitor.model { + import flash.events.IEventDispatcher; + + /** + * + * */ + public class AttachmentData extends DocumentData { + + /** + * Constructor + * */ + public function AttachmentData(target:IEventDispatcher=null) { + super(target); + } + + /** + * Mime type + * */ + public var mimeType:String; + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/model/Device.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/model/Device.as b/Radii8Library/src/com/flexcapacitor/model/Device.as new file mode 100644 index 0000000..ec4cf13 --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/model/Device.as @@ -0,0 +1,49 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + +package com.flexcapacitor.model { + + /** + * Contains information about a device screen size + * */ + public class Device extends Size { + + + public function Device(width:String="0", height:String="0", dpi:int=0) + { + super(width, height, dpi); + } + + + public var resolutionHeight:int; + + public var resolutionWidth:int; + + public var usableWidthPortrait:int; + + public var usableHeightPortrait:int; + + public var usableWidthLandscape:int; + + public var usableHeightLandscape:int; + + public var platformID:String; + + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/model/Document.as ---------------------------------------------------------------------- diff --git a/Radii8Library/src/com/flexcapacitor/model/Document.as b/Radii8Library/src/com/flexcapacitor/model/Document.as new file mode 100644 index 0000000..826316d --- /dev/null +++ b/Radii8Library/src/com/flexcapacitor/model/Document.as @@ -0,0 +1,521 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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. +// +//////////////////////////////////////////////////////////////////////////////// + +package com.flexcapacitor.model { + + import com.flexcapacitor.controller.Radiate; + import com.flexcapacitor.utils.DisplayObjectUtils; + import com.flexcapacitor.utils.MXMLDocumentImporter; + import com.flexcapacitor.utils.XMLUtils; + import com.flexcapacitor.utils.supportClasses.ComponentDescription; + + import flash.display.DisplayObject; + import flash.events.IEventDispatcher; + import flash.utils.Dictionary; + + import mx.collections.ArrayCollection; + import mx.core.IVisualElement; + import mx.utils.UIDUtil; + + + + /** + * Document model + * */ + public class Document extends DocumentData implements IDocument, ISavable { + + /** + * Constructor + * */ + public function Document(target:IEventDispatcher=null) { + super(target); + uid = UIDUtil.createUID(); + } + + + /** + * URL to get code + * */ + public var URL:String; + + /** + * Dots per inch + * */ + public var DPI:int; + + /** + * Width of document + * */ + public var width:String; + + /** + * Height of document + * */ + public var height:String; + + private var _scale:Number = 1; + + /** + * Scale of document + * */ + public function get scale():Number { + return _scale; + } + + /** + * Scale of document + * */ + public function set scale(value:Number):void { + _scale = value; + + if (instance) { + DisplayObject(instance).scaleX = value; + DisplayObject(instance).scaleY = value; + } + } + + private var _projectID:String; + + /** + * ID of project. Can be part of multiple projects so we may need to change this. + * */ + public function get projectID():String { + return _projectID; + } + + /** + * @private + */ + public function set projectID(value:String):void { + _projectID = value; + } + + private var _project:IProject; + + /** + * Reference to parent project + * */ + public function get project():IProject { + return _project; + } + + /** + * @private + */ + public function set project(value:IProject):void { + _project = value; + } + + private var _containerType:Class; + + /** + * @inheritDoc + * */ + public function get containerType():Class { + return _containerType; + } + + public function set containerType(value:Class):void { + _containerType = value; + } + + private var _containerTypeName:String; + + /** + * @inheritDoc + * */ + public function get containerTypeName():String { + return _containerTypeName; + } + + public function set containerTypeName(value:String):void { + _containerTypeName = value; + } + + + /** + * @private + * */ + private var _componentDescription:ComponentDescription; + + /** + * Reference to the component description + * */ + public function get componentDescription():ComponentDescription { + if (!_componentDescription) { + + if (instance) { + _componentDescription = DisplayObjectUtils.getComponentDisplayList2(instance, null, 0, descriptionsDictionary); + } + } + // com.flexcapacitor.utils.supportClasses.ComponentDescription (@1234c3539) + _componentDescription = DisplayObjectUtils.getComponentDisplayList2(instance, null, 0, descriptionsDictionary); + + return _componentDescription; + } + + /** + * @private + */ + public function set componentDescription(value:ComponentDescription):void { + _componentDescription = value; + } + + + private var _instance:Object; + + /** + * Instance of document + * */ + public function get instance():Object { + return _instance; + } + + /** + * @private + */ + public function set instance(value:Object):void { + _instance = value; + } + + /** + * @private + * */ + private var _history:ArrayCollection = new ArrayCollection(); + + /** + * History + * */ + public function get history():ArrayCollection { + return _history; + } + + /** + * @private + */ + [Bindable] + public function set history(value:ArrayCollection):void { + _history = value; + } + + + private var _historyIndex:int = -1; + + /** + * Index of current event in history + * */ + public function get historyIndex():int { + return _historyIndex; + } + + /** + * @private + */ + [Bindable] + public function set historyIndex(value:int):void { + _historyIndex = value; + + if (value != lastSavedHistoryIndex) { + isChanged = true; + } + else { + isChanged = false; + } + } + + + private var _lastSavedHistoryIndex:int = -1; + + /** + * Index of event in history when the document was last saved + * */ + public function get lastSavedHistoryIndex():int { + return _lastSavedHistoryIndex; + } + + /** + * @private + */ + [Bindable] + public function set lastSavedHistoryIndex(value:int):void { + _lastSavedHistoryIndex = value; + + isChanged = historyIndex!=value; + } + + private var _isPreviewOpen:Boolean; + + /** + * @inheritDoc + * */ + public function get isPreviewOpen():Boolean { + return _isPreviewOpen; + } + + public function set isPreviewOpen(value:Boolean):void { + _isPreviewOpen = value; + } + + + private var _descriptionsDictionary:Dictionary = new Dictionary(true); + + /** + * Reference to component description for each component instance + * */ + public function get descriptionsDictionary():Dictionary { + return _descriptionsDictionary; + } + + /** + * @private + */ + public function set descriptionsDictionary(value:Dictionary):void { + _descriptionsDictionary = value; + } + + private var _documentData:IDocumentData; + + /** + * Reference to the last saved data that was loaded in + * */ + public function get documentData():IDocumentData { + return _documentData; + } + + /** + * @private + */ + public function set documentData(value:IDocumentData):void { + _documentData = value; + } + + /** + * @inheritDoc + * */ + override public function close():void { + super.close(); + //Radiate.log.info("Close:" + source); + clearHistory(); + } + + /** + * Removes the history events + * */ + public function clearHistory():void { + //history.refresh(); + history.removeAll(); + historyIndex = -1; + isChanged = false; + } + + /** + * Save + * */ + override public function save(locations:String = REMOTE_LOCATION, options:Object = null):Boolean { + var savedLocallyResult:Boolean = super.save(locations, options); + + lastSavedHistoryIndex = historyIndex; + + return savedLocallyResult; + } + + + + /** + * + * */ + override public function toString():String { + var output:String = exporter.export(this); + + return output; + } + + /** + * Exports to XML object + * */ + override public function toXML(representation:Boolean = false):XML { + var output:XML = exporter.exportXML(this, representation); + + return output; + } + + /** + * Exports an XML string. + * If reference is true then just returns just enough basic information to locate it. + * */ + /*override public function toXMLString(reference:Boolean = false):String { + var output:String; + + output = exporter.exportXMLString(this, reference); + + return output; + }*/ + + /** + * Exports an MXML string. + * If reference is true then just enough basic information to locate it. + * */ + /*override public function toMXMLString(reference:Boolean = false):String { + var output:String; + + output = internalExporter.exportXMLString(this, reference); + + return output; + + }*/ + + /** + * Exports a string + * */ + /*public function export(exporter:IDocumentExporter):String { + var output:String = exporter.exportXMLString(this); + + return output; + + }*/ + + /** + * Get basic document data + * */ + override public function unmarshall(data:Object):void { + super.unmarshall(data); + + if (data is IDocumentData) { + //documentData = IDocumentData(data);// this and + //IDocumentData(data).document = this;// this should be removed just have references somewhere + } + } + + /** + * Get source code for document. + * Exporters may not work if the document is not open. + * */ + override public function getSource(target:Object = null):String { + var value:String; + + if (isOpen) { + if (this.historyIndex==-1) { + //Radiate.log.info("Document history is empty!"); + } + + if (isChanged || source==null || source=="") { + value = internalExporter.export(this); + } + else if (source) { + value = source; + } + else if (originalSource) { + value = originalSource; + } + + /* + Radiate.log.info("is changed=" + isChanged); + Radiate.log.info("original source null=" + (originalSource==null)); + Radiate.log.info("history length=" + history.length); + Radiate.log.info("history index=" + historyIndex); + Radiate.log.info("instance stage=" + (instance?instance.stage:null)); + Radiate.log.info("date saved=" + dateSaved); + Radiate.log.info(value);*/ +/* Main Thread (Suspended) + com.flexcapacitor.model::Document/getSource + com.flexcapacitor.model::DocumentData/close + com.flexcapacitor.model::Document/close + com.flexcapacitor.controller::Radiate/closeDocument + com.flexcapacitor.controller::Radiate/closeProject + com.flexcapacitor.views.panels::ProjectInspector/closeProjectIcon_clickHandler + com.flexcapacitor.views.panels::ProjectInspector/__closeProjectIcon_click +*/ + return value; + + } + // return source; + return source; + } + + /** + * Parses the code and builds a document. + * If code is null and source is set then parses source. + * If parent is set then imports code to the parent. + * */ + public function parseSource(code:String = null, parent:IVisualElement = null):void { + var codeToParse:String = code ? code : source; + var currentChildren:XMLList; + var nodeName:String; + var child:XML; + var xml:XML; + var root:String; + var isValid:Boolean; + var rootNodeName:String = "RootWrapperNode"; + var updatedCode:String; + + isValid = XMLUtils.isValidXML(codeToParse); + + if (!isValid) { + root = '<'+rootNodeName+ ' xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx">'; + updatedCode = root + codeToParse + "</"+rootNodeName+">"; + + isValid = XMLUtils.isValidXML(updatedCode); + if (isValid) { + codeToParse = updatedCode; + } + } + + // check for valid XML + try { + xml = new XML(codeToParse); + } + catch (error:Error) { + Radiate.log.error("Could not parse code for document " + name + ". " + error.message); + } + + + if (xml) { + // loop through each item and create an instance + // and set the properties and styles on it + /*currentChildren = xml.children(); + while (child in currentChildren) { + nodeName = child.name(); + + }*/ + //Radiate.log.info("Importing document: " + name); + //var mxmlLoader:MXMLImporter = new MXMLImporter( "testWindow", new XML( inSource ), canvasHolder ); + var mxmlLoader:MXMLDocumentImporter; + var container:IVisualElement = parent ? parent as IVisualElement : instance as IVisualElement; + mxmlLoader = new MXMLDocumentImporter(this, "testWindow", xml, container); + + if (container) { + Radiate.getInstance().setTarget(container); + } + } + + + /*_toolTipChildren = new SystemChildrenList(this, + new QName(mx_internal, "topMostIndex"), + new QName(mx_internal, "toolTipIndex"));*/ + //return true; + } + + /** + * Resets the save status after loading a document + * */ + public function resetSaveStatus():void { + lastSavedHistoryIndex = historyIndex; + } + } +} \ No newline at end of file