FileInfo XMPComboBox

Hello,
I am creating a FileInfo Panel, I noticed that when I create a XMPComboBox, if no one makes a selection the data isn't saved. Is there away to force the data to be written even if the field isnt changed? Example: I have a Gender combo box, Gender : Female is the first and default. If they want Female, they wouldnt change anything, so the data isnt being written.
I am guessing I could call the xmpWriteHandler, but I dont know syntax to have it store the value.
Some of the code:
[Bindable]
  private var model_gender_list: ArrayCollection = ZStringManager.getDictionaryFrom("model_gender_list=Female{Female};Male{Male}");
import com.adobe.xmp.events.XMPEvent;
private function xmpWriteHandler(event:XMPEvent):void{
<fi:XMPFormItem label="Model&apos;s Gender:">
  <fi:XMPComboBox dataProvider="{model_gender_list}" xmpWrite="xmpWriteHandler(event)" xmpPath="en:model_gender" />
</fi:XMPFormItem>
Thanks
Dean

The error is coming from the file system driver. This isn't a .NET issue. The failure is occurring when the driver is trying to write to the drive (it uses delay writing to optimize writes) and that is failing.  File.CopyTo does nothing but verify
the path and then call Win32's CopyFile API.  Note that Windows Explorer more likely uses CopyFileEx instead. They are similar but CFE provides a few additional options useful in UIs. There is no .NET wrapper around this call.

Similar Messages

  • FileInfo SDK .jar not working- XMP not in wizard

    Hi,
    I am trying to install the FileInfo SDK for Adobe Flash Builder 4. I have followed all of the proper steps to install the .jar file in the plugins folder, but XMP does not show in the wizard as a project typer. The correct .jar file is in the plugins folder, it just seems that Flash Builder 4 is not acknowledging it. I tried the same process on another system and it worked fine.
    I am on a Mac, running 10.6.3.
    Outside of having IT reinstall, I don't know what to do. I have a lot of projects and preferences that I don't want to lose with an upgrade.
    Any help would be great!
    Thanks,
    Don

    Oracle 10i installs its own JVM, and "fixes" your environment to include it in your PATH and CLASSPATH, leading to all sorts of havoc.
    It can be safely removed from PATH and CLASSPATH, by the way.

  • Putting fileinfo data on bottom of image for use in building a photobook for printing/binding

    I wonder if someone on here could help me with a problem I have? I am not a script expert by any means. The term "amateur" is probably pretty accurate!
    I have a few hundred pictures I want to include into a (to be printed) photobook. I want to put some key EXIF/Fileinfo data on the images so that they remind me of what file, when it was taken, with what and with what settings. I found an excellent script (by JJmack?) which does what i want with one exception. The script (below) puts the info on the image starting on the top left (0,0) and I really want it to start on the bottom left (so that it looks like a caption). I have tweaked the original 5 lines of data down to one line, and have reduced the font size but I simply do not have the skills to amend it to add the selected text to the bottom left.
    I was hoping that someone on this forum might be kind enough to help - not least because I am sure there are others who would want to the same thing? Or am I being a complete idiot and there is a simpler way to achieve what I am trying to do?
    Grateful for any help
    Michael.
    Apologies - can't find way to insert file so had to copy and paste:
    // This script was hacked from one I downloaded from the web JJMack 2008
    /*  Script to stamp copyright and camera data of shot   */
    // This script is supplied as is. It is provided as freeware.
    // The author accepts no liability for any problems arising from its use.
    <javascriptresource>
    <about>$$$/JavaScripts/StampExif/About=JJMack's Stamp Exif.^r^rCopyright 2009 Mouseprints.^r^rScript utility for action.^rNOTE:Add Text Layer with Fomatted EXIF Data!</about>
    <category>JJMack's Action Utility</category>
    </javascriptresource>
    // enable double-clicking from Mac Finder or Windows Explorer
    #target photoshop // this command only works in Photoshop CS2 and higher
    // bring application forward for double-click events
    app.bringToFront();
    // ensure at least one document open
    if (!documents.length) {
        alert('There are no documents open.', 'No Document');
    // if at least one document exists, then proceed
    else {
        main();
    // main - main function
    function main() {
        /* Null business owner */
        var Biz = "";
        var Owner = "";
        /* Variables You can hard code your business owner here */
        // var Biz = "Mouseprints";
        // var Owner = "John J McAssey";
            /*  sizeFactor influences text size 1 will use largest font 2 will half that font size    */
        var sizeFactor = 1.5;
            /* textX and TextY positions text placement 0 and 0 Top Left corner of image in pixels    */
        var textX = 0;                                   
        var textY = 0;   
        /* Internal Photoshop Text name                                */                               
            var fontName = "ArialMT";
        var fontName = "TimesNewRomanPSMT";
        var fontName = "Tahoma";
        /* Text Color                                        */
        textColor = new SolidColor;                       
        textColor.rgb.red = 255;
        textColor.rgb.green = 255;
        textColor.rgb.blue = 255;
        /* END Variables You can hard code your business owner here */
            // remember users Ruler avd Type Units and set ours
        var strtRulerUnits = app.preferences.rulerUnits;
        var strtTypeUnits = app.preferences.typeUnits;
        app.preferences.rulerUnits = Units.PIXELS;
         app.preferences.typeUnits = TypeUnits.PIXELS;
        /* Trying to figure out font size for the number of lines to cover the document height        */
        /* and getting setting text area to cover the document was a trip. Adobe Postscript trip    */
        /* I believe that 72 or 72.27 Point/Pica Size Photoshop Preference maybe I should see if    */
        /* I could retrieve it. Anyway mine is set to 72 Setting the document resolution taking        */
        /* the document width and dividing by 72 would probably yield number of characters that        */
        /* would fit in the document width. Setting the documents resolution comes into play        */
        /* with Photoshop text support. Using the documents height and dividing the by the number    */
        /* of lines of text I needed I hoped would yield the font size I needed. However that        */
        /* did not work the text area was correct the number of text lines did not fit. I needed    */
        /* to use a smaller font.  When the document resolution is set to 72 DPI and I set a text    */
        /* layer font size to 72 and the text area the number of pixels I want and observing        */
        /* Photoshop's text options bar there I see a one 1 to one relationship. 72 px = 72 px.        */
        /* If I set the documents resolution lower and set a Photoshop text layer font size to        */
        /* 72 px I see Photoshop scale the number to a lower number of pixels in the option bar.    */
        /* Just what I needed. Setting the Documents resolution to 60 DPI let the number of line    */
        /* I needed fit on the document. However Photoshop also scaled the text area I set down        */
        /* in size and that number of lines did not fit within that area. I needed to scale the        */
        /* text area up. Scaling the Text area up using 72/resolution did the trick...             */
            var testres = 60;
        res = app.activeDocument.resolution;
        if(res!=testres){ app.activeDocument.resizeImage(app.activeDocument.width.value,app.activeDocument.height.v alue,testres); }
        /* Define var to be used to avoid undefined */
        var expTime = "";
        var expPgm = "";
        var expCmp = "";
        var mtrMode = "";
        var ev = "";
        var flshCode = "";
        var flshMode = "";
        var focLength = "";
        var Fstop = "";
        var ISO = "";
        var Model = "";
        var CameraModel = "";
        var Artist = "";
        var maxF = "";
        var wbMode = "";
        var phoTime = "";
        var picYr = "";
        var lens = "";
        var cpyrt = "";
        var remShutter = "";
        var remAperture = "";
        var remISO = "";
        var lat = "";
        var latRef = "";
        var lon = "";
        var lonRef = "";
        var docName = app.activeDocument.name;
        /* END var to be used to avoid undefined */
        try {   // get active document
            var doc = app.activeDocument;
        catch (e){
            alert("No Document Open..." );
        var exifInfo = "";
    try {
            // alert( "doc.info.exif=" + doc.info.exif );
            var numExifItems = doc.info.exif.length;
            // alert( "numExifItems=" + numExifItems );
                    for (var i = 0; i < doc.info.exif.length; i++){
                 exifInfo = exifInfo + doc.info.exif[i][0] + " = " + doc.info.exif[i][1] + "\r";
    /* ---------------------------------- Extracting Data I want to Stamp  formated ----------------------------------------------------------------------- */
                            checkThisItem(doc.info.exif[i][0], doc.info.exif[i][1])
                key=doc.info.exif[i][0];
                keyData=doc.info.exif[i][1];
                if (key == "Artist") {
                    // alert ("Key=" + key + " Data=" + keyData );
                    Artist =("By " + keyData + "  ");
                 if (key == "Date Time Original") {
                    // alert ("Key=" + key + " Data=" + keyData );
                    var phoTime = keyData;
                    var dateArray1 = phoTime.split(" ", 2);
                    phoTime = dateArray1[0];
                    phoHour = dateArray1[1];
                    var dateArray2 = phoTime.split(":");
                    var monthsArray = ["January","February","March","April","May","June","July","August","September","October", "November","December"];
                    phoTime = monthsArray[dateArray2[1]-1]+" " + dateArray2[2]+ ", " + dateArray2[0] +" @ " + phoHour;
                    var picYr = dateArray2[0];
                if (key == "Model") {
                    // alert ("Key=" + key + " Data=" + keyData );
                    Model = (keyData + "  ");
                if (key == "Max Aperture Value") {
                    // alert ("Key=" + key + " Data=" + keyData );
                    maxF = ("maxF " + keyData + " ");
                    maxF = ( keyData + " ");
                if (key == "Focal Length") {
                    // alert ("Key=" + key + " Data=" + keyData );
                    focLength = ("@ " +keyData + "  ");
                if (key == "Exposure Program") {
                    // alert ("Key=" + key + " Data=" + keyData );
                    expPgm = (keyData + "  ");
                    if (expPgm == "Not defined") { expPgm = "Exposure Program Not Recorded  "; }
                if (key == "Exposure Bias Value") {
                    // alert ("Key=" + key + " Data=" + keyData );
                    expCmp = ("Bias " + keyData + "  ");
                if (key == "Metering Mode") {
                    //alert ("Key=" + key + " Data=" + keyData );
                    mtrMode = (keyData + " Metering  ");
                if (key == "White Balance") {
                    // alert ("Key=" + key + " Data=" + keyData );
                    wbMode = ("White Balance " + keyData + "  ");
                if (key == "ISO Speed Ratings") {
                    // alert ("Key=" + key + " Data=" + keyData );
                    ISO = ("ISO " + keyData + "  ");
                    remISO = keyData;
                if (key == "Exposure Time") {
                    // alert ("Key=" + key + " Data=" + keyData );
                    expTime = (" " + keyData + "  ");
                    remShutter = keyData;
                if (key == "F-Stop") {
                    //alert ("Key=" + key + " Data=" + keyData );
                    Fstop = (" " + keyData + "  ");
                    remAperture = keyData;
                if (key == "Flash") {
                    // alert ("Key=" + key + " Data=" + keyData );
                    var flshCode = keyData;
                    var flshMode = "Flash Code=" + flshCode + "  ";
                    if(flshCode==1){var flshMode = "Firing Flash   ";}
                    if(flshCode==9){var flshMode = "Firing Flash   ";}
                    if(flshCode==13){var flshMode = "Firing Flash   ";}
                    if(flshCode==15){var flshMode = "Firing Flash   ";}
                    if(flshCode==25){var flshMode = "Firing Flash   ";}
                    if(flshCode==29){var flshMode = "Firing Flash   ";}
                    if(flshCode==31){var flshMode = "Firing Flash   ";}
                    if(flshCode==65){var flshMode = "Firing Flash   ";}
                    if(flshCode==69){var flshMode = "Firing Flash   ";}
                    if(flshCode==71){var flshMode = "Firing Flash   ";}
                    if(flshCode==73){var flshMode = "Firing Flash   ";}
                    if(flshCode==77){var flshMode = "Firing Flash   ";}
                    if(flshCode==79){var flshMode = "Firing Flash   ";}
                    if(flshCode==89){var flshMode = "Firing Flash   ";}
                    if(flshCode==93){var flshMode = "Firing Flash   ";}
                    if(flshCode==95){var flshMode = "Firing Flash   ";}
                    if(flshCode==0){var flshMode = "without Flash   ";}
                    if(flshCode==16){var flshMode = "without Flash   ";}
                    if(flshCode==24){var flshMode = "without Flash   ";}
                    if(flshCode==88){var flshMode = "without Flash   ";}
                    if(flshCode==32){var flshMode = "No Flash   ";}
                if (key == "GPS Latitude") {
                    //alert ("Key=" + key + " Data=" + keyData );
                    lat= ("Lat: " + keyData.replace(/\.00/g,'') + " ");
                if (key == "GPS Latitude Ref") {
                    //alert ("Key=" + key + " Data=" + keyData );
                    latRef= (keyData + "  ");
                if (key == "GPS Longitude") {
                    //alert ("Key=" + key + " Data=" + keyData );
                    lon= ("Lon: " + keyData.replace(/\.00/g,'') + " ");
                if (key == "GPS Longitude Ref") {
                    //alert ("Key=" + key + " Data=" + keyData );
                    lonRef= (lon + keyData + "  ");
            /* Copyright Year(s) */
            var thisYr, toDay       
            var toDay = new Date();
            var thisYr = toDay.getYear() + 1900;
            if(picYr!="" && thisYr!=""){ var cpyrt =  picYr + "-" + thisYr + "  ";}
            if(picYr=="" && thisYr!=""){ var cpyrt =  thisYr + "  ";}
            if(picYr==thisYr){ var cpyrt =  thisYr + "  ";}
            /* For cameras that don't set Artist or set unknown in the Exif substitute Owner if set */
            if(Artist=="" && Owner!=""){var Artist = "By  " + Owner + "   ";}
            if(Artist=="By unknown  " && Owner!=""){var Artist = "By  " + Owner + "   ";}
            /*  Lens info  */
            xml = app.activeDocument.xmpMetadata.rawData;
            lensOffset = xml.indexOf("<aux:Lens>") + "<aux:Lens>".length;
            if(lensOffset > 0) {
                lens = xml.substr(lensOffset, xml.length - lensOffset);
                lens = lens.substr(0,lens.indexOf("</aux:Lens>"));
            /* Hack for my cameras with fixed lens */
            if(lens=="" && Model=="E990  "){var lens = "9-28mm";}
            if(lens=="" && Model=="E-20,E-20N,E-20P  "){var lens = "9-36mm";}
            if(lens=="" && Model=="E-10  "){var lens = "9-36mm";}
            if(lens=="" && Model=="E-10          "){
                var Model = "E-10  ";
                var lens = "9-36mm";
            if(lens=="" && Model=="Canon PowerShot SD700 IS  "){var lens = "5.8-23.2mm";}
            if(lens!=""){var lens = lens + "  ";}
            else {var lens = "Unknown Lens  ";}
            /* Hack for my ultra compact cameras program mode not recorded */
            if(Model=="Canon PowerShot SD700 IS  "){var expPgm = "Ultra Compact Camera  ";}
            //alert (remShutter + " " + remAperture + " " + remISO);
                    ev = calcEV(remShutter, remAperture, remISO);
    /* ---------------------------------- END Extracting Data I want to Stamp  formated -------------------------------------------------- */
        catch (e){
            alert("No EXIF data exists..." );
        if ( exifInfo == "" ) {
            alert( "No EXIF data exists..." );
        else {
            // alert( "exifInfo=" + exifInfo );
            text_layer = doc.artLayers.add();                        // Add a Layer
            text_layer.name = "EXIF Stamp";                            // Name Layer
            text_layer.kind = LayerKind.TEXT;                        // Make Layer a Text Layer
            text_layer.textItem.color = textColor;                        // set text layer color
    /* Do not set TextType to Pargarph Text for StampEXIF so action can position text layer
             text_layer.textItem.kind = TextType.PARAGRAPHTEXT;                // Set text layers text type
            text_layer.textItem.font = fontName;                        // set text font
            text_layer.blendMode = BlendMode.NORMAL                        // blend mode
            text_layer.textItem.fauxBold = false;                        // Bold
            text_layer.textItem.fauxItalic = false;                        // Italic
            text_layer.textItem.underline = UnderlineType.UNDERLINEOFF;            // Underlibn
            text_layer.textItem.capitalization = TextCase.NORMAL;                // Case
            text_layer.textItem.antiAliasMethod = AntiAlias.SHARP;                // antiAlias
    //        var fontSize = Math.round((doc.height- textY) / ((numExifItems +1) * sizeFactor)); // Calulate font size to use Item nomber + last \r
            /* Calulate font size to use for StampExit keep size same for landscape and portrait base on document size */
            if (doc.width >= doc.height) {var fontSize = Math.round(doc.height / (30 * sizeFactor));}
            else {var fontSize = Math.round(doc.width / (30 * sizeFactor));}
            if (fontSize<10){fontSize=10};                            // don't use Font size smaller then 10
            text_layer.textItem.size = fontSize;                        // set text font Size
    //        text_layer.textItem.position = Array(textX, textY );                // set text layers position in and down
            text_layer.textItem.position = Array(textX, (textY + fontSize ));        // set text layers position in and down for Stamp add in fontsize
            textWidth = ((doc.width - textX) * 72/testres );                // Text width document width - offset
            textHeight = ((doc.height - textY) * 72/testres );                // Text height document height - offset
    /* Do not set Text Area for StampEXIF so action can position text layer
            text_layer.textItem.width = textWidth;                        // set text area width
            text_layer.textItem.height = textHeight;                    // set text area height
             alert(
            "res=" + res + " sizeFactor=" + sizeFactor + " numExifItems=" + numExifItems
            + "\r" + "fontsize=" + fontSize + " font=" +fontName
            + "\r" + "Image area width=" + doc.width + " height=" + doc.height
            + "\r"    + "text area width=" + textWidth + " height=" + textHeight
            + "\r"    + "Text Position top left=" + textX + "," + textY
            + " bottom right=" + (textX + textWidth )+ "," + (textY +  textHeight )
            try{
                text_layer.textItem.contents = exifInfo;
            catch (er) {
                alert("Error Setting Contents...");
    /* -----------------------------------------  Data Stamp  format ----------------------------------------------------------------------- */
            if (!app.activeDocument.info.copyrightNotice=="") {var Notice = app.activeDocument.info.copyrightNotice; }
            else { var Notice = "Copyright \u00A9 " + Biz  + " " + cpyrt; }   
            if (lat!="" && lon!="") { gps = "\r" + lat +latRef + lon + lonRef;}
            else {gps = ""; }
            text_layer.textItem.contents =  docName + " " + Model + lens + ISO + expTime + Fstop;
            if (app.activeDocument.info.instructions == "" ) {
                app.activeDocument.info.instructions = docName + " " + Model  + lens + ISO  + expTime + Fstop;
        if(res != testres){ app.activeDocument.resizeImage(app.activeDocument.width.value,app.activeDocument.height.v alue,res); }
        app.preferences.rulerUnits = strtRulerUnits;
        app.preferences.typeUnits = strtTypeUnits;
    // END - main function
    // calcEV()
    function calcEV(shutter, aperture, iso) {
        evString = new String("");
        isoValue = new Number(0);
        shutterValue = new Number(0);
        apertureValue = new Number(0);
        evValue = new Number(0);
        apertureValue = aperture;
        apertureValue = apertureValue.substr(2,apertureValue.length -2); // Strip off "f/"
        shutterValue = shutter;
        shutterValue = shutterValue.substr(0,shutterValue.indexOf(" ")); // Strip off ending " sec"
        if ( shutterValue.indexOf("/") != -1) {
            topShutter = shutterValue.substr(0,shutterValue.indexOf("/"));
            bottomShutter = shutterValue.substr(shutterValue.indexOf("/") + 1,shutterValue.length -(shutterValue.indexOf("/") + 1));
            shutterValue = topShutter / bottomShutter;
        isoValue = iso;
        //alert ("apertureValue = " + apertureValue +  " shutterValue = " + shutterValue + " isoValue = " + isoValue );
        if (isoValue>0 && shutterValue>0 && apertureValue>0) {
            evValue = Math.LOG2E * Math.log(Math.pow(apertureValue, 2) * (1 / shutterValue) * (100 / isoValue));
            evValue = Math.round(evValue * 10) / 10;
            evString = "EV " + evValue;
        return evString;;
    function checkThisItem(key, keyData) {
        // alert("Key=" + key + " Data=" + keyData );

    I wrote that script to be used within an Action.  The Action uses the script to add the text layer. The text layer becomes the current active layer.  The action can then position the layer anywhere over the document by aligning the layer to a selection.  Also add a layer style like set fill to 0 and adding a drop shadow and emboss. That is the un-expanded step below the set current layer is setting a style and is lengthy.
    Crafting Actions Package UPDATED Aug 10, 2014 Added Conditional Action steps to Action Palette Tips.
    Contains
    Action Actions Palette Tips.txt
    Action Creation Guidelines.txt
    Action Dealing with Image Size.txt
    Action Enhanced via Scripted Photoshop Functions.txt
    CraftedActions.atn Sample Action set includes an example Watermarking action
    Sample Actions.txt Photoshop CraftedActions set saved as a text file.
    More then a dozen Scripts for use in actions
    Example
    Download

  • FileInfo Custom Panel doesn't show xmp data: flex 3.6, FileInfo SDK 5.1

    Just getting into XMP. Decided to make custom File Info panel for our custom xmp namespace data that will be applying to all our images in our archive.
    Since still on Adobe CS 5.5, got the FileInfo 5.1 SDK. Got the Flex 3.6a package. I'm on Mac OS X 10.7.5, java version "1.6.0_37".
    Compiled the "TestPanel" that comes with the SDK. That works. It has a fi:XMPTextInput item that shows the xmpPath="dc:title" dublincore xmp data, i can change it and save it and when i come back it is the changed data. When i look in the Raw fileinfo tab, it is there as i had modified it.
    Now when i add a fi:XMPLabel for xmpPath="xmp:CreatorTool" no data is shown in my custom FileInfo panel. And when i add in my own custom xmp namespace data "mydata" that does not show either. The labels and textboxes are there for entering, but it appears that it is not parsing correctly to find the data to populate what is in the file already. I can type something in but it doesn't save it to the file. My custom xmp data namespace "mydata" data is showing in the Raw FileInfo panel so i know it is there, as i put it there with exiftool.
    I have the required namespace lines in the mxml file for the panel:
    <fi:XMPNamespaces>
    <fi:XMPNamespace prefix="mydata" value="http://example.com/xmp/mydata/"/>
    <fi:XMPNamespace prefix="dc" value="http://purl.org/dc/elements/1.1/"/>
    <fi:XMPNamespace prefix="xmp" value="http://ns.adobe.com/xap/1.0/" />
    </fi:XMPNamespaces>
    The mxml file compiles and the panels load and display so it doesn't seem like it is the source files. It seems like a runtime issue. Since it does show the one  dublincore xmp data it does seem like the panel is working, except for the "xmp" namespace and  my "mydata" namespace. That's got to be a clue but being so new to this it is not giving me any directions to go in.
    Any and all ideas are most appreciated.
    Peace,
    Dan

    For some reason SpeedGrade updated through the Application manager. I tried downloading the updates from adobe's website but it won't install. Prelude's update fails before it can even get started whereas the extension manager does install but it doesn't seem to be updating.
    I've done as much investigation as I can think of and I'd rather not create a new user just to check that out but if I have to I will. How exactly do I create a new user on a mac?

  • XMPComboBox and XMPDateField probems in File Info Panel

    Hi,
    I have used Flash Builder 4 with the XMP FileInfo 4.4.2  SDK to build the example Custom File Info Panels.
    None of the examples worked using the Flex 3.5 or 4.0 SDKs (blank panels in photoshop).
    The example panels build and show in CS4 when I configure Flash Builder to use the Flex 3.0.2 SDK(last stable build of 3.0) .
    The panels create and show usable XMP metadata but dropdowns combo boxes don't work and neither does the popup calendar on the date field.
    The panel I have to build will require functioning Comboboxes and Popup calendars.
    Can you let me know if there is anything I can do to resolve this issue?
    I would switch to using CS5 but my company is using over 2000 CS4 licenses.
    Thanks,
    Paul.

    Hi Stephan,
    1. I'm on Windows 7.
    2. I installed the precompiled examples like this:
    copy \XMP-FileInfo-SDK-4.4.2\samples\panels\BasicControlSamplePanel directory to :
    C:\Program Files (x86)\Common Files\Adobe\XMP\Custom File Info Panels\2.0\panels\BasicControlSamplePanel
    The ComboBox dropdown and DateField calendar pop-up works fine in the CS4 photoshop fileinfo panel.
    Here's the problem:
    I also built the panel in Flash Builder 4 by importing this directory
    \XMP-FileInfo-SDK-4.4.2\samples\panels-src\BasicControlSamplePanel
    I downloaded 3.0.2 Flex SDK , configured FB4 to use it and chose "Use a specific SDK:" 3.0.2 in the Flex Compiler section.
    I changed the runnable Flex applications to use src\examples\BasicControlSamplePanel.mxml 
    I left the rest of the project properties at default.
    I ran an Export release build.
    I copied the \target directory to :
    C:\Program Files (x86)\Common Files\Adobe\XMP\Custom File Info Panels\2.0\panels\BasicControlSamplePanel
    I copied the \bin-release\BasicControlSamplePanel.swf file to :
    C:\Program Files (x86)\Common Files\Adobe\XMP\Custom File Info Panels\2.0\panels\BasicControlSamplePanel\bin
    In this case ComboBox dropdown and DateField calendar pop-up DON'T work in the CS4 photoshop fileinfo panel.
    I have built all the other samples similarly in the SDK and their dropdowns and comboboxes don't work either!
    I couldn't find a FileInfoFoundation.swf file but I did find a FileInfoFoundation.swc file - where would i get a FileInfoFoundation.swf file?
    I wasn't sure what you meant , so I copied FileInfoFoundation.swc to :
    C:\Program Files (x86)\Common Files\Adobe\XMP\Custom File Info Panels\2.0\panels\BasicControlSamplePanel\bin
    It didn't make a difference!
    Is there something I'm missing or something else I need to do?
    Thanks for your help on this.
    Paul.

  • Combining a Flex FileInfo panel for Illustrator with an Illustrator Javascript

    I've got an Illustrator script (Javascript) that writes XMP based on the content of the artwork, but the script has to be manually triggered. I've got a custom FileInfo panel (built with Flex/AS3) to help me edit the XMP once stored.
    I'd like to combine the two, so the Script fires whenever the FileInfo panel opens.
    I can't do the DOM scripting directly in AS3, can I? I think that Illustrator is only open to Javascript, VB, and AppleScript. Please correct me if I'm wrong.
    Does anyone have any ideas how to call the javascript in the Scripts folder from an event in the FileInfo panel's SWF, and pass arguements back and forth? I've seen it done on webpages, but only when both the SWF  and javascript are on the same HTML page.
    Thanks

    Hi Hui
    Well, sort of, although I've made a bit more progress now and the events part seems to be working.
    I originally thought that fPPLib was specifically for Flex/Flash but I now realise that it is the main PlugPlug interface (which now includes HTML5 panels - right?)
    I think what I really need is HTML5 panels 101 (for Illustrator). The exmples in this forum are InDesign specific and all the c++ libraries are different. Also nothing I've seen so far shows how to make an extension work from within Illustrator's menus (as opposed to just from Window->Extensions).
    I have a plugin which requires input parameters from the user.
    What I am trying to do is.
    1) Create an HTML5 extension panel which will collect values from the user.
    2) Attach that panel (or is it a modal dialog) to say Object->Filters in the main Illustrator menu
    3) Have that panel load previous plugin parameters (*from the current session)
    4) Validate the user values in the panel.
    5) Make the panel communicate those values to the plugin
    6) Show/Hide the panel as required (i.e. open it from a menu item, close it when done).
    Also, in the original flash panel which I am trying to adapt, there is a lot of ActionScript in the mxml file.
    Where does all that go now? Is that what ExtendScript is for (and if so are there some useful tutorials on it anywhere?)
    I know that is a lot of questions. Apologies - I'm new to this and impatient to make some real progress.
    Cheers,
    Rob

  • Linking FileInfo Panel to an Illustrator Script

    I've got an Illustrator script (Javascript) that writes XMP based on the content of the artwork, but the script has to be manually triggered. I've got a custom FileInfo panel (built with Flex/AS3) to help me edit the XMP once stored.
    I'd like to combine the two, so the Script fires whenever the FileInfo panel opens.
    I can't do the DOM scripting directly in AS3, can I? I think that Illustrator is only open to Javascript, VB, and AppleScript. Please correct me if I'm wrong.
    Does anyone have any ideas how to call the javascript in the Scripts folder from an event in the FileInfo panel's SWF, and pass arguements back and forth? I've seen it done on webpages, but only when both the SWF  and javascript are on the same HTML page.
    Thanks

    Thanks Carlos, this led me in the right direction, but not quite far enough.
    I found Zac's Cookbook on jsxInterface, but it isn't working for me. I've set up the project linking the SWCs as directed by the SDK (csaw, apedelta, etc.), but when I use his code, I get error 1120 access of undefined property error.
    I think I've imported all of the classes that I need. I'm thinking that I might have the javacript in the wrong folder of my project (although I've tried it in several, its in the src folder of the project with the mxml file), or that the javascript itself isn't valid (I've checked that it is).
    Any ideas what I'm missing to make this work?
    Thanks,
    Alex
    import com.adobe.csawlib.*;
    import com.adobe.illustrator.Application;
    [Embed (source= "myScript.jsx" , mimeType= "application/octet-stream" )]
    private static var myScriptClass:Class;
    var jsxInterface:HostObject = HostObject.getRoot(HostObject.extensions[0]);
    jsxInterface.eval(new myScriptClass().toString())

  • Using a repeater in a custom FileInfo Panel --data binding error

    When I developed a custom FileInfo panel in Flex Builder 3, I could use an array to populate a checkBox control inside a repeater, and it worked.
    Now, using Flash Builder 4, data binding with <mx:Repeater> doesn't seem to work, resulting in an empty fileInfo panel.
    When I remove the dataProvider from the <mx:Repeater> tag, my panel displays, but without the repeater. How can I specify the dataProvider in a different way that works?
    Thanks
    The code:
    <fi:XMPForm
              xmlns:mx="http://www.adobe.com/2006/mxml"
              xmlns:fi="com.adobe.xmp.components.*" width="100%" height="100%"
              label="TestPanel2_1" xmlns:s="library://ns.adobe.com/flex/spark" >
         <!-- Each namespace prefix that is used within an xmpPath-attribute,
              MUST BE registered at the top of EACH panel where it is referenced -->
         <fi:XMPNamespaces>
              <fi:XMPNamespace prefix="dc" value="http://purl.org/dc/elements/1.1/"/>
         </fi:XMPNamespaces>
         <mx:Script>
              <![CDATA[
                   import mx.collections.ArrayCollection;
                   [Bindable] public var newArray:Array =["One", "Two", "Three", "Four", "Five"];         
              ]]>
         </mx:Script>
         <fi:XMPFormItem>
              <mx:VBox id="primaryFrame" width="800">    
                   <mx:Repeater id="myRep" dataProvider="{newArray}">
                        <mx:Label text="{myRep.currentItem}"/>                  
                   </mx:Repeater>
              </mx:VBox>
         </fi:XMPFormItem
    </fir:XMPForm>

    Okay, I may have been making a rookie mistake. I see online reports that you can't bind an array to a repeater (even though it has worked for me).
    I've added the following variable to make my array an array collection:
    [Bindable] public var newArray2:ArrayCollection = new ArrayCollection(newArray);
    After changing the binding of the repeater to the new array and running the build, the fileInfo panel still does not function.
    Any thoughts?

  • Custom Fileinfo Panel Deploy folder seems to be wrong in SDK documentation

    Hi,
    I am working on to create custom tab for the FileInfo panel. In the sdk pdf it mentions that for windows the deploy folder is /user/<username>/appdata/adobe/xmp/Custom File Info Panels/3.0/panels. I deployed my panel there but nothing came up in Photoshop. I then deployed the custom tab into C:\Program Files (x86)\Common Files\Adobe\XMP\Custom File Info Panels\2.0\panels and it works.
    So, what is going on here? Is the deploy folder wrong in SDK? Or there is some way it should work from the first path (mentioned above)? Also, when I went to  /user/<username>/appdata/adobe/xmp there was no "Custom File Info Panels" folder. I had to create them manually. Does that indicate a problem?
    Thanks.

    Hi,
    no there is no problem, but the different suite version use different paths, so that they can live side-a-side:
    CS4 --> .../Custom File Info Panels/2.0/...
    CS5.x --> .../Custom File Info Panels/3.0/...
    On our SDK page (http://www.adobe.com/devnet/xmp.html), currently onle the CS5.x SDK is linked:
    http://download.macromedia.com/pub/developer/xmp/sdk/XMP-FileInfo-SDK-5.1.zip
    But invisibly, you can also access the CS4 SDK:
    http://download.macromedia.com/pub/developer/xmp/sdk/XMP-FileInfo-SDK-4.4.2.zip
    We will add the link to the SDK page soon.
    Hope this helps,
    -- Stefan

  • Write XMP data to custom FileInfo Panel in CS5

    Hello,
    I have created a custom FileInfo Panel in CS5.5. We had a programmer create a shell script to do the same thing for CS3, but now he wants too much money to rewrite the script for CS5.5. I was able to create the custom info panel easily using a text editor (he claimed you needed FlashBuilder which he wanted us to pay for). It works perfectly and even maps to Xinet with no problem. But his shell script and Applescript (from Filemaker to file) no longer work. The data is being embedded into the file, but not using the new custom info panel. Is there anyone out there that knows how to either write to a custom info panel or could help me figure it out...or even tell me how to map the data to the correct info panel? I'm no programmer, but I can hack my way through a lot of stuff.
    If someone wants a paying gig to make this happen, please respond.
    Thanks!
    -Motogrrl1313

    I already have a filemaker applescript that copies the data to a web page in Xinet. Not knowing too much about bridge, I'd have to see how Bridge reads the panel and figure out how to map the copy to Bridge. Has anyone ever done that? This was going to be my alternate solution when I was looking to do this in CS3, then I found the guy who had written the app to write to the file. This would make a good compromise, though.

  • Error 99 using Flex with FileInfo SDK

    Hello
    I am creating a new XMP panel for CS4 using Flex 3.0.1 and the FileInfo SDK 4.4.2. When I create a new Wizard project (using XMP Custom Panel project), at the end the Design tab shows the message (I have not edited anything from the generated files):
    There is an error at line 99 of your MXML document.
    The "Sample" tag has invalid syntax.
    The line 99 contains the following generated code:
    Anyone tried to use Flex and the FileInfo XMP Wizard and know how to solve this issue? The Project compiles and executes well but this message is quite strange.
    Thank You
    Massimo

    Hi Massimo,
    you try to watch the *wrapper code* in the design mode. Problem is
    that the design mode of Flex still has some bugs when it comes to the display of own components.
    But what you can do is: open the actual panel class "Sample" and switch
    to the design mode -- that works and that should be the thing that you actually wanted to see.
    Hope this helps.
    -- Stefan

  • Using latest FileInfo SDK, latest Flash Builder, new project crashes in latest Bridge

    I've been trying to create a custom panel in Adobe Bridge.  I downloaded the XMP-FileInfo-SDK-CS6, loaded the jar file into Adobe Flash Builder 4.7 (latest version), created a new project with NO modifications, and published it to the correct Custom File Info Panels folder on Windows 7.  I then restarted Bridge, opened FileInfo in a photo, but when I navigated to the new panel that I just created, it fails to load correctly and hangs the entire application.  The only way to close the window is to restart Bridge.
    So just to be clear -- latest SDK, latest Flash Builder, latest Bridge version, new project, no modifcation, completely crashes Bridge.  The GenericPanel is about the only thing that works without problem, but it's a little too limited for what I want to do (no business logic). 
    Not very reassuring that this is going to work at all.  Has anyone else experienced this?  Is there any workaround, or update I can try instead?
    Thanks.

    Ok, finally got this working.  Many hidden gotchas. 
    1.  You have to make a Trust File for your custom panel.  This is actually in the SDK, around page 53, so my bad -- but the problem is that there is no feedback from the Adobe application if you don't have this.  The application just hangs.  It should produce an error message "can't find trust file, etc.".  This should not be that hard to implement.
    2.  The latest Flex SDK does not seem to work in Bridge CC or other similar applications.  You have to use Flex SDK 3.x, apparently, and this is NOT in the documentation.  Not only should you set the default SDK in Flex Builder to 3.x (I'm using 3.6) but you have to edit the build.properties file to make sure it's pointing to the correct folder, eg: C:/Program Files/Adobe/Adobe Flash Builder 4.7 (64 Bit)/sdks/3.6.0.  Fortunately Flash Builder 4.7 comes with 3.6 installed.  If you have an older version, it's likely to be completely different.
    More info in this thread: http://forums.adobe.com/thread/1114153.

  • Copy, count files, test path, process indicator and System.IO.FileInfo

    I found this, sctipt, that I try to re-write.
    As it is, it creates sub folders in the targetfolder, which I found out how to stop it from, by deleting the "\" backslash sign in line 9.
    But what I also want is that subfolders if such should exist, also gets copied from $source to $target folder, as of now this doesn't happen. Reason why I chose to try to re-write the script is basically, I can read what it does and I like all the flashy
    Things like counting and that it shows the percentage of the processbar AND the processbar :).
    I just don't now how to re-write it proberly. By the way nothing should be re-named in the targetfolder every thing from sourcefolder should be "as is" in the sourcefolder.
    $SourceFolder = "C:\Color1\TRID"
    $targetFolder = “C:\Color2\TRID”
    $numFiles = (Get-ChildItem -Path $SourceFolder -Filter *.*).Count
    $i=0
    clear-host;
    Write-Host ‘This script will copy ‘ $numFiles ‘ files from ‘ $SourceFolder ‘ to ‘ $targetFolder
    Read-host -prompt ‘Press enter to start copying the files’
    Get-ChildItem -Path $SourceFolder -Filter *.* | %{
    [System.IO.FileInfo]$destination = (Join-Path -Path $targetFolder -ChildPath $_.Name.replace(“_”,“\”))
    if(!(Test-Path -Path $destination.Directory ))
    New-item -Path $destination.Directory.FullName -ItemType Directory
    [int]$percent = $i / $numFiles * 100
    copy-item -Path $_.FullName -Destination $Destination.FullName
    write-Progress -Activity “Copying … ($percent %)” -status $_ -PercentComplete $percent -verbose
    $i++
    Write-Host ‘Total number of files read from directory ‘$SourceFolder ‘ is ‘ $numFiles
    Write-Host ‘Total number of files that was copied to ‘$targetFolder ‘ is ‘ $i
    Read-host -prompt “Press enter to complete…”
    clear-host;

    @Jaap
    Yes I want to overwrite existing files, since backup is taken care of by another script.
    Now I encounter this error when trying to use your write-progress example:
    Get-ChildItem : A parameter cannot be found that matches parameter name 'Files'.
    At line:3 char:51
    + $Files = Get-ChildItem -LiteralPath $SourceFolder -Files
    +                                                  
    ~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException
        + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
    cmdlet ForEach-Object at command pipeline position 1
    Supply values for the following parameters:
    Process[0]:
    Here is the script as I thought it should look like:
    $SourceFolder = "C:\Color1\TRID"
    $targetFolder = “C:\Color2”
    $Files = Get-ChildItem -LiteralPath $SourceFolder -Files
    $NumberofFiles = $Files.Count
    $Files | ForEach-Object -Begin {
    $FilesCopied = 0
    -progress{
    Write-Progress -Activity "Copying Files..." -PercentComplete [int](($FilesCopied/$NumberofFiles)*100) -CurrentOperation "$FilesCopied files copied out of total of $NumberofFiles files" -Status "Please wait."
    "$((Get-ChildItem -Recurse -File -LiteralPath $SourceFolder).Count) files will be copied to $targetfolder"
    Read-Host -Prompt 'Press Enter to Start Copying...'
    Copy-Item $SourceFolder -Recurse -Destination $targetFolder -Force -verbose
    $FilesCopied++
    # What is wrong now?

  • Enhancing FileInfo Generic Panels

    Hi,
    the FileInfo SDK offers two approaches to extend the XMP FileInfo dialog found in many Adobe applications.
    1.) A generic panel which can be setup by editing a couple of XML files.
    It offers only limited support for properties defined in XML, it can display only simple XMP properties and comma-separated array lists, with limited layout capabilities (e.g. separators).
    2.) A Flash-based custom panel that offers more possibilities but needs some programming skills to develop.
    The XMP team is currently thinking about enhancing the generic panel approach to make it easier to build complex Metadata UI without programming skills. Planned features are, for example, support for complex properties and more layout capabilities.
    We would like to get feedback from you about enhancing the generic panels and also collect examples of generic panels, as well as flash-based panels.
    Have you developed a generic panel or flash-based panel in the past? Why did you choose one approach over the other? Which features would make a generic panel more valuable to you?
    Please post your experience with FileInfo panels to this thread and, if possible, show us your panel. You can also send us your panel through private forum mail and we will keep it confidential.
    Thanks for your help!

    Over the years I have built several (generic) File Info panels and 
    Bridge Metadata Panes that can display multi-dimensional XMP arrays, 
    such as those used in IPTC Extension, PLUS , and PRISM Metadata for 
    Images schemas.
    These directly index the row and column in the array. Attached is a 
    partial screenshot of a CS4 Bridge Metadata Pane for PRISM Metadata 
    for Images that uses IPTC Extension arrays that have been extended by 
    one sub property: agreementID. With the preference "Hide Empty Fields" 
    this pane is practical for viewing existing complex XMP metadata in a 
    file. There is a version of this pane for old File Info, and one for 
    the newer File Info (XML).
    The second attachment is a screen shot of the corresponding (old) File 
    Info Panel (0.0/1.0). The two dimensional arrays are displayed as 
    fixed height tables with column headers: Location, City, State, ... A 
    new ( 2.0+) File Info Generic Panel was constructed, but with a 
    separate line per sub property, it is very, very tall and not 
    practical for use.
    The array fields in this pane and this panel are set to be display-only.
    If the array fields were set to be read/write and the array already 
    contained data when the XMP packet is opened, then File Info is 
    capable to editing/appending to it. However, if the array does not 
    exist when File Info opens the XMP packet, any data entered into these 
    fields will be ignored when the packet is updated. It appears that 
    (generic) File Info cannot generate a new XMP array structure. As a 
    result, these panes and panels were constructed with the array fields 
    as display-only.
    I have experimented with directly indexing into 3, 4 and 5 dimensional 
    XMP arrays in File Info. It behaves the same as with 1 and 2 dimensions.
    Observation: If File Info could generate new XMP array structures when 
    none previously existed in the packet, like it does for full custom 
    Flash File Info panels, then generic Bridge Metadata Panes and Acrobat 
    Pro (old) File Info panels could support read/write of complex XMP 
    metadata.
    Regards,
    Carl Rambert (previously with Pound Hill Software)

  • FileInfo.CopyTo Size Restrictions

    Are there file size restrictions in using the FileInfo.CopyTo function?
    I have a Service which sorts files around on a machine and I tend to see failures in very large file sizes.  The routine moves files from one array to another. 
    If I open File Explorer and copy the file manually I do not get an error.
    The Event log under System will show a message:
    {Delayed Write Failed} Windows was unable to save all the data for the file.  The data has been lost.  This error may be caused by a failure of your computer
    hardware or network connection.  Source Ntfs.  Category None
    Followed by:
    Application popup 
    Windows - Delayed Write Failed.  Windows was unable to save all data for the file xxxxxx.  The data has been lost.  Source Application popup.  Category None.
    The file today is about 50GB in size and is moving from one SAS array to another.  I only get these failures in very large files (larger than 5GB) and of course
    it is not consistent.  The files alway work fine in file explorer which would lead me to believe that it is not a hardware issue.
    So to make the question simple, is there a time-out period in the CopyTo routine that would cause it to decide that the copy has failed prematurely?  Is there a better
    routine I should be using to move the files around on the system?
    I'm not seeing an exception being logged by the Service under Application during this time.
    I appreciate any information on this topic.
    Thanks,
    Mike

    The error is coming from the file system driver. This isn't a .NET issue. The failure is occurring when the driver is trying to write to the drive (it uses delay writing to optimize writes) and that is failing.  File.CopyTo does nothing but verify
    the path and then call Win32's CopyFile API.  Note that Windows Explorer more likely uses CopyFileEx instead. They are similar but CFE provides a few additional options useful in UIs. There is no .NET wrapper around this call.

Maybe you are looking for

  • Unable to connect report to database on client machine

    I am using C# and Visual Studio 2010 with several Crystal Reports embedded into my application as resources.  This is a Windows application running on Vista.  I am trying to connect to a SQL Server database.  I created the reports using the design wi

  • Problem on drawin a graph

    I'm a just beginner in Swing.I want to draw a graph on a frame.My problem is.....:in the o/p window graph is just become disable afterit came.it will reappear whwn we maximize thhe o/p window...my part of code is following: public void paint(Graphics

  • 'Days Elapsed' computed field in lightswitch HTML client

    I am developing a simple lightswitch HTML application to keep track of research experiments. I have a table called 'Experiments' and one of the fields is 'ExperimentDate'. I want to display the number of days that have passed since the date of experi

  • Deploying JDBC driver for SQL Server 2005 on PI 7.1

    How to Deploy JDBC driver for SQL Server 2005 on PI 7.1 on Windows 2003 server We are in NW PI 7.1 and third party db is sql server 05. Found How-to Guide SAP NetWeaver u201804 but unable to find for NW PI 7.1 Can any one help me on this? (looking fo

  • Business Catalyst Sites

    Will I be able to use 5 different domain names on the 5 free Business Catalyst Sites that come with cloud membership? If I am setting these up for my clients I would expect to use unique names for each one, correct?