You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2014/09/03 02:17:45 UTC
[12/30] Radii8 code base as accepted by IP Clearance
http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/views/Snapshot.mxml
----------------------------------------------------------------------
diff --git a/Radii8Library/src/com/flexcapacitor/views/Snapshot.mxml b/Radii8Library/src/com/flexcapacitor/views/Snapshot.mxml
new file mode 100644
index 0000000..66834bb
--- /dev/null
+++ b/Radii8Library/src/com/flexcapacitor/views/Snapshot.mxml
@@ -0,0 +1,200 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:s="library://ns.adobe.com/flex/spark"
+ xmlns:handlers="com.flexcapacitor.handlers.*"
+ xmlns:display="com.flexcapacitor.effects.display.*"
+ xmlns:bitmap="com.flexcapacitor.effects.bitmap.*"
+ xmlns:file="com.flexcapacitor.effects.file.*"
+ xmlns:core="com.flexcapacitor.effects.core.*"
+ xmlns:status="com.flexcapacitor.effects.status.*"
+ xmlns:popup="com.flexcapacitor.effects.popup.*"
+ xmlns:controls="com.flexcapacitor.controls.*"
+
+ creationComplete="group1_creationCompleteHandler(event)"
+ width="400"
+ height="300"
+ >
+
+ <fx:Script>
+ <![CDATA[
+ import com.flexcapacitor.controller.Radiate;
+ import com.flexcapacitor.events.RadiateEvent;
+ import com.flexcapacitor.utils.ClassUtils;
+
+ import mx.events.FlexEvent;
+ public var radiate:Radiate = Radiate.instance;
+
+ private var _target:DisplayObject;
+
+ [Bindable]
+ public function get target():DisplayObject {
+ return _target;
+ }
+
+ public function set target(value:DisplayObject):void {
+ _target = value as DisplayObject;
+
+ if (rasterize.bitmapData) {
+ rasterize.bitmapData.dispose();
+ rasterize.bitmapData = null;
+ }
+
+ if (target) {
+ fileName = ClassUtils.getClassNameOrID(target);
+ }
+ else {
+ fileName = "Screenshot";
+ }
+
+ }
+
+
+ protected function group1_creationCompleteHandler(event:FlexEvent):void {
+ radiate.addEventListener(RadiateEvent.TARGET_CHANGE, targetChangeHandler);
+
+ if (radiate.target) {
+ target = radiate.target as DisplayObject;
+ }
+
+
+ }
+
+
+ protected function targetChangeHandler(event:RadiateEvent):void {
+ target = event.selectedItem as DisplayObject;
+ }
+
+ protected function group1_pasteHandler(event:Event):void {
+ /*var clipboard:Clipboard = Clipboard.generalClipboard;
+ Radiate.log.info("Formats: " + clipboard.formats.join(","));
+ Radiate.log.info("PASTED: " + clipboard.getData(ClipboardFormats.TEXT_FORMAT));*/
+ /*var value:* = clipboard.getData(ClipboardFormats.BITMAP_FORMAT, ClipboardTransferMode.CLONE_ONLY);
+ var value1:* = clipboard.getData(ClipboardFormats.BITMAP_FORMAT, ClipboardTransferMode.CLONE_PREFERRED);
+ var value2:* = clipboard.getData(ClipboardFormats.BITMAP_FORMAT, ClipboardTransferMode.ORIGINAL_ONLY);
+ var value3:* = clipboard.getData(ClipboardFormats.BITMAP_FORMAT, ClipboardTransferMode.ORIGINAL_PREFERRED);*/
+ }
+
+ ]]>
+ </fx:Script>
+
+ <fx:Declarations>
+ <fx:String id="fileName">screenshot</fx:String>
+
+ <!-- TAKE SNAPSHOT -->
+ <handlers:EventHandler eventName="click"
+ target="{snapshotLabel}">
+
+ <display:Rasterize id="rasterize" target="{target}" source="{target}"
+ horizontalPadding="0" fillColor="#ff0000" absoluteBounds="true">
+ <display:invalidTargetEffect>
+ <status:ShowStatusMessage message="Select a target"/>
+ </display:invalidTargetEffect>
+ <display:successEffect>
+ <status:ShowStatusMessage message="Snapshot captured"/>
+ </display:successEffect>
+ <display:errorEffect>
+ <status:ShowStatusMessage message="An error occurred. {rasterize.errorEvent}"/>
+ </display:errorEffect>
+ </display:Rasterize>
+
+
+ </handlers:EventHandler>
+
+
+ <!-- EXPORT SNAPSHOT -->
+ <handlers:EventHandler eventName="click"
+ target="{exportLabel}">
+
+ <bitmap:EncodeToPNG data="{rasterize.bitmapData}" />
+
+ <core:CopyPreviousToNext sourcePropertyName="byteArray" />
+
+ <file:PromptSaveAs fileName="{fileName}"
+ fileExtension="png"
+ targetAncestor="{this}"/>
+
+ </handlers:EventHandler>
+
+ <!-- PREVIEW -->
+ <handlers:EventHandler eventName="click"
+ target="{preview}">
+ <popup:OpenPopUp id="openPopUp"
+ modalDuration="250"
+ showDropShadow="true"
+ popUpType="{ImagePreview}"
+ closeOnMouseDownInside="true"
+ data="{rasterize.bitmapData}"/>
+ </handlers:EventHandler>
+
+
+ <fx:Component className="ImagePreview">
+ <s:ItemRenderer autoDrawBackground="false">
+ <s:Rect width="100%" height="100%">
+ <s:fill>
+ <s:SolidColor color="#ffffff"/>
+ </s:fill>
+ </s:Rect>
+ <s:Image source="{data}" top="5" right="5" left="5" bottom="5" />
+ </s:ItemRenderer>
+ </fx:Component>
+ </fx:Declarations>
+
+ <s:HGroup width="100%" typographicCase="uppercase" left="4" right="4">
+ <s:Label id="snapshotLabel"
+ text="Capture Image"
+ fontSize="10"
+ buttonMode="true"
+ textAlign="center"
+ fontWeight="bold"
+ minWidth="{snapshotLabel.height}"
+ backgroundColor="#484848"
+ color="#eeeeee"
+ paddingBottom="4" paddingLeft="4"
+ paddingRight="4" paddingTop="4"/>
+
+ <s:Label id="exportLabel"
+ text="Export"
+ buttonMode="true"
+ fontSize="10"
+ fontWeight="bold"
+ textAlign="center"
+ backgroundColor="#484848"
+ color="#eeeeee"
+ paddingBottom="4" paddingLeft="4"
+ paddingRight="4" paddingTop="4"
+ includeInLayout="{Boolean(rasterize.bitmapData)}"
+ visible="{Boolean(rasterize.bitmapData)}"
+ minWidth="{exportLabel.height}"
+ />
+
+ <s:Spacer width="100%" />
+
+ <!--<s:TextInput paste="group1_pasteHandler(event)"/>-->
+ <controls:ImageButton id="preview"
+ source="assets/images/components/Image.png"
+ includeInLayout="{Boolean(rasterize.bitmapData)}"
+ visible="{Boolean(rasterize.bitmapData)}"
+ />
+<!-- mouseUpEffect="{openPopUp}"-->
+
+ </s:HGroup>
+
+</s:Group>
http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/views/Statistics.mxml
----------------------------------------------------------------------
diff --git a/Radii8Library/src/com/flexcapacitor/views/Statistics.mxml b/Radii8Library/src/com/flexcapacitor/views/Statistics.mxml
new file mode 100644
index 0000000..6d1d3bc
--- /dev/null
+++ b/Radii8Library/src/com/flexcapacitor/views/Statistics.mxml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Group xmlns:controls="com.flexcapacitor.controls.*"
+ xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:mx="library://ns.adobe.com/flex/mx"
+ xmlns:s="library://ns.adobe.com/flex/spark"
+ width="100%"
+ creationComplete="group1_creationCompleteHandler(event)"
+ >
+
+ <!-- Width and height should be 100% -->
+
+ <!--- If you change the current target then dispatch a selection event with the new target assigned to it -->
+ <fx:Metadata>
+ [Event(name="change", type="com.flexcapacitor.events.InspectorEvent")]
+ </fx:Metadata>
+
+ <fx:Script>
+ <![CDATA[
+ import com.flexcapacitor.events.InspectorEvent;
+
+ import mx.core.UIComponent;
+ import mx.events.FlexEvent;
+
+
+
+ private var _target:Object;
+
+ public function get target():Object {
+ return _target;
+ }
+
+ /**
+ * This is set automatically when a new target is selected
+ * This can be any type. You must disable this component if the
+ * type is not what you can process.
+ * */
+ [Bindable]
+ public function set target(value:Object):void {
+
+ // the target
+ if (value == null) {
+ _target = null;
+ enabled = false;
+ return;
+ }
+ else {
+ enabled = true;
+ }
+
+ _target = value;
+ }
+
+ /**
+ * Notify host components when we change the target
+ * */
+ public function changeTarget(newTarget:Object):void {
+ var selectionChangeEvent:InspectorEvent = new InspectorEvent(InspectorEvent.CHANGE);
+ selectionChangeEvent.targetItem = newTarget;
+ dispatchEvent(selectionChangeEvent);
+ }
+
+
+ protected function group1_showHandler(event:FlexEvent):void {
+ trace("statistics panel. type = " + event.type);
+ }
+
+
+ //public var stats:Stats;
+
+ /// UPDATE NEED TO ADD STATS IN LATER AS IT"S AN EXTERNAL CLASS
+ //public var stats:Stats;
+ public var stats:Object;
+
+ protected function group1_creationCompleteHandler(event:FlexEvent):void {
+ stats = new Object();
+ stats.width = container.width;
+ stats.height = container.height;
+ //container.addChild(stats);
+ container.addChild(stats as DisplayObject);
+ // UPDATE NEED TO ADD STATS IN LATER AS IT"S AN EXTERNAL CLASS
+ }
+
+ override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
+ super.updateDisplayList(unscaledWidth, unscaledHeight);
+
+ stats.WIDTH = unscaledWidth;
+ stats.HEIGHT = unscaledHeight;
+ }
+
+
+ ]]>
+ </fx:Script>
+
+ <fx:Declarations>
+ <!-- Place non-visual elements (e.g., services, value objects) here -->
+ </fx:Declarations>
+
+ <mx:UIComponent id="container"
+ height="100%" width="100%"/>
+
+
+</s:Group>
http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/views/Tools.mxml
----------------------------------------------------------------------
diff --git a/Radii8Library/src/com/flexcapacitor/views/Tools.mxml b/Radii8Library/src/com/flexcapacitor/views/Tools.mxml
new file mode 100644
index 0000000..fc35358
--- /dev/null
+++ b/Radii8Library/src/com/flexcapacitor/views/Tools.mxml
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:s="library://ns.adobe.com/flex/spark"
+ xmlns:mx="library://ns.adobe.com/flex/mx"
+ width="100" height="24"
+
+ creationComplete="group1_creationCompleteHandler(event)">
+
+
+ <!--
+
+ -->
+ <fx:Script>
+ <![CDATA[
+ import com.flexcapacitor.controller.Radiate;
+ import com.flexcapacitor.events.RadiateEvent;
+ import com.flexcapacitor.tools.ITool;
+ import com.flexcapacitor.utils.supportClasses.ComponentDescription;
+
+ import mx.events.FlexEvent;
+
+ import spark.events.IndexChangeEvent;
+
+
+ /**
+ *
+ * */
+ private var radiate:Radiate;
+
+ /**
+ *
+ * */
+ public var selectedTool:ITool;
+
+ /**
+ *
+ * */
+ protected function group1_creationCompleteHandler(event:FlexEvent):void {
+ radiate = Radiate.getInstance();
+ radiate.addEventListener(RadiateEvent.TOOL_CHANGE, toolChangeHandler);
+ radiate.addEventListener(RadiateEvent.TOOLS_UPDATED, toolsUpdatedHandler);
+
+ tools.dataProvider = Radiate.toolsDescriptions;
+
+ if (radiate.selectedTool==null) {
+ tools.selectedIndex = 0;
+ updateTool();
+ }
+ }
+
+ /**
+ *
+ * */
+ protected function toolChangeHandler(event:RadiateEvent):void
+ {
+ selectedTool = event.selectedItem as ITool;
+ }
+
+ /**
+ *
+ * */
+ protected function toolsUpdatedHandler(event:RadiateEvent):void
+ {
+ tools.dataProvider = Radiate.toolsDescriptions;
+ }
+
+ /**
+ *
+ * */
+ protected function tools_updateCompleteHandler(event:FlexEvent):void {
+ explicitHeight = tools.measuredHeight;
+ }
+
+ /**
+ * Update tool.
+ * */
+ protected function tools_changeHandler(event:IndexChangeEvent):void {
+ updateTool();
+ }
+
+ /**
+ * Update the tool
+ * */
+ public function updateTool():void {
+ var item:ComponentDescription;
+
+ radiate = Radiate.getInstance();
+
+ item = tools.selectedItem as ComponentDescription;
+
+ if (item) {
+ radiate.setTool(item.instance as ITool);
+ }
+ }
+
+ ]]>
+ </fx:Script>
+
+ <s:List id="tools"
+ width="100%"
+ height="24"
+ minHeight="24"
+ labelField="name"
+ dragEnabled="false"
+ borderVisible="false"
+ interactionMode="mouse"
+ updateComplete="tools_updateCompleteHandler(event)"
+ change="tools_changeHandler(event)"
+ selectionColor="#C9C9C9"
+ rollOverColor="#D9D9D9"
+ >
+ <s:layout>
+ <s:TileLayout horizontalGap="2" verticalGap="2" />
+ </s:layout>
+
+ <s:itemRenderer>
+ <fx:Component>
+ <s:ItemRenderer width="24" height="24" minHeight="22" >
+ <fx:Script>
+ <![CDATA[
+ import com.flexcapacitor.controller.Radiate;
+ import com.flexcapacitor.utils.supportClasses.ComponentDescription;
+
+ override public function set data(value:Object):void {
+ super.data = value;
+ var definition:ComponentDescription = value as ComponentDescription;
+ var path:String;
+
+
+ if (definition) {
+ if (definition.icon) {
+ iconImage.source = definition.icon;
+ }
+ else {
+ path = "assets/images/tools/" + definition.name + ".png";
+ iconImage.source = path;
+ }
+ }
+ }
+
+ protected function iconImage_ioErrorHandler(event:IOErrorEvent):void {
+ //iconImage.source = "assets/images/components/BorderContainer.png";
+ }
+
+
+ ]]>
+ </fx:Script>
+
+ <!--<s:Image id="iconImage"
+ contentLoader="{Radiate.contentCache}"
+ ioError="iconImage_ioErrorHandler(event)"
+ width="16" height="16"/>-->
+ <s:HGroup horizontalAlign="center" verticalAlign="middle">
+ <s:Image id="iconImage"
+ contentLoader="{Radiate.contentCache}"
+ ioError="iconImage_ioErrorHandler(event)"
+ />
+ </s:HGroup>
+
+ </s:ItemRenderer>
+ </fx:Component>
+
+ </s:itemRenderer>
+ </s:List>
+
+</s:Group>
http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/views/ZoomInspector.mxml
----------------------------------------------------------------------
diff --git a/Radii8Library/src/com/flexcapacitor/views/ZoomInspector.mxml b/Radii8Library/src/com/flexcapacitor/views/ZoomInspector.mxml
new file mode 100644
index 0000000..79efc56
--- /dev/null
+++ b/Radii8Library/src/com/flexcapacitor/views/ZoomInspector.mxml
@@ -0,0 +1,215 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Group xmlns:controls="com.flexcapacitor.graphics.*"
+ xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:s="library://ns.adobe.com/flex/spark"
+ xmlns:filters="com.flexcapacitor.filters.*"
+ xmlns:c="com.flexcapacitor.controls.*"
+
+ creationComplete="group1_creationCompleteHandler(event)"
+ >
+
+ <fx:Script>
+ <![CDATA[
+ import com.flexcapacitor.controller.Radiate;
+ import com.flexcapacitor.events.RadiateEvent;
+ import com.flexcapacitor.tools.ITool;
+ import com.flexcapacitor.tools.Zoom;
+ import com.flexcapacitor.utils.supportClasses.ComponentDescription;
+
+
+ import mx.events.FlexEvent;
+
+ import spark.events.IndexChangeEvent;
+
+ public var radiate:Radiate;
+
+ public var zoomTool:Zoom;
+
+ public var toolDescription:ComponentDescription;
+
+ /**
+ * Shows the show actual size button
+ * */
+ [Bindable]
+ public var showActualSize:Boolean = true;
+
+ protected function group1_creationCompleteHandler(event:FlexEvent):void {
+ radiate = Radiate.getInstance();
+
+ radiate.addEventListener(RadiateEvent.SCALE_CHANGE, scaleChangedHandler, false, 0, true);
+ radiate.addEventListener(RadiateEvent.DOCUMENT_CHANGE, documentChangeHandler, false, 0, true);
+
+ toolDescription = radiate.getToolByType(Zoom);
+
+ zoomTool = toolDescription.instance as Zoom;
+
+
+ // temp to get reference
+ //if (!tool) tool = new Zoom();
+
+ updateTool(zoomTool);
+ }
+
+ /**
+ * Update UI components to tool value
+ * */
+ public function updateTool(tool:ITool):void {
+ var zoomValue:Number;
+ zoomValue = zoomTool.getScale();
+
+ updateZoomInComboBox(zoomValue);
+ }
+
+ /**
+ * Zoom combo box change handler. Update zoom level.
+ * */
+ protected function zoomComboBox_changeHandler(event:IndexChangeEvent):void {
+
+ zoomTool.setScale(parseInt(zoomComboBox.selectedItem)/100);
+ }
+
+ /**
+ *
+ * */
+ protected function actualSize_clickHandler(event:MouseEvent):void {
+
+ if (zoomTool) {
+ zoomTool.restoreDefaultScale();
+ zoomComboBox.selectedItem = "100%";
+ }
+ }
+
+ /**
+ * Scale changed
+ * */
+ protected function scaleChangedHandler(event:RadiateEvent):void {
+ var zoomValue:Number;
+ var zoomString:String;
+
+ zoomValue = zoomTool.getScale();
+
+ updateZoomInComboBox(zoomValue);
+ }
+
+ /**
+ * Format zoom value nicely.
+ * */
+ public function updateZoomInComboBox(zoomValue:Number):void {
+ var zoomString:String;
+
+ if (!isNaN(zoomValue)) {
+
+ if (String(zoomValue*100).indexOf(".")!=-1) {
+ zoomString = Number(zoomValue*100).toFixed(1) + "%";
+ }
+ else {
+ zoomString = Number(zoomValue*100) + "%";
+ }
+
+ if (zoomValue==1) {
+ zoomComboBox.selectedItem = "100%";
+ }
+ else {
+ zoomComboBox.selectedItem = zoomString;
+ }
+ }
+ }
+
+ /**
+ * Document changed
+ * */
+ protected function documentChangeHandler(event:RadiateEvent):void {
+ // since we use this independently of the tool being selected we need to make sure
+ // the target application is set
+ // we'll move this later
+ var zoomValue:Number = zoomTool.getScale();
+
+ updateZoomInComboBox(zoomValue);
+ }
+
+ /**
+ * Restore to 100%
+ * */
+ protected function zoomComboBox_doubleClickHandler(event:MouseEvent):void {
+
+ if (zoomTool) {
+ zoomTool.restoreDefaultScale();
+ zoomComboBox.selectedItem = "100%";
+ }
+ }
+
+ ]]>
+ </fx:Script>
+
+ <s:layout>
+ <s:HorizontalLayout paddingLeft="4" />
+ </s:layout>
+
+ <!--<s:CheckBox label="Scrub Zoom" />-->
+ <c:ImageButton id="actualSizeButton"
+ visible="{showActualSize}"
+ includeInLayout="{showActualSize}"
+ source="{Radii8LibraryAssets.actualSize}"
+ toolTip="Actual"
+ click="actualSize_clickHandler(event)"
+ height="100%"
+ />
+
+ <!--<s:Button id="fitSize" label="Fit Size"
+ visible="{showActualSize}"
+ includeInLayout="{showActualSize}"
+ click="actualSize_clickHandler(event)"/>-->
+
+ <s:ComboBox id="zoomComboBox"
+ width="80"
+ height="100%"
+ focusAlpha="0"
+ selectedIndex="8"
+ change="zoomComboBox_changeHandler(event)"
+ openOnInput="true" arrowKeysWrapFocus="true"
+ doubleClickEnabled="true"
+ doubleClick="zoomComboBox_doubleClickHandler(event)"
+ >
+ <s:layout>
+ <s:VerticalLayout gap="0"
+ horizontalAlign="contentJustify"
+ requestedRowCount="10" />
+ </s:layout>
+ <s:dataProvider>
+ <s:ArrayList>
+ <fx:String>600%</fx:String>
+ <fx:String>500%</fx:String>
+ <fx:String>400%</fx:String>
+ <fx:String>300%</fx:String>
+ <fx:String>200%</fx:String>
+ <fx:String>175%</fx:String>
+ <fx:String>150%</fx:String>
+ <fx:String>125%</fx:String>
+ <fx:String>100%</fx:String>
+ <fx:String>75%</fx:String>
+ <fx:String>50%</fx:String>
+ <fx:String>25%</fx:String>
+ <fx:String>10%</fx:String>
+ </s:ArrayList>
+ </s:dataProvider>
+ </s:ComboBox>
+
+</s:Group>
http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/views/editors/PropertyGridEditor.mxml
----------------------------------------------------------------------
diff --git a/Radii8Library/src/com/flexcapacitor/views/editors/PropertyGridEditor.mxml b/Radii8Library/src/com/flexcapacitor/views/editors/PropertyGridEditor.mxml
new file mode 100644
index 0000000..fa0cd34
--- /dev/null
+++ b/Radii8Library/src/com/flexcapacitor/views/editors/PropertyGridEditor.mxml
@@ -0,0 +1,41 @@
+<?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:DefaultGridItemEditor xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:s="library://ns.adobe.com/flex/spark"
+ xmlns:mx="library://ns.adobe.com/flex/mx">
+
+ <fx:Script>
+ <![CDATA[
+
+ override public function set value(newValue:Object):void {
+ textArea.text = newValue as String;
+ }
+
+ override public function get value():Object {
+ return textArea.text;
+ }
+
+ override public function setFocus():void {
+ textArea.setFocus();
+ }
+ ]]>
+ </fx:Script>
+
+</s:DefaultGridItemEditor>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/views/inspectors/BasicBackgroundStyles.mxml
----------------------------------------------------------------------
diff --git a/Radii8Library/src/com/flexcapacitor/views/inspectors/BasicBackgroundStyles.mxml b/Radii8Library/src/com/flexcapacitor/views/inspectors/BasicBackgroundStyles.mxml
new file mode 100644
index 0000000..8b8601a
--- /dev/null
+++ b/Radii8Library/src/com/flexcapacitor/views/inspectors/BasicBackgroundStyles.mxml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:s="library://ns.adobe.com/flex/spark"
+ xmlns:mx="library://ns.adobe.com/flex/mx"
+ xmlns:renderers="com.flexcapacitor.views.renderers.*"
+
+ implements="com.flexcapacitor.views.IInspector"
+ styleName="inspectablePanel">
+
+ <fx:Script>
+ <![CDATA[
+ import com.flexcapacitor.controller.Radiate;
+ import com.flexcapacitor.events.RadiateEvent;
+ import com.flexcapacitor.model.StyleMetaData;
+ import com.flexcapacitor.utils.ClassUtils;
+
+ public var radiate:Radiate;
+ public var target:Object;
+ public var data:Object;
+
+ public function activate():void {
+ radiate = Radiate.getInstance();
+
+ radiate.addEventListener(RadiateEvent.TARGET_CHANGE, handleTargetChange, false, 0, true);
+ radiate.addEventListener(RadiateEvent.PROPERTY_CHANGED, propertyChangeHandler, false, 0, true);
+
+ if (radiate.target) {
+ target = radiate.target;
+ }
+
+ update();
+ }
+
+ public function deactivate():void {
+ radiate.removeEventListener(RadiateEvent.TARGET_CHANGE, handleTargetChange);
+ radiate.removeEventListener(RadiateEvent.PROPERTY_CHANGED, propertyChangeHandler);
+ }
+
+ protected function handleTargetChange(event:RadiateEvent):void {
+ if (target!=event.selectedItem) {
+ target = event.selectedItem;
+ update();
+ }
+ }
+
+ public function update():void {
+ var backgroundColor:StyleMetaData = ClassUtils.getMetaDataOfStyle(target, "backgroundColor");
+ var backgroundAlpha:StyleMetaData = ClassUtils.getMetaDataOfStyle(target, "backgroundAlpha");
+
+ if (!backgroundColor) {
+ backgroundColor = ClassUtils.getMetaDataOfStyle(target, "contentBackgroundColor");
+ }
+
+ if (!backgroundAlpha) {
+ backgroundAlpha = ClassUtils.getMetaDataOfStyle(target, "contentBackgroundAlpha");
+ }
+
+ if (backgroundColor) {
+ backgroundColorRenderer.data = backgroundColor;
+ }
+
+ if (backgroundAlpha) {
+ backgroundAlphaRenderer.data = backgroundAlpha;
+ }
+ }
+
+ protected function propertyChangeHandler(event:RadiateEvent):void {
+ callLater(update);
+ }
+
+ ]]>
+ </fx:Script>
+
+ <s:layout>
+ <s:VerticalLayout />
+ </s:layout>
+
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Background Color" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:ColorPickerRenderer id="backgroundColorRenderer" height="24" includeCopyIcon="false"/>
+ </s:HGroup>
+
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Background Alpha" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:NumberRenderer id="backgroundAlphaRenderer" height="24" />
+ </s:HGroup>
+</s:Group>
http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/views/inspectors/BorderStyles.mxml
----------------------------------------------------------------------
diff --git a/Radii8Library/src/com/flexcapacitor/views/inspectors/BorderStyles.mxml b/Radii8Library/src/com/flexcapacitor/views/inspectors/BorderStyles.mxml
new file mode 100644
index 0000000..a2f55f7
--- /dev/null
+++ b/Radii8Library/src/com/flexcapacitor/views/inspectors/BorderStyles.mxml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:s="library://ns.adobe.com/flex/spark"
+ xmlns:mx="library://ns.adobe.com/flex/mx"
+ xmlns:renderers="com.flexcapacitor.views.renderers.*"
+ xmlns:local="*"
+
+ implements="com.flexcapacitor.views.IInspector"
+ styleName="inspectablePanel"
+ >
+ <!--
+
+ ArgumentError: Error #2004: One of the parameters is invalid.
+ be sure to add the style styleName="inspectablePanel"
+
+ -->
+ <fx:Script>
+ <![CDATA[
+ import com.flexcapacitor.controller.Radiate;
+ import com.flexcapacitor.events.RadiateEvent;
+ import com.flexcapacitor.model.StyleMetaData;
+ import com.flexcapacitor.utils.ClassUtils;
+
+ public var radiate:Radiate;
+ public var target:Object;
+ public var data:Object;
+
+ public function activate():void {
+ radiate = Radiate.getInstance();
+
+ radiate.addEventListener(RadiateEvent.TARGET_CHANGE, handleTargetChange, false, 0, true);
+ radiate.addEventListener(RadiateEvent.PROPERTY_CHANGED, propertyChangeHandler, false, 0, true);
+
+ if (radiate.target) {
+ target = radiate.target;
+ }
+
+ update();
+ }
+
+ public function deactivate():void {
+ radiate.removeEventListener(RadiateEvent.TARGET_CHANGE, handleTargetChange);
+ radiate.removeEventListener(RadiateEvent.PROPERTY_CHANGED, propertyChangeHandler);
+ }
+
+ protected function handleTargetChange(event:RadiateEvent):void {
+ if (target!=event.selectedItem) {
+ target = event.selectedItem;
+ update();
+ }
+ }
+
+ public function update():void {
+ var cornerRadius:StyleMetaData = ClassUtils.getMetaDataOfStyle(target, "cornerRadius");
+ borderWeightRenderer.data = ClassUtils.getMetaDataOfStyle(target, "borderWeight");
+ borderColorRenderer.data = ClassUtils.getMetaDataOfStyle(target, "borderColor");
+ borderAlphaRenderer.data = ClassUtils.getMetaDataOfStyle(target, "borderAlpha");
+
+
+ if (cornerRadius) {
+ cornerRadiusRenderer.data = cornerRadius;
+ }
+ }
+
+ protected function propertyChangeHandler(event:RadiateEvent):void {
+ callLater(update);
+ }
+ ]]>
+ </fx:Script>
+
+ <fx:Declarations>
+
+ </fx:Declarations>
+
+ <s:layout>
+ <s:VerticalLayout />
+ </s:layout>
+
+
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Corner Radius" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:NumberRenderer id="cornerRadiusRenderer" height="24" />
+ </s:HGroup>
+
+
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Border Weight" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:NumberRenderer id="borderWeightRenderer" height="24" />
+ </s:HGroup>
+
+
+
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Border Alpha" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:NumberRenderer id="borderAlphaRenderer" height="24" />
+ </s:HGroup>
+
+
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Border Color" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:ColorPickerRenderer id="borderColorRenderer" height="24" includeCopyIcon="false"/>
+ </s:HGroup>
+
+</s:Group>
http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/views/inspectors/FontStyles.mxml
----------------------------------------------------------------------
diff --git a/Radii8Library/src/com/flexcapacitor/views/inspectors/FontStyles.mxml b/Radii8Library/src/com/flexcapacitor/views/inspectors/FontStyles.mxml
new file mode 100644
index 0000000..bae7a4d
--- /dev/null
+++ b/Radii8Library/src/com/flexcapacitor/views/inspectors/FontStyles.mxml
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:s="library://ns.adobe.com/flex/spark"
+ xmlns:mx="library://ns.adobe.com/flex/mx"
+ implements="com.flexcapacitor.views.IInspector"
+ xmlns:renderers="com.flexcapacitor.views.renderers.*"
+ styleName="inspectablePanel">
+
+ <fx:Script>
+ <![CDATA[
+ import com.flexcapacitor.controller.Radiate;
+ import com.flexcapacitor.events.RadiateEvent;
+ import com.flexcapacitor.model.StyleMetaData;
+ import com.flexcapacitor.utils.ClassUtils;
+
+
+ import mx.core.FlexGlobals;
+ import mx.core.UIComponent;
+ import mx.managers.ISystemManager;
+
+ public var radiate:Radiate;
+ public var target:Object;
+ public var data:Object;
+
+ public var fonts:Array;
+
+ public function activate():void {
+ radiate = Radiate.getInstance();
+
+ radiate.addEventListener(RadiateEvent.TARGET_CHANGE, handleTargetChange, false, 0, true);
+ radiate.addEventListener(RadiateEvent.PROPERTY_CHANGED, propertyChangeHandler, false, 0, true);
+
+ if (radiate.target) {
+ target = radiate.target;
+ }
+
+ update();
+ }
+
+ public function deactivate():void {
+ radiate.removeEventListener(RadiateEvent.TARGET_CHANGE, handleTargetChange);
+ radiate.removeEventListener(RadiateEvent.PROPERTY_CHANGED, propertyChangeHandler);
+ }
+
+ protected function handleTargetChange(event:RadiateEvent):void {
+ if (target!=event.selectedItem) {
+ target = event.selectedItem;
+ update();
+ }
+ }
+
+ protected function propertyChangeHandler(event:RadiateEvent):void {
+ callLater(update);
+ }
+
+ public function update():void {
+ var fontFamilyStyle:StyleMetaData = ClassUtils.getMetaDataOfStyle(target, "fontFamily"); // font
+ var fontSizeStyle:StyleMetaData = ClassUtils.getMetaDataOfStyle(target, "fontSize"); // size
+ var fontWeightStyle:StyleMetaData = ClassUtils.getMetaDataOfStyle(target, "fontWeight"); // bold
+ var fontStyleStyle:StyleMetaData = ClassUtils.getMetaDataOfStyle(target, "fontStyle"); // italic
+ var textDecorationStyle:StyleMetaData = ClassUtils.getMetaDataOfStyle(target, "textDecoration"); // underline
+ var colorStyle:StyleMetaData = ClassUtils.getMetaDataOfStyle(target, "color"); // color
+
+ if (fonts==null) {
+ fonts = getFontInformationDetails(target);
+ }
+
+ fontFamilyStyle.enumeration = fonts;
+ //fontsRenderer.data = data;
+ fontsRenderer.data = fontFamilyStyle;
+ fontSizeRenderer.data = fontSizeStyle;
+ fontWeightRenderer.data = fontWeightStyle;
+ fontStyleRenderer.data = fontStyleStyle;
+ colorRenderer.data = colorStyle;
+ }
+
+
+
+ /**
+ * Gets details about the embedded fonts
+ * */
+ public function getFontInformationDetails(target:Object, showDeviceFontInformation:Boolean = true):Array {
+ var component:UIComponent = target as UIComponent;
+ var systemManager:ISystemManager = component ? component.systemManager : null;
+ var dictionary:Dictionary = new Dictionary(true);
+ var fontList:Array = Font.enumerateFonts(showDeviceFontInformation);
+ var length:int = fontList.length;
+ var output:String = "";
+ var fontObject:Object;
+ var paddedName:String;
+ var name:String;
+ var font:Font;
+
+
+ if (systemManager==null && FlexGlobals.topLevelApplication.systemManager) {
+ output += systemManager==null ? "Warning: Target system manager is null. Using FlexGlobals top level application system manager\n" : "";
+ systemManager = FlexGlobals.topLevelApplication.systemManager;
+ }
+ else if (systemManager==null) {
+ output += "Could not find system manager";
+ return [];
+ }
+
+ for (var i:int;i<length;i++)
+ {
+ font = Font(fontList[i]);
+ name = font.fontName;
+ if (dictionary[name]==1) continue;
+ dictionary[name] = 1;
+
+ paddedName = name; //padString(name, minimumStyleNamePadding);
+ fontObject = getFontFamilyEmbedded(name, systemManager);
+
+ //output += prespace + paddedName;
+
+ if (fontObject.embeddedCFF.length>0) {
+ output += "Embedded CFF: " + fontObject.embeddedCFF.join(", ");
+ }
+
+ if (fontObject.embedded.length>0) {
+ if (fontObject.embeddedCFF.length>0) {
+ output+= "; ";
+ output+= "Embedded : ";
+ }
+ else {
+ output+= "Embedded: ";
+ }
+ output += fontObject.embedded.join(", ");
+ }
+
+ output += "\n";
+
+ }
+
+
+ return fontList;
+ }
+
+
+
+ /**
+ * Returns an object that contains an array of embedding information for the font with the given name.
+ * Includes embedded and embeddedCFF information. If null then the font and that style of the font
+ * are not embedded.<br/><br/>
+ * Example, <br/>
+ * <pre>
+ * var object:Object = getFontFamilyEmbedded("MyFont", myButton.systemManager);
+ * trace(object); // {embedded:[regular, italic], embeddedCFF:[regular, bold, italic, boldItalic]}
+ * </pre>
+ **/
+ public function getFontFamilyEmbedded(name:String, systemManager:ISystemManager):Object {
+ var textFormat:TextFormat = new TextFormat();
+ var fontDescription:String = "";
+ var embeddedCFF:Array = [];
+ var embedded:Array = [];
+ var boldItalic:Boolean;
+ var regular:Boolean;
+ var italic:Boolean;
+ var bold:Boolean;
+
+ textFormat.font = name;
+
+ // check for regular
+ regular = systemManager.isFontFaceEmbedded(textFormat);
+ if (regular) {
+ fontDescription = "regular";
+
+ if (isFontFaceEmbeddedCFF(textFormat, systemManager)) {
+ embeddedCFF.push(fontDescription);
+ }
+ if (!isFontFaceEmbeddedCFF(textFormat, systemManager)) {
+ embedded.push(fontDescription);
+ }
+ }
+
+ // check for bold
+ textFormat.bold = true;
+ bold = systemManager.isFontFaceEmbedded(textFormat);
+ if (bold) {
+ fontDescription = "bold";
+ if (isFontFaceEmbeddedCFF(textFormat, systemManager)) {
+ embeddedCFF.push(fontDescription);
+ }
+ if (!isFontFaceEmbeddedCFF(textFormat, systemManager)) {
+ embedded.push(fontDescription);
+ }
+ }
+
+ // check for bold and italic
+ textFormat.italic = true;
+ boldItalic = systemManager.isFontFaceEmbedded(textFormat);
+ if (boldItalic) {
+ fontDescription = "boldItalic";
+ if (isFontFaceEmbeddedCFF(textFormat, systemManager)) {
+ embeddedCFF.push(fontDescription);
+ }
+ if (!isFontFaceEmbeddedCFF(textFormat, systemManager)) {
+ embedded.push(fontDescription);
+ }
+ }
+
+ // check for italic
+ textFormat.bold = false;
+ italic = systemManager.isFontFaceEmbedded(textFormat);
+ if (italic) {
+ fontDescription = "italic";
+ if (isFontFaceEmbeddedCFF(textFormat, systemManager)) {
+ embeddedCFF.push(fontDescription);
+ }
+ if (!isFontFaceEmbeddedCFF(textFormat, systemManager)) {
+ embedded.push(fontDescription);
+ }
+ }
+
+ // there's probably alot of optimization that could go into this call
+ // but for now we are using this
+
+ return {embedded:embedded, embeddedCFF:embeddedCFF};
+ }
+
+
+
+ /**
+ * Checks if font is embedded and is also embeddedCFF.
+ * Does not run all methods system manager function runs.
+ */
+ public function isFontFaceEmbeddedCFF(textFormat:TextFormat, systemManager:ISystemManager):Boolean
+ {
+ var fontName:String = textFormat.font;
+ var bold:Boolean = textFormat.bold;
+ var italic:Boolean = textFormat.italic;
+
+ var fontList:Array = Font.enumerateFonts();
+
+ var n:int = fontList.length;
+ for (var i:int = 0; i < n; i++)
+ {
+ var font:Font = Font(fontList[i]);
+ if (font.fontName == fontName)
+ {
+ var style:String = "regular";
+ if (bold && italic)
+ style = "boldItalic";
+ else if (bold)
+ style = "bold";
+ else if (italic)
+ style = "italic";
+
+ if (font.fontStyle == style ) {
+ if (font.fontType=="embeddedCFF") {
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ }
+ }
+
+ return false;
+
+ }
+
+ ]]>
+ </fx:Script>
+
+ <s:layout>
+ <s:VerticalLayout />
+ </s:layout>
+
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Font Family" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:ComboBoxRenderer id="fontsRenderer" height="24" labelField="fontName"
+ valueIsField="true" fieldIsValue="true"
+ minWidth="180"/>
+ </s:HGroup>
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Font Weight" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:DropDownListRenderer id="fontWeightRenderer" height="24" />
+ </s:HGroup>
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Font Size" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:NumberRenderer id="fontSizeRenderer" height="24" showClearButton="true"/>
+ </s:HGroup>
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Font Style" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:DropDownListRenderer id="fontStyleRenderer" height="24"/>
+ </s:HGroup>
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Color" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:ColorPickerRenderer id="colorRenderer" height="24" includeCopyIcon="false"/>
+ </s:HGroup>
+</s:Group>
http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/views/inspectors/Identity.mxml
----------------------------------------------------------------------
diff --git a/Radii8Library/src/com/flexcapacitor/views/inspectors/Identity.mxml b/Radii8Library/src/com/flexcapacitor/views/inspectors/Identity.mxml
new file mode 100644
index 0000000..098a5b4
--- /dev/null
+++ b/Radii8Library/src/com/flexcapacitor/views/inspectors/Identity.mxml
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:s="library://ns.adobe.com/flex/spark"
+ xmlns:mx="library://ns.adobe.com/flex/mx"
+ xmlns:renderers="com.flexcapacitor.views.renderers.*"
+ implements="com.flexcapacitor.views.IInspector"
+
+ styleName="inspectablePanel">
+
+ <fx:Script>
+ <![CDATA[
+ import com.flexcapacitor.controller.Radiate;
+ import com.flexcapacitor.events.RadiateEvent;
+ import com.flexcapacitor.utils.ClassUtils;
+
+ public var radiate:Radiate;
+ public var target:Object;
+ public var data:Object;
+
+ public function activate():void {
+ radiate = Radiate.getInstance();
+
+ radiate.addEventListener(RadiateEvent.TARGET_CHANGE, handleTargetChange, false, 0, true);
+ radiate.addEventListener(RadiateEvent.PROPERTY_CHANGED, propertyChangeHandler, false, 0, true);
+
+ if (radiate.target) {
+ target = radiate.target;
+ }
+
+ update();
+ }
+
+ public function deactivate():void {
+ radiate.removeEventListener(RadiateEvent.TARGET_CHANGE, handleTargetChange);
+ radiate.removeEventListener(RadiateEvent.PROPERTY_CHANGED, propertyChangeHandler);
+ }
+
+ protected function handleTargetChange(event:RadiateEvent):void {
+ if (target!=event.selectedItem) {
+ target = event.selectedItem;
+ update();
+ }
+ }
+
+ public function update():void {
+ data = ClassUtils.getMetaDataOfProperty(target, "id");
+ textRenderer.data = data;
+ }
+
+ protected function propertyChangeHandler(event:RadiateEvent):void {
+ callLater(update);
+ }
+
+ ]]>
+ </fx:Script>
+
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Identity" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:TextRenderer id="textRenderer" height="24"/>
+ </s:HGroup>
+</s:Group>
http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/views/inspectors/Image.mxml
----------------------------------------------------------------------
diff --git a/Radii8Library/src/com/flexcapacitor/views/inspectors/Image.mxml b/Radii8Library/src/com/flexcapacitor/views/inspectors/Image.mxml
new file mode 100644
index 0000000..0e50baf
--- /dev/null
+++ b/Radii8Library/src/com/flexcapacitor/views/inspectors/Image.mxml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:s="library://ns.adobe.com/flex/spark"
+ xmlns:mx="library://ns.adobe.com/flex/mx"
+ implements="com.flexcapacitor.views.IInspector"
+ xmlns:renderers="com.flexcapacitor.views.renderers.*"
+ styleName="inspectablePanel"
+ width="100%">
+
+ <fx:Script>
+ <![CDATA[
+ import com.flexcapacitor.controller.Radiate;
+ import com.flexcapacitor.events.RadiateEvent;
+ import com.flexcapacitor.utils.ClassUtils;
+
+ public var radiate:Radiate;
+ public var target:Object;
+ public var data:Object;
+
+
+ public function activate():void {
+ radiate = Radiate.getInstance();
+
+ radiate.addEventListener(RadiateEvent.TARGET_CHANGE, handleTargetChange, false, 0, true);
+ radiate.addEventListener(RadiateEvent.PROPERTY_CHANGED, propertyChangeHandler, false, 0, true);
+
+ if (radiate.target) {
+ target = radiate.target;
+ }
+
+ update();
+ }
+
+ public function deactivate():void {
+ radiate.removeEventListener(RadiateEvent.TARGET_CHANGE, handleTargetChange);
+ }
+
+ protected function handleTargetChange(event:RadiateEvent):void {
+ if (target!=event.selectedItem) {
+ target = event.selectedItem;
+ update();
+ }
+ }
+
+ public function update():void {
+ //var data:Object = ClassUtils.getMetaDataOfProperty(target, "source");
+ sourceRenderer.data = ClassUtils.getMetaDataOfProperty(target, "source");
+ alphaRenderer.data = ClassUtils.getMetaDataOfProperty(target, "alpha");
+ smoothRenderer.data = ClassUtils.getMetaDataOfProperty(target, "smooth");
+ scaleModeRenderer.data = ClassUtils.getMetaDataOfProperty(target, "scaleMode");
+ fillModeRenderer.data = ClassUtils.getMetaDataOfProperty(target, "fillMode");
+ contentLoaderGroupRenderer.data = ClassUtils.getMetaDataOfProperty(target, "contentLoaderGrouping");
+ clearOnLoadRenderer.data = ClassUtils.getMetaDataOfProperty(target, "clearOnLoad");
+
+ }
+
+ protected function propertyChangeHandler(event:RadiateEvent):void {
+ callLater(update);
+ }
+
+ ]]>
+ </fx:Script>
+
+ <s:layout>
+ <s:VerticalLayout />
+ </s:layout>
+ <!--<s:Image scaleMode="" alpha="" smooth="" clearOnLoad="" contentLoader="" fillMode=""
+ enableLoadingState="" backgroundAlpha="" backgroundColor=""
+ smoothingQuality="" skinClass="" />-->
+
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Source" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:TextRenderer id="sourceRenderer" height="24" width="100%"/>
+ </s:HGroup>
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Alpha" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:NumberRenderer id="alphaRenderer" height="24" />
+ </s:HGroup>
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Smooth" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:BooleanRenderer id="smoothRenderer" height="24" showClearButton="true"/>
+ </s:HGroup>
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Scale Mode" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:ComboBoxRenderer id="scaleModeRenderer" height="24"/>
+ </s:HGroup>
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Fill Mode" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:ComboBoxRenderer id="fillModeRenderer" height="24"/>
+ </s:HGroup>
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Content Grouping" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:TextRenderer id="contentLoaderGroupRenderer" height="24"/>
+ </s:HGroup>
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Clear on Load" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:BooleanRenderer id="clearOnLoadRenderer" height="24"/>
+ </s:HGroup>
+</s:Group>
http://git-wip-us.apache.org/repos/asf/flex-radii8/blob/f370bfcf/Radii8Library/src/com/flexcapacitor/views/inspectors/TextInspector.mxml
----------------------------------------------------------------------
diff --git a/Radii8Library/src/com/flexcapacitor/views/inspectors/TextInspector.mxml b/Radii8Library/src/com/flexcapacitor/views/inspectors/TextInspector.mxml
new file mode 100644
index 0000000..3bfdcd1
--- /dev/null
+++ b/Radii8Library/src/com/flexcapacitor/views/inspectors/TextInspector.mxml
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
+ xmlns:s="library://ns.adobe.com/flex/spark"
+ xmlns:mx="library://ns.adobe.com/flex/mx"
+ implements="com.flexcapacitor.views.IInspector"
+ xmlns:renderers="com.flexcapacitor.views.renderers.*"
+ styleName="inspectablePanel">
+
+ <fx:Script>
+ <![CDATA[
+ import com.flexcapacitor.controller.Radiate;
+ import com.flexcapacitor.events.RadiateEvent;
+ import com.flexcapacitor.model.AccessorMetaData;
+ import com.flexcapacitor.utils.ClassUtils;
+
+ public var radiate:Radiate;
+ public var target:Object;
+ public var data:Object;
+
+ public var fonts:Array;
+
+ public function activate():void {
+ radiate = Radiate.getInstance();
+
+ radiate.addEventListener(RadiateEvent.TARGET_CHANGE, handleTargetChange, false, 0, true);
+ radiate.addEventListener(RadiateEvent.PROPERTY_CHANGED, propertyChangeHandler, false, 0, true);
+
+ if (radiate.target) {
+ target = radiate.target;
+ }
+
+ update();
+ }
+
+ public function deactivate():void {
+ radiate.removeEventListener(RadiateEvent.TARGET_CHANGE, handleTargetChange);
+ radiate.removeEventListener(RadiateEvent.PROPERTY_CHANGED, propertyChangeHandler);
+ }
+
+ protected function handleTargetChange(event:RadiateEvent):void {
+ if (target!=event.selectedItem) {
+ target = event.selectedItem;
+ update();
+ }
+ }
+
+ public function update():void {
+ var textAccessor:AccessorMetaData = ClassUtils.getMetaDataOfProperty(target, "text");
+
+ textRenderer.data = textAccessor;
+ }
+
+ protected function propertyChangeHandler(event:RadiateEvent):void {
+ callLater(update);
+ }
+
+ ]]>
+ </fx:Script>
+
+ <s:layout>
+ <s:VerticalLayout />
+ </s:layout>
+
+ <s:HGroup width="100%" verticalAlign="baseline" gap="{getStyle('gap')}">
+ <s:Label text="Text" styleName="inspectablePanelLabel" width="{getStyle('labelWidth')}"/>
+ <renderers:TextRenderer id="textRenderer" height="24" />
+ </s:HGroup>
+</s:Group>