home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / Tools & Goodies / ODFx / Sources / Commands.cpp < prev    next >
Encoding:
Text File  |  1996-08-26  |  9.1 KB  |  301 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 "ODFx.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 odfx
  42. #endif
  43.  
  44. FW_DEFINE_AUTO(CODFxEditCommand)
  45. FW_DEFINE_AUTO(CODFxDropCommand)
  46. FW_DEFINE_AUTO(CODFxDragCommand)
  47.     
  48. //========================================================================================
  49. // CODFxEditCommand
  50. //========================================================================================
  51.  
  52. //----------------------------------------------------------------------------------------
  53. //    CODFxEditCommand constructor
  54. //----------------------------------------------------------------------------------------
  55.  
  56. CODFxEditCommand::CODFxEditCommand(Environment* ev,
  57.                                      ODCommandID id,
  58.                                      CODFxContent* itsContent,
  59.                                      FW_CFrame* frame) :
  60.     FW_CClipboardCommand(ev, id, frame, FW_kCanUndo),
  61.     fODFxContent(itsContent),
  62.     fSavedData(false)
  63. {
  64.     switch (id)
  65.     {
  66.         case kODCommandCut: // we do something strange: we reset the colors when clear or cut is chosen
  67.             SetMenuStringsFromResource(ev, kODFxUndoStrings, kUndoResetMsg, kRedoResetMsg);
  68.             break;
  69.         case kODCommandClear:
  70.             SetMenuStringsFromResource(ev, kODFxUndoStrings, kUndoResetMsg, kRedoResetMsg);
  71.             break;
  72.         case kODCommandPaste:
  73.             SetMenuStringsFromResource(ev, kODFxUndoStrings, kUndoPasteMsg, kRedoPasteMsg);
  74.             break;
  75.     }
  76.     FW_END_CONSTRUCTOR
  77. }
  78.  
  79. //----------------------------------------------------------------------------------------
  80. //    CODFxEditCommand destructor
  81. //----------------------------------------------------------------------------------------
  82.  
  83. CODFxEditCommand::~CODFxEditCommand()
  84. {
  85. }
  86.  
  87. //----------------------------------------------------------------------------------------
  88. //    CODFxEditCommand::SaveUndoState
  89. //----------------------------------------------------------------------------------------
  90.  
  91. void CODFxEditCommand::SaveUndoState(Environment *ev)
  92. {
  93. FW_UNUSED(ev);
  94.     fODFxContent->GetContentData(fSavedData);
  95. }
  96.  
  97. //----------------------------------------------------------------------------------------
  98. //    CODFxEditCommand::UndoIt
  99. //----------------------------------------------------------------------------------------
  100.  
  101. void CODFxEditCommand::UndoIt(Environment* ev)
  102. {
  103.     FW_CClipboardCommand::UndoIt(ev);    // call inherited
  104.  
  105.     switch (GetCommandID(ev))
  106.     {
  107.         case kODCommandCut:
  108.         case kODCommandClear:
  109.             this->RestoreSelection(ev);
  110.             break;
  111.  
  112.         case kODCommandPaste:
  113.             this->SwapSelection(ev);
  114.             break;
  115.     }    
  116. }
  117.  
  118. //----------------------------------------------------------------------------------------
  119. //    CODFxEditCommand::RedoIt
  120. //----------------------------------------------------------------------------------------
  121.  
  122. void CODFxEditCommand::RedoIt(Environment *ev)
  123. {
  124.     FW_CClipboardCommand::RedoIt(ev);    // call inherited
  125.  
  126.     switch (GetCommandID(ev))
  127.     {
  128. //        case kODCommandCut:
  129.         case kODCommandClear:
  130.             this->RemoveSelection(ev);
  131.             break;
  132.  
  133.         case kODCommandPaste:
  134.             this->SwapSelection(ev);
  135.             break;
  136.     }    
  137. }
  138.  
  139. //----------------------------------------------------------------------------------------
  140. //    CODFxEditCommand::RemoveSelection
  141. //----------------------------------------------------------------------------------------
  142.  
  143. void CODFxEditCommand::RemoveSelection(Environment* ev)
  144. {
  145.     fODFxContent->ResetColorData(ev);
  146. }
  147.  
  148. //----------------------------------------------------------------------------------------
  149. //    CODFxEditCommand::RestoreSelection
  150. //----------------------------------------------------------------------------------------
  151.  
  152. void CODFxEditCommand::RestoreSelection(Environment* ev)
  153. {
  154.     fODFxContent->SetContentData(ev, fSavedData);
  155. }
  156.  
  157. //----------------------------------------------------------------------------------------
  158. //    CODFxEditCommand::SwapSelection
  159. //----------------------------------------------------------------------------------------
  160.  
  161. void CODFxEditCommand::SwapSelection(Environment* ev)
  162. {    
  163.     CODFxContent::ODFXContentStruct tempData(false);
  164.     
  165.     fODFxContent->GetContentData(tempData);
  166.  
  167.     fODFxContent->SetContentData(ev, fSavedData);
  168.  
  169.     fSavedData = tempData;
  170. }
  171.  
  172. //========================================================================================
  173. // CODFxDragCommand
  174. //========================================================================================
  175.  
  176. //----------------------------------------------------------------------------------------
  177. //    CODFxDragCommand constructor
  178. //----------------------------------------------------------------------------------------
  179.  
  180. CODFxDragCommand::CODFxDragCommand(Environment* ev,
  181.                                      CODFxContent* content,
  182.                                      FW_CFrame* frame) :
  183.     FW_CDragCommand(ev, frame, FW_kCantUndo),
  184.     fODFxContent(content),
  185.     fSavedData(false)
  186. {
  187. //    SetMenuStringsFromResource(ev, kODFxUndoStrings, kUndoDragMsg, kRedoDragMsg);
  188.     FW_END_CONSTRUCTOR
  189. }
  190.  
  191. //----------------------------------------------------------------------------------------
  192. //    CODFxDragCommand destructor
  193. //----------------------------------------------------------------------------------------
  194.  
  195. CODFxDragCommand::~CODFxDragCommand()
  196. {
  197. }
  198.  
  199. //----------------------------------------------------------------------------------------
  200. //    CODFxDragCommand::SaveUndoState
  201. //----------------------------------------------------------------------------------------
  202.  
  203. void CODFxDragCommand::SaveUndoState(Environment *ev)    // Override
  204. {
  205. FW_UNUSED(ev);
  206. //    fSavedNumColors = fODFxContent->GetNumColors();
  207. //    fODFxContent->GetColorData(fSavedColors);
  208. }
  209.  
  210. //----------------------------------------------------------------------------------------
  211. //    CODFxDragCommand::UndoIt
  212. //----------------------------------------------------------------------------------------
  213.  
  214. void CODFxDragCommand::UndoIt(Environment* ev)
  215. {
  216. //    fODFxContent->SetColorData(ev, fSavedColors);
  217. }
  218.  
  219. //----------------------------------------------------------------------------------------
  220. //    CODFxDragCommand::RedoIt
  221. //----------------------------------------------------------------------------------------
  222.  
  223. void CODFxDragCommand::RedoIt(Environment* ev)
  224. {
  225. //    fODFxContent->ResetColorData(ev);
  226. }
  227.  
  228. //========================================================================================
  229. // CODFxDropCommand
  230. //========================================================================================
  231.  
  232. //----------------------------------------------------------------------------------------
  233. //    CODFxDropCommand constructor
  234. //----------------------------------------------------------------------------------------
  235.  
  236. CODFxDropCommand::CODFxDropCommand(Environment *ev,
  237.                                      CODFxContent* content,
  238.                                      FW_CFrame* frame,
  239.                                      ODDragItemIterator* dropInfo, 
  240.                                      ODFacet* odFacet,
  241.                                      const FW_CPoint& dropPoint) : 
  242.     FW_CDropCommand(ev, frame, dropInfo, odFacet, dropPoint, FW_kCanUndo),
  243.     fODFxContent(content),
  244.     fSavedData(false)
  245. {
  246.     SetMenuStringsFromResource(ev, kODFxUndoStrings, kUndoDropMsg, kRedoDropMsg);
  247.     FW_END_CONSTRUCTOR
  248. }
  249.  
  250. //----------------------------------------------------------------------------------------
  251. //    CODFxDropCommand destructor
  252. //----------------------------------------------------------------------------------------
  253.  
  254. CODFxDropCommand::~CODFxDropCommand()
  255. {
  256. }
  257.  
  258. //----------------------------------------------------------------------------------------
  259. //    CODFxDropCommand::SaveUndoState
  260. //----------------------------------------------------------------------------------------
  261.  
  262. void CODFxDropCommand::SaveUndoState(Environment *ev)
  263. {
  264. FW_UNUSED(ev);
  265.     fODFxContent->GetContentData(fSavedData);
  266. }
  267.  
  268. //----------------------------------------------------------------------------------------
  269. //    CODFxDropCommand::UndoIt
  270. //----------------------------------------------------------------------------------------
  271.  
  272. void CODFxDropCommand::UndoIt(Environment* ev)
  273. {
  274.     this->SwapSelection(ev);
  275. }
  276.  
  277. //----------------------------------------------------------------------------------------
  278. //    CODFxDropCommand::RedoIt
  279. //----------------------------------------------------------------------------------------
  280.  
  281. void CODFxDropCommand::RedoIt(Environment* ev)
  282. {
  283.     this->SwapSelection(ev);
  284. }
  285.  
  286. //----------------------------------------------------------------------------------------
  287. //    CODFxDropCommand::SwapSelection
  288. //----------------------------------------------------------------------------------------
  289.  
  290. void CODFxDropCommand::SwapSelection(Environment* ev)
  291. {    
  292.     CODFxContent::ODFXContentStruct tempData(false);
  293.     
  294.     fODFxContent->GetContentData(tempData);
  295.  
  296.     fODFxContent->SetContentData(ev, fSavedData);
  297.  
  298.     fSavedData = tempData;
  299. }
  300.  
  301.