blob: f8dab420ad78aaa4cce4576b957191a0b2096cb3 [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: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.model.Device;
import com.flexcapacitor.model.IDocument;
import com.flexcapacitor.tools.ITool;
import mx.events.FlexEvent;
import spark.events.IndexChangeEvent;
public var radiate:Radiate;
/**
* Shows the show actual size button
* */
[Bindable]
public var showRestoreSize:Boolean = true;
/**
* Shows the show center button
* */
[Bindable]
public var showCenterButton:Boolean = true;
/**
* Shows devices list
* */
[Bindable]
public var showDevicesList:Boolean = false;
/**
* Shows the show fit size button
* */
[Bindable]
public var showFitSize: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);
radiate.addEventListener(RadiateEvent.DOCUMENT_SIZE_CHANGE, documentSizeChangeHandler, 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);*/
}
/**
* Size combo box change handler. Update size.
* */
protected function sizeComboBox_changeHandler(event:IndexChangeEvent):void {
updateDocumentSize();
//zoomTool.setScale(parseInt(sizesComboBox.selectedItem)/100);
}
/**
*
* */
protected function actualSize_clickHandler(event:MouseEvent):void {
radiate.restoreDefaultScale();
}
/**
* Size changed
* */
protected function sizeChangedHandler(event:RadiateEvent):void {
/*var zoomValue:Number;
var zoomString:String;
zoomValue = zoomTool.getScale();
updateZoomInComboBox(zoomValue);*/
}
/**
* Format size value.
* */
public function updateSizeInComboBox(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) {
sizesComboBox.selectedItem = "100%";
}
else {
sizesComboBox.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();
updateSizeInComboBox(zoomValue);*/
updatePortraitCheckbox();
}
/**
* Restore
* */
protected function sizeComboBox_doubleClickHandler(event:MouseEvent):void {
/*
if (zoomTool) {
zoomTool.restoreDefaultScale();
sizesComboBox.selectedItem = "100%";
}*/
}
public function labelFunction(item:Object):String {
var device:Device = Device(item);
if (device.type=="device" || device.type=="screen") {
return device.name;
}
return device.name + device.width + "x" + device.height;
}
protected function changeOrientation_changeHandler(event:Event):void {
updateDocumentSize();
}
/**
*
* */
public var properties:Array = ["width", "height"];
/**
* Update portrait setting
* */
public function updatePortraitCheckbox():void {
var document:IDocument = radiate.selectedDocument;
var documentInstance:DisplayObject = document ? document.instance as DisplayObject : null;
var portrait:Boolean;
if (documentInstance &&
documentInstance.width<documentInstance.height) {
portraitEnabledCheckbox.selected= true;
portraitEnabledCheckbox.enabled = true;
}
else if (documentInstance && documentInstance.width==documentInstance.height) {
portraitEnabledCheckbox.enabled = false;
}
else {
portraitEnabledCheckbox.selected= false;
portraitEnabledCheckbox.enabled = true;
}
}
/**
*
* */
public function updateDocumentSize():void {
var document:IDocument = radiate.selectedDocument;
var device:Device = sizesComboBox.selectedItem as Device;
var object:Object = {};
var applied:Boolean;
var displayObject:DisplayObject = document ? document.instance as DisplayObject : null;
if (!showDevicesList) {
var values:Object = {width:displayObject.height, height:displayObject.width};
Radiate.setProperties(displayObject, properties, values);
return;
}
if (device.type=="screen") {
object.width = device.resolutionWidth;
object.height = device.resolutionHeight;
applied = Radiate.setProperties(displayObject, properties, object);
}
else {
if (portraitEnabledCheckbox.selected) {
object.width = device.usableWidthPortrait;
object.height = device.usableHeightPortrait;
applied = Radiate.setProperties(displayObject, properties, object, device.name);
}
else {
object.width = device.usableWidthLandscape;
object.height = device.usableHeightLandscape;
applied = Radiate.setProperties(displayObject, properties, object, device.name);
}
}
}
protected function fitSizeButton_clickHandler(event:MouseEvent):void {
radiate.scaleToFit(true);
radiate.centerApplication(true, true);
}
protected function centerButton_clickHandler(event:MouseEvent):void {
radiate.centerApplication(true, true);
}
protected function documentSizeChangeHandler(event:RadiateEvent):void {
updatePortraitCheckbox();
}
]]>
</fx:Script>
<fx:Declarations>
<s:ArrayCollection id="sizesCollection">
</s:ArrayCollection>
</fx:Declarations>
<s:layout>
<s:HorizontalLayout paddingLeft="4" verticalAlign="baseline"/>
</s:layout>
<s:ToggleButton id="portraitEnabledCheckbox"
label="Portrait"
selected="true"
change="changeOrientation_changeHandler(event)"
skinClass="com.flexcapacitor.views.skins.OrientationButton"
useHandCursor="true"
buttonMode="true"
/>
<s:Spacer width="1"/>
<s:DropDownList id="sizesComboBox"
width="180"
focusAlpha="0"
selectedIndex="8"
visible="{showDevicesList}"
includeInLayout="{showDevicesList}"
arrowKeysWrapFocus="false"
doubleClickEnabled="true"
labelFunction="labelFunction"
dataProvider="{Radiate.deviceCollections}"
change="sizeComboBox_changeHandler(event)"
doubleClick="sizeComboBox_doubleClickHandler(event)"
>
<s:layout>
<s:VerticalLayout gap="0"
horizontalAlign="contentJustify"
requestedRowCount="10" />
</s:layout>
</s:DropDownList>
<c:ImageButton id="centerButton"
toolTip="Center"
visible="{showCenterButton}"
includeInLayout="{showCenterButton}"
source="{Radii8LibraryAssets.centerAlignment}"
click="centerButton_clickHandler(event)"
/>
<c:ImageButton id="fitSizeButton"
toolTip="Fit"
visible="{showFitSize}"
includeInLayout="{showFitSize}"
source="{Radii8LibraryAssets.zoomToFit}"
click="fitSizeButton_clickHandler(event)"
/>
<c:ImageButton id="actualSizeButton"
toolTip="Actual"
visible="{showRestoreSize}"
includeInLayout="{showRestoreSize}"
source="{Radii8LibraryAssets.actualSize}"
click="actualSize_clickHandler(event)"
/>
</s:Group>