5.5. Tutorial viewer (tutorial-viewer.rsl)

module Student;

from Login import LoginCookie;
from Data import all;
export all;

(*****************************************************************************)

object TutorialViewerWorkSpace is
   components:
      tutorialViews:TutorialView*;
   description: (*
      The TutorialViewerWorkSpace contains all items opened by the user in the
      Tutorial Viewer application, including tutorials, chats, message boards,
      etc.
   *);
end TutorialViewerWorkSpace;

object TutorialView inherits from TutorialRecord is
   components:
      currentPageIndex:PageIndex;
   description: (*
      The TutorialView is simply a tutorial in progress and contains the index
      (in pageIDs) of the currently open page.
   *);
end TutorialView;

object PageIndex is integer
   description: (*
      This integer holds the index of the currently open page in a tutorial.
   *);
end PageIndex;

(*****************************************************************************)

operation ViewFirst is
   inputs:
      cookie:LoginCookie and
      tip:TutorialView and
      pdb:PageDB;
   outputs:
      tip':TutorialView;
   precondition:
      cookie.isConnected and
      tip.currentPageIndex != 1;
   postcondition:
      tip'.currentPageIndex = 1;
   description: (*
      Changes curTutorial's currentPageIndex to 1, the index of the first page in said
      tutorial, if it is not already there.
   *);
end ViewFirst;

operation ViewPrevious is
   inputs:
      cookie:LoginCookie and
      tip:TutorialView and
      pdb:PageDB;
   outputs:
      tip':TutorialView;
   precondition:
      cookie.isConnected and
      tip.currentPageIndex != 1;
   postcondition:
      tip'.currentPageIndex = (tip.currentPageIndex - 1);
   description: (*
      Changes curTutorial's currentPageIndex to the index of the previous page in said
      tutorial, if it is not already at the first page.
   *);
end ViewPrevious;

operation ViewNext is
   inputs:
      cookie:LoginCookie and
      tip:TutorialView and
      pdb:PageDB;
   outputs:
      tip':TutorialView;
   precondition:
      cookie.isConnected and
      tip.currentPageIndex != #(tip.pageIDs);
   postcondition:
      tip'.currentPageIndex = (tip.currentPageIndex + 1);
   description: (*
      Changes curTutorial's currentPageIndex to the index of the next page in said tutorial,
      if it is not already at the last page.
   *);
end ViewNext;

operation ViewLast is
   inputs:
      cookie:LoginCookie and
      tip:TutorialView and
      pdb:PageDB;
   outputs:
      tip':TutorialView;
   precondition:
      cookie.isConnected and
      tip.currentPageIndex != #(tip.pageIDs);
   postcondition:
      tip'.currentPageIndex = #(tip.pageIDs);
   description: (*
      Changes curTutorial's curPageID to the index of the last page in said tutorial, if
      it is not already there.
   *);
end ViewLast;

(*****************************************************************************)

end Student;





Prev: Tutorial browser | Next: Communication systems | Up: spec | Top: index