-- DiagnosticsImplF.mesa  -  edited by:
-- Poskanzer	 5-Aug-83 17:42:50
-- Schultz	 3-Aug-83  9:35:39

DIRECTORY
  DiagnosticsOps USING [More, PutCR, PutLine];

DiagnosticsImplF: MONITOR IMPORTS DiagnosticsOps EXPORTS DiagnosticsOps =
  BEGIN

  HelpToo: PUBLIC PROCEDURE =
    BEGIN  --HelpToo--
    DiagnosticsOps.PutCR[];
    DiagnosticsOps.PutLine[
      "Welcome to Online Diagnostics. This documentation provides Xerox service personnel with a description of special features unique to this operating environment.  Please be certain to read through the complete package before executing commands.  These diagnostic tools let you test and verify the operation of the keyboard, display, floppy disk drive, and Ethernet. Additionally, the floppy disk facilities include a head-cleaning routine you use in conjunction with a special cleaning diskette.  You can find further descriptions of the individual tests by selecting the text name above, and then selecting Help!"L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine[
      "Windows"L];
    DiagnosticsOps.PutLine[
      "
      You communicate with the operating environment through windows on the display.  You are reading this message inside the Diagnostics window.  The Diagnostics window is your tool for running diagnostic tests. As you already know, you access the Diagnostics window from the bouncing square by simutaneously holding down the SHIFT and ""T"" keys.  To return to the bouncing square, select Cancel!  You can abort a test at any time by pressing the STOP key."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutCR[];
    DiagnosticsOps.PutLine["Mouse Buttons and Keyboard"L];
    DiagnosticsOps.PutLine[
      "
      The mouse lets you direct the attention of the computer to a particular area of the display. The mouse has two buttons.  Pressing and immediately releasing a mouse button invokes actions that are explained later."L];
    DiagnosticsOps.PutLine[
      "Commands

Commands inside windows are followed by exclamation points (for example: Help!).  You issue a command by selecting it.  To select a command, place the point of the cursor over the command, and press the left mouse button (as you did with the ""Help!"" command). The system video-inverts the command when you select it."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutCR[];
    DiagnosticsOps.PutLine["Scrolling"L];
    DiagnosticsOps.PutLine[
      "Lines ending in a small box on the right divide windows into subwindows.  You are reading this message in a subwindow of the Diagnostics window. A subwindow views a plane that can be much longer than the length of the subwindow, so it often contains more text than the subwindow can display at any one time."L];
    DiagnosticsOps.PutLine[
      "
      Think of this plane as a long roll of paper.  You can see a certain part of the paper by positioning that part behind the window. Positioning the paper is called ""scrolling."" You scroll by moving the cursor into the scroll bar.  A grey line near the left edge of the window marks the scroll bar. When you move the cursor into the scroll bar (between the window border and the grey line), it changes into a two-headed arrow. Try it."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine[
      "When the cursor is in the scroll bar, you see a shaded rectangle that spans the vertical length of the subwindow, and a smaller, darker rectangle.  The lighter rectangle represents the length of the entire scroll behind the subwindow; the darker rectangle represents that portion currently visible through the subindow."L];
    DiagnosticsOps.PutLine[
      "
      The mouse buttons direct the scrolling operation. The cursor changes shape when you press one of the buttons. The left mouse button scrolls the file up (the two-headed arrow changes to point up), and the right mouse button scrolls it down (the two-headed arrow changes to point down)."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine[
      "With the cursor positioned in the scroll bar, press the left mouse button to scroll up, then return to your original position by pressing the right mouse button to scroll back down. Scroll this subwindow up a bit to read the rest of this message."L];
    DiagnosticsOps.PutLine[
      "
Practice scrolling your ""help"" subwindow. When scrolling up, notice that the line of text level with the two-headed arrow moves to the top of the subwindow. Similarly, scrolling down moves the text at the top of the subwindow to where the arrow was when you pressed the right mouse button."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine[
      "Notice that the position of the dark grey region changes as you scroll. This shows that you are viewing a different part of the file; the dark grey region always shows the portion and position of the text you are viewing with respect to the entire text."L];
    DiagnosticsOps.PutCR[];
    DiagnosticsOps.PutLine["Moveable boundaries"L];
    DiagnosticsOps.PutLine[
      "
You can adjust the size of a window for viewing. Normally you do not need to use this feature. Moveable boundries are set to accomodate diagnostic feedback and messages; if you change them, you may need to readjust them to their original state."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine[
      "At the right edge of the lines dividing this window are small boxes. To move a boundary, place the point of the cursor over the small box on the boundary you wish to move, press and hold down the left mouse button, and move the cursor up or down. Note how the boundary moves with the cursor. Move the box to position the boundary as you want it and release the mouse button."L];
    DiagnosticsOps.PutCR[];
    DiagnosticsOps.PutLine["The Window Manager"L];
    DiagnosticsOps.PutLine[
      "
The Window Manager lets you change a window's shape and size on the display.  An inexperienced operator should not use this feature; this document describes it for information purposes only.  The Diagnostic window's size is set to accomodate diagnostic feedback and messages; if you change it, readjust it to its normal size. Before practicing, read the following tutorial carefully.  Please note that you can access the Window Manager from any size window by holding down both mouse buttons over the window."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine[
      "You may wish to make your entire Diagnostics window larger or smaller, or move it to a different location on the display. You manipulate window size, position, and state with the commands found in the Window Manager (""Window Mgr"") Menu. A Window Manager Menu is available for every Expert window."L];
    DiagnosticsOps.PutLine[
      "
Activate the Window Manager Menu by placing the cursor in the Diagnostics window and simultaneously pressing and holding both mouse buttons. Note that the cursor changes to a left-pointing arrow.  The system displays a stack of one or more dynamic menus."L];
     IF NOT DiagnosticsOps.More[] THEN RETURN;
   DiagnosticsOps.PutLine[
      "Bring the Window Manager menu to the top of the stack (if it isn't already) by positioning the point of the cursor over the menu name ""Window Mgr"" (it  video-inverts) and simultaneously releasing both mouse buttons. Press and hold both mouse buttons again, and the Window Manager Menu is on top of the menu stack.  

You issue a Window Manager command by selecting it in the Window Manager Menu.  To select a command, activate the menu; then move the cursor until it points to the command, and release the mouse buttons."L];
    DiagnosticsOps.PutLine[
      "Moving windows- While holding both mouse buttons, move the cursor (the left-pointing arrow) until it points to ""Move"". The word ""Move"" video-inverts when the cursor is in the correct position. Release both mouse buttons."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine[
      "The cursor changes into the shape of a corner with an ""M"" in it. Move the cursor outside of the window. Move it in a rectangle around the window, and watch it change to the orientation of the closest corner. Now try moving it into the window, and notice that it doesn't change orientation unless you move it back outside of the window again, and then only if you move it out through one of the two edges not represented by the cursor. Changing the orientation of the cursor is how you tell the Move command which corner to use as a reference point."L];
    DiagnosticsOps.PutLine[
      "
Finally, position the cursor outside of the Diagnostics window and press the left mouse button. The cursor's orientation when you press the button tells the system which corner of the window to move to the new location."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine[
      "With ""Move"" you can change the position of the window on the display, but not its size or shape."L];
    DiagnosticsOps.PutLine[
      "
Adjusting window boundaries- Bring up the Window Manager menu by pressing and holding both mouse buttons.  Point to the word ""Drag,"" and release both buttons. The cursor changes into an arrow pointing to a line. The line represents a border of the window. Move the cursor in and out of the window and notice how the cursor changes to point in different directions as it exits the window through different borders. The ""Drag"" command moves (drags) one border of the window either outward (making the window bigger) or inward (making the window smaller). It moves the border to wherever the cursor is when you press the left mouse button."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    HelpThree[];
    END --HelpToo-- ;

  HelpThree: PROCEDURE =
    BEGIN  --HelpThree--
    DiagnosticsOps.PutLine[
      "Growing and shrinking a window- While ""Drag"" only allows you to adjust the position of one window border, the ""Grow"" command adjusts two borders simultaneously. Bring up the Window Manager menu and select ""Grow.""  The cursor now looks like a corner with an ""G"" in it. Move the cursor around; it changes orientation just like the ""Move"" cursor.  Position the cursor and press the left mouse button. ""Grow"" lets you pull a corner of the window in any direction, growing or shrinking the window along its width and height."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine[
      "Size- ""Size"" changes the window from normal size into a tiny rectangle showing a portion of the window's name, and places it at the bottom edge of your display. Try it. If another window is covering the bottom of the display, you may have to move it in order to see the tiny rectangle. Issuing the ""Size"" command for a tiny window returns the window to its original size and places it on top of all other windows."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine[
      "Zoom- The ""Zoom"" command causes the window to grow to take up all available display space. Select ""Zoom"" again to return the window to its normal size. Try ""zooming"" the Diagnostics window and then making it normal size again.   Selecting ""Zoom"" in one of the tiny rectangles at the bottom of the screen causes that window to take up the entire screen. Selecting ""Zoom"" again shrinks the window to normal size (not back to a tiny rectangle)."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine[
      "Top and Bottom- ""Top"" tells the system to display the window on top of all other windows. ""Bottom"" tells the system to place the window at the bottom of the window stack. If you have several windows on your display, issuing either command may completely obscure one or more windows. It is common to forget a window when it is hidden on the bottom of a stack. You can find out which windows are on your display by selecting ""Bottom"" in the visible windows, by making all windows tiny with the ""Size"" command, or by making sure that at least a tiny corner of each window is visible.  You can display the Window Manager Menu for a particular window as long as the visible part of the window is as wide as the cursor."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutCR[];
    DiagnosticsOps.PutLine["Accelerators"L];
    DiagnosticsOps.PutLine[
      "You may use shortcuts to save time when rearranging windows. These shortcuts are called ""accelerators."" Try moving the cursor to the name frame of the Diagnostics window (the white-on-black ""label"" at the top of the window). As the cursor enters the name frame, it changes to a bulls-eye shape and a section of the name frame video-inverts (now black-on-white instead of white-on-black). Move the cursor from the left side of the name frame to the right side. Note that the name frame is divided into three sections."L];
    DiagnosticsOps.PutLine[
      "The left and right sections of the name frame offer quick ways to issue the ""Move,"" ""Grow,"" ""Drag,"" ""Top,"" and ""Bottom"" Window Manager commands."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine[
      "To issue the ""Top"" and ""Bottom"" commands, position the cursor in either the left or right section of the Diagnostic window's name frame (the cursor changes to a bulls-eye shape and the selected section of the name frame video-inverts). If the Diagnostics window is already on top of all other windows on the screen, pressing the left mouse button issues the ""Bottom"" command. If the window is underneath any other window, pressing the left mouse button issues the ""Top"" command. Each time you press the left mouse button, you issue the opposite of whichever command you last issued."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine["
To issue the ""Move,"" ""Grow,"" or ""Drag"" commands, again place the cursor in either the left or right section of the name frame.  Press and hold the right mouse button; the cursor changes into the shape of an ""M"" inside a corner.  Press and release the left mouse button; the cursor changes to the shape of a ""G"" inside a corner.  Press and release the left mouse button again; the cursor changes to the shape of an arrow pointing to a line.  Press and release the left mouse button once more; the cursor changes to back to the shape of an ""M"" inside a corner.  As you continue to press the left mouse button, the cursor cycles through its ""Move,"" ""Grow,"" and ""Drag"" shapes.  Change the cursor to the correct shape and orientation for the command you want to issue.  Move the cursor to the correct location on the display, and release the right button."L];
    DiagnosticsOps.PutLine[
      "
      Until now, you have only used the left and right sections of a window's name frame. Now you will learn how to use the center section of a window's name frame to issue the ""Size"" and ""Zoom"" commands."L];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine[
      "Place the cursor in the center section of the Diagnostic window's name frame. Press the left mouse button to issue the ""Zoom"" command. Press the right mouse button to issue the ""Size"" command. Experiment a little with the accelerated ""Zoom"" and ""Size"" commands.
      "L];
    DiagnosticsOps.PutCR[];
    DiagnosticsOps.PutLine["Thumbing"L];
    DiagnosticsOps.PutLine[
      "
Thumbing is a quick way of scrolling a file in a subwindow to display a particular part of the file.  Thumbing is analogous to opening a book by placing your thumb at the approximate section you want to start reading, and pulling the book open at that point. Thumbing is very useful when you have a large file."L];
    DiagnosticsOps.PutCR[];
    IF NOT DiagnosticsOps.More[] THEN RETURN;
    DiagnosticsOps.PutLine[
      "To thumb, move the cursor into the scroll bar and press and hold both mouse buttons. The cursor changes to a left-pointing arrow that you can move up or down inside the scollbar. Remember, the lighter rectangle represents the entire file inside the subwindow.  Move the cursor until it points to the section that you want displayed in the subwindow, and release the mouse buttons.   Releasing the mouse buttons while the cursor is outside the scroll bar aborts the operation."L];
    END --HelpThree-- ;

  END.