I had a look at the sample files - it doesn't look that good...while writing this sample code Adobe should have recognized that there is something missing (getting a UIDList of all imported page items).<br /><br />So I coded a solution using an IObserver which works fine for me:<br />---------------------------------------------------------------------<br />observer.cpp<br />------------<br />#include "VCPlugInHeaders.h"<br />#include "observer.h"<br /><br />CREATE_PMINTERFACE(IRserverDocObserver, kIRserverDocObserverImpl)<br /><br />IRserverDocObserver::IRserverDocObserver(IPMUnknown* boss) : CObserver(boss, IID_IIRSERVEROBSERVER)<br />{<br />}<br />IRserverDocObserver::~IRserverDocObserver() <br />{<br />}<br />void IRserverDocObserver::AutoAttach()<br />{<br />}<br />void IRserverDocObserver::AutoDetach()<br />{<br />}<br />void IRserverDocObserver::Update(const ClassID& theChange, ISubject* theSubject, const PMIID& protocol, void* changedBy)<br />{<br /> if (theChange == kAddToHierarchyCmdBoss)<br /> {<br /> ICommand* iCommand = (ICommand*)changedBy;<br /> const UIDList* itemList = iCommand->GetItemList();<br /> IDataBase* database = ::GetUIDRef(theSubject).GetDataBase();<br /> for (int i = 0; i < itemList->Length(); i++)<br /> {<br /> if (database->GetClass(itemList->At(i)) == kSplineItemBoss)<br /> {<br /> if (!this->newPageitemsUIDs.Contains(itemList->At(i)))<br /> {<br /> if (this->newPageitemsUIDs.Length() == 0)<br /> {<br /> this->newPageitemsUIDs = UIDList(database, itemList->At(i));<br /> }<br /> else<br /> {<br /> this->newPageitemsUIDs.Append(itemList->At(i));<br /> }<br /> }<br /> }<br /> }<br /> }<br />}<br />bool IRserverDocObserver::AttachDocument()<br />{<br /> bool retval = false;<br /> this->newPageitemsUIDs.Clear();<br /> InterfacePtr<IDocument> document(this, UseDefaultIID());<br /> if (document)<br /> {<br /> InterfacePtr<ISubject> docSubject(document, UseDefaultIID());<br /> if (docSubject && !docSubject->IsAttached(this, IID_IHIERARCHY_DOCUMENT, IID_IIRSERVEROBSERVER))<br /> {<br /> docSubject->AttachObserver(this, IID_IHIERARCHY_DOCUMENT, IID_IIRSERVEROBSERVER);<br /> retval = true;<br /> }<br /> }<br /> return retval;<br />}<br />bool IRserverDocObserver::DetachDocument()<br />{<br /> bool retval = false;<br /> InterfacePtr<IDocument> document(this, UseDefaultIID());<br /> if (document)<br /> {<br /> InterfacePtr<ISubject> docSubject(document, UseDefaultIID());<br /> if (docSubject && docSubject->IsAttached(this, IID_IHIERARCHY_DOCUMENT, IID_IIRSERVEROBSERVER))<br /> {<br /> docSubject->DetachObserver(this, IID_IHIERARCHY_DOCUMENT, IID_IIRSERVEROBSERVER);<br /> retval = true;<br /> }<br /> }<br /> return retval;<br />}<br />PMString IRserverDocObserver::GetNewPageitemsUIDs()<br />{<br /> PMString UIDs;<br /> for (int i = 0; i < this->newPageitemsUIDs.Length(); i++)<br /> {<br /> if (!UIDs.IsEmpty())<br /> {<br /> UIDs.Append(",");<br /> }<br /> UIDs.AppendNumber(this->newPageitemsUIDs.At(i).Get());<br /> }<br /> return UIDs;<br />}<br />---------------------------------------------------------------------<br />observer.h<br />----------<br />#include "IDocument.h"<br />#include "IHierarchy.h"<br />#include "ISubject.h"<br />#include "CObserver.h"<br />#include "UIDList.h"<br />#include "SplineID.h"<br />#include "IRserverID.h"<br /><br />class IRserverDocObserver : public CObserver<br />{<br />public:<br /> IRserverDocObserver(IPMUnknown* boss);<br /> virtual ~IRserverDocObserver();<br /> void AutoAttach();<br /> void AutoDetach();<br /> bool AttachDocument();<br /> bool DetachDocument();<br /> virtual void Update(const ClassID& theChange, ISubject* theSubject, const PMIID& protocol, void* changedBy);<br /> PMString GetNewPageitemsUIDs();<br />protected:<br /> UIDList newPageitemsUIDs;<br />};<br />---------------------------------------------------------------------<br />*.fr file<br />---------<br />AddIn<br />{<br /> kDocBoss,<br /> kInvalidClass,<br /> {<br /> IID_IIRSERVEROBSERVER, kIRserverDocObserverImpl<br /> }<br />},<br />---------------------------------------------------------------------<br /><br />Then I use this code around the import:<br /><br />InterfacePtr<IRserverDocObserver> docObserver(documentUIDRef, IID_IIRSERVEROBSERVER);<br />if (!docObserver->AttachDocument())<br />{<br /> return; <br />}<br />if (Utils<ISnippetImport>()->ImportFromStream(stream, documentElement, kInvalidClass, kSuppressUI) != kSuccess)<br />{<br /> return;<br />}<br />PMString importedItems = docObserver->GetNewPageitemsUIDs();<br />docObserver->DetachDocument();<br /><br />Maybe this is useful for anyone having the same problem.<br />Thanks for your help<br />Detlef