Hello guys,
I have a project running on CS5 and now i need to migrate it to CS4. It seems all my problems are in the panel mode (I am not a good Flex developer). All the buttons work (they call javascript functions) but the main issues are in TreeView I have. Data is populated there (they came from the javascript file using (as example):
Code: Select allfunction sendVersion() {
var sxml = "<object>";
sxml += convertToXML(String(myConfig.vers), "version");
sxml += "</object>"
return sxml;
}
Issues start when I need to interact with the tree (double click an item should call a javascript function, press key DELETE does not call the function, etc). Below the mx code for the tree:
Code: Select all <mx:Tree id="myTree" dataProvider="{treeData}"
labelField="@label" iconField="@icon" creationComplete="initTree();" click="changeEvt(event);"
dragComplete="dropHandler(event);"
change="changeEvt(event);" dragEnabled="true" dropEnabled="true"
dragEnter="onDragEnter(event);" dragStart="changeEvt(event);"
dragOver="onDragOver(event);"
dragDrop="onDragDrop(event);"
dragMoveEnabled="true" doubleClickEnabled="true" itemDoubleClick="pageDoubleClickEvent(event);"
right="0" left="0" top="118" bottom="33">
</mx:Tree>
and the [CDATA]:
Code: Select all import com.adobe.csxs.core.CSXSInterface;
import com.adobe.csxs.types.*;
import com.adobe.csxs.types.SyncRequestResult;
import flash.events.*;
import flash.events.MouseEvent;
import mx.collections.ArrayCollection;
import mx.collections.XMLListCollection;
import mx.controls.*;
import mx.core.DragSource;
import mx.core.IUIComponent;
import mx.core.UIComponent;
import mx.events.*;
import mx.events.DragEvent;
import mx.events.DropdownEvent;
import mx.events.ListEvent;
import mx.managers.CursorManager;
import mx.managers.DragManager;
import mx.controls.Alert;
import mx.events.CloseEvent;
//TREE FUNCTIONS
private var strXML:String; // = '<folder label="Mail"><folder label="inbox"/><folder label="Demo"/></folder>';
[Bindable]
private var treeData:XMLListCollection;
[Embed(source="images/plus.gif")]
public var plus:Class;
[Embed(source="images/minus.gif")]
public var minus:Class;
private function initTree():void {
//validateNow();
//this.myTree.expandChildrenOf(this.myTree.dataProvider[0],true); //openItems = treeData..node;
}
public var lastTool:String = "";
public var lastDoc:String = "";
public var pSel:String = "";
public var pInfo:String = "";
public var pPage:String = "";
private function changeEvt(event:Event):void {
pSel = String(event.currentTarget.selectedItem.@label);
pPage = String(event.currentTarget.selectedItem.@page);
switch (String(event.currentTarget.selectedItem.@icon)) {
case "icoAudio":
pInfo = "Audio";
break;
case "icoBut":
pInfo = "Button";
break;
case "icoAnim":
pInfo = "Animation";
break;
case "icoVideo":
pInfo = "Video";
break;
default:
pInfo = "Page";
break;
}
}
private var _draggedItem:XML = null;
private function onDragEnter( event:DragEvent ) : void
{
event.preventDefault();
event.currentTarget.hideDropFeedback(event);
var ds:DragSource = event.dragSource;
var items:Array = ds.dataForFormat("treeItems") as Array;
if (items != null && items.length > 0 && (items[0] is XML))
_draggedItem = items[0];
DragManager.acceptDragDrop(UIComponent(event.currentTarget));
}
private function onDragOver( event:DragEvent ) : void
{
event.preventDefault();
event.currentTarget.hideDropFeedback(event);
myTree.selectedIndex = myTree.calculateDropIndex(event);
var node:XML = myTree.selectedItem as XML;
// restrict drag & drop to nodes within same parent
if (_draggedItem.parent() != node.parent())
{
DragManager.showFeedback(DragManager.NONE);
return;
}
DragManager.showFeedback(DragManager.MOVE);
}
private function onDragDrop( event:DragEvent ) : void
{
event.preventDefault();
event.currentTarget.hideDropFeedback(event);
myTree.selectedIndex = myTree.calculateDropIndex(event);
var node:XML = myTree.selectedItem as XML;
var addToIndex:int = node.childIndex();
if ((_draggedItem.parent() == node.parent()) && (addToIndex != _draggedItem.childIndex()))
{
myTree.dataDescriptor.removeChildAt(node.parent(), _draggedItem, _draggedItem.childIndex());
myTree.dataDescriptor.addChildAt(node.parent(), _draggedItem, addToIndex);
}
}
//BEGIN: handles keyboard events (mostly for datagrid)
private function keyHandler(event:KeyboardEvent):void {
if (event.keyCode==8) {
//DELETE KEY PRESSED
CursorManager.setBusyCursor();
CSXSInterface.instance.evalScript("delPage", pSel, pInfo, pPage);
initDataGrid();
getPSProjXML();
} else if (event.keyCode==13) {
//ENTER OR RETURN KEY PRESSED
CSXSInterface.instance.evalScript("selPage", pSel, pInfo, pPage);
initDataGrid();
getPSProjXML();
}
}
//END: keyboard events
//BEGIN: mouse events
public function pageDoubleClickEvent(event:ListEvent):void{
CursorManager.setBusyCursor();
CSXSInterface.instance.evalScript("selPage", pSel, pInfo, pPage);
initDataGrid();
getPSProjXML();
}
//END: mouse events
//DO NOT REMOVE
// needs to enable Photoshop sending commands
// host var and const
public var hostMajorVersion:Number = -1;
public var hostMinorVersion:Number = -1;
public var hostFixVersion:Number = -1;
public const photoshopCS4Version:Number = 11;
public function getPSVersion():void{
var reqResult:SyncRequestResult = CSXSInterface.instance.evalScript("getVersion");
if (SyncRequestResult.COMPLETE == reqResult.status) {
var versionString:String = reqResult.data.version;
var versionArray:Array = versionString.split(".");
if (versionArray.length >= 1) {
hostMajorVersion = Number(versionArray[0]);
}
if (versionArray.length >= 2) {
hostMinorVersion = Number(versionArray[1]);
}
if (versionArray.length >= 3) {
hostFixVersion = Number(versionArray[2]);
}
//projMedia.text = versionString;
}
}
// Gets the updated XML from the project
public var versionNum:String;
private function getKwikVersion():void{
var reqResult:SyncRequestResult = CSXSInterface.instance.evalScript("sendVersion");
if (SyncRequestResult.COMPLETE == reqResult.status) {
versionNum = reqResult.data.version;
versNum.text = "Version: "+versionNum;
}
}
private function getPSProjXML():void{
var reqResult:SyncRequestResult = CSXSInterface.instance.evalScript("getProjXML");
if (SyncRequestResult.COMPLETE == reqResult.status) {
var projFileString:String = reqResult.data.projFile;
var mediaString:String = reqResult.data.media;
var projNameString:String = reqResult.data.projName;
var deviceString:String = reqResult.data.device;
var oriString:String = reqResult.data.orientation;
var pageNum:String = reqResult.data.numPages;
strXML = reqResult.data.allpages;
treeData = new XMLListCollection(XMLList(strXML)..node);
validateNow();
var p:Number = reqResult.data.curPage - 1;
myTree.expandChildrenOf(myTree.dataProvider[p],true);
}
}
//clears tree
public function initDataGrid():void {
strXML = "";
treeData = new XMLListCollection(XMLList(strXML)..node);
pSel = "";
pPage = "";
pInfo = "";
CursorManager.removeBusyCursor();
}
public function init():void{
//getUpdatedVersion();
application.addEventListener(KeyboardEvent.KEY_UP, keyHandler);
treeData = new XMLListCollection(XMLList(strXML)..folder);
myTree.setStyle("disclosureClosedIcon", plus);
myTree.setStyle("disclosureOpenIcon", minus);
getKwikVersion();
getPSProjXML();
getPSVersion();
CSXSInterface.instance.evalScript("PhotoshopPersistent");
CSXSInterface.instance.evalScript("loadConfig");
CSXSInterface.instance.evalScript("PhotoshopRegisterEvent", charToInteger("slct").toString());
// conditional for CS4, CS5 PhotoshopCallback
if (hostMajorVersion == photoshopCS4Version) {
ExternalInterface.addCallback("PhotoshopCallback", PhotoshopCallback);
} else {
ExternalInterface.addCallback("PhotoshopCallback" + CSXSInterface.instance.getExtensionId(), PhotoshopCallback);
}
}
public function charToInteger(keyword:String):Number{
var value:Number;
value = keyword.charCodeAt(0) * 256 * 256 * 256;
value += keyword.charCodeAt(1) * 256 * 256;
value += keyword.charCodeAt(2) * 256;
value += keyword.charCodeAt(3);
return value;
}
public function PhotoshopCallback(eventID:Number, descID:Number):void{
var reqResult:SyncRequestResult = CSXSInterface.instance.evalScript("getCurrentTool");
if (SyncRequestResult.COMPLETE == reqResult.status) {
var tTool:String = reqResult.data.tool;
var tDoc:String = reqResult.data.doc;
//versNum.text = String(tTool);
}
}
public function callNewProject():void{
CSXSInterface.instance.evalScript("newProject");
projTitle.text = "No projects open";
projMedia.text = "";
projDevice.source = "images/noDevice.png";
initDataGrid();
getPSProjXML();
}
public function dropHandler (event:DragEvent):void {
var i:int;
var x:String = "";
for (i=0;i<treeData.length;i++) {
x += String(treeData.getItemAt(i).@label)+",";
}
CSXSInterface.instance.evalScript("refreshGrid", String(x));
}
public function callDelete():void{
CursorManager.setBusyCursor();
CSXSInterface.instance.evalScript("delPage", pSel, pInfo, pPage);
initDataGrid();
getPSProjXML();
}
private function trashDragEnter(evt:DragEvent):void {
//var obj:IUIComponent = IUIComponent("evt.currentTarget");
//DragManager.acceptDragDrop(obj);
callDelete();
}
Hope someone can help. Thanks again and sorry for the long post.
Alex