home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 October: Mac OS SDK / Dev.CD Oct 96 SDK / Dev.CD Oct 96 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / Hello / Sources / Commands.cpp < prev    next >
Encoding:
Text File  |  1996-08-16  |  8.9 KB  |  286 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                Commands.cpp
  4. //    Release Version:    $ ODF 1 $
  5. //
  6. //    Copyright:            (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #include "Hello.hpp"
  11.  
  12. #ifndef COMMANDS_H
  13. #include "Commands.h"
  14. #endif
  15.  
  16. #ifndef PART_H
  17. #include "Part.h"
  18. #endif
  19.  
  20. #ifndef CONTENT_H
  21. #include "Content.h"
  22. #endif
  23.  
  24. // ----- Framework Includes -----
  25.  
  26. #ifndef FWPRESEN_H
  27. #include "FWPresen.h"
  28. #endif
  29.  
  30. // ----- OpenDoc Includes -----
  31.  
  32. #ifndef SOM_Module_OpenDoc_Commands_defined
  33. #include <CmdDefs.xh>
  34. #endif
  35.  
  36. //========================================================================================
  37. // RunTime Info
  38. //========================================================================================
  39.  
  40. #ifdef FW_BUILD_MAC
  41. #pragma segment odfhello
  42. #endif
  43.  
  44. FW_DEFINE_AUTO(CHelloEditCommand)
  45. FW_DEFINE_AUTO(CHelloDropCommand)
  46. FW_DEFINE_AUTO(CHelloDragCommand)
  47.     
  48. //========================================================================================
  49. // CHelloEditCommand
  50. //========================================================================================
  51.  
  52. //----------------------------------------------------------------------------------------
  53. //    CHelloEditCommand constructor
  54. //----------------------------------------------------------------------------------------
  55.  
  56. CHelloEditCommand::CHelloEditCommand(Environment* ev,
  57.                                      ODCommandID id,
  58.                                      CHelloContent* itsContent,
  59.                                      FW_CFrame* frame) :
  60.     FW_CClipboardCommand(ev, id, frame, FW_kCanUndo),
  61.     fHelloContent(itsContent)
  62. {
  63.     switch (id)
  64.     {
  65.         case kODCommandCut:
  66.             SetMenuStringsFromResource(ev, kHelloUndoStrings, kUndoCutTextMsg, kRedoCutTextMsg);
  67.             break;
  68.         case kODCommandClear:
  69.             SetMenuStringsFromResource(ev, kHelloUndoStrings, kUndoClearTextMsg, kRedoClearTextMsg);
  70.             break;
  71.         case kODCommandPaste:
  72.             SetMenuStringsFromResource(ev, kHelloUndoStrings, kUndoPasteTextMsg, kRedoPasteTextMsg);
  73.             break;
  74.     }
  75.     FW_END_CONSTRUCTOR
  76. }
  77.  
  78. //----------------------------------------------------------------------------------------
  79. //    CHelloEditCommand destructor
  80. //----------------------------------------------------------------------------------------
  81.  
  82. CHelloEditCommand::~CHelloEditCommand()
  83. {
  84. }
  85.  
  86. //----------------------------------------------------------------------------------------
  87. //    CHelloEditCommand::SaveUndoState
  88. //----------------------------------------------------------------------------------------
  89.  
  90. void CHelloEditCommand::SaveUndoState(Environment *ev)
  91. {
  92.      fSavedTextData = fHelloContent->GetTextData();
  93. }
  94.  
  95. //----------------------------------------------------------------------------------------
  96. //    CHelloEditCommand::UndoIt
  97. //----------------------------------------------------------------------------------------
  98.  
  99. void CHelloEditCommand::UndoIt(Environment* ev)
  100. {
  101.     FW_CClipboardCommand::UndoIt(ev);    // call inherited
  102.  
  103.     switch (GetCommandID(ev))
  104.     {
  105.         case kODCommandCut:
  106.         case kODCommandClear:
  107.             this->RestoreSelection(ev);
  108.             break;
  109.  
  110.         case kODCommandPaste:
  111.             this->SwapSelection(ev);
  112.             break;
  113.     }    
  114. }
  115.  
  116. //----------------------------------------------------------------------------------------
  117. //    CHelloEditCommand::RedoIt
  118. //----------------------------------------------------------------------------------------
  119.  
  120. void CHelloEditCommand::RedoIt(Environment *ev)
  121. {
  122.     FW_CClipboardCommand::RedoIt(ev);    // call inherited
  123.  
  124.     switch (GetCommandID(ev))
  125.     {
  126.         case kODCommandCut:
  127.         case kODCommandClear:
  128.             this->RemoveSelection(ev);
  129.             break;
  130.  
  131.         case kODCommandPaste:
  132.             this->SwapSelection(ev);
  133.             break;
  134.     }    
  135. }
  136.  
  137. //----------------------------------------------------------------------------------------
  138. //    CHelloEditCommand::RemoveSelection
  139. //----------------------------------------------------------------------------------------
  140.  
  141. void CHelloEditCommand::RemoveSelection(Environment* ev)
  142. {
  143.     fHelloContent->ClearTextData(ev);
  144. }
  145.  
  146. //----------------------------------------------------------------------------------------
  147. //    CHelloEditCommand::RestoreSelection
  148. //----------------------------------------------------------------------------------------
  149.  
  150. void CHelloEditCommand::RestoreSelection(Environment* ev)
  151. {
  152.     fHelloContent->SetTextData(ev, fSavedTextData);
  153. }
  154.  
  155. //----------------------------------------------------------------------------------------
  156. //    CHelloEditCommand::SwapSelection
  157. //----------------------------------------------------------------------------------------
  158.  
  159. void CHelloEditCommand::SwapSelection(Environment* ev)
  160. {
  161.     FW_CString255 textData = fHelloContent->GetTextData();
  162.     fHelloContent->SetTextData(ev, fSavedTextData);
  163.     fSavedTextData = textData;
  164. }
  165.  
  166. //========================================================================================
  167. // CHelloDragCommand
  168. //========================================================================================
  169.  
  170. //----------------------------------------------------------------------------------------
  171. //    CHelloDragCommand constructor
  172. //----------------------------------------------------------------------------------------
  173.  
  174. CHelloDragCommand::CHelloDragCommand(Environment* ev,
  175.                                      CHelloContent* content,
  176.                                      FW_CFrame* frame) :
  177.     FW_CDragCommand(ev, frame, FW_kCanUndo),
  178.     fHelloContent(content)
  179. {
  180.     SetMenuStringsFromResource(ev, kHelloUndoStrings, kUndoDragTextMsg, kRedoDragTextMsg);
  181.     FW_END_CONSTRUCTOR
  182. }
  183.  
  184. //----------------------------------------------------------------------------------------
  185. //    CHelloDragCommand destructor
  186. //----------------------------------------------------------------------------------------
  187.  
  188. CHelloDragCommand::~CHelloDragCommand()
  189. {
  190. }
  191.  
  192. //----------------------------------------------------------------------------------------
  193. //    CHelloDragCommand::SaveUndoState
  194. //----------------------------------------------------------------------------------------
  195.  
  196. void CHelloDragCommand::SaveUndoState(Environment *ev)    // Override
  197. {
  198.      fSavedTextData = fHelloContent->GetTextData();
  199. }
  200.  
  201. //----------------------------------------------------------------------------------------
  202. //    CHelloDragCommand::UndoIt
  203. //----------------------------------------------------------------------------------------
  204.  
  205. void CHelloDragCommand::UndoIt(Environment* ev)
  206. {
  207.     fHelloContent->SetTextData(ev, fSavedTextData);
  208. }
  209.  
  210. //----------------------------------------------------------------------------------------
  211. //    CHelloDragCommand::RedoIt
  212. //----------------------------------------------------------------------------------------
  213.  
  214. void CHelloDragCommand::RedoIt(Environment* ev)
  215. {
  216.     fHelloContent->ClearTextData(ev);
  217. }
  218.  
  219. //========================================================================================
  220. // CHelloDropCommand
  221. //========================================================================================
  222.  
  223. //----------------------------------------------------------------------------------------
  224. //    CHelloDropCommand constructor
  225. //----------------------------------------------------------------------------------------
  226.  
  227. CHelloDropCommand::CHelloDropCommand(Environment *ev,
  228.                                      CHelloContent* content,
  229.                                      FW_CFrame* frame,
  230.                                      ODDragItemIterator* dropInfo, 
  231.                                      ODFacet* odFacet,
  232.                                      const FW_CPoint& dropPoint) : 
  233.     FW_CDropCommand(ev, frame, dropInfo, odFacet, dropPoint, FW_kCanUndo),
  234.     fHelloContent(content)
  235. {
  236.     SetMenuStringsFromResource(ev, kHelloUndoStrings, kUndoDropTextMsg, kRedoDropTextMsg);
  237.     FW_END_CONSTRUCTOR
  238. }
  239.  
  240. //----------------------------------------------------------------------------------------
  241. //    CHelloDropCommand destructor
  242. //----------------------------------------------------------------------------------------
  243.  
  244. CHelloDropCommand::~CHelloDropCommand()
  245. {
  246. }
  247.  
  248. //----------------------------------------------------------------------------------------
  249. //    CHelloDropCommand::SaveUndoState
  250. //----------------------------------------------------------------------------------------
  251.  
  252. void CHelloDropCommand::SaveUndoState(Environment *ev)
  253. {
  254.      fSavedTextData = fHelloContent->GetTextData();
  255. }
  256.  
  257. //----------------------------------------------------------------------------------------
  258. //    CHelloDropCommand::UndoIt
  259. //----------------------------------------------------------------------------------------
  260.  
  261. void CHelloDropCommand::UndoIt(Environment* ev)
  262. {
  263.     this->SwapSelection(ev);
  264. }
  265.  
  266. //----------------------------------------------------------------------------------------
  267. //    CHelloDropCommand::RedoIt
  268. //----------------------------------------------------------------------------------------
  269.  
  270. void CHelloDropCommand::RedoIt(Environment* ev)
  271. {
  272.     this->SwapSelection(ev);
  273. }
  274.  
  275. //----------------------------------------------------------------------------------------
  276. //    CHelloDropCommand::SwapSelection
  277. //----------------------------------------------------------------------------------------
  278.  
  279. void CHelloDropCommand::SwapSelection(Environment* ev)
  280. {
  281.     FW_CString255 textData = fHelloContent->GetTextData();
  282.     fHelloContent->SetTextData(ev, fSavedTextData);
  283.     fSavedTextData = textData;
  284. }
  285.  
  286.