In the afternoon and evening I was working on my XMP panel.
The first trouble I had was I didn't know how access the value of the selected items in my
<mx:List>
element. The answer was to do listElement.selectedItems, which gives an array and then loop through it.The second problem was how to add the selectedItems values to the XMP item, which was a bag array. After much messing around I found the answer in the source files for one of the example panels supplied with the XMP Toolkit SDK.
In the YahooSearchExamplePanel, they have the following function:
/**
* Adds the selected search result as a keyword entry to the XMP
*/
private function updateKeyword():void{
try{
//If no former dc:subject entry exists this call makes sure the property exists within the XMP
xmpAccess.setProperty("dc:subject", "", IXMPConst.ARRAY);
//Now one can set a value in a given position.
//Note: It is not possible to set values arbitrarily. If for example 2 Values exist it is only possible to
//set the first, second and third entry.
xmpAccess.setProperty("dc:subject["+(_dataGrid.selectedIndex + 1)+"]", _dataGrid.selectedItem.value);
}catch(e:Error){
Alert.show("A keyword needs to be selected");
}
}
So when dealing with arrays, you don't setProperty of the element, but rather the element[arrayIndexValue]. Also note this seems to start from 1, rather than 0.
Now in that code above, note they create the
dc:subject
element if it doesn't already exist. Only problem is, that this doesn't actually work. If you remove the third parameter of that method call, it will create a blank dc:subject
element, and won't set any array elements for it. If you leave in the third parameter, it won't create the dc:subject
element and so won't set any array elements for it either. I played around with this for quite a long time, but couldn't get it to work. I guess that it should work, but Adobe haven't actually implemented it. I tested using Adobe's YahooSearchSamplePanel panel, rather than just copy/pasting their code to my own panel, to make sure it wasn't just something in my panel that was breaking it.So I decided to try and get my
<mx:List>
element so it would insert its values into a bag array field with the correct xmpPath in the form, then when you close the File Info dialog it will update the field correctly. It took me quite a while to figure out how to access the value of the XMPTextAreaMRU
element (which is holding the bag array), but I did work it out eventually - you need to give it an id, then you can do theid.text
to get and set its value.In the evening I also went on Animal Crossing for a bit. Also today, I received some pogs from a Brazillian person that I did a swap with.
The weather today was a bit misty early on, then sunny the rest of the day.
Food
Breakfast: Pink grapefruit marmalade toast sandwich; cup o' tea.
Lunch: 1½ cheese on toasts; sweet & crunchy salad; clementine; Rocky; cup o' tea.
Dinner: Breaded chicken portion; chips; sweet & crunchy salad; tomato ketchup; salt; ground black pepper. Pudding was rhubarb crumble with cream - deelee!! Coffee; Flake.
No comments:
Post a Comment