home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v3.zip / INF / DDE4BTUT.INF (.txt) < prev    next >
OS/2 Help File  |  1993-10-01  |  131KB  |  1,140 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Special Notices ΓòÉΓòÉΓòÉ
  3.  
  4. References in this help to IBM products, programs, or services do not imply 
  5. that IBM intends to make these available in all countries in which IBM 
  6. operates. 
  7.  
  8. Any reference to an IBM licensed program in this help is not intended to state 
  9. or imply that only IBM's licensed program may be used.  Any functionally 
  10. equivalent product, program, or service that does not infringe on any of IBM's 
  11. intellectual property rights may be used instead of the IBM product, program, 
  12. or service. 
  13.  
  14. Evaluation and verification of operation in conjunction with other products, 
  15. except those expressly designated by IBM, is the user's responsibility. 
  16.  
  17. IBM may have patents or pending patent applications covering subject matter in 
  18. this tutorial.  The furnishing of this tutorial does not give you any license 
  19. to these patents. 
  20.  
  21. This tutorial may contain examples of data and reports used in daily business 
  22. operations.  To illustrate them as completely as possible, the examples may 
  23. include names of individuals, companies, brands, and products.  All of these 
  24. names are fictitious and any similarity to the names and addresses used by an 
  25. actual business enterprise is entirely coincidental. 
  26.  
  27. The following terms, denoted by an asterisk (*) in this tutorial, are 
  28. trademarks of the IBM corporation in the United States and/or other countries: 
  29.  
  30.  C Set ++ 
  31.  IBM 
  32.  OS/2 
  33.  Operating System/2 
  34.  Presentation Manager 
  35.  WorkFrame/2 
  36.  
  37.  
  38. ΓòÉΓòÉΓòÉ 2. Start Here ΓòÉΓòÉΓòÉ
  39.  
  40. Welcome to the IBM* C/C++ Tools Browser Tutorial.  This tutorial gets you 
  41. started with the main features of the browser by guiding you through a sample 
  42. program provided with the C/C++ Tools compiler. 
  43.  
  44. You will interact directly with the browser while viewing this tutorial. You 
  45. may want to work through the tutorial using the sample program, or just read 
  46. the tutorial to learn the main features of the browser, and then compile and 
  47. study one of your own programs.  You can also print the tutorial. 
  48.  
  49. It is recommended that you work through each lesson in the order that they are 
  50. presented.  Each lesson builds on the knowledge gained from the previous 
  51. lessons. 
  52.  
  53. This tutorial takes about an hour to complete.  You can stop anytime by 
  54. pressing F3 or selecting Exit from the Services pull-down menu of the tutorial 
  55. window.  To continue, click on the Forward push button. 
  56.  
  57.  
  58. ΓòÉΓòÉΓòÉ <hidden> Printing the Tutorial ΓòÉΓòÉΓòÉ
  59.  
  60. You can print this tutorial if you want to follow it on paper.  To print the 
  61. tutorial: 
  62.  
  63.  1. Click on the Print push button at the bottom of this window. The Print 
  64.     window appears. 
  65.  
  66.  2. Select the All Sections radio button to print the entire tutorial. 
  67.  
  68. Click on the Back push button to return to the previous panel and continue 
  69. viewing the tutorial. 
  70.  
  71.  
  72. ΓòÉΓòÉΓòÉ 2.1. Getting Help ΓòÉΓòÉΓòÉ
  73.  
  74.  
  75. This tutorial guides you through the basic functions of the C/C++ Tools browser 
  76. by allowing you to interact directly with it. 
  77.  
  78. Contextual online help is available throughout the browser for each menu 
  79. option, field, and push button.  You can get help from the Help pull-down, the 
  80. Help push button (where present), or by pressing F1 while highlighting the 
  81. particular item you want help with. 
  82.  
  83.  
  84. ΓòÉΓòÉΓòÉ 2.2. What is a Browser? ΓòÉΓòÉΓòÉ
  85.  
  86. A browser is a programming tool that you can use to examine your program in 
  87. many different ways. 
  88.  
  89. Using a browser, you can scan a list of program components, view your source 
  90. code, and look at an inheritance graph for a particular base class.  Instead of 
  91. working through the passive declarations in your source code to determine 
  92. program structure, you can look at a graph that visually illustrates the 
  93. relationships that exist between your program components. 
  94.  
  95. The C/C++ Tools browser helps you study programs developed in IBM* 32-bit C++. 
  96.  
  97.  
  98. ΓòÉΓòÉΓòÉ 2.3. The Browser User Interface ΓòÉΓòÉΓòÉ
  99.  
  100.  
  101. ΓòÉΓòÉΓòÉ <hidden> Dummy ΓòÉΓòÉΓòÉ
  102.  
  103. The C/C++ Tools browser interface consists of four window types.  Double-click 
  104. on a window type below to learn more about it: 
  105.  
  106. o Browser Control window 
  107.  
  108. o List window 
  109.  
  110. o Graph window 
  111.  
  112. o Text window 
  113.  
  114. Note:  Before you click on the Forward pushbutton, double-click on the name of 
  115.        each window type in the list above. 
  116.  
  117.  
  118. ΓòÉΓòÉΓòÉ <hidden> Browser Control Window ΓòÉΓòÉΓòÉ
  119.  
  120. The Browser Control window is the starting point for program examination using 
  121. the browser.  All open browser windows are accessible from this window. 
  122. Operations that affect the entire browser are also performed here. 
  123.  
  124.  
  125. ΓòÉΓòÉΓòÉ <hidden> List Window ΓòÉΓòÉΓòÉ
  126.  
  127. A List window lists program components alphabetically, by name. Through 
  128. database searches and queries, you can specify filters so that only the program 
  129. components you want to examine are displayed on the screen. 
  130.  
  131.  
  132. ΓòÉΓòÉΓòÉ <hidden> Graph Window ΓòÉΓòÉΓòÉ
  133.  
  134. A Graph window shows the relationships between program components by drawing 
  135. nodes that represent program components, and lines between nodes to illustrate 
  136. their relationships. 
  137.  
  138.  
  139. ΓòÉΓòÉΓòÉ <hidden> Text Window ΓòÉΓòÉΓòÉ
  140.  
  141. A Text window allows you to view and edit the source code associated with a 
  142. particular program component. 
  143.  
  144.  
  145. ΓòÉΓòÉΓòÉ 2.4. Browsing the Database ΓòÉΓòÉΓòÉ
  146.  
  147. The browser database contains all the information about the program components 
  148. you want to examine.  You can create different views of the browser database by 
  149. performing searches and queries from List, Graph, and Text windows opened from 
  150. the Browser Control window. 
  151.  
  152.  
  153. ΓòÉΓòÉΓòÉ 2.5. About the Sample Program ΓòÉΓòÉΓòÉ
  154.  
  155. The sample program for this tutorial is a C++ payroll program called 
  156. PAYROLL.CPP. It produces a monthly pay summary of a company based on the salary 
  157. and commissions paid to employees.  Employee categories include managers, sales 
  158. managers, sales persons, and regular employees.  Each employee category is 
  159. defined as a class derived from a base class called employee. 
  160.  
  161. In this tutorial, you use the browser to list the program components in a List 
  162. window, examine the employee class hierarchy in a Graph window, and examine the 
  163. source code for the program in the Text window. 
  164.  
  165. Click the on the Forward push button to view Lesson1: Compiling the Sample 
  166. Program. 
  167.  
  168.  
  169. ΓòÉΓòÉΓòÉ 3. Lesson 1: Compiling the Sample Program ΓòÉΓòÉΓòÉ
  170.  
  171. To use the browser, you first need to compile your program using the /Fb 
  172. option.  If you want to try compiling the sample program PAYROLL.CPP now, open 
  173. an OS/2* prompt and change to the c:\ibmcpp\samples\browser directory.  Then, 
  174. type the following from the OS/2* prompt, and press Enter: 
  175.  
  176. icc /Fb payroll.cpp 
  177.  
  178. Note:  If you installed the IBM* C/C++ Tools product in a directory other than 
  179.        c:\ibmcpp, it is imperative that you perform this step to update the 
  180.        sample browser file on the location of the program source files. 
  181.        Substitute your directory name when typing the commands. 
  182.  
  183. You may also use any of the other compiler options but you must use the /Fb 
  184. option.  It instructs the compiler to generate the necessary browser files you 
  185. will need to examine the program source code using the browser. The generated 
  186. browser files have the same name as the main source file of the program, with a 
  187. .BRS file name extension. 
  188.  
  189. So that the browser can use the information in the .BRS files, you must load 
  190. them into the browser database.  Loading browser files is discussed in Lesson 
  191. 2: Using the Browser Control Window. 
  192.  
  193.  
  194. ΓòÉΓòÉΓòÉ 3.1. Starting the Browser ΓòÉΓòÉΓòÉ
  195.  
  196. If you haven't started the browser yet, now would be a good time to do so.  You 
  197. can start the browser from an OS/2* command prompt, or from the Desktop. 
  198.  
  199. To start the browser from your Desktop: 
  200.  
  201.  1. Open the IBM C/C++ Tools 2.0 folder on your Desktop. The IBM C/C++ Tools 
  202.     2.0 - Icon View folder appears. 
  203.  
  204.  2. Double-click on the C++ Browser icon in the folder. 
  205.  
  206. To start the browser from an OS/2 command prompt: 
  207.  
  208.  1. Open an OS/2 window or full screen command prompt. 
  209.  
  210.  2. At the command prompt, type ibrs . 
  211.  
  212. For more information on how to start the browser, and how to use the browser 
  213. command-line options, refer to the browser on-line help or the Browser 
  214. Introduction booklet. 
  215.  
  216.  
  217. ΓòÉΓòÉΓòÉ 3.2. What You Have Learned ΓòÉΓòÉΓòÉ
  218.  
  219. You have completed Lesson 1: Compiling the Sample Program. You have learned how 
  220. to: 
  221.  
  222. o Compile a program with the /Fb option to generate a browser file. 
  223.  
  224. o Start the browser from the Desktop or from an OS/2* command prompt. 
  225.  
  226. Click on the Forward pushbutton to continue to the next lesson, Lesson 2: Using 
  227. the Browser Control Window. 
  228.  
  229.  
  230. ΓòÉΓòÉΓòÉ 4. Lesson 2: Using the Browser Control Window ΓòÉΓòÉΓòÉ
  231.  
  232. The browser opens with the Browser Control window and three minimized browser 
  233. windows.  If you started the browser without specifying input browser files on 
  234. the command line, the Load Browser File action window displays automatically. 
  235. For now, select the Cancel pushbutton to remove the Load window from the 
  236. screen. 
  237.  
  238. The Browser Control window serves as the control area of the browser and is 
  239. displayed during the entire browser session.  You invoke operations that apply 
  240. to the entire browser session from this window. 
  241.  
  242.  
  243. ΓòÉΓòÉΓòÉ 4.1. Browser Window Icons ΓòÉΓòÉΓòÉ
  244.  
  245. The client area of the browser Browser Control window contains icons that 
  246. represent the open windows in the current browser session. 
  247. The icon that looks like this represents an open list window.  The number 1 in 
  248. the icon title List:1 means that the icon represents the first list window 
  249. opened in the current browser session. 
  250.  
  251. Likewise, this icon and this icon represent the first Graph and Text windows 
  252. opened in the current browser session. 
  253.  
  254. The icons remain displayed in the Browser Control window until their 
  255. corresponding windows are closed. 
  256.  
  257.  
  258. ΓòÉΓòÉΓòÉ 4.2. Loading a Browser File ΓòÉΓòÉΓòÉ
  259.  
  260. To examine the components of a program using the browser, you must first load 
  261. the browser .BRS file associated with the program into the browser database. 
  262.  
  263. You can load and unload as many browser files as you need from the Control 
  264. window.  Once you load a browser file, all program elements associated with it 
  265. become accessible from any List, Graph, or Text window. 
  266. Browser windows display program components from all the loaded browser files 
  267. together.  This means that you can have a project divided into many parts that 
  268. are developed and compiled separately, and still be able to examine the project 
  269. as a whole by loading all the applicable browser files into the browser 
  270. database. 
  271.  
  272.  
  273. ΓòÉΓòÉΓòÉ 4.3. Reduce the Tutorial Window ΓòÉΓòÉΓòÉ
  274.  
  275. So that you can more easily work with the Browser Control window and view the 
  276. rest of this tutorial at the same time, reduce this tutorial window to a 
  277. convenient size and then move it to the side of the screen. 
  278.  
  279. You may also want to size browser windows as you work with them so that the 
  280. tutorial window and your working browser window are arranged side by side on 
  281. the screen. 
  282.  
  283. To view the table of contents again, click on the Contents pushbutton. 
  284.  
  285.  
  286. ΓòÉΓòÉΓòÉ 4.4. Loading the Sample Browser File ΓòÉΓòÉΓòÉ
  287.  
  288. Now, load the browser file for the sample program PAYROLL.CPP: 
  289.  
  290.  1. From the Database pull-down in the Browser Control window, select Load. 
  291.     The Load Browser File window appears. 
  292.  
  293.  2. Click on the down arrow to the right of the Drive field to display all the 
  294.     drives in your system.  Select the drive that contains the installed IBM* 
  295.     C/C++ Tools product. 
  296.  
  297.  3. From the  Directory list, select the IBMCPP directory (if you installed the 
  298.     C/C++ Tools product in another directory, substitute its name here).  Next, 
  299.     select the SAMPLES subdirectory, then the BROWSER subdirectory. 
  300.  
  301.  4. Select PAYROLL.BRS from the File list box. 
  302.  
  303.  5. Click on the Load push button to load the PAYROLL.BRS file. 
  304.  
  305. After a few seconds, the PAYROLL.BRS file is loaded into the browser database, 
  306. and all its components are accessible from any browser window. 
  307.  
  308.  
  309. ΓòÉΓòÉΓòÉ 4.5. Opening Browser Windows ΓòÉΓòÉΓòÉ
  310.  
  311. You can open a new List, Graph, or Text window from the Browser Control window, 
  312. or you can double-click on a browser window icon to restore a browser window 
  313. that has already been opened. 
  314.  
  315.      Try opening a new List window by selecting the Database menu bar option, 
  316.      and then selecting Open  List. 
  317.  
  318.  An empty List window should appear together with an icon in the Browser 
  319.  Control window labeled List:2.  It represents the second List window opened in 
  320.  the current browser session. 
  321.  
  322.      Return to the Browser Control window and try double-clicking on the Graph 
  323.      window icon to restore the Graph window. 
  324.  
  325.  Note that browser windows are empty when you first open them.  Because you 
  326.  must perform a search or query to fill the window with program components, the 
  327.  Search Database action window appears  automatically if you have not yet 
  328.  performed an object query or copied an object into the object list. For now, 
  329.  select the Cancel pushbutton to remove the Search Database window from the 
  330.  screen. You'll find out about searches and queries in the next lesson, Using 
  331.  the List Window. 
  332.  
  333.  
  334. ΓòÉΓòÉΓòÉ 4.6. What You Have Learned ΓòÉΓòÉΓòÉ
  335.  
  336. You have completed Lesson 2: Using the Browser Control Window. You have learned 
  337. how to: 
  338.  
  339.  o Load browser .BRS files into the browser database 
  340.  
  341.  o Open new List, Graph, and Text windows 
  342.  
  343.  o Restore opened browser windows by double-clicking on their corresponding 
  344.    icons in the Browser Control window. 
  345.  
  346.  Now minimize any open Graph, List, or Text windows, and then continue to 
  347.  Lesson 3: Using the List Window. 
  348.  
  349.  
  350. ΓòÉΓòÉΓòÉ 5. Lesson 3: Using the List Window ΓòÉΓòÉΓòÉ
  351.  
  352. Return to the Browser Control window and make a List window active by 
  353. double-clicking on its icon. 
  354.  
  355. You use the List window to generate lists of elements from the browser database 
  356. that meet the selection criteria you specify when you do a database search or 
  357. object query. 
  358.  
  359.  
  360. ΓòÉΓòÉΓòÉ 5.1. Introduction to Database Searching ΓòÉΓòÉΓòÉ
  361.  
  362. The first step in examining program components is to perform a database search 
  363. or object query. Searches and queries can be refined by specifying filters that 
  364. limit the search or query to the set of program components you want to 
  365. investigate.  You can specify Scope, Category, and Attribute filters in a 
  366. Search Database or Query Object window. 
  367.  
  368. This is what a Search Database window looks like: 
  369.  
  370.  
  371. ΓòÉΓòÉΓòÉ 5.2. A Search for All Database Objects ΓòÉΓòÉΓòÉ
  372.  
  373. Now, perform a database search that lists all the objects in the browser 
  374. database: 
  375.  
  376.   1. If the Search Database window is not already displayed, select Browse from 
  377.      the List window menu bar and then select Search Database from the Browse 
  378.      pull-down. 
  379.  
  380.      Note that each filter in the Search Database window has a default value 
  381.      associated with it.  For the Scope filter, the default is All Names. 
  382.  
  383.   2. Click on the Category push button and then select No Filter from the 
  384.      adjacent list box.  Leave the default value No Filter for the Attribute 
  385.      filter. 
  386.  
  387.      The filter values you have just specified open the search to all the 
  388.      objects in the browser database. 
  389.  
  390.   3. Click on the Search push button to start the database search. 
  391.  
  392.  After a few seconds, all the objects in the browser database are displayed in 
  393.  the List window. 
  394.  
  395.  
  396. ΓòÉΓòÉΓòÉ 5.3. List Window Qualifiers ΓòÉΓòÉΓòÉ
  397.  
  398. The Kind option in the View pull-down of the List window lets you see the kind 
  399. of each object in the list. 
  400.  
  401.      From the View pull-down in the List window, select Kind. The kind of each 
  402.      object is now displayed after each object name, preceded by a dash (-). 
  403.  
  404.  The Qualification option in the View pull-down displays additional information 
  405.  about each element in the list, such as its access specifier, path, or type. 
  406.  For example, class members are always qualified by the name of their class, 
  407.  and functions are qualified by their arguments and return type. 
  408.  
  409.  Because the Qualification option is active by default, all the object names 
  410.  that are displayed in the list window at the moment are qualified names. Turn 
  411.  Qualification off to see what the object names look like without 
  412.  qualification: 
  413.  
  414.   1. From the View pull-down, select Qualification to turn off qualification. 
  415.   2. After looking at the unqualified names, turn Qualification on by selecting 
  416.      it from the View pull-down again.  A check mark appears beside your 
  417.      selection when Qualification is on. 
  418.  
  419.  Qualifiers are most useful for sorting.  When the Kind or Qualification 
  420.  options are active, the Sort function in the View pull-down on the List window 
  421.  sorts the list items on their fully qualified names.  This means that you can 
  422.  sort on type, path, and other information when qualification is turned on. 
  423.  
  424.  
  425. ΓòÉΓòÉΓòÉ 5.4. Searching for All Classes ΓòÉΓòÉΓòÉ
  426.  
  427. You have just performed a database search to list all the objects in the 
  428. browser database. You could have performed a more selective search by 
  429. specifying Category and Attribute filters to include only the objects you want 
  430. to examine. 
  431.  
  432. For example, to perform a database search that lists all the classes in the 
  433. database: 
  434.  
  435.   1. From the Browse pull-down, select Search Database  The Search Database 
  436.      window appears. 
  437.  
  438.   2. Since a search for all classes is the default for a list window search, 
  439.      the Scope, Category, and Attribute filters already have the following 
  440.      values: 
  441.  
  442.     Scope       All Names 
  443.     Category    Class 
  444.     Attribute   No Filter 
  445.  
  446.      In this case, the search is not  limited to a particular attribute of a 
  447.      class, such as Roots, which would limit the search to only the root 
  448.      classes in the database. 
  449.  
  450.   3. Click on the Search push button to start the search. 
  451.  
  452.  The list of all the classes in the PAYROLL.CPP program is displayed in the 
  453.  List window. 
  454.  
  455.  
  456. ΓòÉΓòÉΓòÉ 5.5. Copying into the Object List ΓòÉΓòÉΓòÉ
  457.  
  458. The browser provides an Object List that holds the names of objects that can be 
  459. queried from any browser window.  For example, if you have the employee class 
  460. displayed in the List window, you can copy it into the Object List from the 
  461. List window then invoke a query from the Graph window to look at its 
  462. inheritance graph. 
  463.  
  464. Objects in the Object List are shared between browser windows. 
  465.  
  466.  
  467. ΓòÉΓòÉΓòÉ 5.6. Example: Copying into the Object List ΓòÉΓòÉΓòÉ
  468.  
  469. Now, try copying the sales_mgr class into the Object List: 
  470.  
  471.   1. Move to the top of the list using the scroll bars or by pressing the Home 
  472.      key. 
  473.  
  474.   2. Move to the sales_mgr entry by pressing s. (To quickly move to an item or 
  475.      group of items whose names begin with a certain letter, simply type the 
  476.      letter.) 
  477.  
  478.   3. From the Browse pull-down, select Copy to Object List. The sales_mgr class 
  479.      is now copied into the list. 
  480.  
  481.  There is now one object in the Object List.  Repeat the above steps and copy a 
  482.  few more objects into the Object List. 
  483.  
  484.  You will use the Object List in forthcoming lessons on the Graph and Text 
  485.  windows. 
  486.  
  487.  
  488. ΓòÉΓòÉΓòÉ 5.7. Introduction to Object Querying ΓòÉΓòÉΓòÉ
  489.  
  490. Now that you have the list of all the classes in the PAYROLL.CPP program 
  491. displayed in the List window, you can see more information about a specific 
  492. class in the list. For example, you can generate a list of all the member 
  493. functions of the employee class using the Query Object action. The filters that 
  494. you specify for a query apply directly to the object being queried. Here is 
  495. what the Query Object window looks like: 
  496.  
  497. The only difference between a Search Database window and an Query Object window 
  498. is the additional entry field called Objects in the Query Object window. It 
  499. contains the name of the object being queried.  When you query a selected 
  500. object, the object is automatically copied into the Object List.  To see the 
  501. objects in the Object List, you click on the down arrow on the right side of 
  502. the Objects entry field. 
  503.  
  504.  
  505. ΓòÉΓòÉΓòÉ 5.8. A Query Example ΓòÉΓòÉΓòÉ
  506.  
  507. Now, try a query on the employee class that lists all its member functions: 
  508.  
  509.   1. Select the employee class from the list; it should be the first item. 
  510.  
  511.   2. From the Browse pull-down, select Query Object to bring up the Query 
  512.      Object window 
  513.  
  514.   3. Click on the down arrow on the right side of the Objects entry field to 
  515.      see the entries in the object list.  Select employee - class from the 
  516.      list. 
  517.  
  518.   4. Leave the default filter value Members for the Scope filter.  Using this 
  519.      filter, you are refining the search to all the members of the query object 
  520.      employee. 
  521.  
  522.   5. Click on the Category push button and then select Function from the list 
  523.      box.  By selecting Function for the Category filter, you are further 
  524.      limiting the query to all the members of the employee class that are 
  525.      functions. 
  526.  
  527.   6. Leave the default filter value No Filter for the Attribute filter. 
  528.  
  529.   7. Click on the Query push button to start the query. 
  530.  
  531.  You see a list of all the member functions of the class employee on the 
  532.  window. 
  533.  
  534.  
  535. ΓòÉΓòÉΓòÉ 5.9. Looking at Status Bars ΓòÉΓòÉΓòÉ
  536.  
  537. You can see the parameters of your last search or query on the Object and Query 
  538. status bars that appear near the top of the browser windows. The Size status 
  539. bar shows the number of objects there are in the displayed list. 
  540.  
  541. You can control which status bars you want displayed or hidden for the current 
  542. window by using the Status option in the View pull-down. For example, to hide 
  543. the Size status bar: 
  544.  
  545.      Select Status  Size from the View pull-down. The check mark beside it 
  546.      disappears and the Size disappears from the list window screen. 
  547.  
  548.  The Status function works the same way in other browser windows. 
  549.  
  550.  
  551. ΓòÉΓòÉΓòÉ 5.10. What You Have Learned ΓòÉΓòÉΓòÉ
  552.  
  553. You have now completed Lesson 3: Using the List Window.  You have learned how 
  554. to: 
  555.  
  556.  o Use Search Database to specify Scope, Category, and Attribute filters for a 
  557.    database search. 
  558.  
  559.  o Use the List window object qualifiers Kind and Qualification 
  560.  
  561.  o Use Copy to Object List to copy objects into the Object List 
  562.  
  563.  o Use Query Object to query a selected object or an object in the Object List 
  564.  
  565.  o Use the Status option to hide and display status bars. 
  566.  
  567.  Minimize the List window and then continue to Lesson 4: Using the Graph 
  568.  Window. 
  569.  
  570.  
  571. ΓòÉΓòÉΓòÉ 6. Lesson 4: Using the Graph Window ΓòÉΓòÉΓòÉ
  572.  
  573. Now, return to the Browser Control window and make a Graph window active by 
  574. selecting its icon. 
  575.  
  576. The Graph window is used to graphically illustrate relationships between 
  577. program components.  The relationships are shown as nodes connected by lines. 
  578. Using the Graph window, you can quickly determine program complexity and 
  579. dependencies by looking at the number of nodes in the graph and the 
  580. relationships between them. 
  581.  
  582.  
  583. ΓòÉΓòÉΓòÉ 6.1. Querying from the Graph Window ΓòÉΓòÉΓòÉ
  584.  
  585. Some of the graphs that you can generate from the Graph window are: 
  586.  
  587.  o Inheritance graph 
  588.  o Directory tree 
  589.  o Program structure 
  590.  o File inclusion tree 
  591.  o Function call map 
  592.  
  593.  Because the employee class was copied into the Object List from the List 
  594.  window when you performed a query on it, you can now query the employee class 
  595.  from the Graph window to display a graph that shows its relationship with its 
  596.  derived classes. 
  597.  
  598.  
  599. ΓòÉΓòÉΓòÉ 6.2. A Graph Query Example ΓòÉΓòÉΓòÉ
  600.  
  601. Now, perform a Derived Classes query on employee: 
  602.  
  603.   1. From the Browse pull-down in the Graph window, select Query Object. 
  604.  
  605.   2. Select employee - class from the Objects dropdown list in the Query Object 
  606.      window. 
  607.  
  608.   3. Select Derived Classes from the list box for the Scope filter. 
  609.  
  610.   4. Leave the default filter value Expand All for the Category filter to see 
  611.      all the descendants of employee. 
  612.  
  613.   5. There are no Attribute filters for this query, so just click on the Query 
  614.      push button to start the query. 
  615.  
  616.  You should see a graph showing all the derived classes of employee. 
  617.  
  618.  
  619. ΓòÉΓòÉΓòÉ 6.3. Another Graph Query Example ΓòÉΓòÉΓòÉ
  620.  
  621. Next, you can request all the base classes of sales_mgr (you can see from the 
  622. graph which classes these are).  This is the reverse of your last query. 
  623.  
  624.   1. Tip: A quick way to Query a displayed object in any browser window is to 
  625.      double-click on it.  This action copies the selected object into the 
  626.      browser Object List and brings up the Query Object window with the 
  627.      selected item as the query object. 
  628.  
  629.      Double-click on the sales_mgr node now.  The Query Object window appears 
  630.      with sales_mgr - class as the query object. 
  631.  
  632.   2. Select Base Classes from the list box for the Scope filter. 
  633.  
  634.   3. Leave the default filter value Expand All for the Category filter. 
  635.  
  636.   4. Click on the Query push button to start the query. 
  637.  
  638.  After a few seconds, a graph similar to the previous graph is displayed 
  639.  showing only the base classes of the sales_mgr class. 
  640.  
  641.  
  642. ΓòÉΓòÉΓòÉ 6.4. Searching from the Graph Window ΓòÉΓòÉΓòÉ
  643.  
  644. Next, you will perform a database search from the Graph window. This time you 
  645. will request for a larger graph showing a map of the function calls in the 
  646. PAYROLL.CPP program. 
  647.  
  648.      Because this graph will be very large, set the graph drawing quality to 
  649.      Very High by selecting Quality  Very High from the View pull-down. 
  650.  
  651.  This option produces a finer drawing of the graph by preventing overlapping of 
  652.  arcs, but takes a little longer to draw. 
  653.  
  654.  To start the function calls query: 
  655.  
  656.   1. From the Browse pull-down, select Search Database. 
  657.  
  658.   2. In the Search Database window, select Calls from the list box for the 
  659.      Scope filter. 
  660.  
  661.   3. Leave the default filter values Expand All and Called Functions for the 
  662.      Category and Attribute filters. 
  663.  
  664.   4. Click on the Search push button to start the search.  This search could 
  665.      take a minute or two since this is a very large search action. 
  666.  
  667.  Once the search is finished, a very large graph appears on the screen.  There 
  668.  are so many nodes that it is hard to see them all.  Fortunately, there is an 
  669.  easy way to scroll over the graph viewing only certain parts of it on the 
  670.  screen. 
  671.  
  672.  
  673. ΓòÉΓòÉΓòÉ 6.5. The Overview Window ΓòÉΓòÉΓòÉ
  674.  
  675. You can use the Overview window to quickly scroll and zoom over parts of the 
  676. graph to see it in more detail. 
  677.  
  678.      From the View pull-down, select Overview. 
  679.  
  680.  A small window that looks like the one shown here appears at the top right 
  681.  corner of the Graph window.  It contains a representation of the entire graph. 
  682.  
  683.  The viewing rectangle that appears within the window represents the current 
  684.  view of the graph.  You can move and size the viewing rectangle to scroll over 
  685.  and display an enlarged or reduced portion of the graph.  The graph window 
  686.  changes to show the new position and size of the rectangle. 
  687.  
  688.  
  689. ΓòÉΓòÉΓòÉ 6.6. Using the Overview Window ΓòÉΓòÉΓòÉ
  690.  
  691. To size the viewing rectangle: 
  692.  
  693.   1. Position the mouse pointer over a border of the rectangle. 
  694.   2. To see a reduced portion of the graph, press and hold mouse button 1 while 
  695.      dragging the border toward the center of the rectangle.  The rectangle 
  696.      contracts as you move the mouse.  When the rectangle is the size that you 
  697.      want, release mouse button 1. 
  698.   3. To see a enlarged portion of the graph, press and hold mouse button 1 
  699.      while dragging the border away from the center of the rectangle.  The 
  700.      rectangle expands as you move the mouse. 
  701.  
  702.  To move the viewing rectangle: 
  703.  
  704.   1. Position the mouse pointer anywhere within the rectangle. 
  705.   2. Press and hold mouse button 1 while moving the rectangle with the mouse. 
  706.   3. Position the rectangle over the set of nodes you want to view and then 
  707.      release mouse button 1. 
  708.  
  709.  When the viewing rectangle is small enough, you can actually see the node 
  710.  labels of the graph in detail.  Move the viewing rectangle over the graph to 
  711.  view different parts of it. 
  712.  
  713.  
  714. ΓòÉΓòÉΓòÉ 6.7. Using the Zoom Slider ΓòÉΓòÉΓòÉ
  715.  
  716. Another way to enlarge or reduce the graph is to use the Zoom Slider. 
  717.  
  718. Move the slider arm to the right to enlarge the graph, move it to the left to 
  719. reduce the graph. 
  720.  
  721. Notice how the viewing rectangle in the overview window expands and contracts 
  722. to match your zoom actions.  The Zoom Slider also adjusts to your zoom settings 
  723. as you size the overview rectangle. 
  724.  
  725. If a node is selected, the zoom action keeps the center focus on the selected 
  726. node as it redraws the graph.  If there is no selected node, the zoom action 
  727. focuses on the center of the graph. 
  728.  
  729.  
  730. ΓòÉΓòÉΓòÉ 6.8. Using Magnify ΓòÉΓòÉΓòÉ
  731.  
  732. You can also size a portion of the graph using the Magnify option from the View 
  733. pull-down.  There are two options in the cascaded Magnify menu:  Magnify  Area 
  734. In expands the selected rectangle to fit the Graph window display and Magnify  
  735. Area Out shrinks the currently displayed view of the graph to fit into the 
  736. selected rectangle. 
  737.  
  738.      Select Magnify  Area In or Magnify  Area Out. Notice that the mouse 
  739.      pointer changes to a magnification pointer.  This indicates that you can 
  740.      select a rectangular portion of the graph that you want reduced or 
  741.      enlarged. 
  742.  
  743.  To select a portion of the graph to reduce or enlarge: 
  744.  
  745.   1. Position the magnification pointer over the upper-left corner of the area 
  746.      you want to select. 
  747.  
  748.   2. Press and hold mouse button 1 while sliding the mouse pointer diagonally 
  749.      over to the lower-right corner of the area you want to select.  The area 
  750.      you select is marked with a rectangle. 
  751.  
  752.   3. When the rectangular marker is over the portion you want to select, 
  753.      release mouse button 1.  Notice what happens to the graph, the zoom slider 
  754.      and the overview window.  They are all updated to correspond with your 
  755.      Magnify action. 
  756.  
  757.  
  758. ΓòÉΓòÉΓòÉ 6.9. Collapsing Nodes ΓòÉΓòÉΓòÉ
  759.  
  760. If you have too many nodes on the screen and you want to remove some of them to 
  761. reduce the size of the graph, you can collapse a node to remove all its 
  762. descendants: 
  763.  
  764.   1. Select a node in the graph with many levels of descendants.  The selected 
  765.      node is highlighted with a different color and has a thick border drawn 
  766.      around it. 
  767.  
  768.   2. From the View pull-down, select Node  Collapse All. 
  769.  
  770.  The descendant nodes and the arcs pointing to the children disappear. To make 
  771.  the dangling arcs visible, select Collapsed Arcs from the View pull-down. 
  772.  
  773.  The collapsed node is differentiated from the expanded nodes by a rectangle 
  774.  drawn around it.  There may also be other nodes that were collapsed because 
  775.  they share hidden descendants with the node you chose to collapse. 
  776.  
  777.  
  778. ΓòÉΓòÉΓòÉ 6.10. Expanding Nodes ΓòÉΓòÉΓòÉ
  779.  
  780. To again see the invisible descendants of the collapsed node, you can expand 
  781. the node by a single level, or you can expand it entirely: 
  782.  
  783.   1. Select the same node you collapsed before. 
  784.  
  785.   2. From the View pull-down, select Node  Expand. Only the direct descendants 
  786.      of the collapsed node appear. 
  787.  
  788.   3. Now, while the same node is still selected, select Node  Expand All from 
  789.      the View pull-down. 
  790.  
  791.      Now all the direct and indirect descendants of the previously collapsed 
  792.      node are visible. 
  793.  
  794.  
  795. ΓòÉΓòÉΓòÉ 6.11. Centering on a Node ΓòÉΓòÉΓòÉ
  796.  
  797. To center the graph view on a particular node, select the node then select Node 
  798.  Center from the View pull-down. 
  799.  
  800. The view of the graph adjusts so that the selected node is in the middle of the 
  801. screen. 
  802.  
  803.  
  804. ΓòÉΓòÉΓòÉ 6.12. Using Relay and Reset ΓòÉΓòÉΓòÉ
  805.  
  806. If you have scrolled and zoomed around the graph enough, you might want to see 
  807. the graph as it was originally drawn.  You can use the Relay action to do this. 
  808.  
  809.      From the View menu, select Relay.  The graph is redrawn as it originally 
  810.      appeared when you first issued the query. 
  811.  
  812.  To clear the graph window of its contents altogether, select Reset from the 
  813.  View pull-down.  You can try this now because you have just completed the 
  814.  lesson on using the graph window. 
  815.  
  816.  
  817. ΓòÉΓòÉΓòÉ 6.13. What You Have Learned ΓòÉΓòÉΓòÉ
  818.  
  819. You have now completed Lesson 4: Using the Graph Window. You have learned how 
  820. to: 
  821.  
  822.  o Perform a Query Object action from the Graph window using objects copied 
  823.    into the Object List from other windows 
  824.  
  825.  o Invoke a Query Object action on a displayed object by double-clicking on it 
  826.  
  827.  o Perform a Search Database action from the Graph window 
  828.  
  829.  o Use Quality to set the graph drawing quality. 
  830.  
  831.  o Use the Overview window to scroll and zoom over the graph 
  832.  
  833.  o Use the Zoom Slider to zoom in and out of the graph 
  834.  
  835.  o Use Magnify to reduce or enlarge a specified portion of the graph 
  836.  
  837.  o Use the Node actions Collapse All, Expand All, and Expand to display and 
  838.    hide descendants of nodes in the graph 
  839.  
  840.  o Center a node in the graph using Node  Center 
  841.  
  842.  o Redraw a graph using Relay 
  843.  
  844.  o Clear the contents of the window using Reset. 
  845.  
  846.  Minimize the active Graph window and then continue to Lesson 5: Using the Text 
  847.  Window. 
  848.  
  849.  
  850. ΓòÉΓòÉΓòÉ 7. Lesson 5: Using the Text Window ΓòÉΓòÉΓòÉ
  851.  
  852. Now, return to the Browser Control window and make a Text window active by 
  853. selecting its icon. 
  854.  
  855. You can use the Text window to display the actual source code associated with a 
  856. particular object in the database.  You can even edit the source information; 
  857. however, any changes that you make will not be reflected in the browser 
  858. database until you recompile your program and reload the appropriate browser 
  859. files into the browser database. 
  860.  
  861.  
  862. ΓòÉΓòÉΓòÉ 7.1. What are Occurrences? ΓòÉΓòÉΓòÉ
  863.  
  864. The result of a search or query in a Text window is a list of occurrences.  An 
  865. occurrence may be a source-code file or an instance of a browser object in a 
  866. source file, depending on the performed action. 
  867.  
  868.  
  869.  When the    The occurrences list
  870.  action      is...
  871.  is a...
  872.  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  873.  Database    A list of all the
  874.  search      source-code files in
  875.              the database.
  876.  ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
  877.  Object      A list of instances
  878.  query       where the query object
  879.              appears in one or more
  880.              source files in the
  881.              database.
  882.  
  883.  
  884. ΓòÉΓòÉΓòÉ 7.2. Searching in the Text window ΓòÉΓòÉΓòÉ
  885.  
  886. A search action from a Text window is a request for all the source files in the 
  887. database.  To start a search: 
  888.  
  889.   1. From the Browse pull-down, select Search Database to bring up the Search 
  890.      Database window. 
  891.  
  892.   2. Click on the Search push button to start the search. 
  893.  
  894.  The first source file in the occurrences list is displayed in the window, and 
  895.  the number of occurrences found is displayed on the status bar. 
  896.  
  897.      To look at the list of occurrences, select Occurrences  List from the 
  898.      Text pull-down.  The Occurrences List window appears. You can select a 
  899.      file to view from the occurrences list by selecting it then clicking on 
  900.      the Display push button. 
  901.  
  902.  You can also use the Occurrences  Next (F12) and Occurrences  Previous (F11) 
  903.  controls to rotate through the sequence of occurrences.  If the Occurrences 
  904.  status bar is displayed, you can click on the ring icons on the top right-hand 
  905.  corner of the status bar to rotate through the list of occurrences. 
  906.  
  907.  
  908. ΓòÉΓòÉΓòÉ 7.3. The Occurrence Status Bar ΓòÉΓòÉΓòÉ
  909.  
  910. The Occurrence status bar displays the name of the occurrence currently being 
  911. viewed. 
  912.  
  913. Other status bars are Object and Query which display the parameters of your 
  914. last database search or object query, and Size which displays the number of 
  915. lines in the currently displayed file. 
  916.  
  917.  
  918. ΓòÉΓòÉΓòÉ 7.4. Copying into the Object List ΓòÉΓòÉΓòÉ
  919.  
  920. In the Text window, copying an object into the Object List is as simple as 
  921. selecting its name from the text, and then selecting Copy to Object List from 
  922. the Browse menu.  To copy an item into the Object List: 
  923.  
  924.   1. Display the PAYCLASS.H file by selecting its name from the Occurrences 
  925.      list. 
  926.  
  927.   2. Search for the regular_emp class using the Find action: 
  928.  
  929.      a. From the Edit pull-down, select Find. The Find window appears. 
  930.      b. Type regular_emp in the Find entry field. 
  931.      c. Click on the Find push button to start the search. 
  932.  
  933.      The first occurrence of the string regular_emp is highlighted in a comment 
  934.      in the text. 
  935.  
  936.   3. From the Edit pull-down, select Find Next to locate the next occurrence in 
  937.      the list.  Now the string regular_emp is highlighted in a class 
  938.      declaration. 
  939.  
  940.   4. Select Copy to Object List from the Browse menu to copy the class into the 
  941.      object list. 
  942.  
  943.  Note:  You could also have highlighted the text by marking it with the mouse 
  944.         or keyboard to copy it into the Object List, instead of using the Find 
  945.         action to find and highlight the text. 
  946.  
  947.  
  948. ΓòÉΓòÉΓòÉ 7.5. Tips for Copying into the Object List ΓòÉΓòÉΓòÉ
  949.  
  950. Here are a few things to remember when you are selecting objects to copy into 
  951. the Object List from the Text window: 
  952.  
  953.  o The selected object must be a valid name in the browser database 
  954.  
  955.  o Select the name of an object only in a valid portion of the source code.  Do 
  956.    not select the name of an object in a comment, for example, because the 
  957.    selection loses its proper context and cannot be interpreted. 
  958.  
  959.  o Do not select more than one name at a time.  When more than one object is 
  960.    selected, only the first object is copied. Sometimes, nothing is copied at 
  961.    all. 
  962.  
  963.  
  964. ΓòÉΓòÉΓòÉ 7.6. Querying in the Text Window ΓòÉΓòÉΓòÉ
  965.  
  966. Now you will perform a query to find the lines in the PAYROLL program source 
  967. files where the regular_emp class is used: 
  968.  
  969.   1. Select Query Object from the Browse pull-down. The Query Object window 
  970.      appears. 
  971.  
  972.   2. Select regular_emp - class from the Object List in the Objects entry field 
  973.      if it is not already selected. 
  974.  
  975.   3. Select Usage for the Scope filter. 
  976.  
  977.   4. Click on the Query push button to start the query. 
  978.  
  979.  The source file containing the first usage of the regular_emp class is 
  980.  displayed with the usage string highlighted. 
  981.  
  982.      Look at the Occurrences list to see the list of all the usage occurrences 
  983.      of the regular_emp class in the PAYROLL program.  Select Occurrences  
  984.      Next from the Text pull-down or press F12 to display the next occurrence 
  985.      of the class in the source files. 
  986.  
  987.  
  988. ΓòÉΓòÉΓòÉ 7.7. Displaying Object Definitions ΓòÉΓòÉΓòÉ
  989.  
  990. Another useful feature in the Text window is the What is function. It displays 
  991. the definition of the selected item in a pop-up window.  To display the 
  992. definition of a usage occurrence, of the regular_emp class that you selected 
  993. before: 
  994.  
  995.   1. Display the first usage occurrence (1 of 4) of the regular_emp class by 
  996.      selecting it from the occurrences list.  The PAYROLL.CPP file is displayed 
  997.      on the Text window with the occurrence string highlighted. 
  998.  
  999.   2. Now, from the View pull-down, select What is. 
  1000.  
  1001.      This is what you see: 
  1002.  
  1003.  Note:  When you are selecting text for a What is action, follow the same 
  1004.         guidelines outlined in Tips for Copying into the Object List. 
  1005.  
  1006.  
  1007. ΓòÉΓòÉΓòÉ 7.8. Saving and Editing Source Files ΓòÉΓòÉΓòÉ
  1008.  
  1009. Standard editing functions, such as Cut, Copy, Paste, Undo, Find, and Replace 
  1010. are provided in the Edit pull-down in the Text window. You can only edit text 
  1011. in the Text window when the Browse Only option in the Edit pull-down is 
  1012. disabled. 
  1013.  
  1014. Experiment by using these editing functions to edit the PAYROLL program 
  1015. source-code files.  You do not have to save your changes. If you want to save 
  1016. your changes, use the Save as option in the Text pull-down.  You can save your 
  1017. changes to a file that you name when you are prompted in the Save as window. 
  1018.  
  1019. Note:  Any changes you make to the source files will not be reflected in future 
  1020.        searches and queries until another compile is done, and the updated 
  1021.        browser files are reloaded into the database. 
  1022.  
  1023.  
  1024. ΓòÉΓòÉΓòÉ 7.9. What You Have Learned ΓòÉΓòÉΓòÉ
  1025.  
  1026. You have just completed Lesson 5: Using the Text Window. You have learned how 
  1027. to: 
  1028.  
  1029.  o Display the occurrences list using Occurrences  List from the Text 
  1030.    pull-down 
  1031.  
  1032.  o Rotate through the sequence of occurrences using Next and Previous 
  1033.  
  1034.  o Use Search Database to search for all the source files in the browser 
  1035.    database 
  1036.  
  1037.  o Select an object from the Text window and copy it into the Object List 
  1038.  
  1039.  o Use Query Object to query an object from the Text window 
  1040.  
  1041.  o Find a text string in the displayed file 
  1042.  
  1043.  o Display the definition of a selected object in the text window using What is 
  1044.  
  1045.  o Enable editing in the Text window by disabling the Browse Only option 
  1046.  
  1047.  o Edit text in the Text window using editing functions provided in the Edit 
  1048.    pull-down. 
  1049.  
  1050.  Minimize the Text window and then continue to Lesson 6: Finishing Up. 
  1051.  
  1052.  
  1053. ΓòÉΓòÉΓòÉ 8. Lesson 6: Finishing Up ΓòÉΓòÉΓòÉ
  1054.  
  1055. This lesson shows you how to end the browser session, but first, a few words 
  1056. about unloading browser files. 
  1057.  
  1058.  
  1059. ΓòÉΓòÉΓòÉ 8.1. Unloading Browser Files ΓòÉΓòÉΓòÉ
  1060.  
  1061. If you have more than one browser file loaded into the database, you might want 
  1062. to unload one to exclude the program components (or facts) associated with it 
  1063. from future searches or queries. When you unload a file from the browser 
  1064. database, all the browser windows are reset (that is, cleared of their 
  1065. contents), and the Object List is emptied. 
  1066.  
  1067. To unload the PAYROLL.BRS file from the browser database: 
  1068.  
  1069.   1. Return to the Browser Control window. 
  1070.  
  1071.   2. From the Database pull-down, select Unload.  The Unload Browser File 
  1072.      window appears listing all the files that are currently loaded in the 
  1073.      database. 
  1074.  
  1075.   3. In this case, only the PAYROLL.BRS file is loaded.  Select it and then 
  1076.      click on the Unload push button to unload the file. 
  1077.  
  1078.  The browser database is now empty, and all the browser windows are cleared. 
  1079.  
  1080.  
  1081. ΓòÉΓòÉΓòÉ 8.2. Ending the Browser Session ΓòÉΓòÉΓòÉ
  1082.  
  1083. To end the browser session, select Close browser from the first menu bar option 
  1084. in any browser window, or press F3. 
  1085.  
  1086. When you exit from the browser, the browser database is emptied of its 
  1087. contents. 
  1088.  
  1089. Note:  You do not have to unload browser files before you exit the browser. 
  1090.  
  1091.  
  1092. ΓòÉΓòÉΓòÉ 8.3. The End ΓòÉΓòÉΓòÉ
  1093.  
  1094. You have now reached the end of this tutorial. You have learned all the major 
  1095. functions and features of the browser. 
  1096.  
  1097. Experiment with other functions of the browser using the PAYROLL program or a 
  1098. program of your own.  You can use the on-line help for guidance. 
  1099.  
  1100.  
  1101. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1102.  
  1103. Trademark of the IBM Corporation 
  1104.  
  1105.  
  1106. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1107.  
  1108. A filter is a parameter that limits a search or query so that only the data 
  1109. that fulfills the criteria specified by the filter is displayed. 
  1110.  
  1111.  
  1112. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1113.  
  1114. The access specifier of an object determines the access other objects can have 
  1115. to it.  Access specifiers apply equally to all class member objects: member 
  1116. functions, member data, nested classes, and enumerators. 
  1117.  
  1118. The access specifiers are public, private, protected, and friend. 
  1119.  
  1120.  
  1121. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1122.  
  1123. A dangling arc is an arc that points to an invisible node in the graph. 
  1124. Dangling arcs originate from collapsed nodes. 
  1125.  
  1126.  
  1127. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1128.  
  1129. To select a node in the graph, position the mouse pointer on the node you want 
  1130. to select and press mouse button 1. 
  1131.  
  1132.  
  1133. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1134.  
  1135. An arc is a directed line that connects two nodes. 
  1136.  
  1137.  
  1138. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  1139.  
  1140. A Child of a node is a direct or first level descendant of the node.