home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-08-16 | 8.4 KB | 268 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: DrawLink.h
- // Release Version: $ ODF 1 $
- //
- // Author: Henri Lamiraux
- //
- // Copyright: (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #ifndef DRAWLINK_H
- #define DRAWLINK_H
-
- // ----- Part Layer -----
-
- #ifndef FWLNKDST_H
- #include "FWLnkDst.h"
- #endif
-
- #ifndef FWLNKSRC_H
- #include "FWLnkSrc.h"
- #endif
-
- #ifndef FWLNKMGR_H
- #include "FWLnkMgr.h"
- #endif
-
- #ifndef FWPOINT_H
- #include "FWPoint.h"
- #endif
-
- //========================================================================================
- // Forward Declarations
- //========================================================================================
-
- class FW_CFrame;
- class FW_CCloneInfo;
-
- class CBaseShape;
- class CDrawSelection;
- class CDrawPart;
- class CDrawContent;
- class CDrawLinkContent;
- class CDrawLinkSourceContent;
- class CGroupShape;
-
- //========================================================================================
- // class CDrawPublishLink
- //========================================================================================
-
- class CDrawPublishLink : public FW_CLinkSource
- {
- public:
- CDrawPublishLink(Environment* ev,
- ODUpdateID updateID,
- FW_CPresentation* presentation,
- CDrawSelection* drawSelection,
- FW_Boolean saveSelection);
- virtual ~ CDrawPublishLink();
-
- //--- FW_CLinkSource overrides
- virtual void LinkEstablished(Environment* ev);
- virtual void ExternalizeLinkContent(Environment* ev, ODStorageUnit* linkSU);
-
- virtual void DoExternalizeLink(Environment* ev, ODStorageUnit* storageUnit,
- FW_CCloneInfo* cloneInfo);
-
- virtual FW_Boolean HasEmbeddedFrame(Environment* ev, ODFrame* odEmbeddedFrame);
-
- //--- May move to FW_CLinkSource
- virtual FW_CFrame* GetFrameToRevealLink(Environment* ev);
- virtual void DoSelect(Environment* ev, FW_CFrame* frame);
-
- //--- Part-specific
- void AddShape(Environment* ev, CBaseShape* shape);
- FW_Boolean IsEmpty();
- void RemoveShape(Environment* ev, CBaseShape* shape);
-
- private:
- CDrawSelection* fDrawSelection;
- CDrawLinkSourceContent* fPublishedContent;
- };
-
- //========================================================================================
- // class CDrawPublishLinkCollection
- //========================================================================================
-
- class CDrawPublishLinkCollection : public FW_TOrderedCollection<CDrawPublishLink>
- {
- public:
- FW_DECLARE_AUTO(CDrawPublishLinkCollection)
-
- CDrawPublishLinkCollection() :
- FW_TOrderedCollection<CDrawPublishLink>(){}
- ~CDrawPublishLinkCollection() {}
- };
-
-
-
- //========================================================================================
- // class CDrawPublishLinkCollectionIterator
- //========================================================================================
-
- class CDrawPublishLinkCollectionIterator : public FW_TOrderedCollectionIterator<CDrawPublishLink>
- {
- public:
- FW_DECLARE_AUTO(CDrawPublishLinkCollectionIterator)
-
- CDrawPublishLinkCollectionIterator(CDrawPublishLinkCollection* collection) :
- FW_TOrderedCollectionIterator<CDrawPublishLink>(collection){}
- ~CDrawPublishLinkCollectionIterator() {}
- };
-
- //========================================================================================
- // class CDrawSubscribeLink
- //========================================================================================
-
- class CDrawSubscribeLink : public FW_CLinkDestination
- {
- friend class CDrawLinkManager;
-
- public:
- CDrawSubscribeLink(Environment* ev, ODLink* odLink,
- FW_CPresentation* presentation,
- CDrawSelection* drawSelection,
- ODLinkInfo* linkInfo,
- FW_Boolean createGroupShape=true);
- virtual ~ CDrawSubscribeLink();
-
- //--- FW_CLinkDestination Overrides ---
- virtual FW_Boolean DoUpdateLink(Environment* ev, ODStorageUnit* linkContentSU, ODPasteAsResult* embedAsInfo);
- virtual void BreakLink(Environment* ev);
- virtual void RestoreLink(Environment* ev, FW_CPart* part);
-
- virtual void DoExternalizeLink(Environment* ev, ODStorageUnit* storageUnit,
- FW_CCloneInfo* cloneInfo);
-
- //--- Draw part-specific ---
- public:
- void DeleteShapes(Environment* ev);
- void SelectShapes(Environment* ev);
-
- void AdjustUpdateOffset(Environment* ev, const FW_CPoint& delta);
- void SetUpdateOffset(Environment* ev, const FW_CPoint& offset);
-
- private:
- void UpdateLinkedContent(Environment* ev);
-
- void AddShape(Environment* ev, CBaseShape* shape);
- void SetGroupShape(Environment* ev, CGroupShape* shape);
-
- private:
- CDrawPart* fDrawPart;
- CDrawSelection* fDrawSelection;
- CDrawLinkContent* fLinkedContent;
- CGroupShape* fGroupShape;
- FW_CPoint fUpdateOffset;
- FW_Boolean fFirstUpdate;
- FW_Boolean fFirstOffset;
- };
-
- //----------------------------------------------------------------------------------------
- inline void CDrawSubscribeLink::SetUpdateOffset(Environment* ev, const FW_CPoint& offset)
- {
- fUpdateOffset = offset;
- }
-
- //========================================================================================
- // class CDrawSubscribeLinkCollection
- //========================================================================================
-
- class CDrawSubscribeLinkCollection : public FW_TOrderedCollection<CDrawSubscribeLink>
- {
- public:
- FW_DECLARE_AUTO(CDrawSubscribeLinkCollection)
-
- CDrawSubscribeLinkCollection() :
- FW_TOrderedCollection<CDrawSubscribeLink>(){}
- ~CDrawSubscribeLinkCollection() {}
- };
-
-
-
- //========================================================================================
- // class CDrawSubscribeLinkCollectionIterator
- //========================================================================================
-
- class CDrawSubscribeLinkCollectionIterator : public FW_TOrderedCollectionIterator<CDrawSubscribeLink>
- {
- public:
- FW_DECLARE_AUTO(CDrawSubscribeLinkCollectionIterator)
-
- CDrawSubscribeLinkCollectionIterator(CDrawSubscribeLinkCollection* collection) :
- FW_TOrderedCollectionIterator<CDrawSubscribeLink>(collection){}
- ~CDrawSubscribeLinkCollectionIterator() {}
- };
-
-
- //========================================================================================
- // class CDrawLinkManager
- //========================================================================================
-
- class CDrawLinkManager : public FW_CLinkManager
- {
- //----------------------------------------------------------------------------------------
- // Constructors/Destructors
- //
- public:
- FW_DECLARE_AUTO(CDrawLinkManager)
-
- CDrawLinkManager(Environment* ev, CDrawPart* thePart);
- virtual ~CDrawLinkManager();
-
- //----------------------------------------------------------------------------------------
- // Override Methods
- //
- public:
- virtual FW_CLinkSource* NewLinkSource(Environment* ev,
- ODUpdateID updateID,
- FW_CPresentation* presentation);
- virtual FW_CLinkDestination* NewLinkDestination(Environment* ev,
- ODLink* odLink,
- ODLinkInfo* linkInfo,
- FW_CPresentation* presentation);
-
- virtual ODLinkSource* CreateLink(Environment* ev, ODByteArray* data);
-
- virtual void DoChangeLinkStatus(Environment* ev, ODFrame* odFrame);
- // formerly named LinkStatusChanged
-
- virtual void RevealLink(Environment* ev, ODLinkSource* linkSource);
-
- //----------------------------------------------------------------------------------------
- // Support for Persistent Links
- //
- public:
- virtual FW_CLinkSource* DoInternalizeOneSourceLink(Environment* ev,
- ODStorageUnit* storageUnit,
- ODUpdateID updateID);
- virtual FW_CLinkDestination* DoInternalizeOneDestLink(Environment* ev,
- ODStorageUnit* storageUnit,
- ODLink* odLink,
- ODLinkInfo* linkInfo);
-
- virtual ODValueType GetSourceLinkFormat(Environment* ev);
- virtual ODValueType GetDestLinkFormat(Environment* ev);
-
- private:
- ODULong GetSUValue(Environment* ev, ODStorageUnit* su, unsigned long size, void *buffer);
-
- //----------------------------------------------------------------------------------------
- // Support for Undo/Redoing PasteAs
- //
- public:
- virtual void UndoPasteAs(Environment* ev, CDrawSubscribeLink* link);
- virtual void RedoPasteAs(Environment* ev, CDrawSubscribeLink* link);
-
- void SelectSubscribedShapes(Environment* ev, CDrawSubscribeLink* link);
-
- //----------------------------------------------------------------------------------------
- // Data Members
- //
- private:
- CDrawPart* fDrawPart;
- };
-
- #endif