Back to index

lightning-sunbird  0.9+nobinonly
nsAEWindowClass.h
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
00002 /* ***** BEGIN LICENSE BLOCK *****
00003  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
00004  *
00005  * The contents of this file are subject to the Mozilla Public License Version
00006  * 1.1 (the "License"); you may not use this file except in compliance with
00007  * the License. You may obtain a copy of the License at
00008  * http://www.mozilla.org/MPL/
00009  *
00010  * Software distributed under the License is distributed on an "AS IS" basis,
00011  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
00012  * for the specific language governing rights and limitations under the
00013  * License.
00014  *
00015  * The Original Code is Mozilla Communicator client code.
00016  *
00017  * The Initial Developer of the Original Code is
00018  * Netscape Communications Corporation.
00019  * Portions created by the Initial Developer are Copyright (C) 1998
00020  * the Initial Developer. All Rights Reserved.
00021  *
00022  * Contributor(s):
00023  *   Simon Fraser <sfraser@netscape.com>
00024  *
00025  * Alternatively, the contents of this file may be used under the terms of
00026  * either of the GNU General Public License Version 2 or later (the "GPL"),
00027  * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00028  * in which case the provisions of the GPL or the LGPL are applicable instead
00029  * of those above. If you wish to allow use of your version of this file only
00030  * under the terms of either the GPL or the LGPL, and not to allow others to
00031  * use your version of this file under the terms of the MPL, indicate your
00032  * decision by deleting the provisions above and replace them with the notice
00033  * and other provisions required by the GPL or the LGPL. If you do not delete
00034  * the provisions above, a recipient may use your version of this file under
00035  * the terms of any one of the MPL, the GPL or the LGPL.
00036  *
00037  * ***** END LICENSE BLOCK ***** */
00038 
00039 
00040 #ifndef __AEWINDOWCLASS__
00041 #define __AEWINDOWCLASS__
00042 
00043 
00044 
00045 #include "nsAEGenericClass.h"
00046 
00047 
00048 class AEWindowIterator : public AEClassIterator
00049 {
00050 public:
00051 
00052                                           AEWindowIterator(DescType classType, TWindowKind windowKind)
00053                                           : AEClassIterator(classType)
00054                                           ,      mWindowKind(windowKind)
00055                                           {}
00056                                           
00057        virtual UInt32                     GetNumItems(const AEDesc* containerToken);
00058        virtual ItemRef                    GetNamedItemReference(const AEDesc* containerToken, const char *itemName);
00059        virtual ItemRef                    GetIndexedItemReference(const AEDesc* containerToken, TAEListIndex itemIndex);
00060        
00061        virtual TAEListIndex        GetIndexFromItemID(const AEDesc* containerToken, ItemID itemID);
00062 
00063        virtual ItemID                     GetNamedItemID(const AEDesc* containerToken, const char *itemName);
00064        virtual ItemID                     GetIndexedItemID(const AEDesc* containerToken, TAEListIndex itemIndex);
00065 
00066        // index to name
00067        virtual void                GetIndexedItemName(const AEDesc* containerToken, TAEListIndex itemIndex, char *outName, long maxLen);
00068 
00069        // conversion routines.
00070        virtual ItemID                     GetIDFromReference(const AEDesc* containerToken, ItemRef itemRef);
00071        virtual ItemRef                    GetReferenceFromID(const AEDesc* containerToken, ItemID itemID);
00072 
00073        virtual ItemID                     GetItemIDFromToken(const AEDesc* token);
00074        virtual void                SetItemIDInCoreToken(const AEDesc* containerToken, CoreTokenRecord* tokenRecord, ItemID itemID);
00075        
00076        TWindowKind                 GetThisWindowKind() { return mWindowKind; }
00077 
00078 protected:
00079        
00080        TWindowKind                 mWindowKind;
00081 };
00082 
00083 
00084 
00085 class AEWindowClass : public AEGenericClass
00086 {
00087        friend class AECoreClass;
00088 
00089 private:
00090        typedef AEGenericClass      Inherited;
00091        
00092 protected:
00093        // only the AECoreClass can instantiate us
00094                                           AEWindowClass(DescType classType, TWindowKind windowKind);
00095                                           ~AEWindowClass();
00096 
00097 
00098        void                               GetDocumentFromWindow(      DescType                    desiredClass,        // cWindow
00099                                                                              const AEDesc*        containerToken,      // null container
00100                                                                              DescType                    containerClass,       // cApplication
00101                                                                              DescType                    keyForm,
00102                                                                              const AEDesc*        keyData,
00103                                                                              AEDesc*                     resultToken);        // specified Window is returned in result
00104 
00105        virtual void                GetItemFromContainer(       DescType                    desiredClass,
00106                                                                              const AEDesc*        containerToken,
00107                                                                              DescType                    containerClass, 
00108                                                                              DescType                    keyForm,
00109                                                                              const AEDesc*        keyData,
00110                                                                              AEDesc*                     resultToken);
00111 
00112        virtual void                CompareObjects(             DescType                    comparisonOperator,
00113                                                                              const AEDesc *              object,
00114                                                                              const AEDesc *              descriptorOrObject,
00115                                                                              Boolean *                   result);
00116 
00117        virtual void                CountObjects(               DescType                    desiredType,
00118                                                                              DescType                    containerClass,
00119                                                                              const AEDesc *              container,
00120                                                                              long *               result);
00121 
00122 public:
00123        // AE Handlers
00124        
00125        static pascal OSErr         DocumentAccessor(           DescType                    desiredClass,        // cDocument
00126                                                                              const AEDesc*        containerToken,      // null container
00127                                                                              DescType                    containerClass,       // cApplication
00128                                                                              DescType                    keyForm,
00129                                                                              const AEDesc*        keyData,
00130                                                                              AEDesc*                     resultToken,         // specified Document is returned in result
00131                                                                              long                        refCon);
00132 
00133 protected:
00134 
00135        // ----------------------------------------------------------------------------
00136        //     Core Suite Object Event handlers
00137        // ----------------------------------------------------------------------------
00138        virtual void                HandleClose(AEDesc *token, const AppleEvent *appleEvent, AppleEvent *reply);
00139        virtual void                HandleDataSize(AEDesc *token, const AppleEvent *appleEvent, AppleEvent *reply);
00140        virtual void                HandleDelete(AEDesc *token, const AppleEvent *appleEvent, AppleEvent *reply);
00141        virtual void                HandleDuplicate(AEDesc *token, const AppleEvent *appleEvent, AppleEvent *reply);
00142        virtual void                HandleExists(AEDesc *token, const AppleEvent *appleEvent, AppleEvent *reply);
00143        virtual void                HandleMake(AEDesc *token, const AppleEvent *appleEvent, AppleEvent *reply);
00144        virtual void                HandleMove(AEDesc *token, const AppleEvent *appleEvent, AppleEvent *reply);
00145        virtual void                HandleOpen(AEDesc *token, const AppleEvent *appleEvent, AppleEvent *reply);
00146        virtual void                HandlePrint(AEDesc *token, const AppleEvent *appleEvent, AppleEvent *reply);
00147        virtual void                HandleQuit(AEDesc *token, const AppleEvent *appleEvent, AppleEvent *reply);
00148        virtual void                HandleSave(AEDesc *token, const AppleEvent *appleEvent, AppleEvent *reply);
00149        
00150        // ----------------------------------------------------------------------------
00151        //     Methods for creating self and container specifiers
00152        // ----------------------------------------------------------------------------
00153 
00154        virtual void                CreateSelfSpecifier(const AEDesc *token, AEDesc *outSpecifier);
00155 
00156        // ----------------------------------------------------------------------------
00157        //     Get and Set methods for objects and list
00158        // ----------------------------------------------------------------------------
00159 
00160        virtual void                GetDataFromObject(const AEDesc *token, AEDesc *desiredTypes, AEDesc *data);
00161        virtual void                SetDataForObject(const AEDesc *token, AEDesc *data);
00162 
00163        virtual Boolean                    CanSetProperty(DescType propertyCode);
00164        virtual Boolean                    CanGetProperty(DescType propertyCode);
00165 
00166        void                               SetWindowProperties(WindowPtr wind, const AEDesc *propertyRecord);
00167        void                               MakeWindowObjectSpecifier(WindowPtr wind, AEDesc *outSpecifier);
00168        
00169        WindowPtr                   GetWindowByIndex(TWindowKind windowKind, long index);
00170        WindowPtr                   GetWindowByTitle(TWindowKind windowKind, ConstStr63Param title);
00171        
00172        long                               GetWindowIndex(TWindowKind windowKind, WindowPtr window);
00173        WindowPtr                   GetPreviousWindow(TWindowKind windowKind, WindowPtr wind);
00174 
00175        TWindowKind                 GetThisWindowKind()         { return mWindowKind; }
00176        
00177 public:
00178 
00179        static long                        CountWindows(TWindowKind windowKind);
00180 
00181 protected:
00182 
00183        TWindowKind                 mWindowKind;
00184 
00185 protected:
00186 
00187        OSLAccessorUPP              mDocumentAccessor;
00188        
00189 };
00190 
00191 
00192 #endif /* __AEWINDOWCLASS__ */
00193 
00194