blob: 66834bb438d950b4716b1ab18d1f8d98343cfb8b [file] [log] [blame]
<?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>