home *** CD-ROM | disk | FTP | other *** search
/ ftptest.leeds.ac.uk / 2015.02.ftptest.leeds.ac.uk.tar / ftptest.leeds.ac.uk / bionet / CAE-GROUP / SCL-WIN3x / SCL.EXE / CMDMGR.CPP < prev    next >
Text File  |  1994-08-06  |  5KB  |  231 lines

  1.  
  2. /*
  3. * NIST STEP Editor Class Library
  4. * cleditor/cmdmgr.cc
  5. * February, 1994
  6. * David Sauder
  7. * K. C. Morris
  8.  
  9. * Development of this software was funded by the United States Government,
  10. * and is not subject to copyright.
  11. */
  12.  
  13. /* $Id: cmdmgr.cc,v 2.0.1.1 1994/04/05 16:42:24 sauderd Exp $ */ 
  14.  
  15. #include <cmdmgr.h>
  16.  
  17.  
  18. ReplicateLinkNode *ReplicateList::FindNode(MgrNode *mn)
  19. {
  20.     ReplicateLinkNode *rln = (ReplicateLinkNode *)GetHead();
  21.     int numEntries = EntryCount();
  22.     while(numEntries--)
  23.     {
  24.     if(rln->ReplicateNode() == mn)
  25.     {
  26.         return rln;
  27.     }
  28.     rln = (ReplicateLinkNode *)rln->NextNode();
  29.     }
  30.     return 0;
  31. }
  32.  
  33. BOOLEAN ReplicateList::IsOnList(MgrNode *mn)
  34. {
  35.     return (FindNode(mn) != 0);
  36. /*
  37.     ReplicateLinkNode *rln = (ReplicateLinkNode *)GetHead();
  38.     int numEntries = EntryCount();
  39.     int found = 0;
  40.     while(numEntries--)
  41.     {
  42.     if(rln->ReplicateNode() == mn)
  43.     {
  44.         found = 1;
  45.         numEntries = 0;
  46.     }
  47.     rln = (ReplicateLinkNode *)rln->NextNode();
  48.     }
  49.     return found;
  50. */
  51. }
  52.  
  53. ///////////////////////////////////////////////////////////////////////////////
  54. // returns true if it could delete the node
  55. ///////////////////////////////////////////////////////////////////////////////
  56. BOOLEAN ReplicateList::Remove(ReplicateLinkNode *rln)
  57. {
  58.     ReplicateLinkNode *rnFollow = (ReplicateLinkNode *)GetHead();
  59.     if(!rnFollow || !rln)
  60.     return 0;
  61.     else
  62.     {
  63.     if(rnFollow == rln)
  64.     {
  65.         head = rln->NextNode();
  66.         delete rln;
  67.         return 1;
  68.     }
  69.     else
  70.     {
  71.         ReplicateLinkNode *rn = (ReplicateLinkNode *)rnFollow->NextNode();
  72.         while(rn)
  73.         {
  74.         if(rn == rln)
  75.         {
  76.             rnFollow->next = (SingleLinkNode *)rln->NextNode();
  77.             delete rln;
  78.             return 1;
  79.         }
  80.         rnFollow = rn;
  81.         rn = (ReplicateLinkNode *)rn->NextNode();
  82.         } // end while(rn)
  83.     } // end else
  84.     } // end else
  85.     return 0;
  86. }
  87.  
  88. BOOLEAN ReplicateList::Remove(MgrNode *rn)
  89. {
  90.     return Remove(FindNode(rn));
  91. }
  92.  
  93. CmdMgr::CmdMgr()
  94. {
  95.     completeList = new MgrNodeList(completeSE);
  96.     incompleteList = new MgrNodeList(incompleteSE);
  97. //    newList = new MgrNodeList(newSE);
  98.     deleteList = new MgrNodeList(deleteSE);
  99.  
  100.     mappedWriteList = new DisplayNodeList(mappedWrite);
  101.     mappedViewList = new DisplayNodeList(mappedView);
  102.     closeList = new DisplayNodeList(notMapped);
  103.     replicateList = new ReplicateList();
  104. }
  105.  
  106. int CmdMgr::ReplicateCmdList(MgrNode *mn)
  107. {
  108.     if(!(replicateList->IsOnList(mn)))
  109.     {
  110.     replicateList->AddNode(mn);
  111.     }
  112.     return 1;
  113. }
  114.  
  115. /*
  116. void CmdMgr::ModifyCmdList(MgrNode *mn)
  117. {
  118.     mn->ChangeList(mappedWriteList);
  119. }
  120.  
  121. void CmdMgr::ViewCmdList(MgrNode *mn)
  122. {
  123.     mn->ChangeList(mappedViewList);
  124. }
  125.  
  126. void CmdMgr::CloseCmdList(MgrNode *mn)
  127. {
  128.     mn->ChangeList(closeList);
  129. }
  130. */
  131.  
  132. void CmdMgr::ClearInstances()
  133. {
  134.     completeList->ClearEntries();
  135.     incompleteList->ClearEntries();
  136.     cancelList->ClearEntries();
  137.     deleteList->ClearEntries();
  138.     replicateList->Empty();
  139.  
  140. //    newList->ClearEntries();
  141. }
  142.             // searches current list for fileId
  143. MgrNode *CmdMgr::StateFindFileId(stateEnum s, int fileId)
  144. {
  145.     switch(s){
  146.     case completeSE:
  147.         return completeList->FindFileId(fileId);
  148.     case incompleteSE:
  149.         return incompleteList->FindFileId(fileId);
  150.     case deleteSE:
  151.         return deleteList->FindFileId(fileId);
  152.     case newSE: // there is no new list
  153.     case noStateSE:
  154.     default:
  155.         cout << "ERROR can't find the node containing fileid " <<
  156.             fileId << " from this node\n";
  157.         return 0;
  158.     }
  159. }
  160.  
  161. MgrNode *CmdMgr::GetHead(stateEnum listType)
  162. {
  163.     switch(listType)
  164.     {
  165.     case completeSE:    // saved complete list
  166.         return (MgrNode *)completeList->GetHead();
  167.     case incompleteSE:    // saved incomplete list
  168.         return (MgrNode *)incompleteList->GetHead();
  169.     case deleteSE:        // delete list
  170.         return (MgrNode *)deleteList->GetHead();
  171.     default:
  172.         return 0;
  173.     }
  174. }
  175.  
  176. DisplayNode *CmdMgr::GetHead(displayStateEnum listType)
  177. {
  178.     switch(listType)
  179.     {
  180.     case mappedWrite:
  181.         return (DisplayNode *)mappedWriteList->GetHead();
  182.  
  183.     case mappedView:
  184.         return (DisplayNode *)mappedViewList->GetHead();
  185.  
  186.     case notMapped:
  187.         return (DisplayNode *)closeList->GetHead();
  188.  
  189.     case noMapState:
  190.     default:
  191.         return 0;
  192.     }
  193. }
  194.  
  195. void CmdMgr::ClearEntries(stateEnum listType)
  196. {
  197.     switch(listType)
  198.     {
  199.     case completeSE:    // saved complete list
  200.         completeList->ClearEntries();
  201.         break;
  202.     case incompleteSE:    // saved incomplete list
  203.         incompleteList->ClearEntries();
  204.         break;
  205.     case deleteSE:        // delete list
  206.         deleteList->ClearEntries();
  207.         break;
  208.     default:
  209.         break;
  210.     }
  211. }
  212.  
  213. void CmdMgr::ClearEntries(displayStateEnum listType)
  214. {
  215.     switch(listType)
  216.     {
  217.     case mappedWrite:
  218.         mappedWriteList->ClearEntries();
  219.         break;
  220.     case mappedView:
  221.         mappedViewList->ClearEntries();
  222.         break;
  223.     case notMapped:
  224.         closeList->ClearEntries();
  225.         break;
  226.     case noMapState:
  227.     default:
  228.         break;
  229.     }
  230. }
  231.