object MainView is components: LectureSelector and ViewWindow* and DrawingTools and isVisible:boolean; description: (* This is the window through which all of the drawing and viewing of the lecture takes place.*); end MainView; object LectureSelector is components: PublicTab or PrivateTab or ChatTab; description: (* A simple enumeration *); end LectureSelector; object PublicTab; object PrivateTab; object ChatTab; object ViewWindow is components: LectureView and Permissions and ViewSelector; operations: ChangeSlide; description: (* A Lecture view is all the necessary information to render one of the tabs in the MainView. *); end ViewWindow; operation ChangeSlide inputs: LectureView and NewIndex and Permissions; outputs: LectureView; description: (* Changes which slide the LectureView represents *); end ChangeSlide; object NewIndex is integer; object ViewSelector is components: WhiteboardView or SlidesView; description: (* This is simply an enumeration *); end ViewSelector; object WhiteboardView; object SlidesView; object Permissions is description: (* Information about what permissions a User has. These can be: Read - Read the data from the slide deck Write - Change the contents of the slide deck Change - Manipulate the slide deck *); end Permissions; object LectureView is components: Lecture and TopicIndex and SlideIndex; operations: GetRenderedSlide; description: (* This contains all the information about a particular Lecture that would be loaded or saved to a file *); end LectureView; operation GetRenderedSlide inputs: Lecture, SlideIndex, TopicIndex; outputs: RenderedSlide; description: (* Does a transformation on the raw lecture XML to produce a Rendered Slide *); end GetRenderedSlide; object LectureDrawList is components: DrawSurface*; description: (* This is a list of all the drawings that have been added to the lecture in "Slides" mode. *); end LectureDrawList; object SlideIndex is integer; object TopicIndex is integer; object RenderedSlide is components: Render and DrawSurface; description: (* The LectureTextXML is eClasses XML markup for lectures. DrawSurface is defined in drawing.rsl *); end RenderedSlide; object Render is description: (* This is a bitmap representation of something *); end Render; object DrawingTools;