Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

First GitHub commit for Diver

  • Loading branch information...
commit 55091d0e64b26cf0fc58a38ba837d4ba35557927 0 parents
Sean Stevenson seanws authored
Showing with 3,091 additions and 0 deletions.
  1. +11 −0 Development/.project
  2. BIN  Development/artifacts.jar
  3. BIN  Development/content.jar
  4. BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.1.0.201002011648.jar
  5. BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.2.0.201005181350.jar
  6. BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.3.0.201011041430.jar
  7. BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.3.0.201011221731.jar
  8. BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.3.1.201103091534.jar
  9. BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.3.1.201103111429.jar
  10. BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.4.0.201107281756.jar
  11. BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.4.0.201108051630.jar
  12. BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.4.0.201108051637.jar
  13. BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.4.0.201108051644.jar
  14. BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.4.0.201110111054.jar
  15. BIN  Development/features/ca.uvic.chisel.diver.feature_0.1.0.201002011648.jar
  16. BIN  Development/features/ca.uvic.chisel.diver.feature_0.2.0.201005181350.jar
  17. BIN  Development/features/ca.uvic.chisel.diver.feature_0.3.0.201011041430.jar
  18. BIN  Development/features/ca.uvic.chisel.diver.feature_0.3.0.201011221731.jar
  19. BIN  Development/features/ca.uvic.chisel.diver.feature_0.3.1.201103091534.jar
  20. BIN  Development/features/ca.uvic.chisel.diver.feature_0.3.1.201103111429.jar
  21. BIN  Development/features/ca.uvic.chisel.diver.feature_0.4.0.201107281756.jar
  22. BIN  Development/features/ca.uvic.chisel.diver.feature_0.4.0.201108051630.jar
  23. BIN  Development/features/ca.uvic.chisel.diver.feature_0.4.0.201108051637.jar
  24. BIN  Development/features/ca.uvic.chisel.diver.feature_0.4.0.201108051644.jar
  25. BIN  Development/features/ca.uvic.chisel.diver.feature_0.4.0.201110111054.jar
  26. BIN  Development/features/ca.uvic.chisel.diver.junit.feature_0.4.0.201107281756.jar
  27. BIN  Development/features/ca.uvic.chisel.diver.junit.feature_0.4.0.201108051630.jar
  28. BIN  Development/features/ca.uvic.chisel.diver.junit.feature_0.4.0.201108051637.jar
  29. BIN  Development/features/ca.uvic.chisel.diver.junit.feature_0.4.0.201108051644.jar
  30. BIN  Development/features/ca.uvic.chisel.diver.logging.feature_0.2.0.201005181350.jar
  31. BIN  Development/features/ca.uvic.chisel.diver.logging.feature_0.3.0.201011041430.jar
  32. BIN  Development/features/ca.uvic.chisel.diver.logging.feature_0.3.0.201011221731.jar
  33. BIN  Development/features/ca.uvic.chisel.diver.logging.feature_0.3.0.201110111054.jar
  34. BIN  Development/features/ca.uvic.chisel.diver.static.feature_0.4.0.201108051630.jar
  35. BIN  Development/features/ca.uvic.chisel.diver.static.feature_0.4.0.201108051637.jar
  36. BIN  Development/features/ca.uvic.chisel.diver.static.feature_0.4.0.201108051644.jar
  37. BIN  Development/features/ca.uvic.chisel.diver.static.feature_0.4.1.201110111054.jar
  38. BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.1.0.201002011648.jar
  39. BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.0.201005181350.jar
  40. BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201011041430.jar
  41. BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201011221731.jar
  42. BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201103091534.jar
  43. BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201103111429.jar
  44. BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201107281756.jar
  45. BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201108051630.jar
  46. BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201108051637.jar
  47. BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201108051644.jar
  48. BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.4.0.201110111054.jar
  49. BIN  Development/features/ca.uvic.chisel.widgets.feature_0.1.0.201002011648.jar
  50. BIN  Development/features/ca.uvic.chisel.widgets.feature_0.2.0.201005181350.jar
  51. BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.0.201011041430.jar
  52. BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.0.201011221731.jar
  53. BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.1.201103091534.jar
  54. BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.1.201103111429.jar
  55. BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.1.201107281756.jar
  56. BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.1.201108051630.jar
  57. BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.1.201108051637.jar
  58. BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.1.201108051644.jar
  59. BIN  Development/features/ca.uvic.chisel.widgets.feature_0.4.0.201110111054.jar
  60. BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.1.0.201002011648.jar
  61. BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.2.0.201005181350.jar
  62. BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.0.201011041430.jar
  63. BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.0.201011221731.jar
  64. BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.1.201103091534.jar
  65. BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.1.201103111429.jar
  66. BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.1.201107281756.jar
  67. BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.1.20110805150.jar
  68. BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.1.201108051630.jar
  69. BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.1.201108051637.jar
  70. BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.1.201108051644.jar
  71. BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.1.0.201002011648.jar
  72. BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.2.0.201005181350.jar
  73. BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.0.201011041430.jar
  74. BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.0.201011221731.jar
  75. BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.1.201103091534.jar
  76. BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.1.201103111429.jar
  77. BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.1.201107281756.jar
  78. BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.1.20110805150.jar
  79. BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.1.201108051630.jar
  80. BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.1.201108051637.jar
  81. BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.1.201108051644.jar
  82. BIN  Development/plugins/ca.uvic.chisel.diver.logging_0.2.0.201005181350.jar
  83. BIN  Development/plugins/ca.uvic.chisel.diver.sequencediagram.sc_0.4.0.201108051630.jar
  84. BIN  Development/plugins/ca.uvic.chisel.diver.sequencediagram.sc_0.4.0.201108051637.jar
  85. BIN  Development/plugins/ca.uvic.chisel.diver.sequencediagram.sc_0.4.0.201108051644.jar
  86. BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.1.0.201002011648.jar
  87. BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.0.201005181350.jar
  88. BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201011041430.jar
  89. BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201011221731.jar
  90. BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201103091534.jar
  91. BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201103111429.jar
  92. BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201107281756.jar
  93. BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201108051630.jar
  94. BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201108051637.jar
  95. BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201108051644.jar
  96. BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.1.0.201002011648.jar
  97. BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.2.0.201005181350.jar
  98. BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.0.201011041430.jar
  99. BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.0.201011221731.jar
  100. BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.1.201103091534.jar
  101. BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.1.201103111429.jar
  102. BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.1.201107281756.jar
  103. BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.1.20110805150.jar
  104. BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.1.201108051630.jar
  105. BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.1.201108051637.jar
  106. BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.1.201108051644.jar
  107. BIN  Development/plugins/ca.uvic.chisel.javasketch.junit_0.4.0.201107281756.jar
  108. BIN  Development/plugins/ca.uvic.chisel.javasketch.junit_0.4.0.201108051630.jar
  109. BIN  Development/plugins/ca.uvic.chisel.javasketch.junit_0.4.0.201108051637.jar
  110. BIN  Development/plugins/ca.uvic.chisel.javasketch.junit_0.4.0.201108051644.jar
  111. BIN  Development/plugins/ca.uvic.chisel.javasketch_0.1.0.201002011648.jar
  112. BIN  Development/plugins/ca.uvic.chisel.javasketch_0.2.0.201005181350.jar
  113. BIN  Development/plugins/ca.uvic.chisel.javasketch_0.3.0.201011041430.jar
  114. BIN  Development/plugins/ca.uvic.chisel.javasketch_0.3.0.201011221731.jar
  115. BIN  Development/plugins/ca.uvic.chisel.javasketch_0.3.1.201103091534.jar
  116. BIN  Development/plugins/ca.uvic.chisel.javasketch_0.3.1.201103111429.jar
  117. BIN  Development/plugins/ca.uvic.chisel.javasketch_0.4.0.201107281756.jar
  118. BIN  Development/plugins/ca.uvic.chisel.javasketch_0.4.0.201108051630.jar
  119. BIN  Development/plugins/ca.uvic.chisel.javasketch_0.4.0.201108051637.jar
  120. BIN  Development/plugins/ca.uvic.chisel.javasketch_0.4.0.201108051644.jar
  121. BIN  Development/plugins/ca.uvic.chisel.logging.eclipse_0.0.1.201005181350.jar
  122. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.1.0.201002011648.jar
  123. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.2.0.201005181350.jar
  124. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.3.0.201011041430.jar
  125. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.3.0.201011221731.jar
  126. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.3.1.201103091534.jar
  127. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.3.1.201103111429.jar
  128. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.4.0.201107281756.jar
  129. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.4.0.201108051630.jar
  130. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.4.0.201108051637.jar
  131. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.4.0.201108051644.jar
  132. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.1.0.201002011648.jar
  133. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.2.0.201005181350.jar
  134. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.3.0.201011041430.jar
  135. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.3.0.201011221731.jar
  136. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.3.1.201103091534.jar
  137. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.3.1.201103111429.jar
  138. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.4.0.201107281756.jar
  139. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.4.0.201108051630.jar
  140. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.4.0.201108051637.jar
  141. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.4.0.201108051644.jar
  142. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.1.0.201002011648.jar
  143. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.2.0.201005181350.jar
  144. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.3.0.201011041430.jar
  145. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.3.0.201011221731.jar
  146. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.3.1.201103091534.jar
  147. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.3.1.201103111429.jar
  148. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.4.0.201107281756.jar
  149. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.4.0.201108051630.jar
  150. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.4.0.201108051637.jar
  151. BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.4.0.201108051644.jar
  152. BIN  Development/plugins/ca.uvic.chisel.widgets_0.1.0.201002011648.jar
  153. BIN  Development/plugins/ca.uvic.chisel.widgets_0.2.0.201005181350.jar
  154. BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.0.201011041430.jar
  155. BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.0.201011221731.jar
  156. BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.1.201103091534.jar
  157. BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.1.201103111429.jar
  158. BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.1.201107281756.jar
  159. BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.1.201108051630.jar
  160. BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.1.201108051637.jar
  161. BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.1.201108051644.jar
  162. BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.8.2.201002011648.jar
  163. BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.0.201005181350.jar
  164. BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201011041430.jar
  165. BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201011221731.jar
  166. BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201103091534.jar
  167. BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201103111429.jar
  168. BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201107281756.jar
  169. BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201108051630.jar
  170. BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201108051637.jar
  171. BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201108051644.jar
  172. +11 −0 Release/.project
  173. BIN  Release/artifacts.jar
  174. +37 −0 Release/category.xml
  175. BIN  Release/content.jar
  176. BIN  Release/features/ca.uvic.chisel.diver.feature.container_0.4.0.201108081611.jar
  177. BIN  Release/features/ca.uvic.chisel.diver.feature_0.4.0.201108081611.jar
  178. BIN  Release/features/ca.uvic.chisel.diver.junit.feature_0.4.0.201108081611.jar
  179. BIN  Release/features/ca.uvic.chisel.diver.static.feature_0.4.0.201108081611.jar
  180. BIN  Release/features/ca.uvic.chisel.hsqldb.feature_0.4.0.201108081611.jar
  181. BIN  Release/features/ca.uvic.chisel.widgets.feature_0.4.0.201108081611.jar
  182. BIN  Release/plugins/ca.uvic.chisel.diver.docs_0.4.0.201108081611.jar
  183. BIN  Release/plugins/ca.uvic.chisel.diver.feature_0.4.0.201108081611.jar
  184. BIN  Release/plugins/ca.uvic.chisel.diver.sequencediagram.sc_0.4.0.201108081611.jar
  185. BIN  Release/plugins/ca.uvic.chisel.hsqldb.server_0.2.3.jar
  186. BIN  Release/plugins/ca.uvic.chisel.javasketch.data_0.4.0.201108081611.jar
  187. BIN  Release/plugins/ca.uvic.chisel.javasketch.junit_0.4.0.201108081611.jar
  188. BIN  Release/plugins/ca.uvic.chisel.javasketch_0.4.0.201108081611.jar
  189. BIN  Release/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.4.0.201108081611.jar
  190. BIN  Release/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.4.0.201108081611.jar
  191. BIN  Release/plugins/ca.uvic.chisel.tracing.jvmti_0.4.0.201108081611.jar
  192. BIN  Release/plugins/ca.uvic.chisel.widgets_0.4.0.jar
  193. BIN  Release/plugins/org.eclipse.zest.custom.sequence_0.9.3.jar
  194. +85 −0 Release/site.xml
  195. +19 −0 ca.uvic.chisel.diver.docs/.externalToolBuilders/New_Builder.launch
  196. +32 −0 ca.uvic.chisel.diver.docs/.project
  197. +5 −0 ca.uvic.chisel.diver.docs/META-INF/MANIFEST.MF
  198. +10 −0 ca.uvic.chisel.diver.docs/build.properties
  199. +34 −0 ca.uvic.chisel.diver.docs/builder.xml
  200. +54 −0 ca.uvic.chisel.diver.docs/docs/Diver-toc.xml
  201. +691 −0 ca.uvic.chisel.diver.docs/docs/Diver.html
  202. +478 −0 ca.uvic.chisel.diver.docs/docs/Diver.textile
  203. +39 −0 ca.uvic.chisel.diver.docs/docs/acknowledgements.textile
  204. +184 −0 ca.uvic.chisel.diver.docs/docs/diving.textile
  205. +351 −0 ca.uvic.chisel.diver.docs/docs/documentation.textile
  206. +92 −0 ca.uvic.chisel.diver.docs/docs/exploring.textile
  207. +6 −0 ca.uvic.chisel.diver.docs/docs/index.txt
  208. +11 −0 ca.uvic.chisel.diver.docs/docs/main.textile
  209. +89 −0 ca.uvic.chisel.diver.docs/docs/running.textile
  210. +62 −0 ca.uvic.chisel.diver.docs/docs/sharing.textile
  211. BIN  ca.uvic.chisel.diver.docs/images/code/analyzing.png
  212. BIN  ca.uvic.chisel.diver.docs/images/code/closedeye.png
  213. BIN  ca.uvic.chisel.diver.docs/images/code/filter_java.png
  214. BIN  ca.uvic.chisel.diver.docs/images/code/filtercompare.png
  215. BIN  ca.uvic.chisel.diver.docs/images/code/filterthread.png
  216. BIN  ca.uvic.chisel.diver.docs/images/code/layer0.png
  217. BIN  ca.uvic.chisel.diver.docs/images/code/layer1.png
  218. BIN  ca.uvic.chisel.diver.docs/images/code/openeye.png
  219. BIN  ca.uvic.chisel.diver.docs/images/code/reanalyze-progress.png
  220. BIN  ca.uvic.chisel.diver.docs/images/code/reanalyze.png
  221. BIN  ca.uvic.chisel.diver.docs/images/code/reveal.png
  222. BIN  ca.uvic.chisel.diver.docs/images/code/sourcecode.png
  223. BIN  ca.uvic.chisel.diver.docs/images/code/timeline0.png
  224. BIN  ca.uvic.chisel.diver.docs/images/code/timeline1.png
  225. BIN  ca.uvic.chisel.diver.docs/images/code/trace-active.gif
  226. BIN  ca.uvic.chisel.diver.docs/images/code/trace-inactive.gif
  227. BIN  ca.uvic.chisel.diver.docs/images/diving/program traces.png
  228. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-activation-expand.png
  229. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-block-collapse.png
  230. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-breadcrumb.png
  231. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-filter1.png
  232. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-filter2.png
  233. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-focus1.png
  234. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-focus2.png
  235. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-loop-iteration.png
  236. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-menu.png
  237. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-outline.png
  238. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-package-collapse.png
  239. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-package.png
  240. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-sash1.png
  241. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-sash2.png
  242. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-time-filter1.png
  243. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-time-filter2.png
  244. BIN  ca.uvic.chisel.diver.docs/images/diving/sequence-timeline.png
  245. BIN  ca.uvic.chisel.diver.docs/images/diving/sequencediagram.pdn
  246. BIN  ca.uvic.chisel.diver.docs/images/diving/sequencediagram.png
  247. BIN  ca.uvic.chisel.diver.docs/images/launching/Corel Auto-Preserve/switchperspective.png
  248. BIN  ca.uvic.chisel.diver.docs/images/launching/clock_icon.png
  249. BIN  ca.uvic.chisel.diver.docs/images/launching/eclipselaunch.png
  250. BIN  ca.uvic.chisel.diver.docs/images/launching/launch1.png
  251. BIN  ca.uvic.chisel.diver.docs/images/launching/launch2.png
  252. BIN  ca.uvic.chisel.diver.docs/images/launching/launch3.png
  253. BIN  ca.uvic.chisel.diver.docs/images/launching/pause_icon.png
  254. BIN  ca.uvic.chisel.diver.docs/images/launching/perspective.pdn
  255. BIN  ca.uvic.chisel.diver.docs/images/launching/perspective.png
  256. BIN  ca.uvic.chisel.diver.docs/images/launching/play_icon.png
  257. BIN  ca.uvic.chisel.diver.docs/images/launching/progress.png
  258. BIN  ca.uvic.chisel.diver.docs/images/launching/switchperspective.png
  259. BIN  ca.uvic.chisel.diver.docs/images/launching/timer.png
  260. BIN  ca.uvic.chisel.diver.docs/images/launching/traceconfig.pdn
  261. BIN  ca.uvic.chisel.diver.docs/images/launching/traceconfig.png
  262. BIN  ca.uvic.chisel.diver.docs/images/logo-medium.png
  263. BIN  ca.uvic.chisel.diver.docs/images/logo.png
  264. +501 −0 ca.uvic.chisel.diver.docs/images/logo.svg
  265. BIN  ca.uvic.chisel.diver.docs/images/sharing/export1.png
  266. BIN  ca.uvic.chisel.diver.docs/images/sharing/export2.png
  267. BIN  ca.uvic.chisel.diver.docs/images/sharing/import1.png
  268. BIN  ca.uvic.chisel.diver.docs/images/sharing/import2.png
  269. BIN  ca.uvic.chisel.diver.docs/images/sharing/import3.png
  270. BIN  ca.uvic.chisel.diver.docs/images/sharing/screenshot1.png
  271. BIN  ca.uvic.chisel.diver.docs/images/sharing/screenshot2.png
  272. BIN  ca.uvic.chisel.diver.docs/images/sharing/screenshoticon.png
  273. BIN  ca.uvic.chisel.diver.docs/lib/org.eclipse.mylyn.wikitext.confluence.core_1.1.2.I20090810-2100-e3x.jar
  274. BIN  ca.uvic.chisel.diver.docs/lib/org.eclipse.mylyn.wikitext.core_1.1.2.I20090810-2100-e3x.jar
  275. BIN  ca.uvic.chisel.diver.docs/lib/org.eclipse.mylyn.wikitext.mediawiki.core_1.1.2.I20090810-2100-e3x.jar
  276. BIN  ca.uvic.chisel.diver.docs/lib/org.eclipse.mylyn.wikitext.textile.core_1.1.2.I20090810-2100-e3x.jar
  277. BIN  ca.uvic.chisel.diver.docs/lib/org.eclipse.mylyn.wikitext.tracwiki.core_1.1.2.I20090810-2100-e3x.jar
  278. BIN  ca.uvic.chisel.diver.docs/lib/org.eclipse.mylyn.wikitext.twiki.core_1.1.2.I20090810-2100-e3x.jar
  279. +13 −0 ca.uvic.chisel.diver.docs/plugin.xml
  280. +116 −0 ca.uvic.chisel.diver.docs/styles/book.css
  281. +7 −0 ca.uvic.chisel.diver.feature-plugin/.classpath
  282. +28 −0 ca.uvic.chisel.diver.feature-plugin/.project
  283. +8 −0 ca.uvic.chisel.diver.feature-plugin/.settings/org.eclipse.jdt.core.prefs
  284. +16 −0 ca.uvic.chisel.diver.feature-plugin/META-INF/MANIFEST.MF
  285. +28 −0 ca.uvic.chisel.diver.feature-plugin/about.html
  286. +18 −0 ca.uvic.chisel.diver.feature-plugin/about.ini
  287. +14 −0 ca.uvic.chisel.diver.feature-plugin/build.properties
  288. +41 −0 ca.uvic.chisel.diver.feature-plugin/diver.product
  289. BIN  ca.uvic.chisel.diver.feature-plugin/images/banner-small.png
  290. BIN  ca.uvic.chisel.diver.feature-plugin/images/banner.png
  291. BIN  ca.uvic.chisel.diver.feature-plugin/images/logo-large(no text).png
  292. BIN  ca.uvic.chisel.diver.feature-plugin/images/logo-large.png
  293. BIN  ca.uvic.chisel.diver.feature-plugin/images/logo-medium.png
  294. BIN  ca.uvic.chisel.diver.feature-plugin/images/logo.png
  295. BIN  ca.uvic.chisel.diver.feature-plugin/images/logo.pspimage
  296. BIN  ca.uvic.chisel.diver.feature-plugin/images/logo16.png
  297. BIN  ca.uvic.chisel.diver.feature-plugin/images/logo32.png
  298. BIN  ca.uvic.chisel.diver.feature-plugin/images/logo64.png
  299. BIN  ca.uvic.chisel.diver.feature-plugin/intro/css/images/Corel Auto-Preserve/diver.jpg
  300. BIN  ca.uvic.chisel.diver.feature-plugin/intro/css/images/Corel Auto-Preserve/logo32.png
