IATSProvider.h

Go to the documentation of this file.
00001 //**************************************************************************/
00002 // Copyright (c) 1998-2005 Autodesk, Inc.
00003 // All rights reserved.
00004 // 
00005 // These coded instructions, statements, and computer programs contain
00006 // unpublished proprietary information written by Autodesk, Inc., and are
00007 // protected by Federal copyright law. They may not be disclosed to third
00008 // parties or copied or duplicated in any form, in whole or in part, without
00009 // the prior written consent of Autodesk, Inc.
00010 //**************************************************************************/
00011 // DESCRIPTION: Interface to ATS Providers 
00012 // AUTHOR: Michael Russo - created December 15, 2004
00013 //***************************************************************************/
00014 
00015 #pragma once
00016 
00017 #include <WTypes.h>
00018 #include <string>
00019 #include <vector>
00020 #include "..\strbasic.h"
00021 #include "..\MaxHeap.h"
00022 
00023 #ifndef ATSExport
00024     #define ATSExport __declspec( dllexport )
00025 #endif
00026 
00028 //
00029 // Consts and Typedefs
00030 //
00032 
00034 typedef int         ATSResult;
00036 typedef DWORD       ATSStatus;
00038 typedef DWORD       ATSOption;
00040 typedef LONG_PTR    ATSClientPtr;
00042 typedef DWORD       ATSVersion;
00044 typedef std::basic_string<MCHAR> ATSString;
00045 
00047 #define IS_ATS_ERROR(res)   ( ((res) <  kATSResSuccess) ? true : false )
00048 
00049 #define IS_ATS_SUCCESS(res) ( ((res) >= kATSResSuccess) ? true : false )
00050 
00051 namespace ATS {
00052 
00053     //
00054     // ATS API Version
00055     //
00057     const DWORD     kATSAPIVersion              = 200;
00058 
00059     //
00060     // ATS Result Codes
00061     //
00065     const ATSResult kATSResErrorNotSupported    = -2;
00067     const ATSResult kATSResError                = -1;
00069     const ATSResult kATSResSuccess              =  0;
00073     const ATSResult kATSResSuccessReload        =  1;
00074 
00075     //
00076     // ATS File Status Flags Out
00077     //
00079     const ATSStatus kATSStatusUnknown           = 0x00000000;
00081     const ATSStatus kATSStatusNotControlled     = 0x00000001;
00083     const ATSStatus kATSStatusControlled        = 0x00000002;
00085     const ATSStatus kATSStatusCheckedOut        = 0x00000004;
00087     const ATSStatus kATSStatusCheckedOutOther   = 0x00000008;
00089     const ATSStatus kATSStatusOutOfDate         = 0x00000010;
00091     const ATSStatus kATSStatusDeleted           = 0x00000020;
00093     const ATSStatus kATSStatusMissing           = 0x00000040;
00095     const ATSStatus kATSStatusModified          = 0x00000080;
00097     const ATSStatus kATSStatusHidden            = 0x00000100;
00099     const ATSStatus kATSStatusShareLock         = 0x00000200;
00100 
00102     const ATSStatus kATSStatusCanCheckin        = 0x00010000;
00104     const ATSStatus kATSStatusCanCheckout       = 0x00020000;
00106     const ATSStatus kATSStatusCanUndoCheckout   = 0x00040000;
00108     const ATSStatus kATSStatusCanGetLatest      = 0x00080000;
00110     const ATSStatus kATSStatusCanAddFile        = 0x00100000;
00112     const ATSStatus kATSStatusCanShowHistory    = 0x00200000;
00114     const ATSStatus kATSStatusCanShowProperties = 0x00400000;
00115 
00116     //
00117     // ATS File Status Flags In/Out
00118     //
00120     const ATSStatus kATSStatusSelected          = 0x0001;
00122     const ATSStatus kATSStatusChecked           = 0x0002;
00124     const ATSStatus kATSStatusActive            = 0x0004;
00126     const ATSStatus kATSStatusExcluded          = 0x0008;
00128     const ATSStatus kATSStatusHide              = 0x0010;
00129 
00130     //
00131     // ATS Provider Options
00132     //
00134     const ATSOption kATSOptNone                 = 0x0000;
00136     const ATSOption kATSOptKeepCheckedOut       = 0x0001;
00138     const ATSOption kATSOptReplaceLocalCopy     = 0x0002;
00140     const ATSOption kATSOptSilent               = 0x0004;
00142     const ATSOption kATSOptAssocChildren        = 0x0008;
00144     const ATSOption kATSOptAssocParents         = 0x0010;
00146     const ATSOption kATSOptAssocRecurse         = 0x0020;
00147 
00148     //
00149     // ATS Support option flags
00150     //
00152     const ATSOption kATSSupportNone             = 0x0000;
00154     const ATSOption kATSSupportFileAssoc        = 0x0001;
00156     const ATSOption kATSSupportExploreProvider  = 0x0002;
00157 
00158     //
00159     // ATS Client Status Text flags
00160     //
00162     const ATSStatus kATSStatusTextNone          = 0x0000;
00164     const ATSStatus kATSStatusTextInfo          = 0x0001;
00166     const ATSStatus kATSStatusTextWarning       = 0x0002;
00168     const ATSStatus kATSStatusTextError         = 0x0004;
00170     const ATSStatus kATSStatusTextPrompt        = 0x0008;
00171 
00172     //
00173     // ATS Client Option flags
00174     //
00176     const ATSOption kATSClientOptNone           = 0x0000;
00178     const ATSOption kATSClientOptUIAlwaysOnTop  = 0x0001;
00179 
00180 };
00181 
00183 //
00184 // class ATSFileEntry
00185 //
00187 
00189 
00197 class ATSFileEntry : public MaxHeapOperators
00198 {
00199 public:
00201     ATSExport ATSFileEntry();
00203     ATSExport virtual ~ATSFileEntry();
00204 
00206 
00208     ATSExport virtual const MCHAR*  GetFile();
00210 
00212     ATSExport virtual void          SetFile( const MCHAR *szFile );
00213 
00215 
00219     ATSExport virtual ATSStatus     GetFlagsIn();
00221 
00225     ATSExport virtual void          SetFlagsIn( ATSStatus dwFlagsIn );
00226 
00228 
00231     ATSExport virtual ATSClientPtr  GetClientPtr();
00233 
00235     ATSExport virtual void          SetClientPtr( ATSClientPtr pClientPtr );
00236 
00238 
00242     ATSExport virtual ATSStatus     GetFlagsOut();
00244 
00248     ATSExport virtual void          SetFlagsOut( ATSStatus dwFlagsOut );
00249 
00251 
00254     ATSExport virtual UINT          AddChild( ATSFileEntry *pEntry );
00256 
00258     ATSExport virtual UINT          NumChildren();
00260 
00263     ATSExport virtual ATSFileEntry* GetChild( UINT iIndex );
00265 
00268     ATSExport virtual bool          RemoveChild( UINT iIndex );
00270 
00272     ATSExport virtual bool          RemoveAllChildren();
00273 
00275 
00281     ATSExport virtual UINT          AddAttachment( const MCHAR *szFile, ATSFileEntry *pEntryParent = NULL, ATSStatus dwFlagsIn = ATS::kATSStatusActive, ATSClientPtr pClientPtr = NULL );
00283 
00287     ATSExport virtual UINT          AddAttachment( ATSFileEntry *pEntry );
00289 
00291     ATSExport virtual UINT          NumAttachments();
00293 
00296     ATSExport virtual ATSFileEntry* GetAttachment( UINT iIndex );
00298 
00301     ATSExport virtual bool          RemoveAttachment( UINT iIndex );
00303 
00305     ATSExport virtual bool          RemoveAllAttachments();
00306 
00308 
00310     ATSExport virtual void          SetParent( ATSFileEntry *pParent );
00312 
00314     ATSExport virtual ATSFileEntry* GetParent();
00315 
00316 protected:
00317     ATSString                       mFile;
00318     ATSStatus                       mFlagsIn;
00319     ATSStatus                       mFlagsOut;
00320     ATSClientPtr                    mClientPtr;
00321     std::vector< ATSFileEntry* >    mChildren;
00322     ATSFileEntry*                   mpParent;
00323     std::vector< ATSFileEntry* >    mAttachments;
00324 };
00325 
00327 //
00328 // class ATSFileList
00329 //
00331 
00333 
00338 class ATSFileList : public MaxHeapOperators
00339 {
00340 public:
00342     ATSExport ATSFileList();
00344     ATSExport virtual ~ATSFileList();
00345 
00346     //
00347     // Access to all file entries
00348     //
00349 
00351 
00357     ATSExport virtual ATSFileEntry* CreateEntry( const MCHAR *szFile, ATSFileEntry *pEntryParent = NULL, ATSStatus dwFlagsIn = ATS::kATSStatusActive, ATSClientPtr pClientPtr = NULL );
00359 
00362     ATSExport virtual ATSFileEntry* CreateEntry( ATSFileEntry &atsFileEntry );
00364 
00367     ATSExport virtual bool          RemoveEntry( ATSFileEntry *pEntry );
00369 
00371     ATSExport virtual UINT          NumEntries();
00373 
00376     ATSExport virtual bool          RemoveEntry( UINT iIndex );
00378 
00380     ATSExport virtual bool          RemoveAll();
00382 
00385     ATSExport virtual ATSFileEntry* GetFileEntry( UINT iIndex );
00386 
00387     //
00388     // Access to active file entries
00389     //
00390 
00392 
00400     ATSExport virtual UINT          BuildActiveList( ATSStatus dwFlagsIn = ATS::kATSStatusActive, bool bDepthFirstTraversal = false );
00402 
00405     ATSExport virtual UINT          AddActiveEntry( ATSFileEntry *pEntry );
00407 
00410     ATSExport virtual bool          RemoveActiveEntry( ATSFileEntry *pEntry );
00412 
00414     ATSExport virtual UINT          NumActiveEntries();
00416 
00419     ATSExport virtual ATSFileEntry* GetActiveFileEntry( UINT iIndex );
00420 
00421     //
00422     // Access to root level entries
00423     //
00424 
00426 
00428     ATSExport virtual UINT          NumRootEntries();
00430 
00433     ATSExport virtual ATSFileEntry* GetRootEntry( UINT iIndex );
00434 
00435 protected:
00436     std::vector<ATSFileEntry*>      mATSFiles;
00437     std::vector<ATSFileEntry*>      mATSRoots;
00438     std::vector<ATSFileEntry*>      mATSActiveFiles;
00439 };
00440 
00442 //
00443 // class IATSClientAccess
00444 //
00446 
00448 
00451 class IATSClientAccess : public MaxHeapOperators
00452 {
00453 public:
00455 
00459     virtual bool        SendStatusText( const MCHAR *szText, ATSStatus dwStatus = ATS::kATSStatusTextNone ) = 0;
00461 
00463     virtual HWND        GetParentWindow() = 0;
00465 
00469     virtual DWORD       GetUIColor( int iIndex ) = 0;
00471 
00473     virtual bool        SilentMode() = 0;
00475 
00477     virtual ATSOption   GetClientOptions() = 0;
00478 };
00479 
00480 
00482 //
00483 // class ATSClientInfo
00484 //
00486 
00488 
00490 class ATSClientInfo : public MaxHeapOperators
00491 {
00492 public:
00494     ATSExport ATSClientInfo();
00496     ATSExport virtual ~ATSClientInfo();
00497 
00499 
00502     ATSExport virtual const MCHAR*  GetClientName();
00504 
00507     ATSExport virtual void          SetClientName( const MCHAR *szClientName );
00508 
00510 
00513     ATSExport virtual const MCHAR*  GetUserName();
00515 
00517     ATSExport virtual void          SetUserName( const MCHAR *szUserName );
00518 
00520 
00522     ATSExport virtual HWND          GetParentWindow();
00524 
00526     ATSExport virtual void          SetParentWindow( HWND hHwnd );
00527 
00529 
00532     ATSExport virtual const MCHAR*  GetProviderPluginPath();
00534 
00537     ATSExport virtual void          SetProviderPluginPath( const MCHAR *szPath );
00538 
00540 
00543     ATSExport virtual const MCHAR*  GetConfigFilePath();
00545 
00548     ATSExport virtual void          SetConfigFilePath( const MCHAR *szPath );
00549 
00551 
00554     ATSExport virtual IATSClientAccess* GetIATSClientAccess();
00556 
00559     ATSExport virtual void          SetIATSClientAccess( IATSClientAccess* pIATSClientAccess );
00560 
00561 protected:
00562     ATSString                   mClientName;
00563     ATSString                   mUserName;
00564     ATSString                   mPluginPath;
00565     ATSString                   mConfigPath;
00566     HWND                        mHwnd;
00567     IATSClientAccess*           mpIATSClientAccess;
00568 };
00569 
00571 //
00572 // class ATSUserEntry
00573 //
00575 
00577 
00580 class ATSUserEntry : public MaxHeapOperators
00581 {
00582 public:
00584     ATSExport ATSUserEntry();
00586     ATSExport virtual ~ATSUserEntry();
00587 
00589 
00591     ATSExport virtual const MCHAR*  GetUserName();
00593 
00595     ATSExport virtual void          SetUserName( const MCHAR *szUserName );
00596 
00598 
00600     ATSExport virtual const MCHAR*  GetFirstName();
00602 
00604     ATSExport virtual void          SetFirstName( const MCHAR *szFirstName );
00605 
00607 
00609     ATSExport virtual const MCHAR*  GetLastName();
00611 
00613     ATSExport virtual void          SetLastName( const MCHAR *szLastName );
00614 
00616 
00618     ATSExport virtual const MCHAR*  GetEmail();
00620 
00622     ATSExport virtual void          SetEmail( const MCHAR *szEmail );
00623 
00624 protected:
00625     ATSString                       mUserName;
00626     ATSString                       mFirstName;
00627     ATSString                       mLastName;
00628     ATSString                       mEmail;
00629 };
00630 
00632 //
00633 // class ATSUserList
00634 //
00636 
00638 
00641 class ATSUserList : public MaxHeapOperators
00642 {
00643 public:
00645     ATSExport ATSUserList();
00647     ATSExport virtual ~ATSUserList();
00648 
00650 
00653     ATSExport virtual ATSUserEntry* CreateEntry( const MCHAR *szUserName );
00655 
00658     ATSExport virtual ATSUserEntry* CreateEntry( ATSUserEntry &atsUserEntry );
00660 
00663     ATSExport virtual bool          RemoveEntry( ATSUserEntry *pEntry );
00665 
00667     ATSExport virtual UINT          NumEntries();
00669 
00672     ATSExport virtual bool          RemoveEntry( UINT iIndex );
00674 
00676     ATSExport virtual bool          RemoveAll();
00678 
00681     ATSExport virtual ATSUserEntry* GetUserEntry( UINT iIndex );
00682 
00683 protected:
00684     std::vector<ATSUserEntry*>      mATSUsers;
00685 };
00686 
00688 //
00689 // class ATSExploreProviderParams
00690 //
00692 
00694 
00697 class ATSExploreProviderParams : public MaxHeapOperators
00698 {
00699 public:
00701     ATSExport ATSExploreProviderParams();
00703     ATSExport virtual ~ATSExploreProviderParams();
00704 
00706 
00709     ATSExport virtual const MCHAR*  GetTitle();
00711 
00714     ATSExport virtual void          SetTitle( const MCHAR* szTitle );
00715 
00717 
00720     ATSExport virtual bool          GetMultipleSelections();
00722 
00725     ATSExport virtual void          SetMultipleSelections( bool bMultipleSelections );
00726 
00728 
00731     ATSExport virtual bool          GetDownloadFiles();
00733 
00736     ATSExport virtual void          SetDownloadFiles( bool bDownload );
00737 
00739 
00747     ATSExport virtual UINT          AddFilter( const MCHAR* szName, const MCHAR* szExtensions );
00749 
00751     ATSExport virtual UINT          NumFilters();
00753 
00756     ATSExport virtual const MCHAR*  GetFilterName( UINT iIndex );
00758 
00761     ATSExport virtual const MCHAR*  GetFilterExtensions( UINT iIndex );
00762 
00763 protected:
00764     ATSString                   mTitle;
00765     DWORD                       mState;
00766     std::vector< ATSString >    mFilters;
00767     std::vector< ATSString >    mExtensions;
00768 };
00769 
00771 //
00772 // class IATSProvider
00773 //
00775 
00777 
00782 class IATSProvider : public MaxHeapOperators
00783 {
00784 public:
00786     virtual ~IATSProvider() {}
00787 
00789 
00791     virtual const MCHAR*    GetProviderName() = 0;
00792 
00794 
00799     virtual ATSOption       GetSupportOptions() = 0;
00800 
00802 
00804     virtual bool            IsInitialized() = 0;
00806 
00808     virtual bool            IsProjectOpen() = 0;
00809 
00811 
00820     virtual ATSResult       Initialize( ATSClientInfo &atsClientInfo, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00822 
00826     virtual ATSResult       Uninitialize( ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00827 
00829 
00838     virtual ATSResult       OpenProject( MCHAR *szPath, const MCHAR *szComment, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00840 
00845     virtual ATSResult       CloseProject( ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00846 
00848 
00850     virtual const MCHAR*    GetWorkingFolder() = 0;
00851 
00853 
00858     virtual ATSResult       SetWorkingFolder( const MCHAR *szWorkingFolder ) = 0;
00859 
00861 
00867     virtual ATSResult       Checkin( ATSFileList &atsFileList, const MCHAR *szComment, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00869 
00875     virtual ATSResult       Checkout( ATSFileList &atsFileList, const MCHAR *szComment, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00877 
00882     virtual ATSResult       UndoCheckout( ATSFileList &atsFileList, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00884 
00889     virtual ATSResult       GetLatest( ATSFileList &atsFileList, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00891 
00899     virtual ATSResult       GetVersionRange( ATSFileList &atsFileList, ATSVersion &verMin, ATSVersion &verMax, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00901 
00907     virtual ATSResult       GetVersion( ATSFileList &atsFileList, ATSVersion ver, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00909 
00915     virtual ATSResult       AddFiles( ATSFileList &atsFileList, const MCHAR *szComment, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00916 
00918 
00925     virtual ATSResult       History( ATSFileList &atsFileList, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00927 
00933     virtual ATSResult       Properties( ATSFileList &atsFileList, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00934 
00936 
00943     virtual ATSResult       GetFileStatus( ATSFileList &atsFileList, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00944 
00946 
00956     virtual ATSResult       GetLockedFileUserList( ATSFileList &atsFileList, ATSUserList &atsUserList, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00957 
00959 
00969     virtual ATSResult       ExploreProvider( ATSFileList &atsFileList, ATSExploreProviderParams &exploreParams, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00970 
00972 
00976     virtual ATSResult       ShowProviderOptions( ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00978 
00982     virtual ATSResult       LaunchProvider( ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00983 
00985 
00992     virtual ATSResult       GetAssociatedFiles( ATSFileList &atsFileList, ATSOption atsOptions = ATS::kATSOptNone ) = 0;
00993 
00995 
00999     virtual bool            IsATSMSSCCWrapper() = 0;
01000 };
01001