Sorry, we could not display the entire diff because too many files (1,112) changed.
11 Development/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Development</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
BIN  Development/artifacts.jar
Binary file not shown
BIN  Development/content.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.1.0.201002011648.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.3.0.201011041430.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.3.0.201011221731.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.3.1.201103091534.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.3.1.201103111429.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.4.0.201107281756.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.4.0.201108051630.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.4.0.201108051637.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.4.0.201108051644.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature.container_0.4.0.201110111054.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature_0.1.0.201002011648.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature_0.3.0.201011041430.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature_0.3.0.201011221731.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature_0.3.1.201103091534.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature_0.3.1.201103111429.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature_0.4.0.201107281756.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature_0.4.0.201108051630.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature_0.4.0.201108051637.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature_0.4.0.201108051644.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.feature_0.4.0.201110111054.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.junit.feature_0.4.0.201107281756.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.junit.feature_0.4.0.201108051630.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.junit.feature_0.4.0.201108051637.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.junit.feature_0.4.0.201108051644.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.logging.feature_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.logging.feature_0.3.0.201011041430.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.logging.feature_0.3.0.201011221731.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.logging.feature_0.3.0.201110111054.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.static.feature_0.4.0.201108051630.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.static.feature_0.4.0.201108051637.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.static.feature_0.4.0.201108051644.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.diver.static.feature_0.4.1.201110111054.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.1.0.201002011648.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201011041430.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201011221731.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201103091534.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201103111429.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201107281756.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201108051630.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201108051637.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.2.2.201108051644.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.hsqldb.feature_0.4.0.201110111054.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.widgets.feature_0.1.0.201002011648.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.widgets.feature_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.0.201011041430.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.0.201011221731.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.1.201103091534.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.1.201103111429.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.1.201107281756.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.1.201108051630.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.1.201108051637.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.widgets.feature_0.3.1.201108051644.jar
Binary file not shown
BIN  Development/features/ca.uvic.chisel.widgets.feature_0.4.0.201110111054.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.1.0.201002011648.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.0.201011041430.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.0.201011221731.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.1.201103091534.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.1.201103111429.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.1.201107281756.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.1.20110805150.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.1.201108051630.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.1.201108051637.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.docs_0.3.1.201108051644.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.1.0.201002011648.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.0.201011041430.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.0.201011221731.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.1.201103091534.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.1.201103111429.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.1.201107281756.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.1.20110805150.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.1.201108051630.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.1.201108051637.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.feature_0.3.1.201108051644.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.logging_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.sequencediagram.sc_0.4.0.201108051630.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.sequencediagram.sc_0.4.0.201108051637.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.diver.sequencediagram.sc_0.4.0.201108051644.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.1.0.201002011648.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201011041430.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201011221731.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201103091534.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201103111429.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201107281756.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201108051630.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201108051637.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.hsqldb.server_0.2.2.201108051644.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.1.0.201002011648.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.0.201011041430.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.0.201011221731.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.1.201103091534.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.1.201103111429.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.1.201107281756.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.1.20110805150.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.1.201108051630.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.1.201108051637.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.data_0.3.1.201108051644.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.junit_0.4.0.201107281756.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.junit_0.4.0.201108051630.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.junit_0.4.0.201108051637.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch.junit_0.4.0.201108051644.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch_0.1.0.201002011648.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch_0.3.0.201011041430.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch_0.3.0.201011221731.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch_0.3.1.201103091534.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch_0.3.1.201103111429.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch_0.4.0.201107281756.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch_0.4.0.201108051630.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch_0.4.0.201108051637.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.javasketch_0.4.0.201108051644.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.logging.eclipse_0.0.1.201005181350.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.1.0.201002011648.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.3.0.201011041430.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.3.0.201011221731.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.3.1.201103091534.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.3.1.201103111429.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.4.0.201107281756.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.4.0.201108051630.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.4.0.201108051637.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.4.0.201108051644.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.1.0.201002011648.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.3.0.201011041430.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.3.0.201011221731.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.3.1.201103091534.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.3.1.201103111429.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.4.0.201107281756.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.4.0.201108051630.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.4.0.201108051637.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.4.0.201108051644.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.1.0.201002011648.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.3.0.201011041430.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.3.0.201011221731.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.3.1.201103091534.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.3.1.201103111429.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.4.0.201107281756.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.4.0.201108051630.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.4.0.201108051637.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.tracing.jvmti_0.4.0.201108051644.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.widgets_0.1.0.201002011648.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.widgets_0.2.0.201005181350.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.0.201011041430.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.0.201011221731.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.1.201103091534.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.1.201103111429.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.1.201107281756.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.1.201108051630.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.1.201108051637.jar
Binary file not shown
BIN  Development/plugins/ca.uvic.chisel.widgets_0.3.1.201108051644.jar
Binary file not shown
BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.8.2.201002011648.jar
Binary file not shown
BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.0.201005181350.jar
Binary file not shown
BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201011041430.jar
Binary file not shown
BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201011221731.jar
Binary file not shown
BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201103091534.jar
Binary file not shown
BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201103111429.jar
Binary file not shown
BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201107281756.jar
Binary file not shown
BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201108051630.jar
Binary file not shown
BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201108051637.jar
Binary file not shown
BIN  Development/plugins/org.eclipse.zest.custom.sequence_0.9.2.201108051644.jar
Binary file not shown
11 Release/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Release</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
BIN  Release/artifacts.jar
Binary file not shown
37 Release/category.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+ <feature url="features/ca.uvic.chisel.diver.junit.feature_0.4.0.qualifier.jar" id="ca.uvic.chisel.diver.junit.feature" version="0.4.0.qualifier">
+ <category name="ca.uvic.chisel.diver.beta"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.feature.container_0.4.0.qualifier.jar" id="ca.uvic.chisel.diver.feature.container" version="0.4.0.qualifier">
+ <category name="ca.uvic.chisel.diver.all"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.feature_0.4.0.qualifier.jar" id="ca.uvic.chisel.diver.feature" version="0.4.0.qualifier" os="linux,win32" arch="x86,x86_64">
+ <category name="ca.uvic.chisel.diver.core.category"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.static.feature_0.4.0.qualifier.jar" id="ca.uvic.chisel.diver.static.feature" version="0.4.0.qualifier">
+ <category name="ca.uvic.chisel.diver.beta"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.hsqldb.feature_0.4.0.qualifier.jar" id="ca.uvic.chisel.hsqldb.feature" version="0.4.0.qualifier">
+ <category name="ca.uvic.chisel.diver.enablement"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.widgets.feature_0.4.0.qualifier.jar" id="ca.uvic.chisel.widgets.feature" version="0.4.0.qualifier">
+ <category name="ca.uvic.chisel.diver.enablement"/>
+ </feature>
+ <category-def name="ca.uvic.chisel.diver.core.category" label="Diver Core">
+ <description>
+ The core diver feature, including the UI and the tracing functionality.
+ </description>
+ </category-def>
+ <category-def name="ca.uvic.chisel.diver.enablement" label="Diver Enabling features">
+ <description>
+ The requirements for diver including the databases and the custom widgets used by Diver.
+ </description>
+ </category-def>
+ <category-def name="ca.uvic.chisel.diver.all" label="Diver - All Features">
+ <description>
+ Containing feature for all of diver. Just select this one to get everything.
+ </description>
+ </category-def>
+ <category-def name="ca.uvic.chisel.diver.beta" label="Diver Extras (Beta)"/>
+</site>
BIN  Release/content.jar
Binary file not shown
BIN  Release/features/ca.uvic.chisel.diver.feature.container_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/features/ca.uvic.chisel.diver.feature_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/features/ca.uvic.chisel.diver.junit.feature_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/features/ca.uvic.chisel.diver.static.feature_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/features/ca.uvic.chisel.hsqldb.feature_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/features/ca.uvic.chisel.widgets.feature_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/plugins/ca.uvic.chisel.diver.docs_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/plugins/ca.uvic.chisel.diver.feature_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/plugins/ca.uvic.chisel.diver.sequencediagram.sc_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/plugins/ca.uvic.chisel.hsqldb.server_0.2.3.jar
Binary file not shown
BIN  Release/plugins/ca.uvic.chisel.javasketch.data_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/plugins/ca.uvic.chisel.javasketch.junit_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/plugins/ca.uvic.chisel.javasketch_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/plugins/ca.uvic.chisel.tracing.jvmti.linux_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/plugins/ca.uvic.chisel.tracing.jvmti.win32_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/plugins/ca.uvic.chisel.tracing.jvmti_0.4.0.201108081611.jar
Binary file not shown
BIN  Release/plugins/ca.uvic.chisel.widgets_0.4.0.jar
Binary file not shown
BIN  Release/plugins/org.eclipse.zest.custom.sequence_0.9.3.jar
Binary file not shown
85 Release/site.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<site>
+ <feature url="features/ca.uvic.chisel.diver.feature_0.2.0.201005181350.jar" id="ca.uvic.chisel.diver.feature" version="0.2.0.201005181350" os="linux,win32" arch="x86,x86_64">
+ <category name="ca.uvic.chisel.diver.core.category"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.feature.container_0.2.0.201005181350.jar" id="ca.uvic.chisel.diver.feature.container" version="0.2.0.201005181350">
+ <category name="ca.uvic.chisel.diver.all"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.logging.feature_0.2.0.201005181350.jar" id="ca.uvic.chisel.diver.logging.feature" version="0.2.0.201005181350">
+ <category name="ca.uvic.chisel.diver.enablement"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.hsqldb.feature_0.2.0.201005181350.jar" id="ca.uvic.chisel.hsqldb.feature" version="0.2.0.201005181350">
+ <category name="ca.uvic.chisel.diver.enablement"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.widgets.feature_0.2.0.201005181350.jar" id="ca.uvic.chisel.widgets.feature" version="0.2.0.201005181350">
+ <category name="ca.uvic.chisel.diver.enablement"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.feature_0.2.1.qualifier.jar" id="ca.uvic.chisel.diver.feature" version="0.2.1.qualifier" os="linux,win32" arch="x86,x86_64">
+ <category name="ca.uvic.chisel.diver.core.category"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.hsqldb.feature_0.2.1.qualifier.jar" id="ca.uvic.chisel.hsqldb.feature" version="0.2.1.qualifier">
+ <category name="ca.uvic.chisel.diver.enablement"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.logging.feature_0.2.1.qualifier.jar" id="ca.uvic.chisel.diver.logging.feature" version="0.2.1.qualifier">
+ <category name="ca.uvic.chisel.diver.enablement"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.widgets.feature_0.2.1.qualifier.jar" id="ca.uvic.chisel.widgets.feature" version="0.2.1.qualifier">
+ <category name="ca.uvic.chisel.diver.enablement"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.feature.container_0.2.1.qualifier.jar" id="ca.uvic.chisel.diver.feature.container" version="0.2.1.qualifier">
+ <category name="ca.uvic.chisel.diver.all"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.feature_0.3.0.qualifier.jar" id="ca.uvic.chisel.diver.feature" version="0.3.0.qualifier" os="linux,win32" arch="x86,x86_64">
+ <category name="ca.uvic.chisel.diver.core.category"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.hsqldb.feature_0.2.2.qualifier.jar" id="ca.uvic.chisel.hsqldb.feature" version="0.2.2.qualifier">
+ <category name="ca.uvic.chisel.diver.enablement"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.logging.feature_0.3.0.qualifier.jar" id="ca.uvic.chisel.diver.logging.feature" version="0.3.0.qualifier">
+ <category name="ca.uvic.chisel.diver.enablement"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.widgets.feature_0.3.0.qualifier.jar" id="ca.uvic.chisel.widgets.feature" version="0.3.0.qualifier">
+ <category name="ca.uvic.chisel.diver.enablement"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.feature.container_0.3.0.qualifier.jar" id="ca.uvic.chisel.diver.feature.container" version="0.3.0.qualifier">
+ <category name="ca.uvic.chisel.diver.all"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.feature_0.3.1.qualifier.jar" id="ca.uvic.chisel.diver.feature" version="0.3.1.qualifier" os="linux,win32" arch="x86,x86_64">
+ <category name="ca.uvic.chisel.diver.core.category"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.feature.container_0.3.1.qualifier.jar" id="ca.uvic.chisel.diver.feature.container" version="0.3.1.qualifier">
+ <category name="ca.uvic.chisel.diver.all"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.widgets.feature_0.3.1.qualifier.jar" id="ca.uvic.chisel.widgets.feature" version="0.3.1.qualifier">
+ <category name="ca.uvic.chisel.diver.enablement"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.junit.feature_0.4.0.qualifier.jar" id="ca.uvic.chisel.diver.junit.feature" version="0.4.0.qualifier">
+ <category name="ca.uvic.chisel.diver.beta"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.feature.container_0.4.0.qualifier.jar" id="ca.uvic.chisel.diver.feature.container" version="0.4.0.qualifier">
+ <category name="ca.uvic.chisel.diver.all"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.feature_0.4.0.qualifier.jar" id="ca.uvic.chisel.diver.feature" version="0.4.0.qualifier" os="linux,win32" arch="x86,x86_64">
+ <category name="ca.uvic.chisel.diver.core.category"/>
+ </feature>
+ <feature url="features/ca.uvic.chisel.diver.static.feature_0.4.0.qualifier.jar" id="ca.uvic.chisel.diver.static.feature" version="0.4.0.qualifier">
+ <category name="ca.uvic.chisel.diver.beta"/>
+ </feature>
+ <category-def name="ca.uvic.chisel.diver.core.category" label="Diver Core">
+ <description>
+ The core diver feature, including the UI and the tracing functionality.
+ </description>
+ </category-def>
+ <category-def name="ca.uvic.chisel.diver.enablement" label="Diver Enabling features">
+ <description>
+ The requirements for diver including the databases and the custom widgets used by Diver.
+ </description>
+ </category-def>
+ <category-def name="ca.uvic.chisel.diver.all" label="Diver - All Features">
+ <description>
+ Containing feature for all of diver. Just select this one to get everything.
+ </description>
+ </category-def>
+ <category-def name="ca.uvic.chisel.diver.beta" label="Diver Extras (Beta)"/>
+</site>
19 ca.uvic.chisel.diver.docs/.externalToolBuilders/New_Builder.launch
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/ca.uvic.chisel.diver.docs/build.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="ca.uvic.chisel.diver.docs"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="false"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/ca.uvic.chisel.diver.docs/build.xml}"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+</launchConfiguration>
32 ca.uvic.chisel.diver.docs/.project
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>ca.uvic.chisel.diver.docs</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>LaunchConfigHandle</key>
+ <value>&lt;project&gt;/.externalToolBuilders/New_Builder.launch</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
5 ca.uvic.chisel.diver.docs/META-INF/MANIFEST.MF
@@ -0,0 +1,5 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Div/er Docs
+Bundle-SymbolicName: ca.uvic.chisel.diver.docs; singleton:=true
+Bundle-Version: 0.4.0.qualifier
10 ca.uvic.chisel.diver.docs/build.properties
@@ -0,0 +1,10 @@
+bin.includes = plugin.xml,\
+ META-INF/,\
+ images/,\
+ styles/,\
+ docs/
+src.includes = images/,\
+ styles/,\
+ docs/,\
+ META-INF/,\
+ plugin.xml
34 ca.uvic.chisel.diver.docs/builder.xml
@@ -0,0 +1,34 @@
+<!-- important build file -->
+
+<project name="ca.uvic.chisel.diver.docs" default="generate-help" basedir=".">
+ <property name="wikidir" value="docs"/>
+ <property name="wikitext.standalone" value="lib"/><!-- path to wikitext standalone package -->
+ <path id="wikitext.classpath">
+ <fileset dir="${wikitext.standalone}">
+ <include name="*.jar"/>
+ </fileset>
+ </path>
+ <taskdef classpathref="wikitext.classpath" resource="org/eclipse/mylyn/wikitext/core/util/anttask/tasks.properties" />
+ <target name="assemble">
+ <loadfile srcfile="${wikidir}/index.txt" property="inputfiles">
+ <filterchain>
+ <striplinebreaks/>
+ </filterchain>
+ </loadfile>
+ <concat destfile="${wikidir}/Diver.textile" append="false" fixlastline="yes">
+ <filelist dir="${wikidir}" files="${inputfiles}"/>
+ </concat>
+ </target>
+ <target name="generate-help" depends="assemble" description="Generate Eclipse help from textile source">
+ <wikitext-to-eclipse-help markupLanguage="Textile"
+ multipleOutputFiles="false"
+ navigationImages="true"
+ helpPrefix="docs"
+ formatOutput="true">
+ <fileset dir="${wikidir}">
+ <include name="Diver.textile"/>
+ </fileset>
+ <stylesheet url="../styles/book.css"/>
+ </wikitext-to-eclipse-help>
+ </target>
+</project>
54 ca.uvic.chisel.diver.docs/docs/Diver-toc.xml
@@ -0,0 +1,54 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<toc topic="docs/Diver.html" label="Diver">
+ <topic href="docs/Diver.html" label="Welcome To Diver"></topic>
+ <topic href="docs/Diver.html#TableofContents" label="Table of Contents"></topic>
+ <topic href="docs/Diver.html#LaunchingATrace" label="Launching A Trace">
+ <topic href="docs/Diver.html#CreatingANewLaunch" label="Creating A New Launch"></topic>
+ <topic href="docs/Diver.html#SettingUptheTrace" label="Setting Up the Trace">
+ <topic href="docs/Diver.html#ANoteAboutIndexing" label="A Note About Indexing"></topic>
+ </topic>
+ <topic href="docs/Diver.html#TheDiverPerspective" label="The Diver Perspective"></topic>
+ <topic href="docs/Diver.html#ControllingTheTrace" label="Controlling The Trace"></topic>
+ <topic href="docs/Diver.html#LaunchingAnEclipseApplication" label="Launching An Eclipse Application"></topic>
+ <topic href="docs/Diver.html#DebuggingWithDiver" label="Debugging With Diver"></topic>
+ </topic>
+ <topic href="docs/Diver.html#DivingIntoYourTrace" label="Diving Into Your Trace">
+ <topic href="docs/Diver.html#IntroducingtheProgramTracesView" label="Introducing the Program Traces View"></topic>
+ <topic href="docs/Diver.html#SequenceDiagramsAnOverview" label="Sequence Diagrams: An Overview">
+ <topic href="docs/Diver.html#Classifiers" label="Classifiers"></topic>
+ <topic href="docs/Diver.html#LifeLines" label="Life Lines"></topic>
+ <topic href="docs/Diver.html#ActivationBoxes" label="Activation Boxes"></topic>
+ <topic href="docs/Diver.html#Messages" label="Messages"></topic>
+ <topic href="docs/Diver.html#Groups" label="Groups ">
+ <topic href="docs/Diver.html#ControllingGroups" label="Controlling Groups"></topic>
+ </topic>
+ </topic>
+ <topic href="docs/Diver.html#AdvancedSequenceDiagramInteractions" label="Advanced Sequence Diagram Interactions">
+ <topic href="docs/Diver.html#SavingtheViewState" label="Saving the View State"></topic>
+ <topic href="docs/Diver.html#SeeingthelittleBigPicture" label="Seeing the (little) Big Picture"></topic>
+ <topic href="docs/Diver.html#RefocussingtheDiagram" label="Re-focussing the Diagram"></topic>
+ <topic href="docs/Diver.html#UsingtheTimeline" label="Using the Timeline"></topic>
+ <topic href="docs/Diver.html#SeeingWhereMessagesComeandGo" label="Seeing Where Messages Come and Go"></topic>
+ <topic href="docs/Diver.html#GettingBacktotheSource" label="Getting Back to the Source"></topic>
+ </topic>
+ </topic>
+ <topic href="docs/Diver.html#ExploringYourCode" label="Exploring Your Code">
+ <topic href="docs/Diver.html#ActivatingATrace" label="Activating A Trace"></topic>
+ <topic href="docs/Diver.html#FilteringThePackageExplorer" label="Filtering The Package Explorer">
+ <topic href="docs/Diver.html#GainingaDifferentPerspective" label="Gaining a Different Perspective"></topic>
+ </topic>
+ <topic href="docs/Diver.html#ComparingTraces" label="Comparing Traces"></topic>
+ <topic href="docs/Diver.html#FindingTheContext" label="Finding The Context">
+ <topic href="docs/Diver.html#AMethodInSequence" label="A Method In Sequence"></topic>
+ <topic href="docs/Diver.html#FindingAllTheCalls" label="Finding All The Calls"></topic>
+ <topic href="docs/Diver.html#RemovingDetails" label="Removing Details"></topic>
+ </topic>
+ <topic href="docs/Diver.html#ReadingYourCode" label="Reading Your Code"></topic>
+ </topic>
+ <topic href="docs/Diver.html#SharingYourTraces" label="Sharing Your Traces">
+ <topic href="docs/Diver.html#ExportingScreenshots" label="Exporting Screenshots"></topic>
+ <topic href="docs/Diver.html#ExportingTraces" label="Exporting Traces"></topic>
+ <topic href="docs/Diver.html#ImportingTraces" label="Importing Traces"></topic>
+ </topic>
+ <topic href="docs/Diver.html#Acknowledgements" label="Acknowledgements"></topic>
+</toc>
691 ca.uvic.chisel.diver.docs/docs/Diver.html
@@ -0,0 +1,691 @@
+<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+ <title>Diver</title>
+ <link type="text/css" rel="stylesheet" href="../styles/book.css"/>
+ </head>
+ <body>
+ <p>
+ <img border="0" src="../images/logo-medium.png"/>
+ </p>
+ <h1 id="WelcomeToDiver">Welcome To Diver</h1>
+ <p>Diver is a series of tools designed to help you to understand your programs better. It brings dynamic analysis and reverse engineering right into your Eclipse workbench. And it makes them easy. Follow this documentation to get started with Diver.</p>
+ <h1 id="TableofContents">Table of Contents</h1>
+ <ol style="list-style: none;">
+ <li>
+ <a href="Diver.html#WelcomeToDiver">Welcome To Diver</a>
+ </li>
+ <li>
+ <a href="Diver.html#TableofContents">Table of Contents</a>
+ </li>
+ <li>
+ <a href="Diver.html#LaunchingATrace">Launching A Trace</a>
+ <ol style="list-style: none;">
+ <li>
+ <a href="Diver.html#CreatingANewLaunch">Creating A New Launch</a>
+ </li>
+ <li>
+ <a href="Diver.html#SettingUptheTrace">Setting Up the Trace</a>
+ <ol style="list-style: none;">
+ <li>
+ <a href="Diver.html#ANoteAboutIndexing">A Note About Indexing</a>
+ </li>
+ </ol>
+ </li>
+ <li>
+ <a href="Diver.html#TheDiverPerspective">The Diver Perspective</a>
+ </li>
+ <li>
+ <a href="Diver.html#ControllingTheTrace">Controlling The Trace</a>
+ </li>
+ <li>
+ <a href="Diver.html#LaunchingAnEclipseApplication">Launching An Eclipse Application</a>
+ </li>
+ <li>
+ <a href="Diver.html#DebuggingWithDiver">Debugging With Diver</a>
+ </li>
+ </ol>
+ </li>
+ <li>
+ <a href="Diver.html#DivingIntoYourTrace">Diving Into Your Trace</a>
+ <ol style="list-style: none;">
+ <li>
+ <a href="Diver.html#IntroducingtheProgramTracesView">Introducing the Program Traces View</a>
+ </li>
+ <li>
+ <a href="Diver.html#SequenceDiagramsAnOverview">Sequence Diagrams: An Overview</a>
+ <ol style="list-style: none;">
+ <li>
+ <a href="Diver.html#Classifiers">Classifiers</a>
+ </li>
+ <li>
+ <a href="Diver.html#LifeLines">Life Lines</a>
+ </li>
+ <li>
+ <a href="Diver.html#ActivationBoxes">Activation Boxes</a>
+ </li>
+ <li>
+ <a href="Diver.html#Messages">Messages</a>
+ </li>
+ <li>
+ <a href="Diver.html#Groups">Groups </a>
+ <ol style="list-style: none;">
+ <li>
+ <a href="Diver.html#ControllingGroups">Controlling Groups</a>
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ <a href="Diver.html#AdvancedSequenceDiagramInteractions">Advanced Sequence Diagram Interactions</a>
+ <ol style="list-style: none;">
+ <li>
+ <a href="Diver.html#SavingtheViewState">Saving the View State</a>
+ </li>
+ <li>
+ <a href="Diver.html#SeeingthelittleBigPicture">Seeing the (little) Big Picture</a>
+ </li>
+ <li>
+ <a href="Diver.html#RefocussingtheDiagram">Re-focussing the Diagram</a>
+ </li>
+ <li>
+ <a href="Diver.html#UsingtheTimeline">Using the Timeline</a>
+ </li>
+ <li>
+ <a href="Diver.html#SeeingWhereMessagesComeandGo">Seeing Where Messages Come and Go</a>
+ </li>
+ <li>
+ <a href="Diver.html#GettingBacktotheSource">Getting Back to the Source</a>
+ </li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li>
+ <a href="Diver.html#ExploringYourCode">Exploring Your Code</a>
+ <ol style="list-style: none;">
+ <li>
+ <a href="Diver.html#ActivatingATrace">Activating A Trace</a>
+ </li>
+ <li>
+ <a href="Diver.html#FilteringThePackageExplorer">Filtering The Package Explorer</a>
+ <ol style="list-style: none;">
+ <li>
+ <a href="Diver.html#GainingaDifferentPerspective">Gaining a Different Perspective</a>
+ </li>
+ </ol>
+ </li>
+ <li>
+ <a href="Diver.html#ComparingTraces">Comparing Traces</a>
+ </li>
+ <li>
+ <a href="Diver.html#FindingTheContext">Finding The Context</a>
+ <ol style="list-style: none;">
+ <li>
+ <a href="Diver.html#AMethodInSequence">A Method In Sequence</a>
+ </li>
+ <li>
+ <a href="Diver.html#FindingAllTheCalls">Finding All The Calls</a>
+ </li>
+ <li>
+ <a href="Diver.html#RemovingDetails">Removing Details</a>
+ </li>
+ </ol>
+ </li>
+ <li>
+ <a href="Diver.html#ReadingYourCode">Reading Your Code</a>
+ </li>
+ </ol>
+ </li>
+ <li>
+ <a href="Diver.html#SharingYourTraces">Sharing Your Traces</a>
+ <ol style="list-style: none;">
+ <li>
+ <a href="Diver.html#ExportingScreenshots">Exporting Screenshots</a>
+ </li>
+ <li>
+ <a href="Diver.html#ExportingTraces">Exporting Traces</a>
+ </li>
+ <li>
+ <a href="Diver.html#ImportingTraces">Importing Traces</a>
+ </li>
+ </ol>
+ </li>
+ <li>
+ <a href="Diver.html#Acknowledgements">Acknowledgements</a>
+ </li>
+ </ol>
+ <h1 id="LaunchingATrace">Launching A Trace</h1>
+ <p>A lot of attention has been put into making sure that launching a trace is as easy as possible. Launching or debugging as a trace is as easy as launching a typical application. This document will step you through the basic process.</p>
+ <h2 id="CreatingANewLaunch">Creating A New Launch</h2>
+ <p>The trace launches won&#8217;t be available in the favourites menu of your perspective by default, so you will have to configure them manually. It is not a difficult process, however. Just follow these simple steps.</p>
+ <p>
+ <strong>1. Open The Launch Configuration Dialog</strong>
+ </p>
+ <p>The launch configuration will not be in your favourite launches by default. So, in the Java Perspective, or in the Plug-in Development Perspective, use the drop-down menu from either the
+ <i>Run...</i> or
+ <i>Debug</i> shortcut. Then, select
+ <i>Configurations...</i>.
+ </p>
+ <p>
+ <img border="0" src="../images/launching/launch1.png"/>
+ </p>
+ <p>
+ <strong>2. Create A New Java Application Trace</strong>
+ </p>
+ <p>Locate the
+ <i>Java Application Trace</i> launch configuration type on the tree view to the left of the Configurations Dialog, and select the
+ <i>New Configuration</i> button at the top of the dialog.
+ </p>
+ <p>
+ <img border="0" src="../images/launching/launch2.png"/>
+ </p>
+ <p>
+ <strong>3. Set Up The Java Application</strong>
+ </p>
+ <p>Finally, you must set the application to be run. This involves selecting the project for the launch, and the associated
+ <code>Main</code> class. In this example, we will be running a simple Tetris game. The Project has been set to
+ <code>Tetris</code> and the main class has been set to
+ <code>org.oversoul.tetris.ui.TetrisFrame</code>.
+ </p>
+ <p>
+ <img border="0" src="../images/launching/launch3.png"/>
+ </p>
+ <p>
+ <strong>4. You May Now Trace Your Program</strong>
+ </p>
+ <p>Once you have followed these three steps, you may trace your Java application. Default trace-specific settings have been made that should be suitable for most users. If you would like to tweek your trace, however, you may. Read the next section for more information.</p>
+ <h2 id="SettingUptheTrace">Setting Up the Trace</h2>
+ <p>The Java trace launches are designed to help you find within your program the information that is most interesting to you. Iit is able to apply a filtering mechanism so that only the most important details are indexed for your access. These filters allow you to adjust your &#8220;perspective&#8221; of the running application, and they are set up with default values that should be suitable for most traces. But, for those who need finer tuning, they are configurable. In fact, they can be configured at any time &#8212; even
+ <i>after</i> the trace has completed. So, if you don&#8217;t set up the filters right at this point, don&#8217;t worry; you can change them later. The different portions of the Java Trace tab are described below.
+ </p>
+ <p>
+ <img border="0" src="../images/launching/traceconfig.png"/>
+ </p>
+ <ol>
+ <li>
+ <strong>Pause On Start</strong> Most Java applications begin by running a lot of boiler-plate code that is probably not interesting. Select this check-box to prevent the tracer from logging information at start-up. You will be able to manually control tracing interactively during the run of your application. This is covered in detail in the section titled <a href="#ControllingTheTrace">Controlling The Trace</a>.
+ </li>
+ <li>
+ <strong>Apply At Runtime</strong> Diver can handle trace filters in two ways. It can either apply them at runtime,
+ </li>
+ </ol>
+ <p>or it can apply them at the indexing step as described in <a href="#ANoteAboutIndexing">A Note About Indexing</a>. If you apply the filters at runtime, you should notice a marked improvement in speed while
+ <br/>running the trace, and also a much faster indexing time. However, you will not be able to change the information displayed in sequence diagrams later on if you reanalyze the trace as described in <a href="#GainingADifferentPerspective">Gaining A Different Perspective</a>
+ </p>
+ <ol>
+ <li>
+ <strong>Filter Shortcuts</strong> There are two ways to affect the way that Diver filters your trace. You can either include only classes and methods that are defined in the project that is being traced, or you can set up the filtering manually.
+ </li>
+ <li>
+ <strong>Inclusion Filters</strong> Names of packages, classes, or methods that should be
+ <i>included</i> in the trace. You may wild-card the names by the use of an asterisk ( * ) character at the beginning or the end of the string. Type the fully-qualified name of the package, class or method that you want to be included. The text field offers content-assist to aid you in your typing.
+ </li>
+ <li>
+ <strong>Exclusion Filters</strong> Names of packages, classes, or methods that should be
+ <i>excluded</i> in the trace. You may wild-card the names by the use of an asterisk ( * ) character at the beginning or the end of the string. Type the fully-qualified name of the package, class or method that you want to be excluded. The text field offers content-assist to aid you in your typing.
+ </li>
+ </ol>
+ <h3 id="ANoteAboutIndexing">A Note About Indexing</h3>
+ <p>At this point, it may be a good idea to discuss a little bit about what it means when Diver &#8220;indexes&#8221; or &#8220;filters&#8221; a trace. There are a few details that you may like to know in order to fully understand what it is that you are looking at once your trace is completed.</p>
+ <p>First of all, the basic operation of Diver involves logging millions of
+ <strong>events</strong> which occur while your program is running. Most importantly, it logs when your Java program executes methods/constructors and when your program exits those methods/constructors. Regardless of how you set up your filters, Diver logs
+ <i>all</i> such events so long as your current trace is not in the &#8220;paused&#8221; state (see <a href="ControllingTheTrace">Controlling The Trace</a> for more information). However, while your program is running, and for some time after it has completed, Diver indexes these logs so that you can work with them more easily and efficiently. This is where your filters come in.
+ </p>
+ <p>Diver will only index information that you say is interesting. This includes method entries that you have chosen to
+ <i>include</i> in the filter, but not to
+ <i>exclude</i>. If you have set your filters manually, and chosen to not exclude or include anything, then all events will be indexed. For example, suppose that you had chosen to set your filters manually so that only the methods on the
+ <code>com.net.Org</code> class will be indexed (that is, you have added
+ <code>com.net.Org.*</code> to the
+ <strong>Inclusion Filters</strong>). This means that every method in the
+ <code>com.net.Org</code> class will become a &#8220;trigger&#8221; for the indexer. When the indexer sees such a trigger, it will store that trigger, all of the calls on the call-stack that lead to the trigger, and all of the side-effects (i.e., the entire call-tree from the trigger). In other words, the indexer will store all method calls that are connected to the trigger, but no others.
+ </p>
+ <p>If you choose
+ <strong>Only index classes defined in this project</strong> on the
+ <i>Java Trace</i> tab, then only the methods defined in the source code of the containing project will be triggers for the indexer.
+ </p>
+ <p>Since Diver stores events regardless of whether or not they will be triggers for the indexer, you may re-index the trace at any time. This is called
+ <i>Reanalyzing</i> the trace. This is discussed in the <a href="#ExploringYourCode">Exploring Your Code</a> section under <a href="#GainingADifferentPerspective">Gaining a Different Perspective</a>.
+ </p>
+ <h2 id="TheDiverPerspective">The Diver Perspective</h2>
+ <p>The trace launches have been associated with a new perspective called the
+ <i>Diver Perspective</i>. It has been designed to contain the different elements you need to be productive in your program understanding/reverse engineering tasks. When you launch your application, you may be prompted to switch to the Diver Perspective. Select &#8220;yes&#8221; to open it.
+ </p>
+ <p>
+ <img border="0" src="../images/launching/switchperspective.png"/>
+ </p>
+ <p>The Diver Perspective contains six regions by default. What is contained in those regions will be discussed further in other portions of this documentation. What follows is a brief overview.</p>
+ <p>
+ <img border="0" src="../images/launching/perspective.png"/>
+ </p>
+ <ol>
+ <li>
+ <strong>Java Area</strong> This area contains structured views pertaining to the Java language and your source code. Specifically, the standard Package Explorer is held here. In Diver, the Package Explorer has been enhanced in several ways to aid your reverse engineering tasks. These are been covered in the section titled <a href="#ExploringYourCode">Exploring Your Code</a>.
+ </li>
+ <li>
+ <strong>Source Code Area</strong> Diver has been tightly integrated with the JDT to help you better understand your software. The views in Diver link to your source to help you find key elements of your traced program. Diver also extends the source code view to give you more clues about how your software ran. These are discussed in the sections <a href="#DivingIntoYourTrace">Diving Into Your Trace</a> and <a href="#ExploringYourCode">Exploring Your Code</a>.
+ </li>
+ <li>
+ <strong>Outline Area</strong> Here you will find the standard outline view for your editors, as well as a special Trace Outline which links to the Thread Sequence View (seen in area number five). This area is discussed further in <a href="#DivingIntoYourTrace">Diving Into Your Trace</a>.
+ </li>
+ <li>
+ <strong>Trace Area</strong> Diver keeps several databases of all of the traces that you have run in your workbench. They can be accessed in this area of the perspective. It is discussed in <a href="#DivingIntoYourTrace">Diving Into Your Trace</a> and <a href="#ExploringYourCode">Exploring Your Code</a>.
+ </li>
+ <li>
+ <strong>Visualization Area</strong> Diver currently offers one visualization (with more planned) of your trace to help you to understand how your program runs. This area also contains the standard console. <a href="#DivingIntoYourTrace">Diving Into Your Trace</a> details the features of the visualization. <a href="#ExploringYourCode">Exploring Your Code</a> discusses its integration with the rest of the Diver tools.
+ </li>
+ <li>
+ <strong>Debug Area</strong> This area contains standard views for running and debugging applications, including the Debug, Variables, and Breakpoint views. The Debug View is integral to the operation of diver, and is discussed further in the section <a href="#ControllingTheTrace">Controlling The Trace</a>.
+ </li>
+ </ol>
+ <h2 id="ControllingTheTrace">Controlling The Trace</h2>
+ <p>Performing real-time logging of programs can have an adverse effect on the performance of those programs. So, Diver offers the ability for users to control, and log, exactly when the application is being traced and when it is not. This functionality is exposed through the Debug view via two new buttons in the toolbar:</p>
+ <ol>
+ <li>
+ <strong>Pause/Resume Trace</strong> This is probably the most important action that you will use during the execution of your program. It is executed through a toggle button with two states. The first state is the
+ <i>Resume</i> (i.e.
+ <i>currently paused</i>) state. It is indicated by an
+ <img border="0" src="../images/launching/play_icon.png"/> icon. While in this state, Diver will not log any information about the current application, helping to improve its speed. Pressing the button in this state will cause Diver to begin or resume tracing of your program, at which point it will switch to the
+ <i>Pause</i> (i.e.
+ <i>currently tracing</i>) state, indicated by
+ <img border="0" src="../images/launching/pause_icon.png"/>. Pressing the button in this state will cause it to return to the
+ <i>Resume</i> state. Note that by default, Diver will start your application in the
+ <i>Resume</i> state, and will not log any events until you press this button. You can change this behaviour as indicated in the section <a href="#SettingUptheTrace">Setting Up the Trace</a>.
+ </li>
+ <li>
+ <strong>View Trace Duration</strong> Indicated by a
+ <img border="0" src="../images/launching/clock_icon.png"/>, this action allows you to open a window which indicates the amount of time elapsed since the start of your application. This may be useful for when you are trying to isolate particular events in your trace.
+ </li>
+ </ol>
+ <h2 id="LaunchingAnEclipseApplication">Launching An Eclipse Application</h2>
+ <p>Diver also offers the ability to launch an Eclipse Application trace. Everything that has been discussed in this document also applies to Eclipse traces, but with one notable exception. <a href="#SettingUptheTrace">Setting Up the Trace</a> indicated that it is possible to filter the analysis of your trace to methods that appear only within the project that encapsulates your program. Such a filter does not make sense in terms of Eclipse applications, which are normally dependent on numerous projects which represent plug-ins/bundles for the application. So, instead of offering a filter for the associated project, Eclipse traces will, by default, filter to plug-ins defined in your workspace. Everything else runs in the same manner as indicated in the rest of this document.</p>
+ <h2 id="DebuggingWithDiver">Debugging With Diver</h2>
+ <p>You can also launch your traces in Debug mode. This may help you to target your traces more effectively. For example, you may know that a feature that you are trying to investigate always occurs within the context of a specific method call, but you don&#8217;t know when it occurs after that method is called. You can set a breakpoint on that method, and keep your trace paused until that breakpoint is hit. Once the breakpoint is hit, resume the trace, and step out of the method. Once again, pause the trace. Now, you will have traced everything that occurred within the method of interest, but nothing else.</p>
+ <h1 id="DivingIntoYourTrace">Diving Into Your Trace</h1>
+ <p>Diver offers interactive visualizations designed to help you navigate through your traced programs. They help you to see what occurred and in what context. This section will explain to you some of the key features of the visualizations.</p>
+ <h2 id="IntroducingtheProgramTracesView">Introducing the Program Traces View</h2>
+ <p>The Program Traces View is the central place to view and organize your traces. It is a simple tree viewer that offers a lot of functionality. First, and foremost, it offers you access to your traces. We will be discussing only its most basic features here. It will be discussed more in following sections. For now, we will get started with a simple picture.</p>
+ <p>
+ <img border="0" src="../images/diving/program traces.png"/>
+ </p>
+ <p>The Program Traces View always displays your traces as a four-level hierarchy, organized in the following way:</p>
+ <ul>
+ <li>&lt;Trace Launch Name>
+ <ul>
+ <li>&lt;Date of Trace>
+ <ul>
+ <li>&lt;Trace Launch Details> [Trace Time]
+ <ul>
+ <li>&lt;Traced Threads>...</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <p>For example, the above picture shows us that the launch
+ <i>Tetris</i> was executed once on August 31st, 2009; that it was a Java Application trace executed at 3:29 PM and it contained 19 threads. You may notice, as well, a column of amber dots to the right of the view. They are important to the features of Diver, but we will not be discussing them just yet. What is important for now is that this view gives us access to the executed threads of our Java program. Through it, we can open an important visualization for our traces: the Thread Sequence View. Double clicking on any thread in the Program Traces View will open that thread as a sequence diagram in the Thread Sequence View. The next few sections describe the functionality of this view.
+ </p>
+ <h2 id="SequenceDiagramsAnOverview">Sequence Diagrams: An Overview</h2>
+ <p>The major visualization provided by Diver is the interactive sequence diagram provided by the Thread Sequence View. It is based on UML2 sequence diagrams, but with some enhancements and changes. This section describes sequence diagrams and their function.</p>
+ <p>Sequence diagrams are designed to display the sequential passing of messages between objects in a system. This makes them suitable for system in which the functionality can be expressed as an ordered set of operations performed on or by the elements of that system. Hence, they are good visualizations for the operations in an object-oriented program&#8217;s threads, since all operations on an object occur at specific times. Below is an illustration of a sequence diagram in Diver.</p>
+ <p>
+ <img border="0" src="../images/diving/sequencediagram.png"/>
+ </p>
+ <p>There are numerous elements to a sequence diagram. Each of them are numbered in the above image. A brief description of each is given below, followed by a more in-depth discussion</p>
+ <ol>
+ <li>
+ <strong>Classifiers</strong> These images at the top of the screen describe the objects within a system, and their kind.
+ </li>
+ <li>
+ <strong>Life Lines</strong> Represented by dashed vertical lines underneath the classifiers, these represent the time-span within the system that an object is &#8220;alive&#8221;. Activation boxes appear on life lines.
+ </li>
+ <li>
+ <strong>Activation Boxes</strong> These are rectangular boxes that appear on a lifeline. They represent the time in the system that an object is active; i.e. the time that an object is performing an operation, or responding to a message.
+ </li>
+ <li>
+ <strong>Messages</strong> These are shown as arrows passing between activation boxes, and represent &#8220;messages&#8221; being passed between objects. Messages can either cause an object to become active (solid arrows ending at the beginning of a new activation box), or they can relinquish activity back to a calling object (dashed arrows beginning at the end of an activation box).
+ </li>
+ <li>
+ <strong>Groups</strong> Also known as
+ <strong>combined fragments</strong>. These are boxes that surround messages and activation boxes on lifelines. They group any related set of messages.
+ </li>
+ </ol>
+ <p>The following sections describe in detail how each of the visual elements are utilized within Diver.</p>
+ <h3 id="Classifiers">Classifiers</h3>
+ <p>Classifiers are used to describe the kinds of objects that are alive during a system&#8217;s execution, and they are always tied to lifelines. In a typical UML2 sequence diagram, there would by one classifier for every object in the system. Objects can be of various kinds (human
+ <i>actors</i>, software
+ <i>objects</i>, disk
+ <i>data-stores</i>). However, indicating a classifier for every object in a system quickly becomes overwhelming, as a system may include many, many
+ <i>millions</i> of objects. So, Diver only indicates a classifier for each
+ <i>class</i> in the system, as well as a special
+ <i>user</i> class which simply represents the &#8220;start&#8221; of the system, initiated by you, the user.
+ </p>
+ <p>Classes are indicated by simple rectangles at the top of a lifeline. The user is indicated by a simple &#8220;stick-man&#8221; figure at the top of the lifeline. Classes may also be decorated with a pictorial icon. This occurs when Diver is able to find the source-code associated with a particular class, and so can infer further information about the class (such as its visibility). The icons should be familiar to users of Eclipse&#8217;s Java Development Tools.</p>
+ <p>Diver also offers a third kind of classifier which is not typical to UML2: packages. These are used to indicate when you have chosen to hide certain aspects of the trace by grouping lifelines by the packages that the classes are defined in. This feature is covered more in the following section. </p>
+ <h3 id="LifeLines">Life Lines</h3>
+ <p>UML2 is a static modelling language. It is not designed for user interaction. Diver, on the other hand, is designed for user interaction. So Diver both extends and limits UML2 in order to facilitate interaction. One of the first places that this occurs is within the lifeline.</p>
+ <p>The first thing that you may notice when you open a thread in the Thread Sequence View is that it doesn&#8217;t look like much work is done in it. There will be only one classifier, one lifeline, and one activation box visible &#8212; all of them belonging to you, the user. There is likely more going on.</p>
+ <p>The reason that there is only one lifeline visible is because, in Diver, lifelines are only shown if there is a visible path of messages to at least one activation box on the lifeline. By default, only one activation box is visible: the start of the program, initiated by the user. The next section will discuss more about interacting with activation boxes. However, you can try to interact with the start of your program by selecting the little &#8216;+&#8217; symbol at the top of the first activation box. If anything more occurs in the visualized thread (there may not be &#8212; it could have been idle during your program), further messages, classifiers, lifelines, and activation boxes will appear.</p>
+ <p>In standard UML2, lifelines are used to indicate the full life-span of an object. That is, they begin when an object is created, and end when an object is destroyed. In Diver, however, they all begin at the same time, and they last as long as there are visible activation boxes on the lifeline. This is done in order to facilitate some of the advanced features that have been built in to the viewer, which cannot be expressed in static UML2. One of those advanced features is lifeline grouping.</p>
+ <p>Java applications often make use of many utility and system classes that are required to perform low-level operations. For example, even before the classes that you define can be used, they must be first loaded from disk. This involves invoking methods on the class
+ <code>java.lang.ClassLoader</code>, which will operate on the file system, involving calls on many classes in the
+ <code>java.io</code> package. This may result in a sequence diagram that displays many hundreds of uninteresting lifelines. An unfiltered trace of a simple HelloWorld application, for example, uses more than 45 classes. Diver offers the ability to decrease the number of lifelines that are displayed by giving you the ability to group them by their containing packages. That is done as follows.
+ </p>
+ <p>First, if you examine the view, you will see a grey bar with a symbol that looks like a small bold
+ <strong>w</strong> on it. This is a selectable sash which when dragged down will reveal a &#8220;package pane&#8221; above your main diagram. There, you will see numerous folder-shaped icons organized as a tree. These are the packages utilized in your software:
+ </p>
+ <p>
+ <img border="0" src="../images/diving/sequence-package.png"/>
+ </p>
+ <p>If you mouse-over a package icon, it will grow larger so that you can see the full package name. Selecting it will &#8220;pin&#8221; it to this size, and display lines connecting to the classifiers for the classes that are contained in the package. Conversely, selecting a classifier on a lifeline will display a line connecting it to its containing package. When you mouse over a package, you will also see a small box with a &#8216;-&#8217; embedded in it. Selecting this box will &#8220;collapse&#8221; the package. The visual effect of this is that all of the lifelines for classes contained in that package will be &#8220;grouped&#8221; into a single lifeline with the package as its classifier. The image below shows the effect of collapsing the
+ <code>java</code> package.
+ </p>
+ <p>
+ <img border="0" src="../images/diving/sequence-package-collapse.png"/>
+ </p>
+ <p>Note that collapsing a package will also cause all of its sub-packages to be collapsed onto the same lifeline. You will see a small &#8216;+&#8217; sign to the top-left of the new package classifier. Selecting this symbol will return the diagram to its previous state.</p>
+ <h3 id="ActivationBoxes">Activation Boxes</h3>
+ <p>Activation boxes represent activity in an object. In Java, objects perform processing (i.e., are made active) when methods are called on them. So, you can understand activation boxes as work being performed within a Java method.</p>
+ <p>As mentioned previously, you won&#8217;t see much in your diagram unless you interact a little with the activation boxes. Activation boxes in the Diver sequence diagrams act similarly to the nodes in a standard tree viewer. You can think of a sequence diagram like a large tree structure where messages originating from an activation box cause that activation box to have &#8220;children&#8221; at the other end of the message. In fact, program traces produce what are often called &#8220;call trees&#8221; because they do have a strict tree structure.</p>
+ <p>So, the basic interaction that you have with an activation box is to expand or collapse it much like a tree viewer. Expanding an activation box will reveal the messages that originate from that activation box. These messages will be of two kinds: calls or returns. Calls will result in further &#8220;child&#8221; activations, and &#8220;returns&#8221; simply indicate that an activation on a class is ending, and returning to the previous activation. More will be said about messages in the following section. Below is an image that has several activation boxes expanded.</p>
+ <p>
+ <img border="0" src="../images/diving/sequence-activation-expand.png"/>
+ </p>
+ <p>Looking at these pictures, you may notice that different activation boxes appear in different colours. This is because Diver uses the source code associated with your program to infer information about the program and display it to you in the sequence diagram. Activation boxes are associated with Java methods. Their colour indicates the visibility of the methods. These colours are related to those that you may be used to from the Eclipse JDT. Public methods are indicated by green activation boxes; protected ones by orange; private by red; and package-level by blue. If no source code can be found for a method, its corresponding activation boxes will be presented in white.</p>
+ <h3 id="Messages">Messages</h3>
+ <p>There are four basic ways that Java passes messages between objects: method calls; method returns; exception throws; and exception catches. Thrown exceptions behave essentially like cascading method returns, until the exception is caught. So, this is how they are treated in the Diver sequence diagrams.</p>
+ <p>In Diver, method calls appear as messages from existing activations to new activations on another object (or the same object). They can be revealed by expanding the activation boxes on which they originate. The label on the message will be the name of the method that was called, followed by a parenthesised list of its parameter types. If source code for the method can be found, the label will also be decorated by a small icon indicating various attributes of that method (is it public? is it static?, etc.). These icons are the familiar method icons provided by the JDT. Returns and thrown exceptions are indicated as messages returning from the end of an activation box back to the originating activation box. They are labelled with the return type for the method.</p>
+ <p>You can interact with method calls using your mouse. When you hover over a method call, the entire call-tree originating at that call is made bold in the view. If you select a method call, then message is made bold, and the sub-calls are highlighted in the view.</p>
+ <h3 id="Groups">Groups </h3>
+ <p>Java can be a well-structured programming language in which method calls are grouped into coherent groups using blocks. Blocks are typically part of conditional decision making structures such as
+ <code>if</code> statements, loops, or error handling. If Diver can find source code for your trace, it does some sophisticated analysis to link the messages in the trace with the blocks of code in which they occur. This helps to give you the context in which a message occurs, and it also helps to simplify the diagram.
+ </p>
+ <p>Diver is able to distinguish three different kinds of groups: conditional groups (
+ <code>if/else/case</code> statements); error handling (
+ <code>try/catch</code>); and loops (
+ <code>for/while/do..while/foreach</code>). Each has its own colour. Conditional groups are displayed in green, error handling groups are in red, and loop groups are in blue. The label of the group is set to the condition or the source code that defines the group.
+ </p>
+ <p>Like lifelines and activations, they can be expanded and collapsed as well. By default, groups are expanded so that you can see all of the messages that they contain. Collapsing a group hides all of the messages and activations inside of it, making your diagram smaller. The image below shows the effects of collapsing several groups.</p>
+ <p>
+ <img border="0" src="../images/diving/sequence-block-collapse.png"/>
+ </p>
+ <p>Loop groups are a special kind of group. They are used not only to organize messages that occur within the loop&#8217;s block, but they also help to decrease the size of the displayed diagram. Many java programs will contain loops that iterate hundreds, or thousands of times. Diver hides the repeated messages within loop groups, potentially decreasing the size of the diagram by many thousands of times.</p>
+ <p>There is one problem, though. It is likely the case that different iterations of the same loop will, in fact, have very different effects. So, Diver does make it possible for you to look at all of the effects of a loop by &#8220;swapping&#8221; iterations. You can swap an iteration by right-clicking on the label for the loop. A drop-down list will appear that will allow you to select the iteration that you would like to inspect. If there are more than 10 iterations, you are given the option to select a specific iteration using a dialog. </p>
+ <p>
+ <img border="0" src="../images/diving/sequence-loop-iteration.png"/>
+ </p>
+ <h4 id="ControllingGroups">Controlling Groups</h4>
+ <p>The groups in the Diver sequence diagram help to gain an understanding about control flow and program
+ <br/>state without having to look at the source code itself. Sometimes, though, you might find that they clutter your view. There are two ways that you can control the way that groups are displayed in the Diver sequence diagram. They can be found in the drop-down menu of the view&#8217;s toolbar.
+ </p>
+ <p>
+ <img border="0" src="../images/diving/sequence-menu.png"/>
+ </p>
+ <p>-
+ <strong>Use Combined Fragments</strong> If this menu item is unselected, then the message groups will not be displayed in the Diver sequence diagram. You will not be able to see program state or control flow, but the diagram
+ <br/>will be a little smaller (assuming you have not collapsed any of the combined fragments).
+ </p>
+ <p>-
+ <strong>Compact Loops</strong> Diver normally shows only one iteration of a loop at a time. You can see other iterations by using the sequence diagram&#8217;s context menu. If you would like to see all iterations at once,
+ <br/>you can deselect this option.
+ </p>
+ <h2 id="AdvancedSequenceDiagramInteractions">Advanced Sequence Diagram Interactions</h2>
+ <p>You now have a basic understanding about how to work with sequence diagrams. The following sections will help you through some of the more advanced features that are offered for working with sequence diagrams in Diver.</p>
+ <h3 id="SavingtheViewState">Saving the View State</h3>
+ <p>This section is here just for your information. You, in fact, don&#8217;t have to do anything to save your view state in Diver. The view state is automatically saved for you. So, don&#8217;t worry about it. The next time you open your sequence diagram, it will be in the same form that you left it.</p>
+ <h3 id="SeeingthelittleBigPicture">Seeing the (little) Big Picture</h3>
+ <p>Sequence diagrams can get very large, very quickly. So, it can be difficult to keep track of what you are looking at, especially with limited screen real estate. So, diver offers an overview of your sequence diagram. It is called the Sequence Outline View, and It is basically a compressed version of the sequence diagram that is in the Thread Sequence View. You can move the viewport of the Thread Sequence View by selecting or dragging on the Sequence Outline View.</p>
+ <p>
+ <img border="0" src="../images/diving/sequence-outline.png"/>
+ </p>
+ <h3 id="RefocussingtheDiagram">Re-focussing the Diagram</h3>
+ <p>If you are extra observant, you may have noticed that every sequence diagram in Diver begins with a single &#8220;start&#8221; activation on the &#8220;User&#8221; class. This is the root of the sequence diagram. But, what if you aren&#8217;t interested in seeing everything from the start of the program? You&#8217;ve found the one activation of a method that you are looking for, and you want to get rid of all the &#8220;extra&#8221; stuff from your view. Well, lucky for you, Diver is designed to help you do just that.</p>
+ <p>You can select any activation box and make it the &#8220;root&#8221; of your sequence diagram. This is called
+ <i>focussing</i>, and it is easy to do. Simply right-click on any activation box, and select
+ <strong>Focus On ...</strong> from the drop-down menu:
+ </p>
+ <p>
+ <img border="0" src="../images/diving/sequence-focus1.png"/>
+ </p>The diagram will automatically lay-out with the new activation box as the root:
+ <img border="0" src="../images/diving/sequence-focus2.png"/>
+ <p>But your last context isn&#8217;t lost. Diver gives you an easy way to get back to the original root of the diagram. If you look at the top of the view, you will see a grey bar, that always starts with the text &#8220;User.start()&#8221;. This is the
+ <i>message breadcrumb</i>. It lists all of the call messages from the root of the thread to the activation box of current focus. You can move anywhere up the call-chain simply by selecting one of the messages listed in the breadcrumb. Sometimes, though, the call chain will be too long to list all of the messages in one line. In this case, you can view the entire call chain as a drop-down menu by selecting the button on the far-right of the breadcrumb (it looks like
+ <code>>></code>). Choose the new root activation from the menu:
+ </p>
+ <img border="0" src="../images/diving/sequence-breadcrumb.png"/>
+ <h3 id="UsingtheTimeline">Using the Timeline</h3>
+ <p>There are other ways of filtering your view to make sure you see only what you are interested in. Perhaps you know that the functionality that you are interested in was executed at a particular time (perhaps by using the trace duration dialog, described in <a href="#ControllingYourTrace">Controlling Your Trace</a>). You can filter the sequence diagram to specific times by using the timeline.</p>
+ <p>The timeline looks like a long green bar at the bottom of the Thread Sequence View. It looks something like this:</p>
+ <p>
+ <img border="0" src="../images/diving/sequence-timeline.png"/>
+ </p>
+ <p>On either end of the timeline are several text boxes. They indicate the time range that the timeline is set to. The format is
+ <code>hh:mm:ss:ppp</code>. For example, the above image indicates that the user started the trace 1.825 seconds into the execution of the program, and ended it at 2 minutes, 57.903 seconds. You may also notice a couple of coloured ranges in the timeline. These ranges indicate different events that occur during the trace. In this instance, the yellow range indicates a period in which the trace was paused &#8212; no messages will have been logged during this time. The lighter, smaller, pink range indicates the time of the currently selected element in the sequence viewer. In this case, the user has selected a message that occurred near the end of the trace.
+ </p>
+ <p>The range is also indicated graphically. There are two vertical I-beam like bars at each end of the timeline. These can be dragged to change the range of the timeline. when you do this, the sequence diagram will refresh so that only messages and activations that occur within the selected range are displayed. The following images show the before, and after effects of changing the range in the timeline. Notice how the filtered diagram fits within one screen, without the need to scroll.</p>
+ <p>
+ <img border="0" src="../images/diving/sequence-time-filter2.png"/>
+ </p>
+ <p>
+ <img border="0" src="../images/diving/sequence-time-filter1.png"/>
+ </p>
+ <h3 id="SeeingWhereMessagesComeandGo">Seeing Where Messages Come and Go</h3>
+ <p>Large sequence diagrams may have hundreds, or even thousands, of lifelines. This can make it impossible to layout the diagram in such a way as to make sure that the source and the target of a message is always visible. Take the following image for example:</p>
+ <p>
+ <img border="0" src="../images/diving/sequence-sash1.png"/>
+ </p>
+ <p>You can see that there is a method call on the
+ <code>TetrisBoard</code> class, but you can&#8217;t tell what it is called, or where it came from because the originating lifeline is far to the left of the visible area. Diver offers another feature that can help with this: the
+ <i>clone pane</i>. The clone pane is a second view of your sequence diagram, which exactly mirrors, and is synchronized with the main view that you will look at most of the time. However, you are able to scroll it horizontally so that you can view two different portions of the same sequence at the same time. Reveal the pane by dragging the sash on the left of the view (indicated by what looks like a rotated
+ <strong>w</strong>). The result will be something like this:
+ </p>
+ <p>
+ <img border="0" src="../images/diving/sequence-sash2.png"/>
+ </p>
+ <p>As you can see, the method that was called is
+ <code>TetrisBoard.clear()</code>, from the
+ <code>Game</code> class. You can also see that it is only called within the context of an
+ <code>if</code> statement, so that you can tell that the current player must be in the &#8220;preview&#8221; state (seen by the message block with the label
+ <code>if (getPlayer().isPreview())</code>).
+ </p>
+ <h3 id="GettingBacktotheSource">Getting Back to the Source</h3>
+ <p>If an element in the sequence diagram has an icon attached to it, or is any colour other than white, it is likely that Diver has been able to locate some source code for that element. Looking at source code can be of immeasurable value when trying to understand software. So, Diver makes it easy to get back to the source. Simply double-click on an element to reveal it in a source-code viewer. Classifiers will reveal classes, activation boxes will reveal method definitions, and messages will reveal the line of code at which the message originated.</p>
+ <h1 id="ExploringYourCode">Exploring Your Code</h1>
+ <p>One of the great things about Diver is its tight integration with your Eclipse workspace. Diver attempts to make it easier to understand your software. One of the most important representations of your software is simply its source code. So, Diver has many features that enrich the source browsing experience.</p>
+ <h2 id="ActivatingATrace">Activating A Trace</h2>
+ <p>Diver helps to organize your perspective on your source code. This is done by selecting a trace to be
+ <i>active</i>. An active trace is basically a &#8220;lens&#8221; through which Diver can focus your workbench. When a trace is active, Diver can filter your Package Explorer, and annotate your source code according to what occurred during that trace.
+ </p>
+ <p>Activating a trace is simple. In your
+ <i>Program Traces</i> view, you will notice that beside each trace is a small, amber
+ <img border="0" src="../images/code/trace-inactive.gif"/> icon. Selecting this icon will activate your trace. The icon will now be a green
+ <img border="0" src="../images/code/trace-active.gif"/>. Selecting it again will deactivate your trace. That is all there is to it.
+ </p>
+ <h2 id="FilteringThePackageExplorer">Filtering The Package Explorer</h2>
+ <p>Once you have activated a trace, you can take advantage of Diver&#8217;s filtering features. First, look for the
+ <img border="0" src="../images/code/filter_java.png"/> icon in the toolbar of the Package Explorer. This icon will filter the package explorer according to the active trace. Select it to see the results. They can be very significant. What you will see in your package explorer are only those elements which contain at least one method that was called during the active trace. This includes projects, packages, files, classes, and methods. The reference libraries (for example the JRE System Library) will be filtered as well. The following is an example of the impact of filtering.
+ </p>
+ <p>
+ <img border="0" src="../images/code/filtercompare.png"/>
+ </p>
+ <p>To the left is an unfiltered package explorer. On the right is the filtered one.</p>
+ <p>Diver will even do finer-grained filtering for you. When you select a thread in the active trace, Diver will adjust the filter to show only those elements that contain methods that were called within the selected thread. The image below shows the filters when just the active trace is selected, and when the thread called
+ <i>Thread-4</i> is selected. Compare it to the filtered Package Explorer above. This feature can help you isolate the calls that occurred within each thread.
+ </p>
+ <p>
+ <img border="0" src="../images/code/filterthread.png"/>
+ </p>
+ <h3 id="GainingaDifferentPerspective">Gaining a Different Perspective</h3>
+ <p>You may recall a discussion about indexing that was covered in the section <a href="#LaunchingATrace">Launching A Trace</a>. Basically, during, and for some time after, the time that you are tracing a program, Diver has to do some analysis to extract the information from the trace that you have determined is important. By default, Diver will assume that &#8220;interesting code&#8221; is the code that is in your workspace. But what if you are interested in more fine-grained detail. For example, you might want to know when files are accessed on disk. It&#8217;s like having a different perspective on your running code. You can change this perspective at any time in Diver by reanalyzing a trace. Doing so is simple. Just right-click on the trace and select &#8220;Reanalyze...&#8221;. You will be presented with a dialog much like the
+ <i>Java Trace</i> tab in the launch dialog that was discussed before:
+ </p>
+ <p>
+ <img border="0" src="../images/code/reanalyze.png"/>
+ </p>
+ <p>You can enter the custom filters that you would like to use during the indexing. You can check the progress of the analysis via the progress dialog: </p>
+ <p>
+ <img border="0" src="../images/code/reanalyze-progress.png"/>
+ </p>
+ <p>The Program Traces view will also let you know when a trace is being analyzed. The icon for the trace will be decorated with a small golden &#8220;gear&#8221; that looks like this:
+ <img border="0" src="../images/code/analyzing.png"/>.
+ <strong>Note</strong> it is usually a good idea to make sure that a trace is not active while it is being analyzed. If the trace is large, many changes (hundreds of thousands!) to the underlying data may cause the various views in the workbench to frequently refresh. This may make the user interface unresponsive, and it may appear to hang for a long period. So, unless your trace is quite small (spanning only a few seconds), it is best to deactivate it before trying to reanalyze it. Also remember that reanalysis is only effective if filters are not applied at runtime, as described in <a href="#SettingUpTheTrace">Setting Up The Trace</a>.
+ </p>
+ <h2 id="ComparingTraces">Comparing Traces</h2>
+ <p>Even if you are careful to pinpoint exact time periods for your trace, it can be difficult to find what you are looking for because dynamic program traces can be fairly &#8220;noisy&#8221;. The Java Virtual Machine can, in fact, perform all kinds of operations that you are unaware of, but that do result in method calls. A classic example is that of classloading. Before a class is first used, its code must be loaded from disk. So, though your code may simply state
+ <code>new MyObject()</code>, the JVM may, in fact, make numerous calls to the system using classes like
+ <code>java.io.File</code> and
+ <code>java.io.DataInputStream</code>. These calls, though they might not be interesting to you, will get logged and indexed. Or, perhaps, you are trying to find out what happens when you push a button in a graphical user interface. Behind the scenes, there may be many objects listening to every mouse movement you make, when you are only interested in the one click.
+ </p>
+ <p>To help you find the methods that you are interested in, Diver offers the ability to compare the differences between traces. Doing so will affect the filters in your Package Explorer to limit the number of methods that are exposed. You can hide method calls in a way that is analogous to hiding layers in many popular graphics programs. When you activate a trace, you will notice a small
+ <img border="0" src="../images/code/openeye.png"/> icon beside it. This icon means that the methods of the trace are not filtered out in the current filter. You will see the same icon beside any trace that was launched using the same launch configuration. You are able to hide the methods in these traces by selecting the
+ <img border="0" src="../images/code/openeye.png"/>. The icon will then toggle to a
+ <img border="0" src="../images/code/closedeye.png"/>. The filters are set up to display all of the methods that appear in the active trace, but not any that appear in the traces with a
+ <img border="0" src="../images/code/closedeye.png"/> beside them. So, for example, you might run your GUI program first just to log a number of random mouse movements, and second to log the mouse click. If you hide the first trace, you should now only see the methods in and around the time of your mouse click. Below is an example of the difference that can be made by using such comparison.
+ </p>
+ <p>
+ <img border="0" src="../images/code/layer0.png"/>
+ <img border="0" src="../images/code/layer1.png"/>
+ </p>
+ <h2 id="FindingTheContext">Finding The Context</h2>
+ <p>So far this section has been dedicated to filtering your explorer view so that you can pinpoint parts of code that were called during your application. <a href="#DivingIntoYourTrace">Diving Into Your Trace</a> was about visualizing the trace. What if you want to switch between the two. Diver offers ways of doing that.</p>
+ <h3 id="AMethodInSequence">A Method In Sequence</h3>
+ <p>So, you have set up your filters, and you have found a method that looks interesting, but you want to see the context in which it was called. You can get started by right-clicking on the method. You should see near the bottom of the pop-up menu an item called &#8220;Reveal In&#8221;. Selecting it will reveal another menu listing all of the threads in which the method was called. Selecting one will automatically open the Thread Sequence View, and show to you the first time that the method was called in the given thread. It is as easy as that.</p>
+ <p>
+ <img border="0" src="../images/code/reveal.png"/>
+ </p>
+ <h3 id="FindingAllTheCalls">Finding All The Calls</h3>
+ <p>There is one catch to the above description. A method may be called many, many times during a program, even within the same thread. How can you see the different contexts in which it was called. The timeline of the Thread Sequence View is there to help.</p>
+ <p>When you select a method in the Package Explorer, and you have the Thread Sequence View opened on a thread that calls that method, you will see a number of blue markers in the timeline, much like the following. </p>
+ <p>
+ <img border="0" src="../images/code/timeline0.png"/>
+ </p>
+ <p>Each blue marker represents a call to the selected method in the thread. Right-clicking on one of those blue markers will reveal a menu like this one:</p>
+ <p>
+ <img border="0" src="../images/code/timeline1.png"/>
+ </p>
+ <p>Selecting &#8220;Reveal...&#8221; will simply expand the current sequence diagram, and scroll so that the activation corresponding to the method call can be seen in the view. &#8220;Focus...&#8221; will reset the root of the sequence diagram to the activation, and &#8220;Open...&#8221; will open the method in a source code editor.</p>
+ <h3 id="RemovingDetails">Removing Details</h3>
+ <p>In <a href="#ComparingTraces">Comparing Traces</a> we saw that it is possible to filter the Eclipse Package explorer by activating on trace, and hiding others. By default, the filter is applied to only the package explorer and the Diver sequence diagram will show you every method call that is part of the thread that it is displaying. You can apply the same filter used on the Package explorer to the sequence diagram by selecting the &#8220;eye&#8221;
+ <img border="0" src="../images/code/openeye.png"/> icon on the sequence diagram toolbar. When you &#8220;close&#8221; this eye, Diver will calculate which method calls may be hidden from the sequence diagram view according to the filters set in the Program Traces view. It may take some time to perform this calculation. During the calculation, the eye icon will appear to &#8220;blink&#8221;. When complete, the diagram will refresh.
+ </p>
+ <p>There are two different ways that this filter can be applied. You can either choose to keep all method calls visible in the diagram, greying out the filtered ones, or you can choose to remove them from the view completely. Greying out the method calls may be helpful for when you would like to understand the entire behaviour of the system, but you would like the diagram to indicate which method calls are &#8220;important&#8221; for further exploration. An example of such a view is as follows.</p>
+ <p>
+ <img border="0" src="../images/diving/sequence-filter1.png"/>
+ </p>
+ <p>If you would like to remove the method calls from the view completely, you can use the sequence diagram&#8217;s drop-down menu and select
+ <strong>Hide Unnecessary Calls</strong>:
+ </p>
+ <p>
+ <img border="0" src="../images/diving/sequence-menu.png"/>
+ </p>
+ <p>The picture below shows the same sequence as above, but with unnecessary calls hidden.</p>
+ <img border="0" src="../images/diving/sequence-filter2.png"/>
+ <h2 id="ReadingYourCode">Reading Your Code</h2>
+ <p>Diver is designed, in part, to help you understand source code. So, there are features that help you to read it. <a href="#DivingIntoYourTrace">Diving Into Your Trace</a> already discussed how it is possible to jump to your source code using the visualizations. But Diver also does more. It offers a
+ <i>code coverage</i> indicator. When you activate a trace, and open a source code editor, if any methods were called in the program represented by that source code (and they were indexed during analysis), they will be marked in the source code and in the overview ruler by blue markers. So, you can be sure of what lines were executed during the trace. See the image below for an example.
+ </p>
+ <p>
+ <img border="0" src="../images/code/sourcecode.png"/>
+ </p>
+ <h1 id="SharingYourTraces">Sharing Your Traces</h1>
+ <p>Diver now offers ways for you to keep a record of your traces, and share them with other people. This can be done
+ <br/>in two main ways: by exporting screenshots of your sequence diagrams; and by exporting and importing entire
+ <br/>traces.
+ </p>
+ <h2 id="ExportingScreenshots">Exporting Screenshots</h2>
+ <p>Diver makes it easy to export screenshots of your sequence diagrams. Just look for the little camera
+ <br/>(
+ <img border="0" src="../images/sharing/screenshoticon.png"/>) icon. You can find it on the sequence diagram&#8217;s toolbar, drop-down menu,
+ <br/>or pop-up menu:
+ </p>
+ <p>
+ <img border="0" src="../images/sharing/screenshot1.png"/>
+ </p>
+ <p>Selecting it will give you a standard file/save dialog. You can export the image as a bmp, png, or jpeg file. When you
+ <br/>export the diagram, you will have a full-sized picture of the diagram exactly as it appears in the main pain of the
+ <br/>viewer:
+ </p>
+ <p>
+ <img border="0" src="../images/sharing/screenshot2.png"/>
+ </p>
+ <h2 id="ExportingTraces">Exporting Traces</h2>
+ <p>Diver also makes it possible to export and import entire traces. You can do so by using the standard import/export
+ <br/>wizards under the category
+ <em>Diver</em>, or by using the shortcut in the
+ <em>Program Traces</em> view:
+ </p>
+ <p>
+ <img border="0" src="../images/sharing/export1.png"/>
+ </p>
+ <p>The Diver export wizard will present you with a page that allows you to select the trace to export, and the threads
+ <br/>to export within that trace. By default, the exported traces will exclude any threads that do not contain activations
+ <br/>(&#8220;empty threads&#8221;). You can change this by unselecting the check box at the bottom of the page. You will also need
+ <br/>to select a file to save the trace into. The file extension is
+ <em>dvt</em>, which stands for "<u>D</u>i<u>v</u>er <u>t</u>race file".*
+ </p>
+ <p>
+ <img border="0" src="../images/sharing/export2.png"/>
+ </p>
+ <p>That is all you need to know to export traces. Now, all you need is a way to import them.</p>
+ <h2 id="ImportingTraces">Importing Traces</h2>
+ <p>Importing traces in Diver is very similar to running or analyzing traces. Just open the
+ <em>Import Trace</em> wizard:
+ </p>
+ <p>
+ <img border="0" src="../images/sharing/import1.png"/>
+ </p>
+ <p>Then, use the file browser to select a Diver trace file:</p>
+ <img border="0" src="../images/sharing/import2.png"/>
+ <p>Once a file has been set, the import wizard will automatically scan that file to make sure that it is a valid Diver trace
+ <br/>file. Then, import the trace just as if you were using the
+ <em>Reanalyze Trace</em> wizard (see <a href="#GainingADifferentPerspective">Gaining
+ <br/>A Different Perspective</a> for more information).
+ </p>
+ <img border="0" src="../images/sharing/import3.png"/>
+ <p>Once you select
+ <em>Finish</em>, the trace will be copied into Diver&#8217;s trace storage, and the files will be analyzed. You will
+ <br/>see the newly imported trace in your
+ <em>Program Traces</em> view.
+ </p>
+ <p>*Diver trace files, much like Java jar files, are simply files compressed in the ZIP format. If you are really interested
+ <br/>in seeing what is in the trace file, you can reset the extension to
+ <em>zip</em>, and explore the file.
+ </p>
+ <h1 id="Acknowledgements">Acknowledgements</h1>
+ <p>This work was funded under contract with Defence Research And Development Canada, contract number W7701-82702/001/QCA and a DND/NSERC grant with IBM and DRDC Valcartier (DNDPJ 380607-09).</p>
+ <p>Thanks to Martin Salois, David Ouellet, and Philippe Charland of the DRDC for their work, research, and support.</p>
+ <p>Thanks to Dr. Margaret-Anne Storey of the University of Victoria for her help and supervision.</p>
+ <p>Thanks to Chris Callendar for supplying the Tetris software on which the examples for this documentation are based.</p>
+ <p>Diver Redistributes the HSQLDB database binaries, version 1.8.1.</p>
+ <p>HSQLDB is Copyright &#169; 1995-2000 by the Hypersonic SQL Group.
+ <br/>All rights reserved.
+ </p>
+ <p>Redistributions in binary form must reproduce the above copyright notice,
+ <br/>this list of conditions and the following disclaimer in the documentation
+ <br/>and/or other materials provided with the distribution.
+ </p>
+ <p>Neither the name of the Hypersonic SQL Group nor the names of its
+ <br/>contributors may be used to endorse or promote products derived from this
+ <br/>software without specific prior written permission.
+ </p>
+ <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ <br/>AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ <br/>IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ <br/>ARE DISCLAIMED. IN NO EVENT SHALL THE HYPERSONIC SQL GROUP,
+ <br/>OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ <br/>EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ <br/>PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ <br/>LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ <br/>ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ <br/>(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ <br/>SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ </p>
+ <p>This software consists of voluntary contributions made by many individuals on behalf of the
+ <br/>Hypersonic SQL Group.
+ </p>
+ </body>
+</html>
478 ca.uvic.chisel.diver.docs/docs/Diver.textile
@@ -0,0 +1,478 @@
+
+!../images/logo-medium.png!
+
+h1. Welcome To Diver
+
+Diver is a series of tools designed to help you to understand your programs better. It brings dynamic analysis and reverse engineering right into your Eclipse workbench. And it makes them easy. Follow this documentation to get started with Diver.
+
+
+h1. Table of Contents
+
+{toc}
+
+
+h1. Launching A Trace
+
+A lot of attention has been put into making sure that launching a trace is as easy as possible. Launching or debugging as a trace is as easy as launching a typical application. This document will step you through the basic process.
+
+h2. Creating A New Launch
+
+The trace launches won't be available in the favourites menu of your perspective by default, so you will have to configure them manually. It is not a difficult process, however. Just follow these simple steps.
+
+*1. Open The Launch Configuration Dialog*
+
+The launch configuration will not be in your favourite launches by default. So, in the Java Perspective, or in the Plug-in Development Perspective, use the drop-down menu from either the __Run...__ or __Debug__ shortcut. Then, select __Configurations...__.
+
+!../images/launching/launch1.png!
+
+*2. Create A New Java Application Trace*
+
+Locate the __Java Application Trace__ launch configuration type on the tree view to the left of the Configurations Dialog, and select the __New Configuration__ button at the top of the dialog.
+
+!../images/launching/launch2.png!
+
+*3. Set Up The Java Application*
+
+Finally, you must set the application to be run. This involves selecting the project for the launch, and the associated @Main@ class. In this example, we will be running a simple Tetris game. The Project has been set to @Tetris@ and the main class has been set to @org.oversoul.tetris.ui.TetrisFrame@.
+
+!../images/launching/launch3.png!
+
+*4. You May Now Trace Your Program*
+
+Once you have followed these three steps, you may trace your Java application. Default trace-specific settings have been made that should be suitable for most users. If you would like to tweek your trace, however, you may. Read the next section for more information.
+
+h2. Setting Up the Trace
+
+The Java trace launches are designed to help you find within your program the information that is most interesting to you. Iit is able to apply a filtering mechanism so that only the most important details are indexed for your access. These filters allow you to adjust your "perspective" of the running application, and they are set up with default values that should be suitable for most traces. But, for those who need finer tuning, they are configurable. In fact, they can be configured at any time -- even __after__ the trace has completed. So, if you don't set up the filters right at this point, don't worry; you can change them later. The different portions of the Java Trace tab are described below.
+
+!../images/launching/traceconfig.png!
+
+# *Pause On Start* Most Java applications begin by running a lot of boiler-plate code that is probably not interesting. Select this check-box to prevent the tracer from logging information at start-up. You will be able to manually control tracing interactively during the run of your application. This is covered in detail in the section titled <a href="#ControllingTheTrace">Controlling The Trace</a>.
+# *Apply At Runtime* Diver can handle trace filters in two ways. It can either apply them at runtime,
+or it can apply them at the indexing step as described in <a href="#ANoteAboutIndexing">A Note About Indexing</a>. If you apply the filters at runtime, you should notice a marked improvement in speed while
+running the trace, and also a much faster indexing time. However, you will not be able to change the information displayed in sequence diagrams later on if you reanalyze the trace as described in <a href="#GainingADifferentPerspective">Gaining A Different Perspective</a>
+# *Filter Shortcuts* There are two ways to affect the way that Diver filters your trace. You can either include only classes and methods that are defined in the project that is being traced, or you can set up the filtering manually.
+# *Inclusion Filters* Names of packages, classes, or methods that should be __included__ in the trace. You may wild-card the names by the use of an asterisk ( * ) character at the beginning or the end of the string. Type the fully-qualified name of the package, class or method that you want to be included. The text field offers content-assist to aid you in your typing.
+# *Exclusion Filters* Names of packages, classes, or methods that should be __excluded__ in the trace. You may wild-card the names by the use of an asterisk ( * ) character at the beginning or the end of the string. Type the fully-qualified name of the package, class or method that you want to be excluded. The text field offers content-assist to aid you in your typing.
+
+h3. A Note About Indexing
+
+At this point, it may be a good idea to discuss a little bit about what it means when Diver "indexes" or "filters" a trace. There are a few details that you may like to know in order to fully understand what it is that you are looking at once your trace is completed.
+
+First of all, the basic operation of Diver involves logging millions of *events* which occur while your program is running. Most importantly, it logs when your Java program executes methods/constructors and when your program exits those methods/constructors. Regardless of how you set up your filters, Diver logs __all__ such events so long as your current trace is not in the "paused" state (see <a href="ControllingTheTrace">Controlling The Trace</a> for more information). However, while your program is running, and for some time after it has completed, Diver indexes these logs so that you can work with them more easily and efficiently. This is where your filters come in.
+
+Diver will only index information that you say is interesting. This includes method entries that you have chosen to __include__ in the filter, but not to __exclude__. If you have set your filters manually, and chosen to not exclude or include anything, then all events will be indexed. For example, suppose that you had chosen to set your filters manually so that only the methods on the @com.net.Org@ class will be indexed (that is, you have added @com.net.Org.*@ to the *Inclusion Filters*). This means that every method in the @com.net.Org@ class will become a "trigger" for the indexer. When the indexer sees such a trigger, it will store that trigger, all of the calls on the call-stack that lead to the trigger, and all of the side-effects (i.e., the entire call-tree from the trigger). In other words, the indexer will store all method calls that are connected to the trigger, but no others.
+
+If you choose *Only index classes defined in this project* on the __Java Trace__ tab, then only the methods defined in the source code of the containing project will be triggers for the indexer.
+
+Since Diver stores events regardless of whether or not they will be triggers for the indexer, you may re-index the trace at any time. This is called __Reanalyzing__ the trace. This is discussed in the <a href="#ExploringYourCode">Exploring Your Code</a> section under <a href="#GainingADifferentPerspective">Gaining a Different Perspective</a>.
+
+h2. The Diver Perspective
+
+The trace launches have been associated with a new perspective called the __Diver Perspective__. It has been designed to contain the different elements you need to be productive in your program understanding/reverse engineering tasks. When you launch your application, you may be prompted to switch to the Diver Perspective. Select "yes" to open it.
+
+!../images/launching/switchperspective.png!
+
+
+The Diver Perspective contains six regions by default. What is contained in those regions will be discussed further in other portions of this documentation. What follows is a brief overview.
+
+!../images/launching/perspective.png!
+
+# *Java Area* This area contains structured views pertaining to the Java language and your source code. Specifically, the standard Package Explorer is held here. In Diver, the Package Explorer has been enhanced in several ways to aid your reverse engineering tasks. These are been covered in the section titled <a href="#ExploringYourCode">Exploring Your Code</a>.
+# *Source Code Area* Diver has been tightly integrated with the JDT to help you better understand your software. The views in Diver link to your source to help you find key elements of your traced program. Diver also extends the source code view to give you more clues about how your software ran. These are discussed in the sections <a href="#DivingIntoYourTrace">Diving Into Your Trace</a> and <a href="#ExploringYourCode">Exploring Your Code</a>.
+# *Outline Area* Here you will find the standard outline view for your editors, as well as a special Trace Outline which links to the Thread Sequence View (seen in area number five). This area is discussed further in <a href="#DivingIntoYourTrace">Diving Into Your Trace</a>.
+# *Trace Area* Diver keeps several databases of all of the traces that you have run in your workbench. They can be accessed in this area of the perspective. It is discussed in <a href="#DivingIntoYourTrace">Diving Into Your Trace</a> and <a href="#ExploringYourCode">Exploring Your Code</a>.
+# *Visualization Area* Diver currently offers one visualization (with more planned) of your trace to help you to understand how your program runs. This area also contains the standard console. <a href="#DivingIntoYourTrace">Diving Into Your Trace</a> details the features of the visualization. <a href="#ExploringYourCode">Exploring Your Code</a> discusses its integration with the rest of the Diver tools.
+# *Debug Area* This area contains standard views for running and debugging applications, including the Debug, Variables, and Breakpoint views. The Debug View is integral to the operation of diver, and is discussed further in the section <a href="#ControllingTheTrace">Controlling The Trace</a>.
+
+h2. Controlling The Trace
+
+Performing real-time logging of programs can have an adverse effect on the performance of those programs. So, Diver offers the ability for users to control, and log, exactly when the application is being traced and when it is not. This functionality is exposed through the Debug view via two new buttons in the toolbar:
+
+# *Pause/Resume Trace* This is probably the most important action that you will use during the execution of your program. It is executed through a toggle button with two states. The first state is the __Resume__ (i.e. __currently paused__) state. It is indicated by an !../images/launching/play_icon.png! icon. While in this state, Diver will not log any information about the current application, helping to improve its speed. Pressing the button in this state will cause Diver to begin or resume tracing of your program, at which point it will switch to the __Pause__ (i.e. __currently tracing__) state, indicated by !../images/launching/pause_icon.png!. Pressing the button in this state will cause it to return to the __Resume__ state. Note that by default, Diver will start your application in the __Resume__ state, and will not log any events until you press this button. You can change this behaviour as indicated in the section <a href="#SettingUptheTrace">Setting Up the Trace</a>.
+# *View Trace Duration* Indicated by a !../images/launching/clock_icon.png!, this action allows you to open a window which indicates the amount of time elapsed since the start of your application. This may be useful for when you are trying to isolate particular events in your trace.
+
+h2. Launching An Eclipse Application
+
+Diver also offers the ability to launch an Eclipse Application trace. Everything that has been discussed in this document also applies to Eclipse traces, but with one notable exception. <a href="#SettingUptheTrace">Setting Up the Trace</a> indicated that it is possible to filter the analysis of your trace to methods that appear only within the project that encapsulates your program. Such a filter does not make sense in terms of Eclipse applications, which are normally dependent on numerous projects which represent plug-ins/bundles for the application. So, instead of offering a filter for the associated project, Eclipse traces will, by default, filter to plug-ins defined in your workspace. Everything else runs in the same manner as indicated in the rest of this document.
+
+h2. Debugging With Diver
+
+You can also launch your traces in Debug mode. This may help you to target your traces more effectively. For example, you may know that a feature that you are trying to investigate always occurs within the context of a specific method call, but you don't know when it occurs after that method is called. You can set a breakpoint on that method, and keep your trace paused until that breakpoint is hit. Once the breakpoint is hit, resume the trace, and step out of the method. Once again, pause the trace. Now, you will have traced everything that occurred within the method of interest, but nothing else.
+
+h1. Diving Into Your Trace
+
+Diver offers interactive visualizations designed to help you navigate through your traced programs. They help you to see what occurred and in what context. This section will explain to you some of the key features of the visualizations.
+
+h2. Introducing the Program Traces View
+
+The Program Traces View is the central place to view and organize your traces. It is a simple tree viewer that offers a lot of functionality. First, and foremost, it offers you access to your traces. We will be discussing only its most basic features here. It will be discussed more in following sections. For now, we will get started with a simple picture.
+
+!../images/diving/program traces.png!
+
+The Program Traces View always displays your traces as a four-level hierarchy, organized in the following way:
+
+* <Trace Launch Name>
+** <Date of Trace>
+*** <Trace Launch Details> [Trace Time]
+**** <Traced Threads>...
+
+For example, the above picture shows us that the launch __Tetris__ was executed once on August 31st, 2009; that it was a Java Application trace executed at 3:29 PM and it contained 19 threads. You may notice, as well, a column of amber dots to the right of the view. They are important to the features of Diver, but we will not be discussing them just yet. What is important for now is that this view gives us access to the executed threads of our Java program. Through it, we can open an important visualization for our traces: the Thread Sequence View. Double clicking on any thread in the Program Traces View will open that thread as a sequence diagram in the Thread Sequence View. The next few sections describe the functionality of this view.
+
+h2. Sequence Diagrams: An Overview
+
+The major visualization provided by Diver is the interactive sequence diagram provided by the Thread Sequence View. It is based on UML2 sequence diagrams, but with some enhancements and changes. This section describes sequence diagrams and their function.
+
+Sequence diagrams are designed to display the sequential passing of messages between objects in a system. This makes them suitable for system in which the functionality can be expressed as an ordered set of operations performed on or by the elements of that system. Hence, they are good visualizations for the operations in an object-oriented program's threads, since all operations on an object occur at specific times. Below is an illustration of a sequence diagram in Diver.
+
+!../images/diving/sequencediagram.png!
+
+There are numerous elements to a sequence diagram. Each of them are numbered in the above image. A brief description of each is given below, followed by a more in-depth discussion
+
+# *Classifiers* These images at the top of the screen describe the objects within a system, and their kind.
+# *Life Lines* Represented by dashed vertical lines underneath the classifiers, these represent the time-span within the system that an object is "alive". Activation boxes appear on life lines.
+# *Activation Boxes* These are rectangular boxes that appear on a lifeline. They represent the time in the system that an object is active; i.e. the time that an object is performing an operation, or responding to a message.
+# *Messages* These are shown as arrows passing between activation boxes, and represent "messages" being passed between objects. Messages can either cause an object to become active (solid arrows ending at the beginning of a new activation box), or they can relinquish activity back to a calling object (dashed arrows beginning at the end of an activation box).
+# *Groups* Also known as *combined fragments*. These are boxes that surround messages and activation boxes on lifelines. They group any related set of messages.
+
+The following sections describe in detail how each of the visual elements are utilized within Diver.
+
+h3. Classifiers
+
+Classifiers are used to describe the kinds of objects that are alive during a system's execution, and they are always tied to lifelines. In a typical UML2 sequence diagram, there would by one classifier for every object in the system. Objects can be of various kinds (human __actors__, software __objects__, disk __data-stores__). However, indicating a classifier for every object in a system quickly becomes overwhelming, as a system may include many, many __millions__ of objects. So, Diver only indicates a classifier for each __class__ in the system, as well as a special __user__ class which simply represents the "start" of the system, initiated by you, the user.
+
+Classes are indicated by simple rectangles at the top of a lifeline. The user is indicated by a simple "stick-man" figure at the top of the lifeline. Classes may also be decorated with a pictorial icon. This occurs when Diver is able to find the source-code associated with a particular class, and so can infer further information about the class (such as its visibility). The icons should be familiar to users of Eclipse's Java Development Tools.
+
+Diver also offers a third kind of classifier which is not typical to UML2: packages. These are used to indicate when you have chosen to hide certain aspects of the trace by grouping lifelines by the packages that the classes are defined in. This feature is covered more in the following section.
+
+h3. Life Lines
+
+UML2 is a static modelling language. It is not designed for user interaction. Diver, on the other hand, is designed for user interaction. So Diver both extends and limits UML2 in order to facilitate interaction. One of the first places that this occurs is within the lifeline.
+
+The first thing that you may notice when you open a thread in the Thread Sequence View is that it doesn't look like much work is done in it. There will be only one classifier, one lifeline, and one activation box visible -- all of them belonging to you, the user. There is likely more going on.
+
+The reason that there is only one lifeline visible is because, in Diver, lifelines are only shown if there is a visible path of messages to at least one activation box on the lifeline. By default, only one activation box is visible: the start of the program, initiated by the user. The next section will discuss more about interacting with activation boxes. However, you can try to interact with the start of your program by selecting the little '+' symbol at the top of the first activation box. If anything more occurs in the visualized thread (there may not be -- it could have been idle during your program), further messages, classifiers, lifelines, and activation boxes will appear.
+
+In standard UML2, lifelines are used to indicate the full life-span of an object. That is, they begin when an object is created, and end when an object is destroyed. In Diver, however, they all begin at the same time, and they last as long as there are visible activation boxes on the lifeline. This is done in order to facilitate some of the advanced features that have been built in to the viewer, which cannot be expressed in static UML2. One of those advanced features is lifeline grouping.
+
+Java applications often make use of many utility and system classes that are required to perform low-level operations. For example, even before the classes that you define can be used, they must be first loaded from disk. This involves invoking methods on the class @java.lang.ClassLoader@, which will operate on the file system, involving calls on many classes in the @java.io@ package. This may result in a sequence diagram that displays many hundreds of uninteresting lifelines. An unfiltered trace of a simple HelloWorld application, for example, uses more than 45 classes. Diver offers the ability to decrease the number of lifelines that are displayed by giving you the ability to group them by their containing packages. That is done as follows.
+
+First, if you examine the view, you will see a grey bar with a symbol that looks like a small bold *w* on it. This is a selectable sash which when dragged down will reveal a "package pane" above your main diagram. There, you will see numerous folder-shaped icons organized as a tree. These are the packages utilized in your software:
+
+!../images/diving/sequence-package.png!
+
+If you mouse-over a package icon, it will grow larger so that you can see the full package name. Selecting it will "pin" it to this size, and display lines connecting to the classifiers for the classes that are contained in the package. Conversely, selecting a classifier on a lifeline will display a line connecting it to its containing package. When you mouse over a package, you will also see a small box with a '-' embedded in it. Selecting this box will "collapse" the package. The visual effect of this is that all of the lifelines for classes contained in that package will be "grouped" into a single lifeline with the package as its classifier. The image below shows the effect of collapsing the @java@ package.
+
+!../images/diving/sequence-package-collapse.png!
+
+Note that collapsing a package will also cause all of its sub-packages to be collapsed onto the same lifeline. You will see a small '+' sign to the top-left of the new package classifier. Selecting this symbol will return the diagram to its previous state.
+
+h3. Activation Boxes
+
+Activation boxes represent activity in an object. In Java, objects perform processing (i.e., are made active) when methods are called on them. So, you can understand activation boxes as work being performed within a Java method.
+
+As mentioned previously, you won't see much in your diagram unless you interact a little with the activation boxes. Activation boxes in the Diver sequence diagrams act similarly to the nodes in a standard tree viewer. You can think of a sequence diagram like a large tree structure where messages originating from an activation box cause that activation box to have "children" at the other end of the message. In fact, program traces produce what are often called "call trees" because they do have a strict tree structure.
+
+So, the basic interaction that you have with an activation box is to expand or collapse it much like a tree viewer. Expanding an activation box will reveal the messages that originate from that activation box. These messages will be of two kinds: calls or returns. Calls will result in further "child" activations, and "returns" simply indicate that an activation on a class is ending, and returning to the previous activation. More will be said about messages in the following section. Below is an image that has several activation boxes expanded.
+
+!../images/diving/sequence-activation-expand.png!
+
+Looking at these pictures, you may notice that different activation boxes appear in different colours. This is because Diver uses the source code associated with your program to infer information about the program and display it to you in the sequence diagram. Activation boxes are associated with Java methods. Their colour indicates the visibility of the methods. These colours are related to those that you may be used to from the Eclipse JDT. Public methods are indicated by green activation boxes; protected ones by orange; private by red; and package-level by blue. If no source code can be found for a method, its corresponding activation boxes will be presented in white.
+
+h3. Messages
+
+There are four basic ways that Java passes messages between objects: method calls; method returns; exception throws; and exception catches. Thrown exceptions behave essentially like cascading method returns, until the exception is caught. So, this is how they are treated in the Diver sequence diagrams.
+
+In Diver, method calls appear as messages from existing activations to new activations on another object (or the same object). They can be revealed by expanding the activation boxes on which they originate. The label on the message will be the name of the method that was called, followed by a parenthesised list of its parameter types. If source code for the method can be found, the label will also be decorated by a small icon indicating various attributes of that method (is it public? is it static?, etc.). These icons are the familiar method icons provided by the JDT. Returns and thrown exceptions are indicated as messages returning from the end of an activation box back to the originating activation box. They are labelled with the return type for the method.
+
+You can interact with method calls using your mouse. When you hover over a method call, the entire call-tree originating at that call is made bold in the view. If you select a method call, then message is made bold, and the sub-calls are highlighted in the view.
+
+h3. Groups
+
+Java can be a well-structured programming language in which method calls are grouped into coherent groups using blocks. Blocks are typically part of conditional decision making structures such as @if@ statements, loops, or error handling. If Diver can find source code for your trace, it does some sophisticated analysis to link the messages in the trace with the blocks of code in which they occur. This helps to give you the context in which a message occurs, and it also helps to simplify the diagram.
+
+Diver is able to distinguish three different kinds of groups: conditional groups (@if/else/case@ statements); error handling (@try/catch@); and loops (@for/while/do..while/foreach@). Each has its own colour. Conditional groups are displayed in green, error handling groups are in red, and loop groups are in blue. The label of the group is set to the condition or the source code that defines the group.
+
+Like lifelines and activations, they can be expanded and collapsed as well. By default, groups are expanded so that you can see all of the messages that they contain. Collapsing a group hides all of the messages and activations inside of it, making your diagram smaller. The image below shows the effects of collapsing several groups.
+
+!../images/diving/sequence-block-collapse.png!
+
+Loop groups are a special kind of group. They are used not only to organize messages that occur within the loop's block, but they also help to decrease the size of the displayed diagram. Many java programs will contain loops that iterate hundreds, or thousands of times. Diver hides the repeated messages within loop groups, potentially decreasing the size of the diagram by many thousands of times.
+
+There is one problem, though. It is likely the case that different iterations of the same loop will, in fact, have very different effects. So, Diver does make it possible for you to look at all of the effects of a loop by "swapping" iterations. You can swap an iteration by right-clicking on the label for the loop. A drop-down list will appear that will allow you to select the iteration that you would like to inspect. If there are more than 10 iterations, you are given the option to select a specific iteration using a dialog.
+
+!../images/diving/sequence-loop-iteration.png!
+
+h4. Controlling Groups
+
+The groups in the Diver sequence diagram help to gain an understanding about control flow and program
+state without having to look at the source code itself. Sometimes, though, you might find that they clutter your view. There are two ways that you can control the way that groups are displayed in the Diver sequence diagram. They can be found in the drop-down menu of the view's toolbar.
+
+!../images/diving/sequence-menu.png!
+
+- *Use Combined Fragments* If this menu item is unselected, then the message groups will not be displayed in the Diver sequence diagram. You will not be able to see program state or control flow, but the diagram
+will be a little smaller (assuming you have not collapsed any of the combined fragments).
+
+- *Compact Loops* Diver normally shows only one iteration of a loop at a time. You can see other iterations by using the sequence diagram's context menu. If you would like to see all iterations at once,
+you can deselect this option.
+