Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnithra P Janakiraman2010-01-29 07:19:45 +0000
committerAnithra P Janakiraman2010-01-29 07:19:45 +0000
commit0d32419fa59de317451a1663af30e308ff1a2f94 (patch)
tree00464c9c45a975d5a685816461ec2ecbbc54a816 /systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard
parent9adbd0c1b70d3a5ab00338ddfae6f6204861bd12 (diff)
downloadorg.eclipse.linuxtools-0d32419fa59de317451a1663af30e308ff1a2f94.tar.gz
org.eclipse.linuxtools-0d32419fa59de317451a1663af30e308ff1a2f94.tar.xz
org.eclipse.linuxtools-0d32419fa59de317451a1663af30e308ff1a2f94.zip
Initial Checkin of Dashboard
Diffstat (limited to 'systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard')
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/.classpath7
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/.project28
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/META-INF/MANIFEST.MF25
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter$1.classbin0 -> 1142 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter$DashboardShimButtonController.classbin0 -> 3214 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter.classbin0 -> 10899 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite$InternalCompositeDragListener.classbin0 -> 1674 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite$InternalCompositeDropListener.classbin0 -> 1795 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite.classbin0 -> 7660 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardPerspective.classbin0 -> 2359 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardSessionSettings.classbin0 -> 568 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ActivateGraphAction.classbin0 -> 4609 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/CustomAction.classbin0 -> 1469 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ImportModuleLocationAction.classbin0 -> 4362 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$1.classbin0 -> 985 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$2.classbin0 -> 985 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$3.classbin0 -> 1658 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$4.classbin0 -> 2824 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction.classbin0 -> 6287 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$1.classbin0 -> 971 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$2.classbin0 -> 971 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$3.classbin0 -> 1644 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$4.classbin0 -> 2933 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction.classbin0 -> 11905 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopGraphAction.classbin0 -> 3458 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$1.classbin0 -> 978 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$2.classbin0 -> 1077 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$3.classbin0 -> 2762 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$4.classbin0 -> 2059 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction.classbin0 -> 8218 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/hidden/GetSelectedModule.classbin0 -> 3527 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardCloseMonitor.classbin0 -> 2091 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardPlugin.classbin0 -> 2243 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/Localization.classbin0 -> 1304 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/localization.properties14
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferenceConstants.classbin0 -> 704 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferencePage.classbin0 -> 2749 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/PreferenceInitializer.classbin0 -> 1420 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleData.classbin0 -> 683 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleTreeNode.classbin0 -> 732 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphData.classbin0 -> 806 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsLocator.classbin0 -> 3436 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsTreeBuilder.classbin0 -> 4004 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardMetaData.classbin0 -> 6881 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModule.classbin0 -> 1268 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleFileFilter.classbin0 -> 948 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleLocator.classbin0 -> 3443 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleTreeBuilder.classbin0 -> 4665 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/GraphTreeNode.classbin0 -> 719 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ModuleTreeNode.classbin0 -> 711 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ActiveModuleBrowserView$ViewLabelProvider.classbin0 -> 2677 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ActiveModuleBrowserView.classbin0 -> 8489 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardGraphsBrowserView$ViewLabelProvider.classbin0 -> 2701 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardGraphsBrowserView.classbin0 -> 5912 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardModuleBrowserView$1.classbin0 -> 1014 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardModuleBrowserView.classbin0 -> 3053 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView$1.classbin0 -> 1093 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView$2.classbin0 -> 1934 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView.classbin0 -> 10031 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView$ViewContentProvider.classbin0 -> 2199 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView$ViewLabelProvider.classbin0 -> 2160 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView.classbin0 -> 3094 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView$ViewContentProvider.classbin0 -> 2199 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView$ViewLabelProvider.classbin0 -> 3730 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView.classbin0 -> 2966 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/build.properties10
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/activeModulesBrowser.html17
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/concepts.html15
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/modules.html27
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/modulesBrowser.html18
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/dashboardTutorial.html66
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/gettingStarted.html12
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/activeModules.pngbin0 -> 8801 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/closeButton.pngbin0 -> 168 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/expandButton.pngbin0 -> 153 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/graphExpanded.pngbin0 -> 13937 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/moduleBrowser.pngbin0 -> 6916 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/multipleRunningModules.pngbin0 -> 48236 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/rightleft.pngbin0 -> 160 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/runningDashboard.pngbin0 -> 44698 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/smallGraph.pngbin0 -> 9069 bytes
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/frequentlyAskedQuestions.html33
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/menu/preferencesbox1.pngbin0 -> 40679 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/menu/viewbox1.pngbin0 -> 17660 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/dash.pngbin0 -> 1765 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/graphing.pngbin0 -> 1668 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/ide.pngbin0 -> 866 bytes
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/import_wiz.gifbin0 -> 327 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/mod_obj.gifbin0 -> 366 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/pause_script.gifbin0 -> 338 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/start_script.gifbin0 -> 528 bytes
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/stop_obj.gifbin0 -> 215 bytes
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/menus.html48
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/preferences.html120
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/reference.html17
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/toolbars.html30
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/creatingModules.html52
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/graphInteraction.html15
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/addedModule.pngbin0 -> 8131 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/closeButton.pngbin0 -> 168 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/expandButton.pngbin0 -> 153 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/exportScript.pngbin0 -> 61215 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/importDialogue.pngbin0 -> 52375 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/rightleft.pngbin0 -> 160 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/script_details.gifbin0 -> 8143 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/zoom.pngbin0 -> 1319 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/importModules.html11
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/runningModules.html31
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/tasks.html16
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/toc.html49
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/tocconcepts.xml8
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/tocgettingstarted.xml6
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/tocreference.xml9
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/toctasks.xml10
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/bomb.pngbin0 -> 793 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/close.gifbin0 -> 73 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/collapse.gifbin0 -> 66 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/expand.gifbin0 -> 64 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/maximize.gifbin0 -> 82 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/restore.gifbin0 -> 76 bytes
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/import_wiz.gifbin0 -> 327 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/pause_script.gifbin0 -> 338 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/start_script.gifbin0 -> 528 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/stop_script.gifbin0 -> 215 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/misc/graph_act.gifbin0 -> 109 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/misc/graph_dis.gifbin0 -> 163 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/misc/module_obj.gifbin0 -> 207 bytes
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/perspective_obj.gifbin0 -> 374 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/views/active_mod_obj.gifbin0 -> 243 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/views/dashboard_obj.gifbin0 -> 358 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/views/mod_obj.gifbin0 -> 366 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/IO.Cumulative_IO_Activity.dashbin0 -> 602 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/IO.IO_Activity_by_Process.dashbin0 -> 620 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Network.Processwise_Network_Traffic.dashbin0 -> 571 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Process.Profile_Kernel_functions.dashbin0 -> 517 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Profiling.Functions_profile.dashbin0 -> 584 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Profiling.Unnecessary_Polling_Operations.dashbin0 -> 711 bytes
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/plugin.properties39
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/plugin.xml292
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter.java328
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite.java493
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardPerspective.java74
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardSessionSettings.java24
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ActivateGraphAction.java120
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/CustomAction.java27
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ImportModuleLocationAction.java103
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction.java229
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction.java416
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopGraphAction.java86
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction.java269
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/hidden/GetSelectedModule.java115
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardCloseMonitor.java47
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardPlugin.java92
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/Localization.java22
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/localization.properties14
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferenceConstants.java20
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferencePage.java57
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/PreferenceInitializer.java33
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleData.java28
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleTreeNode.java26
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphData.java31
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsLocator.java94
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsTreeBuilder.java115
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardMetaData.java212
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModule.java59
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleFileFilter.java32
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleLocator.java95
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleTreeBuilder.java138
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/GraphTreeNode.java25
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ModuleTreeNode.java25
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ActiveModuleBrowserView.java235
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardGraphsBrowserView.java150
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardModuleBrowserView.java98
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView.java357
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView.java152
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView.java260
-rwxr-xr-xsystemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/toc.xml17
177 files changed, 5743 insertions, 0 deletions
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/.classpath b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/.classpath
new file mode 100644
index 0000000000..751c8f2e50
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/.project b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/.project
new file mode 100644
index 0000000000..f464cf5e2d
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.linuxtools.systemtap.ui.dashboard</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/META-INF/MANIFEST.MF b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/META-INF/MANIFEST.MF
new file mode 100644
index 0000000000..24755db51c
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Dashboard Plug-in
+Bundle-SymbolicName: org.eclipse.linuxtools.systemtap.ui.dashboard;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Activator: org.eclipse.linuxtools.systemtap.ui.dashboard.internal.DashboardPlugin
+Bundle-Vendor: IBM
+Bundle-Localization: plugin
+Export-Package: org.eclipse.linuxtools.systemtap.ui.dashboard,
+ org.eclipse.linuxtools.systemtap.ui.dashboard.internal,
+ org.eclipse.linuxtools.systemtap.ui.dashboard.preferences,
+ org.eclipse.linuxtools.systemtap.ui.dashboard.structures,
+ org.eclipse.linuxtools.systemtap.ui.dashboard.views
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.linuxtools.systemtap.ui.structures,
+ org.eclipse.linuxtools.systemtap.ui.logging,
+ org.eclipse.linuxtools.systemtap.ui.graphingapi.ui,
+ org.eclipse.linuxtools.systemtap.ui.systemtapgui,
+ org.eclipse.linuxtools.systemtap.ui.consolelog
+Eclipse-AutoStart: true
+Import-Package: org.eclipse.linuxtools.systemtap.ui.graphicalrun.structures,
+ org.eclipse.linuxtools.systemtap.ui.graphing,
+ org.eclipse.linuxtools.systemtap.ui.ide,
+ org.eclipse.linuxtools.systemtap.ui.ide.structures
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter$1.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter$1.class
new file mode 100644
index 0000000000..2cd88dcd78
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter$1.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter$DashboardShimButtonController.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter$DashboardShimButtonController.class
new file mode 100644
index 0000000000..107ae902aa
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter$DashboardShimButtonController.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter.class
new file mode 100644
index 0000000000..a12605d34d
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite$InternalCompositeDragListener.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite$InternalCompositeDragListener.class
new file mode 100644
index 0000000000..5d61eb0135
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite$InternalCompositeDragListener.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite$InternalCompositeDropListener.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite$InternalCompositeDropListener.class
new file mode 100644
index 0000000000..2546f222f8
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite$InternalCompositeDropListener.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite.class
new file mode 100644
index 0000000000..f097274d0a
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardPerspective.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardPerspective.class
new file mode 100644
index 0000000000..a38abb0560
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardPerspective.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardSessionSettings.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardSessionSettings.class
new file mode 100644
index 0000000000..4db782c210
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardSessionSettings.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ActivateGraphAction.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ActivateGraphAction.class
new file mode 100644
index 0000000000..225962f1e8
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ActivateGraphAction.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/CustomAction.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/CustomAction.class
new file mode 100644
index 0000000000..29bd00b598
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/CustomAction.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ImportModuleLocationAction.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ImportModuleLocationAction.class
new file mode 100644
index 0000000000..bf283bf963
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ImportModuleLocationAction.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$1.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$1.class
new file mode 100644
index 0000000000..c38152bf2f
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$1.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$2.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$2.class
new file mode 100644
index 0000000000..02ef8d0896
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$2.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$3.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$3.class
new file mode 100644
index 0000000000..0b291d26d9
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$3.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$4.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$4.class
new file mode 100644
index 0000000000..2f18f92bcd
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction$4.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction.class
new file mode 100644
index 0000000000..d90efa8551
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$1.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$1.class
new file mode 100644
index 0000000000..6a6e938cd5
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$1.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$2.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$2.class
new file mode 100644
index 0000000000..bb8876fa68
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$2.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$3.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$3.class
new file mode 100644
index 0000000000..81044aa66f
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$3.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$4.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$4.class
new file mode 100644
index 0000000000..9eff279fb7
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction$4.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction.class
new file mode 100644
index 0000000000..1d5c114f97
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopGraphAction.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopGraphAction.class
new file mode 100644
index 0000000000..62630fc649
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopGraphAction.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$1.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$1.class
new file mode 100644
index 0000000000..7948554e0a
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$1.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$2.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$2.class
new file mode 100644
index 0000000000..00728efd02
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$2.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$3.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$3.class
new file mode 100644
index 0000000000..341271c5ca
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$3.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$4.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$4.class
new file mode 100644
index 0000000000..881d397729
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction$4.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction.class
new file mode 100644
index 0000000000..fbc926a5ed
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/hidden/GetSelectedModule.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/hidden/GetSelectedModule.class
new file mode 100644
index 0000000000..56a49b93fe
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/hidden/GetSelectedModule.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardCloseMonitor.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardCloseMonitor.class
new file mode 100644
index 0000000000..fbde3e3780
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardCloseMonitor.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardPlugin.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardPlugin.class
new file mode 100644
index 0000000000..545ab26e3c
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardPlugin.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/Localization.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/Localization.class
new file mode 100644
index 0000000000..4d803d8e50
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/Localization.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/localization.properties b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/localization.properties
new file mode 100644
index 0000000000..231831b1a6
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/localization.properties
@@ -0,0 +1,14 @@
+ImportModuleLocationAction.FileIsNull=File is null
+ImportModuleLocationAction.Problem=Problem
+ImportModuleLocationAction.ImportDashboardModules=Import Dashboard Modules
+
+RunModuleAction.ModuleIsRunning=This module is already running\!
+RunModuleAction.Problem=Problem
+
+DashboardCloseMonitor.StillRunning=There are modules still running, are you sure you want to close?
+
+DashboardPreferencePage.DashboardPreferences=Dashboard Preferences
+DashboardPreferencePage.AdditionalDirectories=Additional &module directories:
+DashboardPreferencePage.ModuleDirectory=Module Directory
+DashboardPreferencePage.RefreshDelay=&Refresh delay (ms):
+DashboardPreferencePage.ExamplesDir=SystemTap Examples Directory:
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferenceConstants.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferenceConstants.class
new file mode 100644
index 0000000000..6f4f3cb376
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferenceConstants.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferencePage.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferencePage.class
new file mode 100644
index 0000000000..41265a9b6a
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferencePage.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/PreferenceInitializer.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/PreferenceInitializer.class
new file mode 100644
index 0000000000..d15f184a91
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/PreferenceInitializer.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleData.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleData.class
new file mode 100644
index 0000000000..ed8538c498
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleData.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleTreeNode.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleTreeNode.class
new file mode 100644
index 0000000000..5dac9062ba
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleTreeNode.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphData.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphData.class
new file mode 100644
index 0000000000..95cc147a33
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphData.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsLocator.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsLocator.class
new file mode 100644
index 0000000000..714d234faa
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsLocator.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsTreeBuilder.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsTreeBuilder.class
new file mode 100644
index 0000000000..d1e2facb18
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsTreeBuilder.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardMetaData.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardMetaData.class
new file mode 100644
index 0000000000..da8d79550a
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardMetaData.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModule.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModule.class
new file mode 100644
index 0000000000..5dfb90ff5e
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModule.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleFileFilter.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleFileFilter.class
new file mode 100644
index 0000000000..672115e9d2
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleFileFilter.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleLocator.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleLocator.class
new file mode 100644
index 0000000000..b338e9196d
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleLocator.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleTreeBuilder.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleTreeBuilder.class
new file mode 100644
index 0000000000..fab96135c3
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleTreeBuilder.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/GraphTreeNode.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/GraphTreeNode.class
new file mode 100644
index 0000000000..68dfc994bd
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/GraphTreeNode.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ModuleTreeNode.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ModuleTreeNode.class
new file mode 100644
index 0000000000..a375cf3430
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ModuleTreeNode.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ActiveModuleBrowserView$ViewLabelProvider.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ActiveModuleBrowserView$ViewLabelProvider.class
new file mode 100644
index 0000000000..3b8884c7f3
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ActiveModuleBrowserView$ViewLabelProvider.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ActiveModuleBrowserView.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ActiveModuleBrowserView.class
new file mode 100644
index 0000000000..4a696a0d49
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ActiveModuleBrowserView.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardGraphsBrowserView$ViewLabelProvider.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardGraphsBrowserView$ViewLabelProvider.class
new file mode 100644
index 0000000000..8f8a1bf579
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardGraphsBrowserView$ViewLabelProvider.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardGraphsBrowserView.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardGraphsBrowserView.class
new file mode 100644
index 0000000000..7cbfb82860
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardGraphsBrowserView.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardModuleBrowserView$1.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardModuleBrowserView$1.class
new file mode 100644
index 0000000000..8cbaecb9df
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardModuleBrowserView$1.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardModuleBrowserView.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardModuleBrowserView.class
new file mode 100644
index 0000000000..b5d7daf186
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardModuleBrowserView.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView$1.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView$1.class
new file mode 100644
index 0000000000..3d6c40c13a
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView$1.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView$2.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView$2.class
new file mode 100644
index 0000000000..0d6f010670
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView$2.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView.class
new file mode 100644
index 0000000000..a520d5d9f3
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView$ViewContentProvider.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView$ViewContentProvider.class
new file mode 100644
index 0000000000..7accc61082
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView$ViewContentProvider.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView$ViewLabelProvider.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView$ViewLabelProvider.class
new file mode 100644
index 0000000000..cb9f48247b
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView$ViewLabelProvider.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView.class
new file mode 100644
index 0000000000..4ddb0be15e
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView$ViewContentProvider.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView$ViewContentProvider.class
new file mode 100644
index 0000000000..8703428d59
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView$ViewContentProvider.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView$ViewLabelProvider.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView$ViewLabelProvider.class
new file mode 100644
index 0000000000..0765d0d045
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView$ViewLabelProvider.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView.class b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView.class
new file mode 100644
index 0000000000..87948a54c8
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/bin/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView.class
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/build.properties b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/build.properties
new file mode 100644
index 0000000000..f7e08a69e6
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/build.properties
@@ -0,0 +1,10 @@
+source.. = src/
+output.. = bin/
+bin.includes = plugin.xml,\
+ META-INF/,\
+ .,\
+ icons/,\
+ documentation/,\
+ toc.xml,\
+ modules/,\
+ plugin.properties
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/activeModulesBrowser.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/activeModulesBrowser.html
new file mode 100644
index 0000000000..d1403463d9
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/activeModulesBrowser.html
@@ -0,0 +1,17 @@
+<a href="../toc.html">Table of Contents</a> > <a href="concepts.html">Concepts</a>
+
+<h2>
+Active Modules Browser
+</h2>
+
+The Active Modules Browser displays each module currently active.<br><br>
+
+<img src="../gettingstarted/images/activeModules.png"><br><br>
+
+The following right click options exist for the graphs embedded in each of the active modules:
+<ul>
+<li><b>Stop Graph</b> - Stops the graph from updating.</li>
+<li><b>Activate Graph</b> - Instructs a formerly stopped graph to continue updating.</li>
+</ul>
+
+To view all modules available, switch to the <a href="modulesBrowser.html">Modules Browser</a>. \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/concepts.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/concepts.html
new file mode 100644
index 0000000000..1e8167e970
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/concepts.html
@@ -0,0 +1,15 @@
+<a href="../toc.html">Table of Contents</a>
+
+<h2>
+Concepts
+</h2>
+
+This section of the Dashboard User Guide details conceptual topics of the application; the major
+components, what they do, and how how you interact with them.
+
+<ol>
+<li><a href="modules.html">Modules</a></li>
+<li><a href="modulesBrowser.html">Modules Browser</a></li>
+<li><a href="activeModulesBrowser.html">Active Modules Browser</a></li>
+<li><a href="../tasks/creatingModules.html">Creating Modules</a></li>
+</ol> \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/modules.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/modules.html
new file mode 100644
index 0000000000..faa34384e7
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/modules.html
@@ -0,0 +1,27 @@
+<a href="../toc.html">Table of Contents</a> > <a href="concepts.html">Concepts</a>
+
+<h2>
+Modules
+</h2>
+
+A module is a package used in the Dashboard perspective, containing a SystemTap script and associated metadata.<br><br>
+
+<a name="families">
+<h3>
+Module Families
+</h3>
+
+Modules are grouped in "module families", groups of modules that are related. One example is the Hard Disk
+module family which contains the module Disk Access:<br><br>
+
+<img src="../gettingstarted/images/moduleBrowser.png"><br><br>
+
+<h3>
+Multiple Graphs
+</h3>
+
+Often, as in the case of the Disk Access module, modules will spawn multiple graphs on execution.<br><br>
+
+<img src="../gettingstarted/images/runningDashboard.png"><br><br>
+
+There are a number of different module families constructed for different analysis sets. \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/modulesBrowser.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/modulesBrowser.html
new file mode 100644
index 0000000000..702c46a3e5
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/concepts/modulesBrowser.html
@@ -0,0 +1,18 @@
+<a href="../toc.html">Table of Contents</a> > <a href="concepts.html">Concepts</a>
+
+<h2>
+Modules Browser
+</h2>
+
+The Modules Browser displays all the modules available to run, categorized by <a href="modules.html#families">
+module families</a>. Modules in each family can be viewed by expanding the appropriate module family name.<br><br>
+
+<img src="../gettingstarted/images/moduleBrowser.png"><br><br>
+
+From the Modules Browser the following options are available on right-clicking a module:
+<ul>
+<li><b>View Script</b> - Opens the module's SystemTap script in the IDE Perspective.</li>
+</ul>
+
+To view the currently active modules, switch to the <a href="activeModulesBrowser.html">Active Modules Browser</a>.
+
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/dashboardTutorial.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/dashboardTutorial.html
new file mode 100644
index 0000000000..331815fcf6
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/dashboardTutorial.html
@@ -0,0 +1,66 @@
+<a href="../toc.html">Table of Contents</a> > <a href="gettingStarted.html">Getting Started</a>
+
+<h2>
+Dashboard Tutorial
+</h2>
+
+The Dashboard Perspective is the most advanced part of SystemTap GUI. It is designed to allow users to browse
+and run prebuilt <a href="../concepts/modules.html">modules</a> in order to see multiple graphs updating in
+sequence.<br><br>
+
+For this tutorial we'll use one of the prebuilt modules to illustrate the user how the Dashboard perspective
+is used. Each module is part of a <a href="../concepts/modules.html#families">module family</a>, a collection of related
+modules. To start, switch to the Dashboard perspective. On the left you should see a browser titled "Modules".<br><br>
+
+<img src="images/moduleBrowser.png"><br><br>
+
+The <a href="../concepts/modulesBrowser.html">Module Browser</a> contains a list of modules available to run. Notice that there is another tab, "Active Modules", in the same pane. The
+<a href="../concepts/activeModulesBrowser.html">Active Modules Browser</a> allows you to browse the modules you currently have running. At this point, however, it
+will be empty; there are no modules currently running. Open the module family "Hard Disk" by clicking the arrow
+next to it's name. This will display each module associated in the "Hard Disk" module family.<br><br>
+
+We are going to be running the Disk Access module. This can be accomplished two ways. You may select it and
+<b><u>R</u>un-><u>R</u>un Script</b>. You can alternatively click the <b>Run Script</b> button in the Toolbar. SystemTap GUI will request the details of the Remote Server(ip address, username, password),
+enter the details to proceed. You should see a display similar to the following:<br><br>
+
+<img src="images/runningDashboard.png"><br><br>
+
+The Dashboard shows three graphs, each obtaining data from one script, each analyzing different components of disk access - bytes read,
+bytes written, and a multi-line graph illustrating both.<br><br>
+
+<img src="images/smallGraph.png"><br><br>
+
+Each graph comes with graph-specific options:
+<ul>
+<li><img src="images/expandButton.png"> - <b>Expand Graph</b> - This option opens a set of graph-unique options:
+<ul>
+<li><b>Zoom</b> - This option allows the user to increase and decrease the no of x-axis ticks.</li>
+</ul>
+</li>
+<li><img src="images/rightleft.png"> - <b>Close Zoom bar</b> - This hides the zoom bar.
+<li><img src="images/closeButton.png"> - <b>Close Graph</b> - This removes the graph from the viewer pane.</li>
+</ul>
+
+Take a moment to interact with these options to familiarize yourself with them.<br><br>
+
+<img src="images/graphExpanded.png"><br><br>
+
+<h3>
+Multiple Module Execution
+</h3>
+
+SystemTap GUI supports the execution of more than one module at one time. The currently running script does not
+not to be halted and the currently open graphs do not need to be closed, though they may be if desired. To
+execute another module, simply select and run it as described above. If you were to
+run a module in the Memory module family for example, a new tab will be opened titled 'Memory' in addition to the
+current tab for 'Hard Disk'.<br><br>
+
+Up to 8 graphs may be open in each tab at any given time. Drag and drop support is included for the graph types, permitting
+re-arrangement for ideal analysis. In addition, <b>Pausing</b> is also implemented in SystemTap GUI. You may pause
+any module by selecting <b><u>R</u>un-><u>P</u>ause Module</b>, or by selecting <b>Pause</b> from the toolbar. Know that this method of
+pausing is an illusion; the graph data is simply not updated while the script continues to run. This inability
+to truly pause is inherent in SystemTap itself. You can also stop the script using the above methods. This
+will halt the running script of that module and remove the graphs entirely from the view pane. It will not affect
+graphs or scripts associated with any other modules. If at any time you are unsure of which modules are
+currently active you can check this by navigating to the <a href="../concepts/activeModulesBrowser.html">Active
+Modules Browser.</a><br><br>
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/gettingStarted.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/gettingStarted.html
new file mode 100644
index 0000000000..b3a48317cc
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/gettingStarted.html
@@ -0,0 +1,12 @@
+<a href="../toc.html">Table of Contents</a>
+
+<h2>
+Getting Started
+</h2>
+
+This section of the Dashboard User Guide covers the essentials of getting started using the Dashboard
+Perspective.
+
+<ol>
+<li><a href="dashboardTutorial.html">Dashboard Tutorial</a></li>
+</ol>
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/activeModules.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/activeModules.png
new file mode 100644
index 0000000000..261f3ed4c5
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/activeModules.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/closeButton.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/closeButton.png
new file mode 100644
index 0000000000..73af7d25a2
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/closeButton.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/expandButton.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/expandButton.png
new file mode 100644
index 0000000000..a342299921
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/expandButton.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/graphExpanded.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/graphExpanded.png
new file mode 100644
index 0000000000..870bfe97c5
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/graphExpanded.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/moduleBrowser.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/moduleBrowser.png
new file mode 100644
index 0000000000..593cc299f4
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/moduleBrowser.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/multipleRunningModules.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/multipleRunningModules.png
new file mode 100644
index 0000000000..6e3994b052
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/multipleRunningModules.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/rightleft.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/rightleft.png
new file mode 100644
index 0000000000..cf1b16405b
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/rightleft.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/runningDashboard.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/runningDashboard.png
new file mode 100644
index 0000000000..1e0c827e9f
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/runningDashboard.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/smallGraph.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/smallGraph.png
new file mode 100644
index 0000000000..71f26fd2ea
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/gettingstarted/images/smallGraph.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/frequentlyAskedQuestions.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/frequentlyAskedQuestions.html
new file mode 100755
index 0000000000..f629c2c780
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/frequentlyAskedQuestions.html
@@ -0,0 +1,33 @@
+<a href="../toc.html">Table of Contents</a> > <a href="reference.html">Reference</a>
+
+<h2>
+Frequently Asked Questions
+</h2>
+
+This section details frequently asked questions relating to the Dashboard Perspective.<br><br>
+
+<b>
+Can more than one module be open at any given time?
+</b><br><br>
+
+A: SystemTap GUI supports the execution of more than one module at one time. The currently running script does not
+not to be halted and the currently open graphs do not need to be closed, though they may be if desired. To
+execute another module, simply select and run it as described previously . If you were to
+run the Page Faults module in the Memory module family for example, an additional tab will be created for
+the Memory module family <br><br>
+
+
+<b>
+How many graphs may be opened at one time?
+</b><br><br>
+
+A: Currently, 8 in each tab(i.e, 8 per module family). You may close graphs to make more room by using the closebox.
+<img src="../gettingstarted/images/closeButton.png"><br><br><br>
+
+<b>
+Is there an option to pause specific graphs?
+</b><br><br>
+
+A: No. You can pause or stop a specific module, which will in turn pause or stop the specific graphs associated
+with it, but you cannot pause or stop just one graph unless that module produces just one graph or you close all
+but that graph. \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/menu/preferencesbox1.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/menu/preferencesbox1.png
new file mode 100644
index 0000000000..31b0cbc9f1
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/menu/preferencesbox1.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/menu/viewbox1.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/menu/viewbox1.png
new file mode 100644
index 0000000000..28e5cd8db3
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/menu/viewbox1.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/dash.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/dash.png
new file mode 100644
index 0000000000..4e1dc2ee25
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/dash.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/graphing.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/graphing.png
new file mode 100644
index 0000000000..adfa0c2943
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/graphing.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/ide.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/ide.png
new file mode 100644
index 0000000000..43dacebd97
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/ide.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/import_wiz.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/import_wiz.gif
new file mode 100755
index 0000000000..d38085ad9c
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/import_wiz.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/mod_obj.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/mod_obj.gif
new file mode 100644
index 0000000000..8bbfd04204
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/mod_obj.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/pause_script.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/pause_script.gif
new file mode 100644
index 0000000000..161e3f594f
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/pause_script.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/start_script.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/start_script.gif
new file mode 100644
index 0000000000..d6b3bdcc37
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/start_script.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/stop_obj.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/stop_obj.gif
new file mode 100755
index 0000000000..dc47edf069
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/images/toolbars/stop_obj.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/menus.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/menus.html
new file mode 100755
index 0000000000..1a69588f87
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/menus.html
@@ -0,0 +1,48 @@
+<a href="../toc.html">Table of Contents</a> > <a href="reference.html">Reference</a>
+
+<h2>
+Dashboard Perspective Menus
+</h2>
+
+What follows is a comprehension list of the menu options available within the Systemtap GUI Dashboard Perspective.
+
+
+<h3>
+<u>F</u>ile
+</h3>
+<ul>
+<li><b><u>I</u>mport Module Location</b> - This option allows brings up a dialogue box prompting the user with the location of a module file which is then loaded into the <a href="../concepts/modulesBrowser.html">Module Browser</a>.<br><img src="../tasks/images/importDialogue.png"><br><br></li>
+<li><b>E<u>x</u>it</b> - Exits Systemtap GUI.
+</ul>
+
+<h3>
+<a name="run"><u>R</u>un</a>
+</h3>
+<ul>
+<li><b><u>R</u>un</b> - This option runs the selected module in the <a href="../concepts/modulesBrowser.html">Module Browser</a>.</li>
+<li><b><u>P</u>ause</b> - This option pauses the selected module in the <a href="../concepts/modulesBrowser.html">Module Browser</a>. Know that this method of pausing is an illusion; the graph data is simply not updated while the script continues to run. This inability to truly pause is inherent in SystemTap itself.</li>
+<li><b><u>S</u>top</b> - This option stops the selected module in the <a href="../concepts/modulesBrowser.html">Module Browser</a>.</li>
+</ul>
+
+<h3>
+<u>W</u>indow
+</h3>
+<ul>
+<li><b>Open in <u>N</u>ew Window</b> - This option opens a new instance of SystemTap GUI.</li>
+<li><b><u>O</u>pen Perspective</b> - This submenu lists each of the available perspectives to open:
+<ul>
+<li>IDE Perspective</li>
+<li>Graphing Perspective</li>
+<li>Dashboard Perspective</li>
+</ul></li>
+<li><b>Show <u>V</u>iews</b> - This submenus lists each of the available views to open:
+<ul>
+<li>Console</li>
+<li>Error Log</li>
+<li>Functions</li>
+<li>Kernel Source</li>
+<li>Probe Alias</li>
+<li>Other - Lists all views in the application.</li><br><img src="images/menu/viewbox1.png"><br><br>
+</ul></li>
+<li><b><u>P</u>references</b> - Due to the breath of this topic it is covered in another section. Please see <a href="preferences.html">Preferences Help</a>.<br><img src="images/menu/preferencesbox1.png"><br><br></li>
+</ul>
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/preferences.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/preferences.html
new file mode 100755
index 0000000000..cbc19eae4c
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/preferences.html
@@ -0,0 +1,120 @@
+<a href="../toc.html">Table of Contents</a> > <a href="reference.html">Reference</a>
+
+<h2>
+Preferences
+</h2>
+
+This section details each of the options listed under <b><u>W</u>indow-><u>P</u>references</b>. The Preferences dialog is the dialog used to set user preferences. The Preferences dialog pages can be searched using the filter function. To filter by matching the page title, simply type the name of the page you are seeking and the available pages will be presented below. The filter also searches on keywords such as appearance and java.
+
+<ul>
+<li><b>Logging</b>
+<ul>
+<li><b>Enable logging</b> - This option turns on and off the ability to log data from the console.</li>
+<li><b>Logging level</b> - This dropdown box allows you to select one of our levels of logging.
+<ul>
+<li>Debug - A very large quantity of debug information, difficult to identify what you are looking for but extremely exhaustive.</li>
+<li>Info - Displays most information regarding program execution; the default level.</li>
+<li>Critical - Lists only critical errors duration execution.</li>
+<li>Fatal - Lists only fatal errors during execution.</li>
+</ul>
+</li>
+<li><b>Log to</b> - Specifies where you wish the logging to be written:
+<ul>
+<li>Console - Writes the debug information directly to the console.</li>
+<li>File - Write the debug information to a file.</li>
+</ul>
+<li><b>File</b> - The location of the file that logging sends the debug information to.</li>
+</ul>
+<li><b>SystemTap</b> - This section contains options relevent to SystemTap itself.
+<ul>
+<li><b>Remember window state</b> - Preserves the state of the window on exitting SystemTap GUI.
+<li><b>Dashboard Preferences</b> - Preferences relate to the Dashboard Perspective.
+<ul>
+<li>Additional Modules - Provides for the addition of more modules to the Dashboard. Modules are files containing a SystemTap script and associated metadata.</li>
+</ul>
+<li><b>Environment Variables</b> - Allows the user to set specific values to the following environment variables
+<ul>
+<li>LD_LIBRARY_PATH</li>
+<li>PATH</li>
+</ul>
+</li>
+<li><b>Graphing</b> - Preferences related to the Graphing Perspective.
+<ul>
+<li><b><u>R</u>efresh Delay (ms)</b> - Milliseconds in between re-painting the graph.</li>
+<li><b>Data Table</b> - Preferences related to the data table.
+<ul>
+<li><u>J</u>ump to the newest entry - Determines whether the scroll bar maintains its location at the newest entry.</li>
+<li><u>A</u>uto resize columns - Determines whether columns automatically resize to the width of the contents or whether they remain placed when moved.</li>
+<li><u>M</u>ax data items - Maximum number of entries that the table shows, though the table itself may have more not visible.</li>
+</ul>
+</li>
+<li><b>Graph</b> - Preferences related to graphs.
+<ul>
+<li><u>S</u>how grid lines - Turns on and off painting of the grid lines.</li>
+<li><u>V</u>iewable data items - Number of maximum samples plotted at any time.</li>
+</ul>
+</ul>
+<li><b>IDE</b> - Preferences when loading the IDE Perspective.
+<ul>
+<li><b>Use stored tapset trees</b> - Loads the stored tapset trees on initialization.</li>
+<li><b>Editor</b> - Preferences related to the editor.
+<ul>
+<li><u>E</u>ditor Background Color - Sets the color painted in the background of the editor pane.</li>
+<li>Show Line <u>N</u>umbers - Option to turn on and off line numbers in the editor pane.
+<li>Code Assist
+<ul>
+<li><u>U</u>se Code Assist - Turns on and off the option to use Code Assist, which is a method that predicts what you are typing based on existing probe aliasi and opens a window that allows you to scroll down and select and/or continue typing for refined results.</li>
+<li>How Code Assist adds code - Method used in Code Assist.
+<ul>
+<li><u>I</u>nsert - Inserts the selected text directly into the cursor point.</li>
+<li><u>O</u>verwrite - Overwrites as you type.</li>
+</ul>
+</li>
+<li>Activation <u>D</u>elay (requires restart) - Delay in milliseconds before the code assist routines attempts to run.
+<li>Activation <u>T</u>rigger - This is the key that actives Code Assist. For SystemTap GUI it is set to the divider between tapset and probe alias.
+</ul>
+</li>
+<li>Syntax Coloring - These options assign color values to identified types within the .stp and .c editors.
+<ul>
+<li>STP editor
+<ul>
+<li><u>D</u>efault Color - Color of normal code.</li>
+<li><u>K</u>eyword Color - Color of keywords.</li>
+<li><u>E</u>mbedded C Color - Color of embedded C code.</li>
+<li><u>E</u>mbedded Color - Color of embedded code.</li>
+<li><u>C</u>omment Color - Color of comments.</li>
+<li><u>T</u>ype Color - Color of items identified as types.</li>
+<li><u>S</u>tring Color - Color of strings.</li>
+</ul>
+</li>
+<li>C editor
+<ul>
+<li><u>D</u>efault Color - Color of normal code.</li>
+<li><u>K</u>eyword Color - Color of keywords.</li>
+<li><u>P</u>reprocessor Color - Color of preprocessor code.</li>
+<li><u>C</u>omment Color - Color of comments.</li>
+<li><u>T</u>ype Color - Color of items identified as types.</li>
+<li><u>S</u>tring Color - Color of strings.</li>
+</ul>
+</li>
+</ul
+</li>
+<li>Typeing - No options available at this time.</li>
+</ul>
+</li>
+<li><b>Path</b>
+<ul>
+<li><u>K</u>ernel Source Directory - Location of the directory that the kernel source code is pulled from.</li>
+<li>Stap - No options available at this time.
+<ul>
+<li>Tapsets - Preferences related to tapsets.
+<ul>
+<li><u>A</u>dditional Tapsets - Allows you to specify additional tapsets scripts to be added in with every script.</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</ul> \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/reference.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/reference.html
new file mode 100644
index 0000000000..ec2695304b
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/reference.html
@@ -0,0 +1,17 @@
+<a href="../toc.html">Table of Contents</a>
+
+<h2>
+Reference
+</h2>
+
+This section of the Dashboard User Guild is intended to provide the following resources should you have any
+very specific questions regarding the Dashboard Perspective in general or one of the options associated with
+it. It also contains example scripts and FAQs.
+
+<ol>
+<li><a href="frequentlyAskedQuestions.html">Frequently Asked Questions</a></li>
+<li><a href="menus.html">Menus</a></li>
+<li><a href="preferences.html">Preferences</a></li>
+<li><a href="toolbars.html">Toolbars</a></li>
+</ol>
+
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/toolbars.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/toolbars.html
new file mode 100755
index 0000000000..6ae66bb2b3
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/reference/toolbars.html
@@ -0,0 +1,30 @@
+<a href="../toc.html">Table of Contents</a> > <a href="reference.html">Reference</a>
+
+<h2>
+Toolbars
+</h2>
+
+
+SystemTap GUI currently has two toolbars built in; an Action Bar for file and execution operations and a Perspective Selector to jump to different perspectives.
+
+<h3>
+Action Bar
+</h3>
+
+<ul>
+<li><img src="images/toolbars/import_wiz.gif"> <b>Import Dashboard Module Location</b> - This option brings up a dialogue box prompting the user for a module file which is then loaded into the <a href="../concepts/modulesBrowser.html">Module Browser</a>.
+<li><img src="images/toolbars/start_script.gif"> <b>Run</b> - This option runs the selected module in the <a href="../concepts/modulesBrowser.html">Module Browser</a>.</li>
+<li><img src="images/toolbars/pause_script.gif"> <b>Pause</b> - This option pauses the selected module in the <a href="../concepts/modulesBrowser.html">Module Browser</a>. Know that this method of pausing is an illusion; the graph data is simply not updated while the script continues to run. This inability to truly pause is inherent in SystemTap itself.</li>
+<li><img src="images/toolbars/stop_obj.gif"> <b>Stop</b> - This option stops the selected module in the <a href="../concepts/modulesBrowser.html">Module Browser</a>.</li>
+<li><img src="images/toolbars/mod_obj.gif"> <b>Create a New Dashboard module</b> - This option creates a new module in the <a href="../concepts/modulesBrowser.html">Module Browser</a>.</li>
+</ul>
+
+<h3>
+Perspective Selector
+</h3>
+
+<ul>
+<li><img src="images/toolbars/ide.png"> <b>IDE Perspective</b> - This launches the IDE Perspective, useful for writing and executing scripts.</li>
+<li><img src="images/toolbars/graphing.png"> <b>Graphing Perspective</b> - This launches the Graphing Perspective, useful for graphing scripts.</li>
+<li><img src="images/toolbars/dash.png"> <b>Dashboard Perspective</b> - This launches the Dashboard Perspective, useful for multiple graphing.</li>
+</ul>
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/creatingModules.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/creatingModules.html
new file mode 100644
index 0000000000..5e1cca802e
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/creatingModules.html
@@ -0,0 +1,52 @@
+<a href="../toc.html">Table of Contents</a> > <a href="tasks.html">Tasks</a>
+
+<h2>
+Creating Modules
+</h2>
+
+SystemTap GUI allows for the creation of custom modules. In order to do this the user must have a script that returns
+data in a consistent pattern along with providing a regular expression to interpret it; the same requirements
+as any script run in the Graphics Perspective. Creating a module can be done in two ways
+<br>
+<h3>Export Script</h3>
+Using the <b><u>E</u>xport Script</b>
+option in the <b><u>F</u>ile</b> menu of the IDE Perspective. This will create a module from a script that is currently open in the IDE. The module will consist of the script and metadata information stored as a '.dash' file on the local system(where SystemTapGUI is running).The user is first prompted
+for regular expression details (just like in the Graphing perspective) after which a
+dialog box similar to the following shows up:<br><br>
+
+<img src="images/exportScript.png"><br><br>
+
+The dialogue box has the following properties:
+<ul>
+<li><b>Display</b> - This is the name of the module. This is the text that will show up under the specified
+module family.</li>
+<li><b>Category</b> - This field requires the name of the module family the module should be placed in.</li>
+<li><b>Graphs</b> - This box allows you to added one or more predefine graph types to spawn each time the
+module is ran.</li>
+</ul>
+
+When you click ok your module will be added into the Module Browser in the Dashboard Perspective.<br><br>
+
+<img src="images/addedModule.png"><br><br>
+
+<h3>Create Module</h3>
+Using the <b><u>C</u>reate Module</b>
+option in the dashboard or IDE toolbar. This will create a module from an example script that available on the remote System, Users will have to specify the location of the examples directory and the path to the script.The module will consist of only the metadata information stored as a '.dash' file on the local system(where SystemTapGUI is running). The script will not be packaged with the module, the location specified will be used to run the script directly on the remote system. The user would have to first enter the script details,
+and then follow the same set of steps as in the previous option.<br><br>
+
+<img src="images/script_details.gif"><br><br>
+
+<h3>Tips</h3>
+
+Make sure your script works fine with the regular expression and the graphs are as desired using the IDE/Graphing perspectives
+before creating a dashboard module using the script.
+
+<h3>Constraints</h3>
+
+The script should adhere to the below constraints to add it to the dashboard:
+<ul>
+<li> The script should regularly output rows/tables of data that will confirm to the same regular expression, i.e, you cannot have two sets of output in the same script
+<li> The script should not have exit() statements
+<li> Since the dashboard supports dynamic graphs the script should output data periodically
+<li> Users should remember that the dashboard currently does not support any processing of the output data.
+</ul> \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/graphInteraction.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/graphInteraction.html
new file mode 100644
index 0000000000..4488cb1479
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/graphInteraction.html
@@ -0,0 +1,15 @@
+<a href="../toc.html">Table of Contents</a> > <a href="tasks.html">Tasks</a>
+
+<h2>
+Graph Interaction
+</h2>
+
+The graphical options used in the Dashboard perspective:
+<ul>
+<li><b>Zoom Bar</b> - This enables the user to zoom in and out on the current graph by sliding the bar to the left and right. The current magnification is shown at the top of the bar. Zooming would increase the no of x-axis ticks therefore allowing the user to see more(or less) data at a point in time.<br><br><img src="images/zoom.png"></li>
+<li><img src="images/expandButton.png"> - <b>Show Zoom bar</b> - This displays the zoom bar.
+<li><img src="images/rightleft.png"> - <b>Close Zoom bar</b> - This hides the zoom bar.
+<li><img src="images/closeButton.png"> - <b>Close Graph</b> - This removes the graph from the viewer pane.</li>
+</ul>
+
+<img src="../gettingstarted/images/graphExpanded.png"> \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/addedModule.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/addedModule.png
new file mode 100644
index 0000000000..989dbb5196
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/addedModule.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/closeButton.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/closeButton.png
new file mode 100644
index 0000000000..73af7d25a2
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/closeButton.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/expandButton.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/expandButton.png
new file mode 100644
index 0000000000..a342299921
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/expandButton.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/exportScript.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/exportScript.png
new file mode 100644
index 0000000000..cee013d18e
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/exportScript.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/importDialogue.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/importDialogue.png
new file mode 100644
index 0000000000..541de9f687
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/importDialogue.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/rightleft.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/rightleft.png
new file mode 100644
index 0000000000..cf1b16405b
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/rightleft.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/script_details.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/script_details.gif
new file mode 100644
index 0000000000..0daf0aea57
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/script_details.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/zoom.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/zoom.png
new file mode 100644
index 0000000000..4ff3b64665
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/images/zoom.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/importModules.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/importModules.html
new file mode 100644
index 0000000000..32c33fe894
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/importModules.html
@@ -0,0 +1,11 @@
+<a href="../toc.html">Table of Contents</a> > <a href="tasks.html">Tasks</a>
+
+<h2>
+Importing Modules
+</h2>
+
+The Dashboard Perspective allows for the import of modules by using the option <b><u>F</u>ile-><u>I</u>mport
+Module Location</b>. Simply navigate to and select the module file you wish to import, and SystemTap GUI will
+add the module to the <a href="../concepts/moduleBrowser.html">Module Browser</a> in the Dashboard Perspective.<br><br>
+
+<img src="images/importDialogue.png"> \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/runningModules.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/runningModules.html
new file mode 100644
index 0000000000..27e0e4ec96
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/runningModules.html
@@ -0,0 +1,31 @@
+<a href="../toc.html">Table of Contents</a> > <a href="tasks.html">Tasks</a>
+
+<h2>
+Running Modules
+</h2>
+
+The <a href="../concepts/modulesBrowser.html">Module Browser</a> contains a list of modules available to run.
+
+Running modules in the Dashboard Perspective can be accomplished in three different ways. You may select it and
+<b><u>R</u>un-><u>R</u>un Script</b>. You can alternatively click the <b>Run Script</b> button in the Toolbar.
+SystemTap GUI will request the details of the remote system(IPAddress,username,password).Enter these details and make
+sure that the username has sufficient access to execute SystemTap scripts
+You should see a display similar to the following, graphs differing based on what
+module you chose to run and Module Browser differences based off of your current module include list:<br><br>
+
+<img src="../gettingstarted/images/runningDashboard.png"><br><br>
+
+<h3>
+Multiple Module Execution
+</h3>
+
+SystemTap GUI supports the execution of more than one module at one time. The currently running script does not
+not to be halted and the currently open graphs do not need to be closed, though they may be if desired. To
+execute another module, simply select and run it using one of the two methods described above.
+
+Up to 8 graphs may be open at one given time in any given tab.
+Stopping the script
+will halt the running script of that module and remove the graphs entirely from the view pane. It will not affect
+graphs or scripts associated with any other modules. If at any time you are unsure of which modules are
+currently active you can check this by navigating to the <a href="../concepts/activeModulesBrowser.html">Active
+Modules Browser.</a><br><br> \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/tasks.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/tasks.html
new file mode 100644
index 0000000000..d0a8e0b286
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/tasks/tasks.html
@@ -0,0 +1,16 @@
+<a href="../toc.html">Table of Contents</a>
+
+<h2>
+Tasks
+</h2>
+
+This section of the Dashboard User Guild is intended to provide help pages for common tasks that the user may
+wish to perform in the Dashboard Perspective.
+
+<ol>
+<li><a href="creatingModules.html">Creating Modules</a></li>
+<li><a href="importModules.html">Importing Modules</a></li>
+<li><a href="runningModules.html">Running Modules</a></li>
+<li><a href="graphInteraction.html">Graph Interaction</a></li>
+</ol>
+
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/toc.html b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/toc.html
new file mode 100755
index 0000000000..85b4365751
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/html/toc.html
@@ -0,0 +1,49 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <title>Table of Contents</title>
+</head>
+
+<body>
+<h1>Table of Contents</h1>
+
+Welcome to SystemTap GUI help pages. Here you will find wide selection of help pages covering the Dashboard
+Perspective of SystemTap GUI.
+
+<ol>
+
+<li><a href="gettingstarted/gettingStarted.html">Getting Started</a>
+<ol>
+<li><a href="gettingstarted/dashboardTutorial.html">Dashboard Tutorial</a></li>
+</ol>
+</li>
+
+<li><a href="concepts/concepts.html">Concepts</a></li>
+<ol>
+<li><a href="concepts/modules.html">Modules</a></li>
+<li><a href="concepts/modulesBrowser.html">Modules Browser</a></li>
+<li><a href="concepts/activeModulesBrowser.html">Active Modules Browser</a></li>
+</ol>
+</li>
+
+<li><a href="tasks/tasks.html">Tasks</a>
+<ol>
+<li><a href="tasks/creatingModules.html">Creating Modules</a></li>
+<li><a href="tasks/importModules.html">Importing Modules</a></li>
+<li><a href="tasks/runningModules.html">Running Modules</a></li>
+<li><a href="tasks/graphInteraction.html">Graph Interaction</a></li>
+</ol>
+</li>
+
+<li><a href="reference/reference.html">Reference</li>
+<ol>
+<li><a href="reference/frequentlyAskedQuestions.html">Frequently Asked Questions</a></li>
+<li><a href="reference/menus.html">Menus</a></li>
+<li><a href="reference/preferences.html">Preferences</a></li>
+<li><a href="reference/toolbars.html">Toolbars</a></li>
+</ol>
+
+</body>
+</html> \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/tocconcepts.xml b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/tocconcepts.xml
new file mode 100755
index 0000000000..bc6f500d5c
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/tocconcepts.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Concepts" link_to="toc.xml#concepts">
+ <topic label="Modules" href="documentation/html/concepts/modules.html" />
+ <topic label="Module Browser" href="documentation/html/concepts/modulesBrowser.html" />
+ <topic label="Active Modules Browser" href="documentation/html/concepts/activeModulesBrowser.html" />
+</toc>
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/tocgettingstarted.xml b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/tocgettingstarted.xml
new file mode 100755
index 0000000000..248f3cb790
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/tocgettingstarted.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Getting Started" link_to="toc.xml#gettingstarted">
+ <topic label="Dashboard Tutorial" href="documentation/html/gettingstarted/dashboardTutorial.html" />
+</toc>
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/tocreference.xml b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/tocreference.xml
new file mode 100755
index 0000000000..3dc469d698
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/tocreference.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Reference" link_to="toc.xml#reference">
+ <topic label="Menus" href="documentation/html/reference/menus.html" />
+ <topic label="Toolbars" href="documentation/html/reference/toolbars.html" />
+ <topic label="Preferences" href="documentation/html/reference/preferences.html" />
+ <topic label="Frequently Asked Questions" href="documentation/html/reference/frequentlyAskedQuestions.html" />
+</toc>
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/toctasks.xml b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/toctasks.xml
new file mode 100755
index 0000000000..bcdcba9f22
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/documentation/toctasks.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Tasks" link_to="toc.xml#tasks">
+ <topic label="Creating Modules" href="documentation/html/tasks/creatingModules.html" />
+ <topic label="Importing Modules" href="documentation/html/tasks/importModules.html" />
+ <topic label="Running Modules" href="documentation/html/tasks/runningModules.html" />
+ <topic label="Graph Interaction" href="documentation/html/tasks/graphInteraction.html" />
+
+</toc>
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/bomb.png b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/bomb.png
new file mode 100644
index 0000000000..1be37974ad
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/bomb.png
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/close.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/close.gif
new file mode 100644
index 0000000000..6d76761412
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/close.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/collapse.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/collapse.gif
new file mode 100644
index 0000000000..72ecbe3cb7
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/collapse.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/expand.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/expand.gif
new file mode 100644
index 0000000000..e626e39eba
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/expand.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/maximize.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/maximize.gif
new file mode 100644
index 0000000000..55af28ee7a
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/maximize.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/restore.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/restore.gif
new file mode 100644
index 0000000000..55cc25148d
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/graph/restore.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/import_wiz.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/import_wiz.gif
new file mode 100755
index 0000000000..d38085ad9c
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/import_wiz.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/pause_script.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/pause_script.gif
new file mode 100644
index 0000000000..161e3f594f
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/pause_script.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/start_script.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/start_script.gif
new file mode 100644
index 0000000000..d6b3bdcc37
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/start_script.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/stop_script.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/stop_script.gif
new file mode 100644
index 0000000000..dc47edf069
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/actions/stop_script.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/misc/graph_act.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/misc/graph_act.gif
new file mode 100644
index 0000000000..3dc7a65668
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/misc/graph_act.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/misc/graph_dis.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/misc/graph_dis.gif
new file mode 100644
index 0000000000..2cd9c54443
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/misc/graph_dis.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/misc/module_obj.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/misc/module_obj.gif
new file mode 100644
index 0000000000..0f07692697
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/misc/module_obj.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/perspective_obj.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/perspective_obj.gif
new file mode 100755
index 0000000000..96028b369d
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/perspective_obj.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/views/active_mod_obj.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/views/active_mod_obj.gif
new file mode 100644
index 0000000000..c1e4ee3a59
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/views/active_mod_obj.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/views/dashboard_obj.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/views/dashboard_obj.gif
new file mode 100644
index 0000000000..ec50b70fab
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/views/dashboard_obj.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/views/mod_obj.gif b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/views/mod_obj.gif
new file mode 100644
index 0000000000..8bbfd04204
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/icons/views/mod_obj.gif
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/IO.Cumulative_IO_Activity.dash b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/IO.Cumulative_IO_Activity.dash
new file mode 100644
index 0000000000..886e30baee
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/IO.Cumulative_IO_Activity.dash
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/IO.IO_Activity_by_Process.dash b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/IO.IO_Activity_by_Process.dash
new file mode 100644
index 0000000000..a8f6387926
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/IO.IO_Activity_by_Process.dash
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Network.Processwise_Network_Traffic.dash b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Network.Processwise_Network_Traffic.dash
new file mode 100644
index 0000000000..901c1604f8
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Network.Processwise_Network_Traffic.dash
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Process.Profile_Kernel_functions.dash b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Process.Profile_Kernel_functions.dash
new file mode 100644
index 0000000000..8802c90e12
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Process.Profile_Kernel_functions.dash
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Profiling.Functions_profile.dash b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Profiling.Functions_profile.dash
new file mode 100644
index 0000000000..cdf460fe32
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Profiling.Functions_profile.dash
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Profiling.Unnecessary_Polling_Operations.dash b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Profiling.Unnecessary_Polling_Operations.dash
new file mode 100644
index 0000000000..fa53cae77a
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/modules/Profiling.Unnecessary_Polling_Operations.dash
Binary files differ
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/plugin.properties b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/plugin.properties
new file mode 100644
index 0000000000..cd4798f51f
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/plugin.properties
@@ -0,0 +1,39 @@
+perspective.dashboard.name=Dashboard
+
+view.module.name=Modules
+view.graphs.name=Graphs
+view.activeModule.name=Active Modules
+view.dashboard.name=Dashboard
+
+command.stop.name=&Stop Module
+command.stop.desc=Stops the currently selected Dashboard Module
+command.pause.name=&Pause Module
+command.pause.desc=Pauses the currently selected Dashboard Module
+command.run.name=&Run Module
+command.run.desc=Starts the currently selected Dashboard Module
+command.new.name=&Create New Module
+command.new.desc=Creates a New Dashboard Module
+
+category.file.name=File
+category.file.desc=File
+category.run.name=Run
+category.run.desc=Run
+
+actionset.filename=File Action Set
+action.import.name=&Import Modules
+action.import.desc=Import Dashboard Module Directory
+action.new.name=&Create New Module
+action.new.desc=Creates a New Dashboard Module
+
+actionset.run.name=Run Action Set
+action.stop.name=&Stop Module
+action.stop.desc=Stops the currently selected Dashboard Module
+action.pause.name=&Pause Module
+action.pause.desc=Pauses the currently selected Dashboard Module
+action.run.name=&Run Module
+action.run.desc=Starts the currently selected Dashboard Module
+
+preference.dashboard.name=Dashboard
+
+action.activateGraph.name=Activate Graph
+action.stopGraph.name=Stop Graph \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/plugin.xml b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/plugin.xml
new file mode 100644
index 0000000000..4c6f0ece4c
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/plugin.xml
@@ -0,0 +1,292 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.perspectives">
+ <perspective
+ name="%perspective.dashboard.name"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.DashboardPerspective"
+ icon="icons/perspective_obj.gif"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.DashboardPerspective"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.views">
+ <view
+ name="%view.module.name"
+ allowMultiple="false"
+ icon="icons/views/mod_obj.gif"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardModuleBrowserView"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardModuleBrowserView">
+ </view>
+ <view
+ name="%view.activeModule.name"
+ allowMultiple="false"
+ icon="icons/views/active_mod_obj.gif"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.views.ActiveModuleBrowserView"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.views.ActiveModuleBrowserView">
+ </view>
+ <view
+ name="%view.dashboard.name"
+ allowMultiple="false"
+ icon="icons/views/dashboard_obj.gif"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardView"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardView">
+ </view>
+ <view
+ allowMultiple="false"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardGraphsBrowserView"
+ icon="icons/misc/graph_act.gif"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardModuleGraphsView"
+ name="%view.graphs.name">
+ </view>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.commands">
+ <command
+ name="%command.import.name"
+ description="%command.import.desc"
+ categoryId="org.eclipse.linuxtools.systemtap.ui.dashboard.category.file"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.ImportModuleAction"/>
+ <command
+ name="%command.stop.name"
+ description="%command.stop.desc"
+ categoryId="org.eclipse.linuxtools.systemtap.ui.dashboard.category.run"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.StopModuleAction"/>
+ <command
+ name="%command.pause.name"
+ description="%command.pause.desc"
+ categoryId="org.eclipse.linuxtools.systemtap.ui.dashboard.category.run"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.PauseModuleAction"/>
+ <command
+ name="%command.run.name"
+ description="%command.run.desc"
+ categoryId="org.eclipse.linuxtools.systemtap.ui.dashboard.category.run"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.RunModuleAction"/>
+ <!--command
+ name="%command.new.name"
+ description="%command.new.desc"
+ categoryId="org.eclipse.linuxtools.systemtap.ui.dashboard.category.file"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.CreateModuleAction"/-->
+
+ <category
+ name="%category.file.name"
+ description="%category.file.desc"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.category.file"/>
+ <category
+ name="%category.run.name"
+ description="%category.run.desc"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.category.run"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.bindings">
+ <key
+ commandId="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.ImportModuleAction"
+ contextId="org.eclipse.ui.contexts.window"
+ schemeId="org.eclipse.ui.defaultAcceleratorConfiguration"
+ sequence="M1+I"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.actionSets">
+ <actionSet
+ label="%actionset.file.name"
+ visible="false"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.FileActionSet">
+ <action
+ label="%action.import.name"
+ tooltip="%action.import.desc"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.ImportModuleAction"
+ icon="icons/actions/import_wiz.gif"
+ toolbarPath="org.eclipse.ui.workbench.file/open.ext"
+ menubarPath="file2/new.ext"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.ImportModuleLocationAction"
+ definitionId="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.ImportModuleAction"
+ style="push"
+ state="false"/>
+ <!--action
+ label="%action.new.name"
+ tooltip="%action.new.desc"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.CreateModuleAction"
+ icon="icons/actions/import_wiz.gif"
+ toolbarPath="org.eclipse.ui.workbench.file/open.ext"
+ menubarPath="file2/new.ext"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.CreateModuleAction"
+ definitionId="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.CreateModuleAction"
+ style="push"
+ state="true"/-->
+ </actionSet>
+ <actionSet
+ label="%actionset.run.name"
+ visible="false"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.RunActionSet">
+ <action
+ label="%action.stop.name"
+ tooltip="%action.stop.desc"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.StopModuleAction"
+ definitionId="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.StopModuleAction"
+ icon="icons/actions/stop_script.gif"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.StopModuleAction"
+ state="false"
+ style="push"
+ menubarPath="launch/wbStart"
+ toolbarPath="org.eclipse.ui.workbench.file/build.group">
+ </action>
+ <action
+ label="%action.pause.name"
+ tooltip="%action.pause.desc"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.PauseModuleAction"
+ icon="icons/actions/pause_script.gif"
+ toolbarPath="org.eclipse.ui.workbench.file/build.group"
+ menubarPath="launch/wbStart"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.PauseModuleAction"
+ definitionId="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.PauseModuleAction"
+ style="push"
+ state="false"/>
+ <action
+ label="%action.run.name"
+ tooltip="%action.run.desc"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.RunModuleAction"
+ definitionId="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.RunModuleAction"
+ icon="icons/actions/start_script.gif"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.RunModuleAction"
+ menubarPath="launch/wbStart"
+ state="false"
+ style="push"
+ toolbarPath="org.eclipse.ui.workbench.file/build.group"/>
+ </actionSet>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.preferencePages">
+ <page
+ name="%preference.dashboard.name"
+ id="com.qualityeclipse.systemtap.prefs.dashboard"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.preferences.DashboardPreferencePage"
+ category="com.qualityeclipse.systemtap.prefs.view"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.core.runtime.preferences">
+ <initializer class="org.eclipse.linuxtools.systemtap.ui.dashboard.preferences.PreferenceInitializer"/>
+ </extension>
+
+ <extension
+ point="org.eclipse.help.toc">
+ <toc
+ file="toc.xml"
+ primary="true"/>
+ <toc file="documentation/tocconcepts.xml"/>
+ <toc file="documentation/tocgettingstarted.xml"/>
+ <toc file="documentation/tocreference.xml"/>
+ <toc file="documentation/toctasks.xml"/>
+ </extension>
+
+ <!--<extension
+ point="org.eclipse.ui.popupMenus">
+ <objectContribution
+ adaptable="false"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.RunModuleMenu"
+ objectClass="org.eclipse.linuxtools.systemtap.ui.structures.TreeNode">
+ <action
+ label="%action.stop.name"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.StopModuleAction"
+ icon="icons/actions/stop_script.gif"
+ menubarPath="build.ext"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.StopModuleAction"
+ style="push"/>
+ <action
+ label="%action.pause.name"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.PauseModuleAction"
+ icon="icons/actions/pause_script.gif"
+ menubarPath="build.ext"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.PauseModuleAction"
+ style="push"/>
+ <action
+ label="%action.run.name"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.RunModuleAction"
+ icon="icons/actions/start_script.gif"
+ menubarPath="build.ext"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.RunModuleAction"
+ style="push"/>
+ </objectContribution>
+ </extension>-->
+
+ <extension
+ point="org.eclipse.ui.popupMenus">
+ <objectContribution
+ adaptable="false"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.ShowGraphMenu"
+ objectClass="org.eclipse.linuxtools.systemtap.ui.dashboard.structures.GraphTreeNode">
+ <action
+ label="%action.activateGraph.name"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.ActivateGraphAction"
+ icon="icons/misc/graph_act.gif"
+ menubarPath="build.ext"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.ActivateGraphAction"
+ style="push"/>
+ <action
+ label="%action.stopGraph.name"
+ class="org.eclipse.linuxtools.systemtap.ui.dashboard.actions.StopGraphAction"
+ icon="icons/misc/graph_dis.gif"
+ menubarPath="build.ext"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.StopGraphAction"
+ style="push"/>
+ </objectContribution>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.perspectiveExtensions">
+ <perspectiveExtension
+ targetID="org.eclipse.linuxtools.systemtap.ui.dashboard.DashboardPerspective">
+ <actionSet id="org.eclipse.linuxtools.systemtap.ui.dashboard.FileActionSet"/>
+ <actionSet id="org.eclipse.linuxtools.systemtap.ui.dashboard.RunActionSet"/>
+ <perspectiveShortcut id="org.eclipse.linuxtools.systemtap.ui.systemtapgui.Perspective"/>
+ </perspectiveExtension>
+ <perspectiveExtension
+ targetID="org.eclipse.linuxtools.systemtap.ui.systemtapgui.Perspective">
+ <perspectiveShortcut id="org.eclipse.linuxtools.systemtap.ui.dashboard.DashboardPerspective"/>
+ </perspectiveExtension>
+ <perspectiveExtension
+ targetID="org.eclipse.linuxtools.systemtap.ui.graphing.GraphingPerspective">
+ <perspectiveShortcut id="org.eclipse.linuxtools.systemtap.ui.dashboard.DashboardPerspective"/>
+ </perspectiveExtension>
+ <perspectiveExtension
+ targetID="org.eclipse.linuxtools.systemtap.ui.ide.IDEPerspective">
+ <perspectiveShortcut id="org.eclipse.linuxtools.systemtap.ui.dashboard.DashboardPerspective"/>
+ </perspectiveExtension>
+ </extension>
+ <!-- <extension
+ point="org.eclipse.ui.menus">
+ <menuContribution
+ locationURI="toolbar:org.eclipse.ui.main.toolbar">
+ <toolbar
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.toolbar1">
+ <visibleWhen
+ checkEnabled="true">
+ </visibleWhen>
+ <command
+ commandId="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.ImportModuleAction"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.ImportModuleAction"
+ label="a">
+ <visibleWhen>
+ </visibleWhen>
+ </command>
+ <command
+ commandId="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.StopModuleAction"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.StopModuleAction"
+ label="b"/>
+ <command
+ commandId="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.StopModuleAction"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.PauseModuleAction"
+ label="c"/>
+ <command
+ commandId="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.StopModuleAction"
+ id="org.eclipse.linuxtools.systemtap.ui.dashboard.commands.RunModuleAction"
+ label="d"/>
+ </toolbar>
+ </menuContribution>
+ </extension> -->
+</plugin>
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter.java
new file mode 100644
index 0000000000..541dd95c16
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardAdapter.java
@@ -0,0 +1,328 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard;
+
+import org.eclipse.linuxtools.systemtap.ui.dashboard.actions.StopGraphAction;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.internal.DashboardPlugin;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.DashboardGraphData;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.GraphTreeNode;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.ActiveModuleBrowserView;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardView;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DragSource;
+import org.eclipse.swt.dnd.DragSourceListener;
+import org.eclipse.swt.dnd.DropTarget;
+import org.eclipse.swt.dnd.DropTargetListener;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.events.ControlListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.ToolBar;
+import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.PlatformUI;
+
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.datasets.IDataSet;
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.structures.GraphData;
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.ui.charts.AbstractChartBuilder;
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.ui.widgets.GraphComposite;
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+
+/**
+ * This class is used to contain a graph for the DashboardComposite. The class
+ * provides a windowing framework that allows the user to close the graph at
+ * will and to toggle whether or not to display the graph configuration settings.
+ * @author Henry Hughes
+ * @author Ryan Morse
+ */
+public class DashboardAdapter {
+ /**
+ * This constructor sets up all of the basic internal components for class.
+ * @param parent This is the component that will act as the parent container
+ * @param gd The data that will be used to construct the internal graph
+ * @param ds The data used to populate the graph.
+ */
+ public DashboardAdapter(DashboardComposite parent, GraphData gd, IDataSet ds, String moduleName) {
+ folder = new CTabFolder(parent.deadComposite, SWT.NONE);
+ FormLayout layout = new FormLayout();
+ layout.marginHeight = 0; layout.marginWidth = 0;
+ parent.deadComposite.setLayout(layout);
+
+ FormData data = new FormData();
+ data.left = new FormAttachment(0,0);
+ data.top = new FormAttachment(0,0);
+ data.right = new FormAttachment(100,0);
+ data.bottom = new FormAttachment(100,0);
+
+ folder.setLayoutData(folder);
+ folder.setLayout(new FormLayout());
+ //folder.setTabHeight(0);
+
+ ToolBar toolBar = new ToolBar (folder, SWT.FLAT | SWT.BORDER);
+ min = new ToolItem(toolBar, SWT.PUSH);
+ min.setImage(expandImage);
+ close = new ToolItem(toolBar, SWT.PUSH);
+ close.setImage(closeImage);
+ max = new ToolItem(toolBar, SWT.PUSH);
+ max.setImage(maxImage);
+ toolBar.pack ();
+ folder.setTopRight(toolBar);
+ modulename = moduleName;
+ resetDND(null, null);
+
+ createGraph(gd, ds);
+ wireButtons(parent);
+ }
+
+ /**
+ * This method creates the internal graph that will be displayed in this container.
+ * @param gd The graph data used to specify the graph that will be created.
+ * @param ds The data set that is used to populate the graph.
+ */
+ private void createGraph(GraphData gd, IDataSet ds) {
+ //Setup canvas
+ CTabItem item = new CTabItem(folder, SWT.NONE);
+ Composite c = new Composite(folder, SWT.NONE);
+ c.addControlListener(new ControlListener() {
+ public void controlMoved(ControlEvent e) {
+ }
+
+ public void controlResized(ControlEvent e) {
+
+ }
+ });
+ //c.setExpan
+ FormData data = new FormData();
+ data.left = new FormAttachment(0,0);
+ data.top = new FormAttachment(0,0);
+ data.left = new FormAttachment(100,0);
+ data.right = new FormAttachment(100,0);
+ c.setLayoutData(data);
+ c.setLayout(new FormLayout());
+ item.setControl(c);
+ //item.setText(gd.title);
+ folder.setSelection(item);
+
+ //Create graph
+ gc = new GraphComposite(c, SWT.NONE, gd, ds);
+ gc.configure(false);
+ FormData fd = new FormData();
+ fd.left = new FormAttachment(0,0);
+ fd.right = new FormAttachment(100,0);
+ fd.top = new FormAttachment(0,0);
+ fd.bottom = new FormAttachment(100,0);
+ gc.setLayoutData(fd);
+ }
+
+ /**
+ * This method resets all Drag And Drop information.
+ * @param drag This is the object that is being moved
+ * @param drop This is the object that occupies the desired location of the first object.
+ */
+ public void resetDND(DragSourceListener drag, DropTargetListener drop) {
+ if(drag != null) dragSource.removeDragListener(drag);
+ if(drop != null) dropTarget.removeDropListener(drop);
+ if(dragSource != null) dragSource.dispose();
+ if(dropTarget != null) dropTarget.dispose();
+ dragSource = new DragSource(folder, DND.DROP_MOVE);
+ dragSource.setTransfer(types);
+ dropTarget = new DropTarget(folder, DND.DROP_MOVE | DND.DROP_DEFAULT);
+ dropTarget.setTransfer(types);
+ }
+
+ /**
+ * Creates and addes the action listeners for the buttons.
+ * @param comp The composite that is containing this class.
+ */
+ private void wireButtons(DashboardComposite comp) {
+ SelectionListener listener = new DashboardShimButtonController(this, comp);
+ close.addSelectionListener(listener);
+ min.addSelectionListener(listener);
+ max.addSelectionListener(listener);
+ }
+
+ /**
+ * Updates the containers parent with the provided composite.
+ * @param c The new composite that will serve as the parent.
+ */
+ public void setParent(Composite c) {
+ folder.setParent(c);
+ }
+
+ /**
+ * Changes the layout information for this class.
+ * @param o The new layout informatino for the class.
+ */
+ public void setLayoutData(Object o) {
+ folder.setLayoutData(o);
+ }
+
+ /**
+ * Sets whether or not the graph is visible
+ * @param b Visibility flag.
+ */
+ public void setVisible(boolean b) {
+ folder.setVisible(b);
+ }
+
+ /**
+ * Returns the internal graph that is being displayed
+ * @return The graph that is held by this class.
+ */
+ public AbstractChartBuilder getGraph() {
+ return gc.getCanvas();
+
+ }
+
+ /**
+ * Closes this class and removes it from being displayed in the parent composite.
+ * Also updates its display information in the ActiveModuleBrowserView.
+ */
+ private void closeShim() {
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+ TreeNode root = (TreeNode)ambv.getViewer().getTree().getData();
+ TreeNode node;
+ GraphTreeNode child;
+ for(int j,i=0; i<root.getChildCount(); i++) {
+ node = root.getChildAt(i);
+ for(j=0; j<node.getChildCount(); j++) {
+ child = (GraphTreeNode)node.getChildAt(j);
+ if(this == ((DashboardGraphData)child.getData()).adapter) {
+ StopGraphAction sga = new StopGraphAction();
+ sga.run(child);
+ return;
+ }
+ }
+ }
+ }
+
+ /**
+ * Removes all internal references in this class. Nothing should make any references
+ * to anyting in this class after calling the dispose method.
+ */
+ public void dispose() {
+ if(null != folder)
+ folder.dispose();
+ folder = null;
+ if(null != close)
+ close.dispose();
+ close = null;
+ if(null != min)
+ min.dispose();
+ min = null;
+ if(null != dragSource)
+ dragSource.dispose();
+ dragSource = null;
+ if(null != dropTarget)
+ dropTarget.dispose();
+ dropTarget = null;
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DashboardView.ID);
+ ((DashboardView)ivp).getUpdater().removeUpdateListener(getGraph());
+ if(null != gc && !gc.isDisposed())
+ gc.dispose();
+ gc = null;
+ types = null;
+ }
+
+ /**
+ * This class handles the button clicks for the three buttons on the window bar. It
+ * supports closing the window, as well as toggling whether or not to display the
+ * Graph display options.
+ * @author Henry Hughes
+ * @author Ryan Morse
+ */
+ private class DashboardShimButtonController implements SelectionListener {
+ DashboardAdapter shim;
+ DashboardComposite composite;
+ boolean maximized = false;
+ public DashboardShimButtonController(DashboardAdapter shim, DashboardComposite composite) {
+ this.shim = shim;
+ this.composite = composite;
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ if(e.widget == close)
+ closeShim();
+
+ if(e.widget == min) {
+ Composite c = (Composite)folder.getSelection().getControl();
+ Control[] children = c.getChildren();
+ for(int i = 0; i < children.length; i++) {
+ if(children[i] instanceof GraphComposite) {
+ GraphComposite gc = (GraphComposite)children[i];
+ gc.configure(!gc.isSidebarVisible());
+ if(gc.isSidebarVisible())
+ min.setImage(collapseImage);
+ else
+ min.setImage(expandImage);
+ }
+ }
+ }
+ if(e.widget == max) {
+ Composite c = (Composite)folder.getSelection().getControl();
+ Control[] children = c.getChildren();
+ for(int i = 0; i < children.length; i++) {
+ if(children[i] instanceof GraphComposite) {
+ GraphComposite gc = (GraphComposite)children[i];
+ if(!maximized)
+ {
+ composite.maximize(shim);
+ max.setImage(restoreImage);
+ maximized= true;
+ }
+ else
+ {
+ composite.restore();
+ max.setImage(maxImage);
+ maximized= false;
+ }
+ }
+ }
+ }
+
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {}
+ }
+
+ public String getmodulename()
+ {
+ return modulename;
+ }
+
+ public CTabFolder folder;
+ public DragSource dragSource;
+ public DropTarget dropTarget;
+ private ToolItem close, min, max;
+ private GraphComposite gc;
+ private String modulename;
+ Transfer[] types = new Transfer[] { TextTransfer.getInstance() };
+
+ private static final Image closeImage = DashboardPlugin.getImageDescriptor("icons/actions/graph/close.gif").createImage();
+ private static final Image collapseImage = DashboardPlugin.getImageDescriptor("icons/actions/graph/collapse.gif").createImage();
+ private static final Image expandImage = DashboardPlugin.getImageDescriptor("icons/actions/graph/expand.gif").createImage();
+ private static final Image maxImage = DashboardPlugin.getImageDescriptor("icons/actions/graph/maximize.gif").createImage();
+ private static final Image restoreImage = DashboardPlugin.getImageDescriptor("icons/actions/graph/restore.gif").createImage();
+
+} \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite.java
new file mode 100644
index 0000000000..3ef2f4f822
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardComposite.java
@@ -0,0 +1,493 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard;
+
+import java.util.ArrayList;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.DragSourceAdapter;
+import org.eclipse.swt.dnd.DragSourceEvent;
+import org.eclipse.swt.dnd.DropTargetAdapter;
+import org.eclipse.swt.dnd.DropTargetEvent;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+/**
+ * A multiplexing composite class that presents itself as one composite, while
+ * allowing up to 8 DashboardAdapter composites to render on its surface. Handles
+ * space allocation, drag/drop between the composites.
+ * @author Henry Hughes
+ */
+public class DashboardComposite {
+
+ /**
+ * The set of internal composites, these are rendered on by the associated adapters.
+ */
+ private final Composite[] internal = new Composite[8];
+ /**
+ * The set of external DashboardAdapter references, each one of these is associated
+ * with the internal Composite sharing its index number in the internal array.
+ */
+ private final DashboardAdapter[] external = new DashboardAdapter[8];
+ /**
+ * Used slot counter, keeps track of how many internal composites are presently dirty.
+ */
+ private int usedSlotCount = 0;
+ /**
+ * Drag listeners for all of the internal composites.
+ */
+ private final InternalCompositeDragListener[] dragListeners = new InternalCompositeDragListener[8];
+ /**
+ * Drop listeners for all of the internal composites.
+ */
+ private final InternalCompositeDropListener[] dropListeners = new InternalCompositeDropListener[8];
+ /**
+ * Queue at the end of the list. When there are 8 objects rendering and a 9th object is added,
+ * it is placed on this queue and displayed when an internal composite is released.
+ */
+ private final ArrayList externalQueue = new ArrayList();
+ /**
+ * The actual rendering surface.
+ */
+ private final Composite surface;
+
+ int maximized = 0;
+ /**
+ * Parental hell. When objects are added to this composite incorrectly, the next run of the
+ * reparent algorithm will assign objects that are drawing on the wrong composite to this deadComposite.
+ * This composite is not rendered, it is set invisible and disabled. When an object is added to the
+ * rendering queue, it is also reparented to the dead composite.
+ */
+ public final Composite deadComposite;
+
+ public void layout() { //TODO: Remove this. It is a temporary solution to another bug
+ surface.layout(true, true);
+ }
+
+ /**
+ * Default constructor for the DashboardComposite. Creates all of the internal composites, sets up
+ * listeners.
+ * @param parent The parent Composite for this Composite.
+ * @param style SWT style flag to use.
+ */
+ public DashboardComposite(Composite parent, int style) {
+ parent.setLayout(new FormLayout());
+ FormData data = new FormData();
+ data.left = new FormAttachment(0,0);
+ data.right = new FormAttachment(100, 0);
+ data.top = new FormAttachment(0,0);
+ data.bottom = new FormAttachment(100,0);
+ surface = new Composite(parent, style);
+ surface.setLayoutData(data);
+ surface.setLayout(new FormLayout());
+ deadComposite = new Composite(parent, style);
+ deadComposite.setVisible(false);
+ for(int i = 0; i < internal.length; i++)
+ {
+ internal[i] = new Composite(surface, SWT.NONE);
+ data = new FormData();
+ internal[i].setLayoutData(data);
+ internal[i].setVisible(false);
+ internal[i].setLayout(new FormLayout());
+ external[i] = null;
+ dragListeners[i] = new InternalCompositeDragListener(i);
+ dropListeners[i] = new InternalCompositeDropListener(i);
+ }
+ }
+
+ /**
+ * This listener detects drag events inside the DashboardComposite and creates
+ * a string that represents the ID of the composite that is being dragged.
+ * @author Henry Hughes
+ */
+ private class InternalCompositeDragListener extends DragSourceAdapter
+ {
+ final int sourceID;
+ public InternalCompositeDragListener(int k)
+ {
+ super();
+ sourceID = k;
+ }
+ public void dragStart(DragSourceEvent event) {
+ super.dragStart(event);
+ if(!external[sourceID].folder.isVisible())
+ event.doit = false;
+ }
+
+ public void dragSetData(DragSourceEvent event) {
+ super.dragSetData(event);
+ event.data = Integer.toString(sourceID);
+ }
+ }
+
+ /**
+ * This listener detects drop events, and invokes the move(int,int) method in DashboardComposite
+ * to swap the composites.
+ * @author Henry Hughes
+ */
+ private class InternalCompositeDropListener extends DropTargetAdapter
+ {
+ final int sourceID;
+ public InternalCompositeDropListener(int k)
+ {
+ sourceID = k;
+ }
+ public void dragEnter(DropTargetEvent event) {
+ if(event.currentDataType != null)
+ event.detail = DND.DROP_MOVE;
+ else
+ event.detail = DND.DROP_NONE;
+ }
+
+ public void dragOperationChanged(DropTargetEvent event) {
+ super.dragOperationChanged(event);
+ }
+ long lastDropTime = 0;
+ public void drop(DropTargetEvent event) {
+ super.drop(event);
+ int k = -1;
+
+ /* For some absurdly stupid reason this method seems to be called twice under
+ * certain circumstances. This is probably a bug in eclipse's SDK, nonetheless, it's our
+ * problem now. To get around this, we check for timestamps within 100ms of each other.
+ * If the last drop was fired less than 100ms ago, we silently eat the event.
+ */
+ long eventTime = (long)(event.time & 0xFFFFFFFFL);
+ if(eventTime > lastDropTime - 100 && eventTime < lastDropTime + 100) return;
+
+ try
+ {
+ k = Integer.parseInt((String)event.data);
+ }
+ catch (NumberFormatException e) {}
+ if(k > -1 && k < 8 && k != sourceID)
+ {
+ move(k, sourceID);
+ move(k,k); //dont ask me why, but the original graph refuses to update without this
+ lastDropTime = eventTime;
+ }
+ }
+ }
+
+ /**
+ * Adds the input DashboardAdapter to the DashboardComposite, either assigning it an internal composite
+ * and rescaling the composite if necessary, or adding it to the queue if there are no free internal
+ * composites to use.
+ * @param c DashboardAdapter to add.
+ */
+ public void add(DashboardAdapter c)
+ {
+ int index = findLowestOpenSlot();
+ if(index == -1) //add to the queue
+ {
+ externalQueue.add(c);
+ return;
+ }
+ external[index] = c;
+ FormData data = new FormData();
+ data.left= new FormAttachment(0,0);
+ data.right = new FormAttachment(100,0);
+ data.top = new FormAttachment(0,0);
+ data.bottom = new FormAttachment(100,0);
+ c.folder.setParent(internal[index]);
+ c.folder.setLayoutData(data);
+ bindDND(index);
+ calculateUsedSlots();
+ scale();
+ surface.layout(true, true);
+ }
+
+ /**
+ * Removes the input DashboardAdapter, removing it from the internal composite it's associated to
+ * or from the queue, compacting the internal and external arrays, then rescaling.
+ * @param c DashboardAdapter to remove.
+ */
+ public void remove(DashboardAdapter c)
+ {
+ int index = -1;
+ for(int i = 0; i < external.length; i++)
+ if(external[i] == c)
+ index = i;
+ if(index == -1) //it's probably in externalQueue, pop it off of the queue and done
+ externalQueue.remove(c);
+ else //it's on the rendering queue... deal with it
+ {
+ external[index].resetDND(dragListeners[index], dropListeners[index]);
+ external[index] = null;
+
+ compact();
+ reparent();
+ calculateUsedSlots();
+ scale();
+ surface.layout(true, true);
+ }
+ }
+ /**
+ * Swaps the objects rendering on composites from and to, reparenting them to their new homes and
+ * moving them in the actual array. Also resets drag and drop listeners on those objects.
+ */
+ public void move(int from, int to)
+ {
+ DashboardAdapter fromShim = external[from], toShim = external[to];
+ external[to] = fromShim;
+ external[from] = toShim;
+
+ external[to].setParent(internal[to]);
+ external[from].setParent(internal[from]);
+
+ fromShim.resetDND(dragListeners[from], dropListeners[from]);
+ toShim.resetDND(dragListeners[to], dropListeners[to]);
+ bindDND(from);
+ bindDND(to);
+
+ return;
+ }
+ /**
+ * Binds the drag and drop listeners for the given slots.
+ * @param slot Slot to bind D&D.
+ */
+ private void bindDND(int slot)
+ {
+ external[slot].dragSource.addDragListener(dragListeners[slot]);
+ external[slot].dropTarget.addDropListener(dropListeners[slot]);
+ }
+ /**
+ * Finds the lowest open slot index.
+ * @return Returns the lowest available internal slot's index.
+ */
+ private int findLowestOpenSlot()
+ {
+ for(int i = 0; i < external.length; i++)
+ if(external[i] == null)
+ return i;
+ return -1;
+ }
+ /**
+ * Calculates the number of used slots.
+ */
+ private void calculateUsedSlots()
+ {
+ int count = 0;
+ for (int i = 0; i < external.length; i++)
+ if(external[i] != null)
+ count++;
+ usedSlotCount = count;
+ }
+ /**
+ * "Crushes" the external array, removing open slots that are not at the end of the list.
+ */
+ private void compact()
+ {
+ int i = 0, j = 0;
+ while(i < external.length)
+ {
+ while(i < external.length && external[i] != null)
+ i++;
+ if(i == external.length) break;
+ //we've found the lowest null slot
+ if(externalQueue.size() > 0)
+ { //fill it from the queue
+ external[i] = (DashboardAdapter)externalQueue.remove(0);
+ FormData data = new FormData();
+ data.left= new FormAttachment(0,0);
+ data.right = new FormAttachment(100,0);
+ data.top = new FormAttachment(0,0);
+ data.bottom = new FormAttachment(100,0);
+ external[i].setLayoutData(data);
+ continue;
+ }
+ j = i;
+ while(j < external.length && external[j] == null)
+ j++;
+ if(j == external.length) break; //we never found a non-null, so i is the first blank slot
+ external[i] = external[j];
+ external[j] = null;
+ i = j;
+ }
+ }
+ /**
+ * Reparents all the external DashboardAdapters to the correct internal composite.
+ */
+ private void reparent()
+ {
+ for(int i = 0; i < internal.length; i++)
+ {
+ Control[] c = internal[i].getChildren();
+ for(int j = 0; j < c.length; j++)
+ {
+ if(external[i] != null && c[j] == external[i].folder)
+ c[j].setVisible(true);
+ else
+ c[j].setParent(deadComposite);
+ }
+ }
+ for(int i = 0 ; i < external.length; i++)
+ {
+ if(external[i] != null)
+ {
+ external[i].setParent(internal[i]);
+ external[i].resetDND(null, null);
+ bindDND(i);
+ }
+ }
+ }
+
+ /**
+ * Removes the input DashboardAdapter, removing it from the internal composite it's associated to
+ * or from the queue, compacting the internal and external arrays, then rescaling.
+ * @param c DashboardAdapter to remove.
+ */
+ public void maximize(DashboardAdapter c)
+ {
+ int index = -1;
+ for(int i = 0; i < external.length; i++)
+ if(external[i] == c)
+ index = i;
+ // if(index == -1) //it's probably in externalQueue, pop it off of the queue and done
+ // externalQueue.remove(c);
+ //else //it's on the rendering queue... deal with it
+ //{
+ // external[index].resetDND(dragListeners[index], dropListeners[index]);
+ // external[index] = null;
+ usedSlotCount = 1;
+ //calculateUsedSlots(index);
+ maximized = index;
+ scale();
+ surface.layout(true, true);
+ // }
+ }
+ /**
+ * Removes the input DashboardAdapter, removing it from the internal composite it's associated to
+ * or from the queue, compacting the internal and external arrays, then rescaling.
+ * @param c DashboardAdapter to remove.
+ */
+ public void restore()
+ {
+ calculateUsedSlots();
+ maximized = 0;
+ scale();
+ surface.layout(true, true);
+ }
+
+ public int getusedSlots()
+ {
+ return usedSlotCount;
+ }
+ /**
+ * Sets the LayoutData for all of the internal Composites, scaling the size to an appropriate amount
+ * for the number of currently used slots.
+ */
+ private void scale()
+ {
+ switch(usedSlotCount)
+ {
+ case 8:
+ case 7:
+ //turn on all internal composites, 4x2 layout
+ for(int i = 0; i < 8; i++)
+ {
+ FormData data = new FormData();
+ data.left = new FormAttachment(i%2 * 50, 0);
+ data.right = new FormAttachment((i%2 +1)* 50, 0);
+ data.top = new FormAttachment(i / 2, 4, 0);
+ data.bottom = new FormAttachment(i/2+1, 4, 0);
+ internal[i].setLayoutData(data);
+ internal[i].setVisible(true);
+ if(external[i] != null) external[i].setVisible(true);
+ }
+ break;
+ case 6:
+ case 5:
+ //turn on 6 internal composites, 3x2 layout
+ for(int i = 0; i < 6; i++)
+ {
+ FormData data = new FormData();
+ data.left = new FormAttachment(i%2 * 50, 0);
+ data.right = new FormAttachment((i%2+1) * 50, 0);
+ data.top = new FormAttachment(i /2,3, 0);
+ data.bottom = new FormAttachment(i/2+1,3, 0);
+ internal[i].setLayoutData(data);
+ internal[i].setVisible(true);
+ if(external[i]!= null) external[i].setVisible(true);
+ }
+ for(int i = 6; i < 8; i++)
+ {
+ internal[i].setVisible(false);
+ if(external[i] != null) external[i].setVisible(false); //this should never happen
+ }
+ break;
+ case 4:
+ case 3:
+ //turn on 4 internal composites, 2x2 layout
+ for(int i = 0; i < 4; i++)
+ {
+ FormData data = new FormData();
+ data.left = new FormAttachment(i%2 * 50, 0);
+ data.right = new FormAttachment((i%2+1) * 50, 0);
+ data.top = new FormAttachment(i / 2,2, 0);
+ data.bottom = new FormAttachment(i/2+1,2, 0);
+ internal[i].setLayoutData(data);
+ internal[i].setVisible(true);
+ if(external[i] != null) external[i].setVisible(true);
+ }
+ for(int i = 4; i < 8; i++)
+ {
+ internal[i].setVisible(false);
+ if(external[i] != null) external[i].setVisible(false); //this should never happen
+ }
+ break;
+ case 2:
+ //turn on 2 internal composites, 1x2 layout
+ for(int i = 0; i < 2; i++)
+ {
+ FormData data = new FormData();
+ data.left = new FormAttachment(0, 3);
+ data.right = new FormAttachment(100, -3);
+ data.top = new FormAttachment(i ,2, 3);
+ data.bottom = new FormAttachment(i+1,2, -3);
+ internal[i].setLayoutData(data);
+ internal[i].setVisible(true);
+ external[i].setVisible(true);
+ }
+ for(int i = 2; i < 8; i++)
+ {
+ internal[i].setVisible(false);
+ if(external[i] != null) external[i].setVisible(false); //this should never happen
+ }
+ break;
+ case 1:
+ case 0:
+ default:
+ //turn on 1 internal composite, full layout
+ FormData data = new FormData();
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(100, 0);
+ data.top = new FormAttachment(0, 0);
+ data.bottom = new FormAttachment(100, 0);
+ internal[maximized].setLayoutData(data);
+ internal[maximized].setVisible(true);
+ if(external[maximized] != null) external[maximized].setVisible(true);
+ for(int i = usedSlotCount; i < 8; i++)
+ {
+ if (i!=maximized)
+ {
+ internal[i].setVisible(false);
+ if(external[i] != null) external[i].setVisible(false); //this should never happen
+ }
+ }
+ }
+ }
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardPerspective.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardPerspective.java
new file mode 100644
index 0000000000..0dc13dd3d4
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardPerspective.java
@@ -0,0 +1,74 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard;
+
+
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.ActiveModuleBrowserView;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardModuleBrowserView;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardView;
+import org.eclipse.ui.IFolderLayout;
+import org.eclipse.ui.IPageLayout;
+import org.eclipse.ui.IPerspectiveFactory;
+
+import org.eclipse.linuxtools.systemtap.ui.logging.LogManager;
+
+/**
+ * The <code>DashboardPerspective</code> class defines the layout of the Dashboard perspective
+ * in the application.
+ * @see org.eclipse.ui.IPerspectiveFactory
+ * @author Ryan Morse
+ */
+public class DashboardPerspective implements IPerspectiveFactory {
+ public static String ID = "org.eclipse.linuxtools.systemtap.ui.dashboard.DashboardPerspective";
+
+ public void createInitialLayout(IPageLayout layout) {
+ LogManager.logDebug("Start createInitialLayout:", this);
+
+ //Don't display the editor
+ String editorArea = layout.getEditorArea();
+ layout.setEditorAreaVisible(false);
+
+ //Create the left hand tabed view
+ IFolderLayout browsers = layout.createFolder("browsers", IPageLayout.LEFT, 0.25f, editorArea);
+ browsers.addPlaceholder(DashboardModuleBrowserView.ID + ":*");
+ browsers.addView(DashboardModuleBrowserView.ID);
+
+
+ IFolderLayout browsers2 = layout.createFolder("browsers2", IPageLayout.BOTTOM, 0.5f, "browsers");
+ browsers2.addPlaceholder(ActiveModuleBrowserView.ID + ":*");
+ browsers2.addView(ActiveModuleBrowserView.ID);
+
+ layout.getViewLayout(DashboardModuleBrowserView.ID).setCloseable(false);
+ layout.getViewLayout(ActiveModuleBrowserView.ID).setCloseable(false);
+ //DashboardModuleBrowserView.getmoduleNames();
+ /*for (int i=0 ; i<moduleNames.size(); i++)
+ {
+ System.out.println("Dashboard perspective: " + moduleNames.get(i));
+ }*/
+
+ //Add the graph content view.
+ layout.addStandaloneView(DashboardView.ID, false, IPageLayout.TOP, 1.0f, editorArea);
+
+ layout.getViewLayout(DashboardView.ID).setCloseable(false);
+ layout.getViewLayout(DashboardView.ID).setMoveable(false);
+
+ //Add all perspectives to the MainMenu. Window->Show View
+ layout.addShowViewShortcut(DashboardView.ID);
+ layout.addShowViewShortcut(DashboardModuleBrowserView.ID);
+ layout.addShowViewShortcut(ActiveModuleBrowserView.ID);
+
+ //Add a link to the perspective in the MainMenu. Window->Open Perspective
+ layout.addPerspectiveShortcut(ID);
+
+ LogManager.logDebug("End createInitialLayout:", this);
+ }
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardSessionSettings.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardSessionSettings.java
new file mode 100644
index 0000000000..97224ef177
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/DashboardSessionSettings.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard;
+
+import java.util.ArrayList;
+
+/**
+ * This is a simple class used to store information specific to the dashboard that
+ * needs to be accessesed at random.
+ * @author Ryan Morse
+ */
+public class DashboardSessionSettings {
+ public static String password = null;
+ public static ArrayList allmodules = null;
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ActivateGraphAction.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ActivateGraphAction.java
new file mode 100644
index 0000000000..664dfffee1
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ActivateGraphAction.java
@@ -0,0 +1,120 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.DashboardGraphData;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.GraphTreeNode;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.ActiveModuleBrowserView;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardView;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.PlatformUI;
+
+
+/**
+ * This action is responsible for starting up a closed graph. This is used when a module
+ * has already been started, but one of the graphs is not being displayed for what ever reason.
+ * This will make the selected graph active again.
+ * @author Ryan Morse
+ */
+public class ActivateGraphAction extends Action implements IViewActionDelegate {
+ public void init(IViewPart view) {
+ selectedItem = null;
+ }
+
+ public void run(IAction act) {
+ run();
+ }
+
+ public void run() {
+ run(selectedItem);
+ }
+
+ /**
+ * This method retreives the graph information for the selected item and then
+ * creates the graph for display.
+ * @param selected The graph item that is currently selected and needs to be activated
+ */
+ public void run(GraphTreeNode selected) {
+ Display disp = PlatformUI.getWorkbench().getDisplay();
+ Cursor cursor = new Cursor(disp, SWT.CURSOR_WAIT);
+ PlatformUI.getWorkbench().getDisplay().getActiveShell().setCursor(cursor);
+
+
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DashboardView.ID);
+
+ DashboardGraphData data = ((DashboardGraphData)selected.getData());
+
+
+ // IFilteredDataSet fds = DataSetFactory.createFilteredDataSet(data.data);
+ // for(int k=0; k<data.filters.length; k++)
+ // fds.addFilter(data.filters[k]);
+ data.adapter = ((DashboardView)ivp).createGraph(data.graph, data.data, data.moduleName);
+
+ ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+ ambv.getViewer().refresh();
+ PlatformUI.getWorkbench().getDisplay().getActiveShell().setCursor(null);
+ cursor.dispose();
+ }
+
+ /**
+ * This method updates what item is currently selected.
+ * @param action The action that started this method.
+ * @param selection The newly selected item
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+ if(selection instanceof IStructuredSelection) {
+ IStructuredSelection selected = (IStructuredSelection)selection;
+ Object o = selected.getFirstElement();
+ if(o instanceof GraphTreeNode) {
+ selectedItem = (GraphTreeNode)o;
+ o = selectedItem.getData();
+ if(null == ((DashboardGraphData)o).adapter) {
+ action.setEnabled(true);
+ return;
+ }
+ }
+ }
+ action.setEnabled(false);
+ }
+
+ private GraphTreeNode selectedItem;
+
+ public void run(GraphTreeNode selected, String module) {
+ Display disp = PlatformUI.getWorkbench().getDisplay();
+ Cursor cursor = new Cursor(disp, SWT.CURSOR_WAIT);
+ PlatformUI.getWorkbench().getDisplay().getActiveShell().setCursor(cursor);
+
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DashboardView.ID);
+
+ DashboardGraphData data = ((DashboardGraphData)selected.getData());
+
+ // IFilteredDataSet fds = DataSetFactory.createFilteredDataSet(data.data);
+ // for(int k=0; k<data.filters.length; k++)
+ // fds.addFilter(data.filters[k]);
+ data.adapter = ((DashboardView)ivp).createGraph(data.graph, data.data, module);
+
+ ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+ ambv.getViewer().refresh();
+ PlatformUI.getWorkbench().getDisplay().getActiveShell().setCursor(null);
+ cursor.dispose();
+ }
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/CustomAction.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/CustomAction.java
new file mode 100644
index 0000000000..3ce20bc512
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/CustomAction.java
@@ -0,0 +1,27 @@
+package org.eclipse.linuxtools.systemtap.ui.dashboard.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
+
+public class CustomAction extends Action implements IWorkbenchAction{
+
+ private static final String ID = "org.eclipse.linuxtools.systemtap.ui.dashboard.actions.CustomAction";
+
+ public CustomAction(){
+ setId(ID);
+ }
+
+ public void run() {
+
+ Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
+ String dialogBoxTitle = "Message";
+ String message = "You clicked something!";
+ MessageDialog.openInformation(shell, dialogBoxTitle, message);
+ }
+
+ public void dispose() {}
+
+} \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ImportModuleLocationAction.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ImportModuleLocationAction.java
new file mode 100644
index 0000000000..2d0fefe10b
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/ImportModuleLocationAction.java
@@ -0,0 +1,103 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.actions;
+
+import java.io.File;
+import java.text.MessageFormat;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.internal.DashboardPlugin;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.internal.Localization;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.preferences.DashboardPreferenceConstants;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardModuleBrowserView;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+
+import org.eclipse.linuxtools.systemtap.ui.logging.LogManager;
+
+/**
+ * This action allows users to add new directories of DashboardModules. This provides support for downloading
+ * packages from other locations as they become more prevelent.
+ * @author Ryan Morse
+ */
+public class ImportModuleLocationAction extends Action implements IWorkbenchWindowActionDelegate {
+ private IWorkbenchWindow fWindow;
+
+ public ImportModuleLocationAction() {
+ setEnabled(true);
+ }
+
+ public void dispose() {
+ LogManager.logInfo("Disposing", this);
+ fWindow= null;
+ }
+
+ public void init(IWorkbenchWindow window) {
+ LogManager.logInfo("Initializing fWindow: " + window, this);
+ fWindow= window;
+ }
+
+ public void run(IAction action) {
+ run();
+ }
+
+ public void selectionChanged(IAction action, ISelection selection) {}
+
+ /**
+ * This method brings up a dialog window for the user to select the directory
+ * that they have additional modules in. The new directory is then added
+ * to the list of module directories. Once added, the dashboard is refreshed to
+ * make sure all modules are included in the view, including those in the folder
+ * just added.
+ */
+ public void run() {
+ LogManager.logDebug("Start run:", this);
+ File file= queryFolder();
+ if (file != null) {
+ IPreferenceStore p = DashboardPlugin.getDefault().getPreferenceStore();
+ String folders = p.getString(DashboardPreferenceConstants.P_MODULE_FOLDERS);
+
+ p.setValue(DashboardPreferenceConstants.P_MODULE_FOLDERS, folders + File.pathSeparator + file.getAbsolutePath());
+
+ IViewPart ivp = fWindow.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DashboardModuleBrowserView.ID);
+ ((DashboardModuleBrowserView)ivp).refresh();
+ } else if (file != null) {
+ String msg = MessageFormat.format(Localization.getString("ImportModuleLocationAction.FileIsNull"), new String[] {file.getName()});
+ MessageDialog.openWarning(fWindow.getShell(), Localization.getString("ImportModuleLocationAction.Problem"), msg);
+ }
+ LogManager.logDebug("End run:", this);
+ }
+
+ /**
+ * This method brings up a new dialog window for the user to select the directory
+ * that they have a number of modules in.
+ * @return The folder that the user selected.
+ */
+ private File queryFolder() {
+ DirectoryDialog dialog= new DirectoryDialog(fWindow.getShell(), SWT.OPEN);
+ dialog.setText(Localization.getString("ImportModuleLocationAction.ImportDashboardModules"));
+ String path= dialog.open();
+ if (path != null && path.length() > 0) {
+ LogManager.logDebug("queryFile: returnVal-" + path, this);
+ return new File(path);
+ }
+ LogManager.logDebug("queryFile: returnVal-null", this);
+ return null;
+ }
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction.java
new file mode 100644
index 0000000000..cba3d37745
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/PauseModuleAction.java
@@ -0,0 +1,229 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.actions;
+
+import java.util.ArrayList;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.actions.hidden.GetSelectedModule;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.ActiveModuleData;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.DashboardModule;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.ActiveModuleBrowserView;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardModuleBrowserView;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+import org.eclipse.ui.PlatformUI;
+
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+import org.eclipse.linuxtools.systemtap.ui.structures.listeners.IActionListener;
+
+/**
+ * This action is used to pause the selected dashboard module. This is only a fake pause.
+ * The graph is left open, and the SystemTap script is stopped. The user can then start
+ * the script running again and have it output to the same graph. This provides the illusion
+ * of being paused.
+ * @author Ryan Morse
+ */
+public class PauseModuleAction extends Action implements IViewActionDelegate, IWorkbenchWindowActionDelegate {
+ public void init(IViewPart view) {
+ this.view = view;
+ }
+
+ public void init(IWorkbenchWindow window) {}
+
+ public void run(IAction act) {
+ run();
+ }
+
+ /**
+ * This is the main method of the class. It handles the "pretend" pause of the module. The stap process is
+ * stopped but the graph is left open.
+ */
+ public void run() {
+ DashboardModule module = GetSelectedModule.getModule(view);
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+ if(ambv.isActive(module)) {
+ ActiveModuleData amd = ambv.pause(module);
+ if (amd.cmd.isRunning()) {
+ amd.cmd.stop();
+ amd.cmd.dispose(); }
+ amd.paused = true;
+ }
+ fireActionEvent();
+ setEnablement(false);
+ buildEnablementChecks();
+ }
+
+ /**
+ * This updates the enablement of the action based on the newly selected item
+ * @param act The action that called this method
+ * @param select The newly selected item.
+ */
+ public void selectionChanged(IAction act, ISelection select) {
+ this.act = act;
+ setEnablement(false);
+ buildEnablementChecks();
+ }
+
+ /**
+ * This method handles creating the checks that are used to determine if
+ * the action should be enabled for use.
+ */
+ private void buildEnablementChecks() {
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DashboardModuleBrowserView.ID);
+ if(null != ivp) {
+ final DashboardModuleBrowserView dmbv = (DashboardModuleBrowserView)ivp;
+ dmbv.getViewer().addSelectionChangedListener(moduleListener);
+
+ ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ final ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+ ambv.getViewer().addSelectionChangedListener(activeModuleListener);
+
+ RunModuleAction.addActionListener(runListener);
+ StopModuleAction.addActionListener(stopListener);
+ }
+ }
+
+ /**
+ * Toggles whether or not the action is enabled
+ * @param enabled boolean flag representing whether the action is enabled or not
+ */
+ private void setEnablement(boolean enabled) {
+ act.setEnabled(enabled);
+ }
+
+ /**
+ * Removes all internal references provided by this action. Nothing should be
+ * called or referenced after the dispose method.
+ */
+ public void dispose() {
+ try {
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DashboardModuleBrowserView.ID);
+ final DashboardModuleBrowserView dmbv = (DashboardModuleBrowserView)ivp;
+ dmbv.getViewer().removeSelectionChangedListener(moduleListener);
+
+ ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ final ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+ ambv.getViewer().removeSelectionChangedListener(activeModuleListener);
+
+ RunModuleAction.removeActionListener(runListener);
+ StopModuleAction.removeActionListener(stopListener);
+ } catch(Exception e) {}
+
+ view = null;
+ act = null;
+ }
+
+ /**
+ * Adds a new listener to the button to inform others when the pause button
+ * is pressed.
+ * @param listener The class interested in knowing when scripts are paused
+ */
+ public static void addActionListener(IActionListener listener) {
+ listeners.add(listener);
+ }
+
+ /**
+ * Removes the listener from getting pause events.
+ * @param listener The class that no longer should receive pause notices
+ */
+ public static void removeActionListener(IActionListener listener) {
+ listeners.remove(listener);
+ }
+
+ /**
+ * This method fires the event when a module is paused to every listener
+ * that is registered.
+ */
+ private static void fireActionEvent() {
+ for(int i=0; i<listeners.size(); i++)
+ ((IActionListener)listeners.get(i)).handleActionEvent();
+ }
+
+ /**
+ * Enables this action everytime a new module is run.
+ */
+ private final IActionListener runListener = new IActionListener() {
+ public void handleActionEvent() {
+ setEnablement(true);
+ }
+ };
+
+ /**
+ * Disables this action everytime a module is stopped.
+ */
+ private final IActionListener stopListener = new IActionListener() {
+ public void handleActionEvent() {
+ setEnablement(false);
+ }
+ };
+
+ /**
+ * This method checks to see if the newly selected item in the
+ * ActiveModuleBrowserView is paused or not. It will then set the
+ * enablement based on whether or not it is already paused.
+ */
+ private final ISelectionChangedListener activeModuleListener = new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent e) {
+ try {
+ TreeNode node = (TreeNode)((StructuredSelection)(e.getSelection())).getFirstElement();
+ if(((ActiveModuleData)node.getData()).paused)
+ setEnablement(false);
+ else
+ setEnablement(true);
+ } catch(Exception ex) {}
+ }
+ };
+
+ /**
+ * This method checks to see if the newly selected item in the
+ * DashboardModuleBrowserView is running or not. It will then set the
+ * enablement based on whether or not it is running.
+ */
+ private final ISelectionChangedListener moduleListener = new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent e) {
+ try {
+ TreeNode node = (TreeNode)((StructuredSelection)(e.getSelection())).getFirstElement();
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ ActiveModuleBrowserView amdv = (ActiveModuleBrowserView)ivp;
+ int childcount = node.getChildCount();
+ if(0 == childcount && amdv.isActive((DashboardModule)node.getData()) && !amdv.isPaused((DashboardModule)node.getData()))
+ setEnablement(true);
+ else if(childcount > 0)
+ {
+ boolean pause = false;
+ for(int j=0; j<childcount; j++) {
+ if(amdv.isActive((DashboardModule)node.getChildAt(j).getData()) && !amdv.isPaused((DashboardModule)node.getChildAt(j).getData())) {
+ pause = true;
+ break; }
+ }
+ if (pause == true ) setEnablement(true);
+
+ }
+ else
+ setEnablement(false);
+ } catch(Exception ex) {}
+ }
+ };
+
+ private IViewPart view;
+ private IAction act;
+ private static ArrayList listeners = new ArrayList();
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction.java
new file mode 100644
index 0000000000..32093ee2a8
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/RunModuleAction.java
@@ -0,0 +1,416 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.actions;
+
+import java.util.ArrayList;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.actions.hidden.GetSelectedModule;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.ActiveModuleData;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.DashboardModule;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.ActiveModuleBrowserView;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardModuleBrowserView;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+import org.eclipse.ui.PlatformUI;
+
+import org.eclipse.linuxtools.systemtap.ui.consolelog.ClientSession;
+import org.eclipse.linuxtools.systemtap.ui.consolelog.ScpClient;
+import org.eclipse.linuxtools.systemtap.ui.consolelog.Subscription;
+import org.eclipse.linuxtools.systemtap.ui.consolelog.dialogs.SelectServerDialog;
+import org.eclipse.linuxtools.systemtap.ui.consolelog.internal.ConsoleLogPlugin;
+import org.eclipse.linuxtools.systemtap.ui.consolelog.preferences.ConsoleLogPreferenceConstants;
+import org.eclipse.linuxtools.systemtap.ui.consolelog.structures.ScriptConsole;
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.datasets.IDataSet;
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.ui.wizards.dataset.DataSetFactory;
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+import org.eclipse.linuxtools.systemtap.ui.structures.listeners.IActionListener;
+import org.eclipse.linuxtools.systemtap.ui.graphicalrun.structures.ChartStreamDaemon2;
+import org.eclipse.linuxtools.systemtap.ui.systemtapgui.preferences.EnvironmentVariablesPreferencePage;
+
+/**
+ * This action is used to run the selected dashboard module.
+ * The command is setup and started. Any graphs associated with the module
+ * are also added to the main window the the user to monitor.
+ * @author Ryan Morse
+ */
+public class RunModuleAction extends Action implements IViewActionDelegate, IWorkbenchWindowActionDelegate {
+// public RunModuleAction(){
+ // buildEnablementChecks();
+ //}
+
+ public void init(IViewPart view) {
+ this.view = view;
+ }
+
+ public void init(IWorkbenchWindow window) {
+ fWindow= window;
+ }
+
+ public void run(IAction act) {
+ run();
+ }
+
+ /**
+ * This is the main method of the class. It handles running of the module.
+ * The command is setup and started. Any graphs associated with the module
+ * are also added to the main window the the user to monitor.
+ */
+ public void run() {
+ //Get the treeViewer
+// BusyIndicator.showWhile(Display.getCurrent(), this.);
+ Display disp = PlatformUI.getWorkbench().getDisplay();
+ Cursor cursor = new Cursor(disp, SWT.CURSOR_WAIT);
+ PlatformUI.getWorkbench().getDisplay().getActiveShell().setCursor(cursor);
+
+ DashboardModule module = null;
+ TreeNode node = GetSelectedModule.getNode(view);
+ if (node.getChildCount() == 0)
+ {
+ module = (DashboardModule)node.getData();
+ if(null != module) {
+ runScript(module);
+ setEnablement(false);
+ buildEnablementChecks();
+ fireActionEvent();
+
+ } }
+ else {
+ for(int j=0; j<node.getChildCount(); j++) {
+ module = (DashboardModule)node.getChildAt(j).getData();
+ runScript(module);
+ setEnablement(false);
+ buildEnablementChecks();
+ fireActionEvent();
+ }
+ }
+ PlatformUI.getWorkbench().getDisplay().getActiveShell().setCursor(null);
+ cursor.dispose();
+
+ }
+
+ /*public void run() {
+ //Get the treeViewer
+ IViewPart ivp;
+ //DashboardModule module = GetSelectedModule.getModule(view);
+ TreeNode node = GetSelectedModule.getModule(view);
+ if(null != node) {
+ ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+ boolean paused = ambv.isPaused(module);
+
+ //TODO: Check for prebuilt module first
+ String[] cmd = new String[] {
+ "stap",
+ "-g",
+ module.script.getAbsolutePath()};
+
+ IDataSet ds;
+ if(paused)
+ ds = ambv.pause(module).data;
+ else
+ ds = DataSetFactory.createDataSet(module.dataSetID, module.labels);
+ //LoggedCommand command = new LoggedCommand(cmd, getEnvironmentVariables(), new PasswordPrompt(DashboardSessionSettings.password), 100);
+ //command.addInputStreamListener(new ChartStreamDaemon(ds, module.parser));
+ //command.start();
+ fileName = module.script.getAbsolutePath();
+
+ createClientSession();
+ //if(paused)
+ //ambv.pause(module).paused = false;
+ //else {
+ ActiveModuleData amd = new ActiveModuleData();
+ amd.module = module;
+ amd.cmd = console;
+ amd.data = ds;
+ amd.paused = false;
+ addActive(module.category + "." + module.display, amd);
+ //}
+ setEnablement(false);
+ buildEnablementChecks();
+ fireActionEvent();
+
+ } else { buildEnablementChecks(); }
+ }*/
+
+ /**
+ * Adds the newly run module to the ActiveModuleBrowserView.
+ * @param display The name used to display this module
+ * @param amd The data used in the running module.
+ */
+ private void addActive(String display, ActiveModuleData amd) {
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ ((ActiveModuleBrowserView)ivp).add(display, amd);
+ }
+
+ private String[] getEnvironmentVariables() {
+ return EnvironmentVariablesPreferencePage.getEnvironmentVariables();
+ }
+
+ private void runScript(DashboardModule module)
+ {
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+ boolean paused = ambv.isPaused(module);
+ fileName = module.script.getAbsolutePath();
+ String tmpfileName = fileName;
+ String serverfileName = fileName.substring(fileName.lastIndexOf('/')+1);
+ if(ConsoleLogPlugin.getDefault().getPluginPreferences().getBoolean(ConsoleLogPreferenceConstants.REMEMBER_SERVER)!=true)
+
+ {
+ new SelectServerDialog(fWindow.getShell()).open();
+ }
+ if (module.location.equalsIgnoreCase("local")) {
+ try{
+ ScpClient scpclient = new ScpClient();
+ tmpfileName=null;
+ tmpfileName="/tmp/"+ serverfileName;
+ scpclient.transfer(fileName,tmpfileName);
+ }catch(Exception e){e.printStackTrace();}
+ }
+ String modname = serverfileName.substring(0, serverfileName.indexOf('.'));
+ if (modname.indexOf('-') != -1)
+ modname = modname.substring(0, modname.indexOf('-'));
+
+ //TODO: Check for prebuilt module first
+ String[] cmd = new String[] {
+ "stap",
+ "-g",
+ "-m",
+ modname,
+ tmpfileName};
+
+ ScriptConsole console = ScriptConsole.getInstance(serverfileName);
+ console.run(cmd, null, null, null);
+ IDataSet ds;
+ if(paused)
+ ds = ambv.pause(module).data;
+ else
+ ds = DataSetFactory.createDataSet(module.dataSetID, module.labels);
+
+ console.getCommand().addInputStreamListener(new ChartStreamDaemon2(console, ds, module.parser));
+
+
+
+ // createClientSession();
+ // subscription.addInputStreamListener(new ChartStreamDaemon2(console, ds, module.parser));
+
+ //if(paused)
+ //ambv.pause(module).paused = false;
+ //else {
+ ActiveModuleData amd = new ActiveModuleData();
+ amd.module = module;
+ amd.cmd = console;
+ amd.data = ds;
+ amd.paused = false;
+ addActive(module.category + "." + module.display, amd);
+ //}
+
+ }
+
+ /**
+ * This updates the enablement of the action based on the newly selected item
+ * @param act The action that called this method
+ * @param select The newly selected item.
+ */
+ public void selectionChanged(IAction act, ISelection select) {
+ this.act = act;
+ setEnablement(false);
+ buildEnablementChecks();
+ }
+
+ /**
+ * This method handles creating the checks that are used to determine if
+ * the action should be enabled for use.
+ */
+ private void buildEnablementChecks() {
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DashboardModuleBrowserView.ID);
+ if(null != ivp) {
+ final DashboardModuleBrowserView dmbv = (DashboardModuleBrowserView)ivp;
+ dmbv.getViewer().addSelectionChangedListener(moduleListener);
+
+ ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ final ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+ ambv.getViewer().addSelectionChangedListener(activeModuleListener);
+
+ StopModuleAction.addActionListener(stopListener);
+ PauseModuleAction.addActionListener(pauseListener);
+ }
+ }
+
+ /**
+ * Toggles whether or not the action is enabled
+ * @param enabled boolean flag representing whether the action is enabled or not
+ */
+ private void setEnablement(boolean enabled) {
+ act.setEnabled(enabled);
+ }
+
+ /**
+ * Removes all internal references provided by this action. Nothing should be
+ * called or referenced after the dispose method.
+ */
+ public void dispose() {
+ try {
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DashboardModuleBrowserView.ID);
+ final DashboardModuleBrowserView dmbv = (DashboardModuleBrowserView)ivp;
+ dmbv.getViewer().removeSelectionChangedListener(moduleListener);
+
+ ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ final ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+ ambv.getViewer().removeSelectionChangedListener(activeModuleListener);
+
+ StopModuleAction.removeActionListener(stopListener);
+ PauseModuleAction.removeActionListener(pauseListener);
+ } catch(Exception e) {
+
+ }
+ view = null;
+ act = null;
+ fWindow = null;
+ }
+
+ /**
+ * Adds a new listener to the button to inform others when the run button
+ * is pressed.
+ * @param listener The class interested in knowing when scripts are run
+ */
+ public static void addActionListener(IActionListener listener) {
+ listeners.add(listener);
+ }
+
+ /**
+ * Removes the listener from getting run events.
+ * @param listener The class that no longer should receive run notices
+ */
+ public static void removeActionListener(IActionListener listener) {
+ listeners.remove(listener);
+ }
+
+ /**
+ * This method fires the event when a module is run to every listener
+ * that is registered.
+ */
+ private static void fireActionEvent() {
+ for(int i=0; i<listeners.size(); i++)
+ ((IActionListener)listeners.get(i)).handleActionEvent();
+ }
+
+ /**
+ * Enables this action everytime a module is stopped.
+ */
+ private final IActionListener stopListener = new IActionListener() {
+ public void handleActionEvent() {
+ setEnablement(true);
+ }
+ };
+
+ /**
+ * Enables this action everytime a module is paused.
+ */
+ private final IActionListener pauseListener = new IActionListener() {
+ public void handleActionEvent() {
+ setEnablement(true);
+ }
+ };
+
+ /**
+ * This method checks to see if the newly selected item in the
+ * ActiveModuleBrowserView is paused or not. It will then set the
+ * enablement based on whether or not it is already paused.
+ */
+ private final ISelectionChangedListener activeModuleListener = new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent e) {
+ try {
+ TreeNode node = (TreeNode)((StructuredSelection)(e.getSelection())).getFirstElement();
+ if(((ActiveModuleData)node.getData()).paused)
+ setEnablement(true);
+ else
+ setEnablement(false);
+ } catch(Exception ex) {}
+ }
+ };
+
+ /**
+ * This method checks to see if the newly selected item in the
+ * DashboardModuleBrowserView is running or not. It will then set the
+ * enablement based on whether or not it is running.
+ */
+ private final ISelectionChangedListener moduleListener = new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent e) {
+ try {
+ TreeNode node = (TreeNode)((StructuredSelection)(e.getSelection())).getFirstElement();
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ ActiveModuleBrowserView amdv = (ActiveModuleBrowserView)ivp;
+ DashboardModule module = (node.getData() instanceof DashboardModule) ? (DashboardModule)node.getData() : null;
+ int childcount = node.getChildCount();
+ if(0 == childcount && !amdv.isActive(module))
+ setEnablement(true);
+ else if(amdv.isActive(module) && amdv.isPaused(module))
+ setEnablement(true);
+ else if(childcount > 0)
+ {
+ boolean active = false;
+
+
+ for(int j=0; j<childcount; j++) {
+ if(amdv.isActive((DashboardModule)node.getChildAt(j).getData())) {
+ active = true;
+ break; }
+ }
+ if (active == false ) setEnablement(true);
+
+ }
+ else
+ setEnablement(false);
+ } catch(Exception ex) {}
+ }
+ };
+
+ protected boolean createClientSession()
+ {
+
+ if (!ClientSession.isConnected())
+ {
+ new SelectServerDialog(fWindow.getShell()).open();
+ }
+ if((ConsoleLogPlugin.getDefault().getPluginPreferences().getBoolean(ConsoleLogPreferenceConstants.CANCELLED))!=true)
+ {
+ subscription = new Subscription(fileName,false);
+ if (ClientSession.isConnected())
+ {
+ // console = ScriptConsole.getInstance(fileName, subscription);
+ // console.run();
+ }
+ }
+ return true;
+ }
+
+ private IViewPart view;
+ private static ArrayList listeners = new ArrayList();
+ private String fileName = null;
+ protected IWorkbenchWindow fWindow = null;
+ private IAction act;
+ protected Subscription subscription;
+ protected int SCRIPT_ID;
+ protected ScriptConsole console;
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopGraphAction.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopGraphAction.java
new file mode 100644
index 0000000000..4027d96da7
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopGraphAction.java
@@ -0,0 +1,86 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.actions;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.DashboardGraphData;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.GraphTreeNode;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.ActiveModuleBrowserView;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardView;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.PlatformUI;
+
+
+/**
+ * This action is responsible for stopping an active graph. This is used when a module
+ * has already been started, but the user no longer wants to see one of the graphs.
+ * This will make the selected graph inactive, with the option for bringing it back up
+ * at a future time.
+ * @author Ryan Morse
+ */
+public class StopGraphAction extends Action implements IViewActionDelegate {
+ public void init(IViewPart view) {
+ selectedItem = null;
+ }
+
+ public void run(IAction act) {
+ run();
+ }
+
+ public void run() {
+ run(selectedItem);
+ }
+
+ /**
+ * This method retreives the graph information for the selected item and then
+ * disposes of the graph from the display.
+ * @param selected The graph item that is currently selected and needs to be deactivated
+ */
+ public void run(GraphTreeNode selected) {
+ DashboardGraphData data = ((DashboardGraphData)selected.getData());
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DashboardView.ID);
+ DashboardView dv = (DashboardView)ivp;
+ dv.removeGraph(data.adapter,data.adapter.getmodulename());
+ data.adapter = null;
+
+ ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+ ambv.getViewer().refresh();
+ }
+
+ /**
+ * This method updates what item is currently selected.
+ * @param action The action that started this method.
+ * @param selection The newly selected item
+ */
+ public void selectionChanged(IAction action, ISelection selection) {
+ if(selection instanceof IStructuredSelection) {
+ IStructuredSelection selected = (IStructuredSelection)selection;
+ Object o = selected.getFirstElement();
+ if(o instanceof GraphTreeNode) {
+ selectedItem = (GraphTreeNode)o;
+ o = selectedItem.getData();
+ if(null == ((DashboardGraphData)o).adapter) {
+ action.setEnabled(false);
+ return;
+ }
+ }
+ }
+ action.setEnabled(true);
+ }
+
+ private GraphTreeNode selectedItem;
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction.java
new file mode 100644
index 0000000000..208968ac73
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/StopModuleAction.java
@@ -0,0 +1,269 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.actions;
+
+import java.util.ArrayList;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.actions.hidden.GetSelectedModule;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.ActiveModuleData;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.ActiveModuleTreeNode;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.DashboardGraphData;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.DashboardModule;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.GraphTreeNode;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.ActiveModuleBrowserView;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardModuleBrowserView;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardView;
+import org.eclipse.ui.IViewActionDelegate;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.IWorkbenchWindowActionDelegate;
+import org.eclipse.ui.PlatformUI;
+
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+import org.eclipse.linuxtools.systemtap.ui.structures.listeners.IActionListener;
+
+/**
+ * This action is used to stop the selected dashboard module. The graphs are all
+ * closed, the process is killed, and the item is removed from tha ActiveModuleBrowserView.
+ * @author Ryan Morse
+ */
+public class StopModuleAction extends Action implements IViewActionDelegate, IWorkbenchWindowActionDelegate {
+ public void init(IViewPart view) {
+ this.view = view;
+ }
+
+ public void init(IWorkbenchWindow window) {}
+
+ public void run(IAction act) {
+ run();
+ }
+
+ /**
+ * This is the main method of the class. It handles stopping of the module.
+ * All of the graphs are closed, the process is killed, and the item
+ * is removed from the ActiveModuleBrowserView.
+ */
+ public void run() {
+ PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() {
+ boolean stop = false;
+ public void run() {
+ if(stop) return;
+ try {
+ TreeNode treenode = GetSelectedModule.getNode(view);
+ DashboardModule module = null;
+ if (treenode.getChildCount() == 0)
+ {
+ module = (DashboardModule)treenode.getData();
+ stop = stopmodule(module);
+ }
+ else
+ {
+ for(int j=0; j<treenode.getChildCount(); j++) {
+ module = (DashboardModule)treenode.getChildAt(j).getData();
+ stop = stopmodule(module) || stop ;
+ }
+ }
+ } catch (Exception e) {
+ stop = true;
+ }
+ }
+ });
+ }
+
+ private boolean stopmodule(DashboardModule module)
+ {
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+ GraphTreeNode graphNode;
+ DashboardGraphData graphData;
+ boolean stop = false;
+ try{
+ if(ambv.isActive(module)) {
+ ActiveModuleTreeNode node = ambv.remove(module);
+ ActiveModuleData amd = (ActiveModuleData)node.getData();
+
+ ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DashboardView.ID);
+ DashboardView dv = (DashboardView)ivp;
+
+ for(int i=0; i<node.getChildCount(); i++) {
+ graphNode = (GraphTreeNode)node.getChildAt(i);
+ graphData = (DashboardGraphData)graphNode.getData();
+ if(null != graphData.adapter) {
+ dv.removeGraph(graphData.adapter, module.getcategory());
+ graphData.adapter = null;
+ }
+ }
+
+ if(!amd.paused) {
+ if (amd.cmd.isRunning())
+ amd.cmd.stop();
+ amd.data = null;
+ }
+ dv.closeComposite(amd.module.category);
+ amd = null;
+ fireActionEvent();
+ }
+
+ setEnablement(false);
+ buildEnablementChecks();
+ } catch (Exception e) {
+ stop = true;
+ }
+ return stop;
+ }
+
+ /**
+ * This updates the enablement of the action based on the newly selected item
+ * @param act The action that called this method
+ * @param select The newly selected item.
+ */
+ public void selectionChanged(IAction act, ISelection select) {
+ this.act = act;
+ setEnablement(false);
+ buildEnablementChecks();
+ }
+
+ /**
+ * This method handles creating the checks that are used to determine if
+ * the action should be enabled for use.
+ */
+ private void buildEnablementChecks() {
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DashboardModuleBrowserView.ID);
+ if(null != ivp) {
+ final DashboardModuleBrowserView dmbv = (DashboardModuleBrowserView)ivp;
+ dmbv.getViewer().addSelectionChangedListener(moduleListener);
+
+ ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ final ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+ ambv.getViewer().addSelectionChangedListener(activeModuleListener);
+
+ RunModuleAction.addActionListener(runListener);
+ }
+ }
+
+ /**
+ * Toggles whether or not the action is enabled
+ * @param enabled boolean flag representing whether the action is enabled or not
+ */
+ private void setEnablement(boolean enabled) {
+ act.setEnabled(enabled);
+ }
+
+ /**
+ * Removes all internal references provided by this action. Nothing should be
+ * called or referenced after the dispose method.
+ */
+ public void dispose() {
+ try {
+ RunModuleAction.removeActionListener(runListener);
+
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DashboardModuleBrowserView.ID);
+ final DashboardModuleBrowserView dmbv = (DashboardModuleBrowserView)ivp;
+ dmbv.getViewer().removeSelectionChangedListener(moduleListener);
+
+ ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ final ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+ ambv.getViewer().removeSelectionChangedListener(activeModuleListener);
+ } catch(Exception e) {}
+
+ view = null;
+ act = null;
+ }
+
+ /**
+ * Adds a new listener to the button to inform others when the stop button
+ * is pressed.
+ * @param listener The class interested in knowing when scripts are stopped
+ */
+ public static void addActionListener(IActionListener listener) {
+ listeners.add(listener);
+ }
+
+ /**
+ * Removes the listener from getting stop events.
+ * @param listener The class that no longer should receive stop notices
+ */
+ public static void removeActionListener(IActionListener listener) {
+ listeners.remove(listener);
+ }
+
+ /**
+ * This method fires the event when a module is run to every listener
+ * that is registered.
+ */
+ private static void fireActionEvent() {
+ for(int i=0; i<listeners.size(); i++)
+ ((IActionListener)listeners.get(i)).handleActionEvent();
+ }
+
+ /**
+ * Enables this action everytime a new module is run.
+ */
+ private final IActionListener runListener = new IActionListener() {
+ public void handleActionEvent() {
+ setEnablement(true);
+ }
+ };
+
+ /**
+ * Enables this action everytime an item in the ActiveModuleBrowserView
+ * is selected.
+ */
+ private final ISelectionChangedListener activeModuleListener = new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent e) {
+ setEnablement(true);
+ }
+ };
+
+ /**
+ * This method checks to see if the newly selected item in the
+ * DashboardModuleBrowserView is running or not. It will then set the
+ * enablement based on whether or not it is running.
+ */
+ private final ISelectionChangedListener moduleListener = new ISelectionChangedListener() {
+ public void selectionChanged(SelectionChangedEvent e) {
+ try {
+ TreeNode node = (TreeNode)((StructuredSelection)(e.getSelection())).getFirstElement();
+ IViewPart ivp = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(ActiveModuleBrowserView.ID);
+ ActiveModuleBrowserView amdv = (ActiveModuleBrowserView)ivp;
+ int childcount = node.getChildCount();
+ if(0 == childcount && amdv.isActive((DashboardModule)node.getData()))
+ setEnablement(true);
+ else if(childcount > 0)
+ {
+ boolean active = false;
+
+
+ for(int j=0; j<childcount; j++) {
+ if(amdv.isActive((DashboardModule)node.getChildAt(j).getData())) {
+ active = true;
+ break; }
+ }
+ if (active == true ) setEnablement(true);
+
+ }
+ else
+ setEnablement(false);
+ } catch(Exception ex) {}
+ }
+ };
+
+ private IViewPart view;
+ private IAction act;
+ private static ArrayList listeners = new ArrayList();
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/hidden/GetSelectedModule.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/hidden/GetSelectedModule.java
new file mode 100644
index 0000000000..c3b7f2dfd1
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/actions/hidden/GetSelectedModule.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.actions.hidden;
+
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.ActiveModuleData;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.DashboardModule;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.ModuleTreeNode;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.ActiveModuleBrowserView;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardModuleBrowserView;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.PlatformUI;
+
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+
+/**
+ * This class is used for determining what module is currently selected. It examins both
+ * the DashboardModuleBrowserView and the ActiveModuleBrowserView to determine which is
+ * active, and what is selected inside that view.
+ * @author Ryan Morse
+ */
+public final class GetSelectedModule {
+ /**
+ * This class examins the provided view and if it is an instance of either
+ * DashboardModuleBrowserView or ActiveModuleBrowserView it retreives the selected
+ * item and returns it. Else, it returns null.
+ * @param view The view that is currently open.
+ * @return The selected DashboardModule contained in the provided view
+ */
+ public static DashboardModule getModule(IViewPart view) {
+ if(null == view)
+ view = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DashboardModuleBrowserView.ID);
+
+ if(view instanceof DashboardModuleBrowserView)
+ return getModule2((DashboardModuleBrowserView)view);
+ else if(view instanceof ActiveModuleBrowserView)
+ return getModule2((ActiveModuleBrowserView)view);
+ return null;
+ }
+
+
+ /**
+ * This class examins the provied view and retreives the selected item from
+ * it. It then converts the selected item into a DashboardModule and returns it.
+ * @param view The DashboardModuleBrowserView that is currently open
+ * @return The selected DashboardModule from the view
+ */
+ private static DashboardModule getModule2(DashboardModuleBrowserView view) {
+ TreeViewer viewer = view.getViewer();
+ ISelection selected = viewer.getSelection();
+ if(null != selected && selected instanceof IStructuredSelection) {
+ Object element = ((IStructuredSelection)selected).getFirstElement();
+ if(element instanceof ModuleTreeNode) {
+ ModuleTreeNode mod = (ModuleTreeNode)element;
+
+ return (DashboardModule)mod.getData();
+ }
+ }
+ return null;
+ }
+
+ public static TreeNode getNode(IViewPart view) {
+ TreeViewer viewer = null;
+ if(null == view)
+ view = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findView(DashboardModuleBrowserView.ID);
+ if(view instanceof DashboardModuleBrowserView)
+ viewer = ((DashboardModuleBrowserView)view).getViewer();
+ else
+ viewer = ((ActiveModuleBrowserView)view).getViewer();
+ ISelection selected = viewer.getSelection();
+ if(null != selected && selected instanceof IStructuredSelection) {
+ Object element = ((IStructuredSelection)selected).getFirstElement();
+ if(element instanceof TreeNode) {
+ TreeNode node = (TreeNode)element;
+
+ return node;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * This class examins the provied view and retreives the selected item from
+ * it. It then gets the DashboardModule contained within the selected item
+ * and returns it.
+ * @param view The ActiveModuleBrowserView that is currently open
+ * @return The selected DashboardModule from the view
+ */
+
+
+ private static DashboardModule getModule2(ActiveModuleBrowserView view) {
+ TreeViewer viewer = view.getViewer();
+ ISelection selected = viewer.getSelection();
+ if(null != selected && selected instanceof IStructuredSelection) {
+ Object element = ((IStructuredSelection)selected).getFirstElement();
+ if(element instanceof TreeNode) {
+ TreeNode mod = (TreeNode)element;
+
+ return ((ActiveModuleData)mod.getData()).module;
+ }
+ }
+ return null;
+ }
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardCloseMonitor.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardCloseMonitor.java
new file mode 100644
index 0000000000..60636acd87
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardCloseMonitor.java
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Ryan Morse
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.internal;
+
+import java.text.MessageFormat;
+
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.ActiveModuleBrowserView;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchListener;
+import org.eclipse.ui.IWorkbenchWindow;
+
+
+/**
+ * This listener is responsible for monitoring workbench close actions. It is used
+ * to veto a shutdown if there are modules still running and the user does not really
+ * want to shutdown.
+ * @author Ryan Morse
+ */
+public class DashboardCloseMonitor implements IWorkbenchListener {
+ public boolean preShutdown(IWorkbench workbench, boolean forced) {
+ boolean close = true;
+ if(!forced) {
+ IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
+ IViewPart ivp = window.getActivePage().findView(ActiveModuleBrowserView.ID);
+ ActiveModuleBrowserView ambv = (ActiveModuleBrowserView)ivp;
+
+ if(ambv.anyRunning()) {
+ String msg = MessageFormat.format(Localization.getString("DashboardCloseMonitor.StillRunning"), null);
+ close = MessageDialog.openQuestion(window.getShell(), "Closing...", msg);
+ }
+ }
+ return close;
+ }
+
+ public void postShutdown(IWorkbench workbench) {}
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardPlugin.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardPlugin.java
new file mode 100644
index 0000000000..90ee67384f
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/DashboardPlugin.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.internal;
+
+import java.io.File;
+
+import org.eclipse.ui.IWorkbenchListener;
+import org.eclipse.ui.plugin.*;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.internal.DashboardCloseMonitor;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.DashboardMetaData;
+import org.osgi.framework.BundleContext;
+
+
+/**
+ * The main plugin class to be used in the desktop.
+ */
+public class DashboardPlugin extends AbstractUIPlugin {
+ /**
+ * The constructor.
+ */
+ public DashboardPlugin() {
+ plugin = this;
+ }
+
+ /**
+ * This method is called upon plug-in activation
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+
+ workbenchListener = new DashboardCloseMonitor();
+ plugin.getWorkbench().addWorkbenchListener(workbenchListener);
+ }
+
+ /**
+ * This method is called when the plug-in is stopped
+ */
+ public void stop(BundleContext context) throws Exception {
+ super.stop(context);
+
+ plugin.getWorkbench().removeWorkbenchListener(workbenchListener);
+ plugin = null;
+
+ //Clean up temparary scripts
+ removeFolder(DashboardMetaData.tempScriptFolder);
+ removeFolder(DashboardMetaData.tempModuleFolder);
+ }
+
+ private void removeFolder(File folder) {
+ try {
+ File[] files = folder.listFiles();
+ for(int j=0; j<files.length; j++) {
+ if(files[j].isDirectory())
+ removeFolder(files[j]);
+ else
+ files[j].delete();
+ }
+ folder.delete();
+ } catch(Exception e) {}
+ }
+
+ /**
+ * Returns the shared instance.
+ */
+ public static DashboardPlugin getDefault() {
+ return plugin;
+ }
+
+ /**
+ * Returns an image descriptor for the image file at the given
+ * plug-in relative path.
+ *
+ * @param path the path
+ * @return the image descriptor
+ */
+ public static ImageDescriptor getImageDescriptor(String path) {
+ return AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.linuxtools.systemtap.ui.dashboard", path);
+ }
+
+ private IWorkbenchListener workbenchListener;
+ private static DashboardPlugin plugin;
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/Localization.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/Localization.java
new file mode 100644
index 0000000000..e7157fb151
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/Localization.java
@@ -0,0 +1,22 @@
+package org.eclipse.linuxtools.systemtap.ui.dashboard.internal;
+
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class Localization {
+ private static final String BUNDLE_NAME = "org.eclipse.linuxtools.systemtap.ui.dashboard.internal.localization";
+
+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
+ .getBundle(BUNDLE_NAME);
+
+ private Localization() {
+ }
+
+ public static String getString(String key) {
+ try {
+ return RESOURCE_BUNDLE.getString(key);
+ } catch (MissingResourceException e) {
+ return '!' + key + '!';
+ }
+ }
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/localization.properties b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/localization.properties
new file mode 100644
index 0000000000..231831b1a6
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/internal/localization.properties
@@ -0,0 +1,14 @@
+ImportModuleLocationAction.FileIsNull=File is null
+ImportModuleLocationAction.Problem=Problem
+ImportModuleLocationAction.ImportDashboardModules=Import Dashboard Modules
+
+RunModuleAction.ModuleIsRunning=This module is already running\!
+RunModuleAction.Problem=Problem
+
+DashboardCloseMonitor.StillRunning=There are modules still running, are you sure you want to close?
+
+DashboardPreferencePage.DashboardPreferences=Dashboard Preferences
+DashboardPreferencePage.AdditionalDirectories=Additional &module directories:
+DashboardPreferencePage.ModuleDirectory=Module Directory
+DashboardPreferencePage.RefreshDelay=&Refresh delay (ms):
+DashboardPreferencePage.ExamplesDir=SystemTap Examples Directory:
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferenceConstants.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferenceConstants.java
new file mode 100644
index 0000000000..2195db3080
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferenceConstants.java
@@ -0,0 +1,20 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.preferences;
+
+public class DashboardPreferenceConstants {
+ public static final String P_MODULE_FOLDERS = "ModuleFoldersPreference";
+ public static final String P_DASHBOARD_UPDATE_DELAY = "DashboardUpdateDelay";
+ public static final String P_DASHBOARD_EXAMPLES_DIR = "ExamplesDir";
+ public static final String P_DASHBOARD_SCRIPT = "Script";
+
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferencePage.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferencePage.java
new file mode 100755
index 0000000000..9fd58ceaa5
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/DashboardPreferencePage.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.preferences;
+
+import org.eclipse.jface.preference.*;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.internal.DashboardPlugin;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.internal.Localization;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.IWorkbench;
+
+import org.eclipse.linuxtools.systemtap.ui.logging.LogManager;
+
+public class DashboardPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+ public DashboardPreferencePage() {
+ super(GRID);
+ LogManager.logDebug("Start DashboardPreferencePage:", this);
+ setPreferenceStore(DashboardPlugin.getDefault().getPreferenceStore());
+ setDescription(Localization.getString("DashboardPreferencePage.DashboardPreferences"));
+ LogManager.logDebug("End DashboardPreferencePage:", this);
+ }
+
+ public void createFieldEditors() {
+ LogManager.logDebug("Start createFieldEditors:", this);
+ addField(new PathEditor(DashboardPreferenceConstants.P_MODULE_FOLDERS,
+ Localization.getString("DashboardPreferencePage.AdditionalDirectories"), Localization.getString("DashboardPreferencePage.ModuleDirectory"), getFieldEditorParent()));
+
+ addField(new IntegerFieldEditor(DashboardPreferenceConstants.P_DASHBOARD_UPDATE_DELAY,
+ Localization.getString("DashboardPreferencePage.RefreshDelay"), getFieldEditorParent()));
+
+ addField(new StringFieldEditor(DashboardPreferenceConstants.P_DASHBOARD_EXAMPLES_DIR,
+ Localization.getString("DashboardPreferencePage.ExamplesDir"), getFieldEditorParent()));
+
+ LogManager.logDebug("End createFieldEditors:", this);
+ }
+
+ public void init(IWorkbench workbench) {
+ LogManager.logDebug("Start init:", this);
+ LogManager.logInfo("Initializing", this);
+ LogManager.logDebug("End init:", this);
+ }
+
+ public void dispose() {
+ LogManager.logDebug("Start dispose:", this);
+ LogManager.logInfo("Disposing", this);
+ super.dispose();
+ LogManager.logDebug("End dispose:", this);
+ }
+} \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/PreferenceInitializer.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/PreferenceInitializer.java
new file mode 100755
index 0000000000..f86774814f
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/preferences/PreferenceInitializer.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.internal.DashboardPlugin;
+
+import org.eclipse.linuxtools.systemtap.ui.logging.LogManager;
+
+
+public class PreferenceInitializer extends AbstractPreferenceInitializer {
+ public void initializeDefaultPreferences() {
+ LogManager.logDebug("Start initializeDefaultPreferences:", this);
+ IPreferenceStore store = DashboardPlugin.getDefault().getPreferenceStore();
+
+ //dashboard
+ store.setDefault(DashboardPreferenceConstants.P_MODULE_FOLDERS, "");
+ store.setDefault(DashboardPreferenceConstants.P_DASHBOARD_UPDATE_DELAY, 1000);
+ store.setDefault(DashboardPreferenceConstants.P_DASHBOARD_EXAMPLES_DIR, "/usr/local/share/doc/systemtap/examples");
+
+ LogManager.logDebug("End initializeDefaultPreferences:", this);
+ }
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleData.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleData.java
new file mode 100644
index 0000000000..4464c26755
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleData.java
@@ -0,0 +1,28 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.structures;
+
+import org.eclipse.linuxtools.systemtap.ui.consolelog.structures.ScriptConsole;
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.datasets.IDataSet;
+//import org.eclipse.linuxtools.systemtap.ui.structures.runnable.LoggedCommand;
+
+/**
+ * This is a basic structure to contain all the important information for a
+ * running Dashboard script.
+ * @author Ryan Morse
+ */
+public class ActiveModuleData {
+ public DashboardModule module;
+ public ScriptConsole cmd;
+ public IDataSet data;
+ public boolean paused;
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleTreeNode.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleTreeNode.java
new file mode 100644
index 0000000000..a9d3bfe170
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ActiveModuleTreeNode.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.structures;
+
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+
+/**
+ * This is a simple extension of TreeNode to allow for providing a popup menu
+ * for specific items in the ActiveModuleBrowserView and DashboardModuleBrowserView
+ * @author Ryan Morse
+ *
+ */
+public class ActiveModuleTreeNode extends TreeNode {
+ public ActiveModuleTreeNode(ActiveModuleData amd, String disp, boolean c) {
+ super(amd, disp, c);
+ }
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphData.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphData.java
new file mode 100644
index 0000000000..1128f31418
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphData.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.structures;
+
+import org.eclipse.linuxtools.systemtap.ui.dashboard.DashboardAdapter;
+
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.datasets.IDataSet;
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.filters.IDataSetFilter;
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.structures.GraphData;
+
+/**
+ * This is a basic structure to contain all the important information for a
+ * a Dashboard graph.
+ * @author Ryan Morse
+ */
+public class DashboardGraphData {
+ public GraphData graph;
+ public String moduleName;
+ public IDataSetFilter[] filters;
+ public IDataSet data;
+ public DashboardAdapter adapter;
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsLocator.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsLocator.java
new file mode 100644
index 0000000000..1bd234d24c
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsLocator.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.structures;
+
+import java.io.File;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.internal.DashboardPlugin;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.preferences.DashboardPreferenceConstants;
+
+import org.eclipse.linuxtools.systemtap.ui.structures.JarArchive;
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+import org.eclipse.linuxtools.systemtap.ui.systemtapgui.SystemTapGUISettings;
+
+/**
+ * This class is used to generate the entire Dashboard module list. It
+ * gets the list of directories that the user has specified contain modules
+ * and then calls the TreeBuilder on each of them to build up the entire list.
+ * @author Ryan Morse
+ */
+public final class DashboardGraphsLocator {
+ /**
+ * This is the main method for the class. It first gathers up all the directories
+ * that contain modules and then goes through each directory and adds the modules
+ * contained in that folder to the list. Once finished, it will return the entire
+ * list.
+ * @return The entire list of Dashboard Modules organized as a Tree
+ */
+ public static TreeNode getGraphs() {
+ TreeNode root = new TreeNode(null, "", false);
+
+ String[] locations = getModuleLocations();
+ DashboardGraphsTreeBuilder dmtb;
+ if(null != locations) {
+ for(int i=0; i<locations.length; i++) {
+ dmtb = new DashboardGraphsTreeBuilder(root);
+ dmtb.generateTree(new File(locations[i]));
+ }
+ root.sortTree();
+ }
+
+ return root;
+ }
+
+ /**
+ * This method gets all of the dashboard module directories from the user's
+ * preferences and adds the default directores, then returns the entire list.
+ * @return String array containing all of the directories with modules.
+ */
+ public static String[] getModuleLocations() {
+ IPreferenceStore store = DashboardPlugin.getDefault().getPreferenceStore();
+
+ String locations = store.getString(DashboardPreferenceConstants.P_MODULE_FOLDERS);
+
+ String[] folders = locations.split(File.pathSeparator);
+
+ String[] allFolders;
+ if(locations.length() > 0) {
+ allFolders = new String[folders.length + 2];
+ System.arraycopy(folders, 0, allFolders, 2, folders.length);
+ } else
+ allFolders = new String[2];
+
+ //This locates all the preexisting modules
+ if(new File(moduleStore).exists()) {
+ File f = new File(moduleLocation);
+ if(!f.exists()) {
+ f.mkdir();
+ JarArchive.unjarFiles(moduleStore, moduleLocation, "modules/");
+ }
+ allFolders[0] = moduleLocation;
+ } else {
+ allFolders[0] = System.getProperty("osgi.splashLocation");
+ allFolders[0] = allFolders[0].substring(0, allFolders[0].indexOf("systemtapgui"));
+ allFolders[0] += "dashboard/modules/";
+ }
+
+ allFolders[1] = SystemTapGUISettings.settingsFolder.getAbsolutePath();
+
+ return allFolders;
+ }
+
+ public static final String moduleLocation = SystemTapGUISettings.installDirectory + "/.modules/";
+ public static final String moduleStore = SystemTapGUISettings.installDirectory + "/plugins/org.eclipse.linuxtools.systemtap.ui.dashboard_1.0.0.jar";
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsTreeBuilder.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsTreeBuilder.java
new file mode 100644
index 0000000000..d61de1c687
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardGraphsTreeBuilder.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.structures;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+import org.eclipse.linuxtools.systemtap.ui.structures.ZipArchive;
+import org.eclipse.linuxtools.systemtap.ui.systemtapgui.SystemTapGUISettings;
+
+/**
+ * This class is responsible for searching through the Dashboard module
+ * directory and building a tree with their modules.
+ * @author Ryan Morse
+ */
+public class DashboardGraphsTreeBuilder {
+ public DashboardGraphsTreeBuilder() {
+ tree = new TreeNode("Root", "", false);
+ }
+
+ public DashboardGraphsTreeBuilder(TreeNode t) {
+ tree = t;
+ }
+
+ /**
+ * Returns the tree containing all of the dashboard modules
+ * @return TreeNode with dashboard modules
+ */
+ public TreeNode getTree() {
+ return tree;
+ }
+
+ /**
+ * This method is used to generate the tree of dashboard modules for
+ * the provided folder.
+ * @param folder The directory to search for dashboard modules
+ */
+ public void generateTree(File folder) {
+ scanNextLevel(folder);
+ }
+
+ /**
+ * This is the main method for this class. It searches through the provided
+ * file/folder and builds the tree with any dashboard modules it finds.
+ * @param f The file/folder to scan for modules
+ */
+ private void scanNextLevel(File f) {
+ File[] fs = f.listFiles(new DashboardModuleFileFilter());
+ DashboardMetaData dgd;
+ DashboardModule dg;
+
+ TreeNode location;
+ for(int i=0; i<fs.length; i++) {
+ if(fs[i].isDirectory())
+ scanNextLevel(fs[i]);
+ else {
+ try {
+ File folder = new File(SystemTapGUISettings.tempDirectory + "/bundles/");
+ if(!folder.exists())
+ folder.mkdirs();
+
+ File file = new File(folder + "/" + fs[i].getName() + ".tmp");
+ file.createNewFile();
+ ZipArchive.uncompressFile(file.getAbsolutePath(), fs[i].getAbsolutePath());
+ ZipArchive.unzipFiles(file.getAbsolutePath(), folder.getAbsolutePath());
+ dgd = new DashboardMetaData(folder.getAbsolutePath() + DashboardModule.metaFileName);
+ dg = dgd.getModule();
+ dg.archiveFile = fs[i];
+ location = findInsertLocation(dg.category);
+ location.add(new ModuleTreeNode(dg, dg.display, true));
+
+ File[] files = folder.listFiles();
+ for(int j=0; j<files.length; j++)
+ files[j].delete();
+ folder.delete();
+ } catch(IOException ioe) {}
+ }
+ }
+ }
+
+ /**
+ * This method searches through the tree to find the correct location
+ * to add the new module. If the path does not exist yet, a new node will
+ * be created.
+ * @param path The category the module should be added to
+ * @return The tree node matching the provided path
+ */
+ private TreeNode findInsertLocation(String path) {
+ String[] folders = path.split("\\p{Punct}");
+ TreeNode level = tree;
+
+ for(int j,i=0; i<folders.length; i++) {
+ for(j=0; j<level.getChildCount(); j++) {
+ if(level.getChildAt(j).toString().equals(folders[i]))
+ break;
+ }
+ if(j >= level.getChildCount())
+ level.add(new TreeNode("", folders[i], false));
+ level = level.getChildAt(j);
+ }
+ return level;
+ }
+
+ private TreeNode tree;
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardMetaData.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardMetaData.java
new file mode 100644
index 0000000000..dcebcbb696
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardMetaData.java
@@ -0,0 +1,212 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.structures;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.util.ArrayList;
+
+import org.eclipse.ui.IMemento;
+import org.eclipse.ui.WorkbenchException;
+import org.eclipse.ui.XMLMemento;
+
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.structures.GraphData;
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.ui.wizards.dataset.DataSetFactory;
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.ui.wizards.filter.AvailableFilterTypes;
+import org.eclipse.linuxtools.systemtap.ui.systemtapgui.SystemTapGUISettings;
+
+/**
+ * This class handles retreiving information from the metadata contained in a Dashboard module.
+ * It will read through the metadata and create a new DashboardModule data set to contain
+ * all of the information contained in the XML Memento file.
+ * @author Ryan Morse
+ */
+public class DashboardMetaData {
+ public DashboardMetaData(String file) {
+ this(new File(file));
+ }
+
+ public DashboardMetaData(File file) {
+ module = null;
+ metaFile = file;
+ if(file.exists())
+ readData();
+ }
+
+ public DashboardModule getModule() {
+ return module;
+ }
+
+ /**
+ * This method checks to see if there is an available module for the specified kernel version.
+ * @param kernelVersion String for the specific kernel to try to get a module for.
+ * @return boolean representing whether or there is an existing module for the provided kernel
+ */
+ public boolean isModuleAvailable(String kernelVersion) {
+ for(int i=0; i<module.kernelVersions.length; i++)
+ if(module.kernelVersions[i].equals(kernelVersion))
+ return true;
+ return false;
+ }
+
+ /**
+ * This method tries to retreive the module for the provided kernel version.
+ * @param kernelVersion String for the specific kernel to try to get a module for
+ * @return File that represents the module for the requested kernel version.
+ */
+ public File getKernelModule(String kernelVersion) {
+ for(int i=0; i<module.kernelVersions.length; i++)
+ if(module.kernelVersions[i].equals(kernelVersion))
+ return module.kernelModules[i];
+ return null;
+ }
+
+ /**
+ * This is the main method for this class. It reads the contents of the meta file
+ * and populates the DashboardModule structure from it.
+ * @return boolean representing whether or not the meta data was succesfuly read
+ */
+ private boolean readData() {
+ if(null == metaFile)
+ return false;
+
+ try {
+ module = new DashboardModule();
+ FileReader reader = new FileReader(metaFile);
+ if(!reader.ready())
+ return false;
+
+ XMLMemento data = XMLMemento.createReadRoot(reader, XMLDashboardItem);
+
+ //Get main module information
+ module.display = data.getString(XMLdDisplay);
+ module.category = data.getString(XMLdCategory);
+ module.description = data.getString(XMLdDescription);
+ module.dataSetID = data.getString(XMLdDataset);
+ module.location = data.getString(XMLdLocation);
+ module.scriptFileName = data.getString(XMLdScriptFileName);
+ File temp = null;
+ //Get the script
+ if ((module.location ==null) || (module.location.equalsIgnoreCase("local")))
+ {
+ if(!tempScriptFolder.exists())
+ tempScriptFolder.mkdirs();
+ temp = new File(metaFile.getParentFile() + data.getString(XMLdScript));
+ module.script = new File(tempScriptFolder.getAbsolutePath() + "/" + module.hashCode() + ".stp");
+ temp.renameTo(module.script);
+ }
+ else
+ module.script = new File(module.location + "/" + module.scriptFileName);
+ //Get the column names
+ IMemento[] children = data.getChild(XMLParsingExpressions).getChildren(XMLpColumn);
+ module.labels = new String[children.length];
+ int i;
+ for(i=0; i<children.length; i++)
+ module.labels[i] = children[i].getString(XMLpName);
+
+ //Get the parser
+ module.parser = DataSetFactory.createParserXML(module.dataSetID, data.getChild(XMLParsingExpressions).getChild(XMLpParser));
+
+ //Get all graph information
+ IMemento[] children2;
+ children = data.getChild(XMLGraphDisplays).getChildren(XMLgGraph);
+ module.graphs = new GraphData[children.length];
+ module.filters = new ArrayList[children.length];
+ int j, ys;
+ for(i=0; i<children.length; i++) {
+ module.graphs[i] = new GraphData();
+ module.graphs[i].graphID = children[i].getString(XMLgId);
+ module.graphs[i].title = children[i].getString(XMLgTitle);
+
+ //Get all filters for the graph
+ children2 = children[i].getChildren(XMLgFilter);
+ module.filters[i] = new ArrayList();
+ for(j=0; j<children2.length; j++) {
+ module.filters[i].add(AvailableFilterTypes.getDataSetFilter(children2[j]));
+ }
+
+ //Get all x & y series for the graph
+ children2 = children[i].getChildren(XMLgSeries);
+ module.graphs[i].ySeries = new int[children2.length-1];
+
+ for(j=0, ys=0; j<children2.length; j++) {
+ if(XMLgAxisX.equals(children2[j].getString(XMLgAxis)))
+ module.graphs[i].xSeries = children2[j].getInteger(XMLgColumn).intValue();
+ else if(XMLgAxisY.equals(children2[j].getString(XMLgAxis))) {
+ module.graphs[i].ySeries[ys] = children2[j].getInteger(XMLgColumn).intValue();
+ ys++;
+ }
+ }
+ }
+
+ //Retreive any kernel module data.
+ children = data.getChildren(XMLKernelModule);
+ module.kernelVersions = new String[children.length];
+ module.kernelModules = new File[children.length];
+ if(!tempModuleFolder.exists())
+ tempModuleFolder.mkdirs();
+ for(i=0; i<children.length; i++) {
+ module.kernelVersions[i] = children[i].getString(XMLkVersion);
+
+ temp = new File(metaFile.getParentFile() + children[i].getString(XMLkModule));
+ module.kernelModules[i] = new File(tempModuleFolder.getAbsolutePath() + module.hashCode() + temp.getName());
+ temp.renameTo(module.kernelModules[i]);
+ }
+
+ reader.close();
+ } catch(FileNotFoundException fnfe) {
+ return false;
+ } catch(WorkbenchException we) {
+ return false;
+ } catch(Exception e) {
+ return false;
+ }
+
+ return true;
+ }
+
+ private static File metaFile;
+ private DashboardModule module;
+ public static final File tempScriptFolder = new File(SystemTapGUISettings.tempDirectory + "scripts/");
+ public static final File tempModuleFolder = new File(SystemTapGUISettings.tempDirectory + "modules/");
+
+ public static final String XMLDashboardItem = "DashboardItem";
+ public static final String XMLdDisplay = "display";
+ public static final String XMLdCategory = "category";
+ public static final String XMLdDescription = "description";
+ public static final String XMLdDataset = "dataset";
+ public static final String XMLdScript = "script";
+ public static final String XMLdScriptFileName = "scriptFileName";
+ public static final String XMLdLocation = "location";
+
+
+ public static final String XMLParsingExpressions = "ParsingExpressions";
+ public static final String XMLpColumn = "Column";
+ public static final String XMLpName = "name";
+ public static final String XMLpParser = "Parser";
+
+ public static final String XMLGraphDisplays = "GraphDisplays";
+ public static final String XMLgGraph = "Graph";
+ public static final String XMLgId = "id";
+ public static final String XMLgTitle = "title";
+ public static final String XMLgColumn = "column";
+ public static final String XMLgAxis = "axis";
+ public static final String XMLgAxisX = "x";
+ public static final String XMLgAxisY = "y";
+ public static final String XMLgSeries = "Series";
+ public static final String XMLgFilter = "Filter";
+
+ public static final String XMLKernelModule = "KernelModule";
+ public static final String XMLkVersion = "version";
+ public static final String XMLkModule = "module";
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModule.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModule.java
new file mode 100644
index 0000000000..18165a1d1f
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModule.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.structures;
+
+import java.io.File;
+import java.util.ArrayList;
+
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.datasets.IDataSetParser;
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.structures.GraphData;
+
+/**
+ * This is a basic structure to contain all the important information for a
+ * module in the dashboard.
+ * @author Ryan Morse
+ */
+public class DashboardModule {
+ public String display;
+ public String category;
+ public String description;
+ public File script;
+ public File archiveFile;
+
+ public String dataSetID;
+ public String[] labels;
+ public IDataSetParser parser;
+ public GraphData[] graphs;
+ public ArrayList[] filters;
+ public String location;
+
+ public String[] kernelVersions;
+ public File[] kernelModules;
+
+ public String scriptFileName;
+ public static final String metaFileName = "/metaData";
+
+ public String getcategory()
+ {
+ return category;
+
+ }
+ public String getdisplay()
+ {
+ return display;
+ }
+
+ public String getlocation()
+ {
+ return location;
+ }
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleFileFilter.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleFileFilter.java
new file mode 100644
index 0000000000..1e2915139d
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleFileFilter.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.structures;
+
+import java.io.File;
+import java.io.FileFilter;
+
+/**
+ * This is a simple file filter that will exclude anything other then a Dashboard module and
+ * a folder.
+ * @author Ryan Morse
+ */
+public class DashboardModuleFileFilter implements FileFilter {
+ public boolean accept(File f) {
+ return f.isDirectory() || f.getName().toLowerCase().endsWith(DashboardModuleExtension);
+ }
+
+ public String getDescription() {
+ return ".dash files";
+ }
+
+ public static final String DashboardModuleExtension = ".dash";
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleLocator.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleLocator.java
new file mode 100644
index 0000000000..d060030dba
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleLocator.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.structures;
+
+import java.io.File;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.internal.DashboardPlugin;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.preferences.DashboardPreferenceConstants;
+
+import org.eclipse.linuxtools.systemtap.ui.structures.JarArchive;
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+import org.eclipse.linuxtools.systemtap.ui.systemtapgui.SystemTapGUISettings;
+
+/**
+ * This class is used to generate the entire Dashboard module list. It
+ * gets the list of directories that the user has specified contain modules
+ * and then calls the TreeBuilder on each of them to build up the entire list.
+ * @author Ryan Morse
+ */
+public final class DashboardModuleLocator {
+ /**
+ * This is the main method for the class. It first gathers up all the directories
+ * that contain modules and then goes through each directory and adds the modules
+ * contained in that folder to the list. Once finished, it will return the entire
+ * list.
+ * @return The entire list of Dashboard Modules organized as a Tree
+ */
+ public static TreeNode getModules() {
+ TreeNode root = new TreeNode(null, "", false);
+
+ String[] locations = getModuleLocations();
+ DashboardModuleTreeBuilder dmtb = null;
+ if(null != locations) {
+ for(int i=0; i<locations.length; i++) {
+ dmtb = new DashboardModuleTreeBuilder(root);
+ dmtb.generateTree(new File(locations[i]));
+ }
+ root.sortTree();
+ }
+
+ return root;
+ }
+
+ /**
+ * This method gets all of the dashboard module directories from the user's
+ * preferences and adds the default directores, then returns the entire list.
+ * @return String array containing all of the directories with modules.
+ */
+ public static String[] getModuleLocations() {
+ IPreferenceStore store = DashboardPlugin.getDefault().getPreferenceStore();
+
+ String locations = store.getString(DashboardPreferenceConstants.P_MODULE_FOLDERS);
+
+ String[] folders = locations.split(File.pathSeparator);
+
+ String[] allFolders;
+ if(locations.length() > 0) {
+ allFolders = new String[folders.length + 2];
+ System.arraycopy(folders, 0, allFolders, 2, folders.length);
+ } else
+ allFolders = new String[2];
+
+ //This locates all the preexisting modules
+ if(new File(moduleStore).exists()) {
+ File f = new File(moduleLocation);
+ if(!f.exists()) {
+ f.mkdir();
+ JarArchive.unjarFiles(moduleStore, moduleLocation, "modules/");
+ }
+ allFolders[0] = moduleLocation;
+ } else {
+ allFolders[0] = System.getProperty("osgi.splashLocation");
+ allFolders[0] = allFolders[0].substring(0, allFolders[0].indexOf("systemtapgui"));
+ allFolders[0] += "dashboard/modules/";
+ }
+
+ allFolders[1] = SystemTapGUISettings.settingsFolder.getAbsolutePath();
+
+ return allFolders;
+ }
+
+ public static final String moduleLocation = SystemTapGUISettings.installDirectory + "/.modules/";
+ public static final String moduleStore = SystemTapGUISettings.installDirectory + "/plugins/org.eclipse.linuxtools.systemtap.ui.dashboard_1.0.0.jar";
+
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleTreeBuilder.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleTreeBuilder.java
new file mode 100644
index 0000000000..09e7659b41
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/DashboardModuleTreeBuilder.java
@@ -0,0 +1,138 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.structures;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+
+import org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardView;
+
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+import org.eclipse.linuxtools.systemtap.ui.structures.ZipArchive;
+import org.eclipse.linuxtools.systemtap.ui.systemtapgui.SystemTapGUISettings;
+
+/**
+ * This class is responsible for searching through the Dashboard module
+ * directory and building a tree with their modules.
+ */
+public class DashboardModuleTreeBuilder {
+ public DashboardModuleTreeBuilder() {
+ tree = new TreeNode("Root", "", true);
+ }
+
+ public DashboardModuleTreeBuilder(TreeNode t) {
+ tree = t;
+ }
+
+ /**
+ * Returns the tree containing all of the dashboard modules
+ * @return TreeNode with dashboard modules
+ */
+ public TreeNode getTree() {
+ return tree;
+ }
+
+ /**
+ * This method is used to generate the tree of dashboard modules for
+ * the provided folder.
+ * @param folder The directory to search for dashboard modules
+ */
+ public void generateTree(File folder) {
+ scanNextLevel(folder);
+ }
+
+ /**
+ * This is the main method for this class. It searches through the provided
+ * file/folder and builds the tree with any dashboard modules it finds.
+ * @param f The file/folder to scan for modules
+ */
+ private void scanNextLevel(File f) {
+ File[] fs = f.listFiles(new DashboardModuleFileFilter());
+ DashboardMetaData dmd;
+ DashboardModule dm;
+
+ TreeNode location;
+ for(int i=0; i<fs.length; i++) {
+ if(fs[i].isDirectory())
+ scanNextLevel(fs[i]);
+ else {
+ try {
+ File folder = new File(SystemTapGUISettings.tempDirectory + "/bundles/");
+ if(!folder.exists())
+ folder.mkdirs();
+
+ File file = new File(folder + "/" + fs[i].getName() + ".tmp");
+ file.createNewFile();
+ ZipArchive.uncompressFile(file.getAbsolutePath(), fs[i].getAbsolutePath());
+ ZipArchive.unzipFiles(file.getAbsolutePath(), folder.getAbsolutePath());
+ dmd = new DashboardMetaData(folder.getAbsolutePath() + DashboardModule.metaFileName);
+ dm = dmd.getModule();
+ dm.archiveFile = fs[i];
+ int index = searchModuleNames(dm.category);
+ if (index == -1)
+ {
+ moduleNames.add(dm.category);
+ //
+ DashboardView.addmodulename(dm.category);
+ }
+ location = findInsertLocation(dm.category);
+ location.add(new ModuleTreeNode(dm, dm.display, true));
+
+ File[] files = folder.listFiles();
+ for(int j=0; j<files.length; j++)
+ files[j].delete();
+ folder.delete();
+ } catch(IOException ioe) {}
+ }
+ }
+ }
+
+ /**
+ * This method searches through the tree to find the correct location
+ * to add the new module. If the path does not exist yet, a new node will
+ * be created.
+ * @param path The category the module should be added to
+ * @return The tree node matching the provided path
+ */
+ private TreeNode findInsertLocation(String path) {
+ String[] folders = path.split("\\p{Punct}");
+ TreeNode level = tree;
+ //
+ for(int j,i=0; i<folders.length; i++) {
+ for(j=0; j<level.getChildCount(); j++) {
+ if(level.getChildAt(j).toString().equals(folders[i]))
+ break;
+ }
+ if(j >= level.getChildCount())
+ level.add(new TreeNode("", folders[i], true));
+ level = level.getChildAt(j);
+ }
+ return level;
+ }
+
+
+ private int searchModuleNames(String moduleName) {
+ //
+
+ if(moduleNames.size() > 0)
+ {
+ for (int i = 0; i<moduleNames.size();i++)
+ {
+ if (moduleName.equals(moduleNames.get(i))) return i;
+ }
+ }
+ return -1;
+ }
+ private TreeNode tree;
+ public static ArrayList<String> moduleNames = new ArrayList<String>();
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/GraphTreeNode.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/GraphTreeNode.java
new file mode 100644
index 0000000000..22e8f78b5c
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/GraphTreeNode.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.structures;
+
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+
+/**
+ * This is a simple extension of TreeNode to allow for creating specific
+ * popup menu items that are only displayed for the Graphs.
+ * @author Ryan Morse
+ */
+public class GraphTreeNode extends TreeNode {
+ public GraphTreeNode(DashboardGraphData gd, String disp, boolean active) {
+ super(gd, disp, active);
+ }
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ModuleTreeNode.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ModuleTreeNode.java
new file mode 100644
index 0000000000..666c4f2041
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/structures/ModuleTreeNode.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.structures;
+
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+
+/**
+ * This is a simple extension of TreeNode to allow for creating specific
+ * popup menu items that are only displayed for Dashboard modules.
+ * @author Ryan Morse
+ */
+public class ModuleTreeNode extends TreeNode {
+ public ModuleTreeNode(DashboardModule dm, String disp, boolean c) {
+ super(dm, disp, c);
+ }
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ActiveModuleBrowserView.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ActiveModuleBrowserView.java
new file mode 100644
index 0000000000..1e715e28aa
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ActiveModuleBrowserView.java
@@ -0,0 +1,235 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.views;
+
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.actions.ActivateGraphAction;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.internal.DashboardPlugin;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.ActiveModuleData;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.ActiveModuleTreeNode;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.DashboardGraphData;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.DashboardModule;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.GraphTreeNode;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.PlatformUI;
+
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.filters.IDataSetFilter;
+import org.eclipse.linuxtools.systemtap.ui.logging.LogManager;
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+
+/**
+ * This class is used to display a list of all of the Modules that are running
+ * as well as the status of each graph associated with the module. It provides
+ * methods for starting, stopping, and pausing the active module.
+ * @author Ryan Morse
+ */
+public class ActiveModuleBrowserView extends ModuleView {
+ public ActiveModuleBrowserView() {
+ super();
+ LogManager.logInfo("Initializing", this);
+ }
+
+ protected void generateModuleTree() {
+ viewer.setInput(new TreeNode("root", "", false));
+ }
+
+ public void createPartControl(Composite parent) {
+ super.createPartControl(parent);
+ viewer.setLabelProvider(new ViewLabelProvider());
+ }
+
+ /**
+ * This method builds the actions for the items inside this view. It adds a
+ * double click listener to each of the Items so they will be run if they
+ * are actual modules. It also sets up the layout for popup menu when users
+ * right click on a module element.
+ */
+ protected void makeActions() {
+ //Gets items from plugin.xml
+ MenuManager manager = new MenuManager("modulePopup");
+ Control control = this.viewer.getControl();
+ manager.add(new Separator("file.ext"));
+ manager.add(new Separator("build.ext"));
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ Menu menu = manager.createContextMenu(control);
+ control.setMenu(menu);
+ getSite().registerContextMenu(manager, viewer);
+ super.makeActions();
+ }
+
+ /**
+ * This method handles adding a new module to the list of active modules.
+ * It will then generate each of the graphs that are a part of the module.
+ * Adding them as a new graph in the main display and adding them as children
+ * of the module in the ActiveModuleBrowserView.
+ * @param display The string used as a title for the module
+ * @param data The <code>ActiveModuleData</code> representing the item to add.
+ */
+ public void add(String display, ActiveModuleData data) {
+ Display disp = PlatformUI.getWorkbench().getDisplay();
+ Cursor cursor = new Cursor(disp, SWT.CURSOR_WAIT);
+ PlatformUI.getWorkbench().getDisplay().getActiveShell().setCursor(cursor);
+
+ TreeNode root = (TreeNode)viewer.getInput();
+ ActiveModuleTreeNode child = new ActiveModuleTreeNode(data, display, true);
+ GraphTreeNode graphNode;
+ root.add(child);
+ DashboardGraphData graphData;
+ for(int i=0; i<data.module.graphs.length; i++) {
+ graphData = new DashboardGraphData();
+ graphData.data = data.data;
+ graphData.filters = new IDataSetFilter[data.module.filters[i].size()];
+ data.module.filters[i].toArray(graphData.filters);
+ graphData.graph = data.module.graphs[i];
+ graphData.moduleName = data.module.category;
+ graphData.adapter = null;
+ ActivateGraphAction act = new ActivateGraphAction();
+ graphNode = new GraphTreeNode(graphData, data.module.graphs[i].title, true);
+ act.run(graphNode,data.module.getcategory());
+ child.add(graphNode);
+ }
+ root.sortLevel();
+ viewer.refresh();
+ PlatformUI.getWorkbench().getDisplay().getActiveShell().setCursor(null);
+ cursor.dispose();
+ }
+
+ /**
+ * This method handles pausing a module in the ActiveModuleBrowserView. When
+ * it locates the item to be paused, it will return a reference to that module.
+ * @param mod The <code>DashboardModule</code> that needs to be paused
+ * @return The item being paused
+ */
+ public ActiveModuleData pause(DashboardModule mod) {
+ TreeNode tree = (TreeNode)viewer.getInput();
+ for(int i=0; i<tree.getChildCount(); i++) {
+ if(tree.getChildAt(i).toString().equals(mod.category + "." + mod.display)) {
+ return (ActiveModuleData)(tree.getChildAt(i).getData());
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This method handles removing a module in the ActiveModuleBrowserView. When
+ * it locates the item to be removed, it will return a remove it from the tree
+ * and return a reference to that module.
+ * @param mod The module that needs to be removed
+ * @return The active module that was removed.
+ */
+ public ActiveModuleTreeNode remove(DashboardModule mod) {
+ TreeNode tree = (TreeNode)viewer.getInput();
+ for(int i=0; i<tree.getChildCount(); i++) {
+ if(tree.getChildAt(i).toString().equals(mod.category + "." + mod.display)) {
+ ActiveModuleTreeNode node = (ActiveModuleTreeNode)tree.getChildAt(i);
+ tree.remove(i);
+ viewer.refresh();
+ return node;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * This method checks to see if the provided module is running or not.
+ * @param mod The module to check if it is running
+ * @return boolean representing whether the provided module is running
+ */
+ public boolean isActive(DashboardModule mod) {
+ try {
+ TreeNode tree = (TreeNode)viewer.getInput();
+ for(int i=0; i<tree.getChildCount(); i++) {
+ if(tree.getChildAt(i).toString().equals(mod.category + "." + mod.display))
+ return true;
+ }
+ } catch(Exception e) {}
+ return false;
+ }
+
+ /**
+ * This method checks to see if the provided module is running, and if so
+ * whether or not it is paused.
+ * @param mod The module to check if it is paused.
+ * @return boolean representing whether the provided module is paused
+ */
+ public boolean isPaused(DashboardModule mod) {
+ try {
+ TreeNode tree = (TreeNode)viewer.getInput();
+ for(int i=0; i<tree.getChildCount(); i++) {
+ if(tree.getChildAt(i).toString().equals(mod.category + "." + mod.display))
+ return ((ActiveModuleData)tree.getChildAt(i).getData()).paused;
+ }
+ } catch(Exception e) {}
+
+ return false;
+ }
+
+ /**
+ * This method checks to see if any modules are still running
+ * @return boolean - are any modules are still running?
+ */
+ public boolean anyRunning() {
+ TreeNode tree = (TreeNode)viewer.getInput();
+ return tree.getChildCount() > 0;
+ //return true;
+ }
+
+ /**
+ * This method removes all internal references. Nothing should be called/referenced after
+ * this method is run.
+ */
+ public void dispose() {
+ LogManager.logInfo("disposing", this);
+ super.dispose();
+ viewer = null;
+ }
+
+ /**
+ * This class provides functionality for determining what image to
+ * display for each item in the tree.
+ */
+ private class ViewLabelProvider extends LabelProvider {
+ public String getText(Object obj) {
+ return obj.toString();
+ }
+
+ public Image getImage(Object obj) {
+ TreeNode treeObj = (TreeNode)obj;
+ Image img = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
+
+ if(treeObj.getChildCount() > 0)
+ img = DashboardPlugin.getImageDescriptor("icons/misc/module_obj.gif").createImage();
+ else if(treeObj instanceof GraphTreeNode){
+ if(null == ((DashboardGraphData)((GraphTreeNode)treeObj).getData()).adapter)
+ img = DashboardPlugin.getImageDescriptor("icons/misc/graph_dis.gif").createImage();
+ else
+ img = DashboardPlugin.getImageDescriptor("icons/misc/graph_act.gif").createImage();
+ }
+
+ return img;
+ }
+ }
+
+ public static final String ID = "org.eclipse.linuxtools.systemtap.ui.dashboard.views.ActiveModuleBrowserView";
+}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardGraphsBrowserView.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardGraphsBrowserView.java
new file mode 100644
index 0000000000..35cc63d725
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardGraphsBrowserView.java
@@ -0,0 +1,150 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.views;
+
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.actions.ActivateGraphAction;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.internal.DashboardPlugin;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.ActiveModuleData;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.ActiveModuleTreeNode;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.DashboardGraphData;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.GraphTreeNode;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.PlatformUI;
+
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.filters.IDataSetFilter;
+import org.eclipse.linuxtools.systemtap.ui.logging.LogManager;
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+
+
+/**
+ * This is a basic browser view for the dashboard perspective. It contains a list
+ * of all of the available dashboard modules.
+ * @author Ryan Morse
+ */
+public class DashboardGraphsBrowserView extends GraphsView {
+ public DashboardGraphsBrowserView() {
+ super();
+ LogManager.logInfo("Initializing", this);
+ }
+
+ /**
+ * This method sends requests to get all of the modules that are
+ * avialable on the system. Once then are found, it will
+ * set the viewer's content to the tree of modules that were found.
+ */
+ /*protected void generateGraphsTree() {
+ TreeNode graphs = DashboardGraphsLocator.getGraphs();
+
+ if(null != graphs)
+ viewer.setInput(graphs);
+ else
+ viewer.setInput(new TreeNode("", false));
+ }*/
+
+ protected void generateGraphsTree() {
+ viewer.setInput(new TreeNode("root", "", false));
+ }
+
+ public void createPartControl(Composite parent) {
+ super.createPartControl(parent);
+ viewer.setLabelProvider(new ViewLabelProvider());
+ }
+
+ /**
+ * This method builds the actions for the items inside this view. It adds a
+ * double click listener to each of the Items so they will be run if they
+ * are actual modules. It also sets up the layout for popup menu when users
+ * right click on a module element.
+ */
+ protected void makeActions() {
+ //Gets items from plugin.xml
+ MenuManager manager = new MenuManager("modulePopup");
+ Control control = this.viewer.getControl();
+ manager.add(new Separator("file.ext"));
+ manager.add(new Separator("build.ext"));
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ Menu menu = manager.createContextMenu(control);
+ control.setMenu(menu);
+ getSite().registerContextMenu(manager, viewer);
+ super.makeActions();
+ }
+
+ public void add(String display, ActiveModuleData data) {
+ TreeNode root = (TreeNode)viewer.getInput();
+ ActiveModuleTreeNode child = new ActiveModuleTreeNode(data, display, true);
+ GraphTreeNode graphNode;
+ root.add(child);
+ DashboardGraphData graphData;
+ for(int i=0; i<data.module.graphs.length; i++) {
+ graphData = new DashboardGraphData();
+ graphData.data = data.data;
+ graphData.filters = new IDataSetFilter[data.module.filters[i].size()];
+ data.module.filters[i].toArray(graphData.filters);
+ graphData.graph = data.module.graphs[i];
+ graphData.moduleName = data.module.category;
+ graphData.adapter = null;
+ ActivateGraphAction act = new ActivateGraphAction();
+ graphNode = new GraphTreeNode(graphData, data.module.graphs[i].title, true);
+ act.run(graphNode);
+ child.add(graphNode);
+
+ }
+ root.sortLevel();
+ viewer.refresh();
+
+ }
+ /**
+ * This method removes all internal references. Nothing should be called/referenced after
+ * this method is run.
+ */
+ public void dispose() {
+ LogManager.logInfo("disposing", this);
+ super.dispose();
+ viewer=null;
+ }
+ /**
+ * This class provides functionality for determining what image to
+ * display for each item in the tree.
+ */
+ private class ViewLabelProvider extends LabelProvider {
+ public String getText(Object obj) {
+ return obj.toString();
+ }
+
+ public Image getImage(Object obj) {
+ TreeNode treeObj = (TreeNode)obj;
+ Image img = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_ELEMENT);
+
+ if(treeObj.getChildCount() > 0)
+ img = DashboardPlugin.getImageDescriptor("icons/misc/module_obj.gif").createImage();
+ else if(treeObj instanceof GraphTreeNode){
+ if(null == ((DashboardGraphData)((GraphTreeNode)treeObj).getData()).adapter)
+ img = DashboardPlugin.getImageDescriptor("icons/misc/graph_dis.gif").createImage();
+ else
+ img = DashboardPlugin.getImageDescriptor("icons/misc/graph_act.gif").createImage();
+ }
+
+ return img;
+ }
+ }
+ public static final String ID = "org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardGraphsBrowserView";
+
+}
+
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardModuleBrowserView.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardModuleBrowserView.java
new file mode 100755
index 0000000000..0906a79c72
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardModuleBrowserView.java
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.views;
+
+
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.structures.DashboardModuleLocator;
+
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.IWorkbenchActionConstants;
+
+import org.eclipse.linuxtools.systemtap.ui.logging.LogManager;
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+
+/**
+ * This is a basic browser view for the dashboard perspective. It contains a list
+ * of all of the available dashboard modules.
+ * @author Ryan Morse
+ */
+public class DashboardModuleBrowserView extends ModuleView {
+ public DashboardModuleBrowserView() {
+ super();
+ LogManager.logInfo("Initializing", this);
+ }
+
+ /**
+ * This method sends requests to get all of the modules that are
+ * avialable on the system. Once then are found, it will
+ * set the viewer's content to the tree of modules that were found.
+ */
+ protected void generateModuleTree() {
+ TreeNode modules = DashboardModuleLocator.getModules();
+
+ if(null != modules)
+ viewer.setInput(modules);
+ else
+ viewer.setInput(new TreeNode("", false));
+
+ }
+
+ /**
+ * This method builds the actions for the items inside this view. It adds a
+ * double click listener to each of the Items so they will be run if they
+ * are actual modules. It also sets up the layout for popup menu when users
+ * right click on a module element.
+ */
+ protected void makeActions() {
+ dblClickListener = new IDoubleClickListener() {
+ public void doubleClick(DoubleClickEvent e) {
+ //Disabled for now, until find way to disable this like menu
+ //RunModuleAction act = new RunModuleAction();
+ //act.run();
+ }
+ };
+
+ viewer.addDoubleClickListener(dblClickListener);
+
+ //Gets items from plugin.xml
+ MenuManager manager = new MenuManager("modulePopup");
+ Control control = this.viewer.getControl();
+ manager.add(new Separator("file.ext"));
+ manager.add(new Separator("build.ext"));
+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ Menu menu = manager.createContextMenu(control);
+ control.setMenu(menu);
+ getSite().registerContextMenu(manager, viewer);
+ super.makeActions();
+ }
+
+ /**
+ * This method removes all internal references. Nothing should be called/referenced after
+ * this method is run.
+ */
+ public void dispose() {
+ LogManager.logInfo("disposing", this);
+ viewer.removeDoubleClickListener(dblClickListener);
+ super.dispose();
+ }
+
+
+ public static final String ID = "org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardModuleBrowserView";
+ private IDoubleClickListener dblClickListener;
+
+}
+
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView.java
new file mode 100644
index 0000000000..bd0f42d767
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/DashboardView.java
@@ -0,0 +1,357 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.views;
+
+import java.util.ArrayList;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.DashboardAdapter;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.DashboardComposite;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.internal.DashboardPlugin;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.preferences.DashboardPreferenceConstants;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabFolder2Listener;
+import org.eclipse.swt.custom.CTabFolderEvent;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.layout.FormLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+
+
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.datasets.IDataSet;
+import org.eclipse.linuxtools.systemtap.ui.graphingapi.nonui.structures.GraphData;
+import org.eclipse.linuxtools.systemtap.ui.logging.LogManager;
+import org.eclipse.linuxtools.systemtap.ui.structures.UpdateManager;
+import org.eclipse.linuxtools.systemtap.ui.structures.listeners.ITabListener;
+
+
+/**
+ * This is the main view of the dashboard. It is where all of the graphs are displayed
+ * when they are run. It utalizes <code>DashboardComposite</code> to handle all of the
+ * layout data for the view.
+ * @author Henry Hughes
+ * @author Ryan Morse
+ */
+public class DashboardView extends ViewPart {
+
+ public DashboardView() {
+ super();
+ LogManager.logDebug("Start DashboardView:", this);
+ LogManager.logInfo("Initializing", this);
+ composites = new ArrayList<DashboardComposite>();
+ tabListeners = new ArrayList<ITabListener>();
+ moduleNames = new ArrayList<String>();
+ LogManager.logDebug("End DashboardView:", this);
+
+}
+
+
+ /**
+ * This method will create a new composite for the module
+ * The composite will be given a new tab item at the end of
+ * the list.
+ * @param title The name to be shown on the new tab
+ */
+ public void createComposite(String title) {
+ CTabItem item;
+
+ item = new CTabItem(scriptFolder, SWT.CLOSE);
+ item.setText(title);
+
+ Composite parent = new Composite(scriptFolder, SWT.NONE);
+ parent.setBackground(new Color(parent.getDisplay(), 0, 0, 255));
+ DashboardComposite comp = new DashboardComposite(parent, SWT.BORDER);
+ IPreferenceStore p = DashboardPlugin.getDefault().getPreferenceStore();
+ int delay = p.getInt(DashboardPreferenceConstants.P_DASHBOARD_UPDATE_DELAY);
+ updater = new UpdateManager(delay);
+ composites.add(comp);
+ moduleNames.add(title);
+ item.setControl(parent);
+
+ scriptFolder.setSelection(item);
+ fireTabOpenEvent();
+ }
+
+ /*
+ * This method creates the layout for the view. It makes use of
+ * <code>DashboardComposite</code> to handle positioning of all of the graphs.
+ * @param parent The composite that contains all elements added by this view.
+ */
+/* public void createPartControl(Composite parent) {
+ composite[CompositeNo] = new DashboardComposite(parent, SWT.BORDER);
+ IPreferenceStore p = DashboardPlugin.getDefault().getPreferenceStore();
+ int delay = p.getInt(DashboardPreferenceConstants.P_DASHBOARD_UPDATE_DELAY);
+ updater = new UpdateManager(delay);
+ }*/
+
+ public void createPartControl(Composite parent) {
+ LogManager.logDebug("Start createPartControl: parent-" + parent, this);
+ //bar.pack();
+ FormData data2 = new FormData();
+ data2.left = new FormAttachment(0, 0);
+ data2.top = new FormAttachment(0, 0);
+ data2.right = new FormAttachment(100, 0);
+ data2.bottom = new FormAttachment(100, 0);
+ Composite cmpGraph = new Composite(parent, SWT.NONE);
+ cmpGraph.setLayoutData(data2);
+
+ //This is for the tab view
+ cmpGraph.setLayout(new FormLayout());
+ FormData data3 = new FormData();
+ data3.left = new FormAttachment(0, 0);
+ data3.top = new FormAttachment(0, 0);
+ data3.right = new FormAttachment(100, 0);
+ data3.bottom = new FormAttachment(6, 0);
+ // while (DashboardModuleLocator.moduleNames == null) {}
+ // allModuleNames = new ArrayList<String>(DashboardModuleBrowserView.getmoduleNames());
+
+
+ /* Composite toolbar = new Composite(cmpGraph, SWT.NONE);
+ Button modbutton = new Button(toolbar,SWT.PUSH);
+ // modbutton.setBackground(new Color(Display.getCurrent(), IGraphColorConstants.COLORS[0]));
+ modbutton.setText(allModuleNames.get(1));
+ //modbutton.setText("text0");
+ modbutton = new Button(toolbar,SWT.PUSH);
+ //modbutton.setBackground(new Color(Display.getCurrent(), IGraphColorConstants.COLORS[1]));
+ modbutton.setText(allModuleNames.get(0));
+ for (int i = 2; i < 5; i++) {
+ modbutton = new Button(toolbar, SWT.PUSH);
+ modbutton.setText(allModuleNames.get(i));
+ // modbutton.setBackground(new Color(Display.getCurrent(), IGraphColorConstants.COLORS[i]));
+ }
+ toolbar.setLayout(new RowLayout());
+ toolbar.setLayoutData(data3);
+ toolbar.pack();*/
+
+ /* ToolBar bar = new ToolBar(cmpGraph, SWT.BORDER);
+ ToolItem item = new ToolItem(bar, SWT.PUSH);
+ item.setText(allModuleNames.get(1));
+ item = new ToolItem(bar, SWT.PUSH);
+ item.setText(allModuleNames.get(0));
+
+ for (int i = 2; i < allModuleNames.size(); i++) {
+ item = new ToolItem(bar, SWT.PUSH);
+ item.setText(allModuleNames.get(i));
+ }
+ bar.setLayoutData(data3);
+ bar.pack(); */
+
+
+ //Create the folder for all of the script sets, so it takes up all of the parent composite
+ scriptFolder = new CTabFolder(cmpGraph, SWT.NONE);
+ FormData data = new FormData();
+ data.top = new FormAttachment(0, 0);
+ data.left = new FormAttachment(0, 0);
+ data.right = new FormAttachment(100, 0);
+ data.bottom = new FormAttachment(100, 0);
+ scriptFolder.setLayoutData(data);
+ scriptFolder.addSelectionListener(new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ fireTabChangedEvent();
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {}
+ });
+
+
+ scriptFolder.addCTabFolder2Listener(new CTabFolder2Listener() {
+ public void restore(CTabFolderEvent e) {}
+ public void showList(CTabFolderEvent e) {}
+ public void minimize(CTabFolderEvent e) {}
+ public void maximize(CTabFolderEvent e) {}
+ public void close(CTabFolderEvent e) {
+ composites.remove(scriptFolder.indexOf((CTabItem)e.item));
+ moduleNames.remove(scriptFolder.indexOf((CTabItem)e.item));
+ fireTabCloseEvent();
+ }
+ });
+
+ Display display = parent.getShell().getDisplay();
+
+ /*scriptFolder.setSelectionBackground(new Color[] {
+ display.getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW),
+ display.getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW),
+ display.getSystemColor(SWT.COLOR_WIDGET_LIGHT_SHADOW)}, new int[] { 50,
+ 100});*/
+
+ scriptFolder.setSelectionBackground(display.getSystemColor(SWT.COLOR_GRAY));
+ //scriptFolder.setForeground(display.getSystemColor(SWT.COLOR_YELLOW));
+ scriptFolder.setMaximizeVisible(true);
+ scriptFolder.setSelectionForeground(display.getSystemColor(SWT.COLOR_BLACK));
+
+ LogManager.logDebug("End createPartControl", this);
+ }
+
+
+ public void setFocus() {}
+
+ /*public Composite getComposite() {
+ return composite.deadComposite;
+ }*/
+
+ /**
+ * This method creates a new graph in the view. It creates a wrapper for the graph
+ * and then adds an update listener to the graph, and finally registers it with
+ * the composite.
+ * @param gd The data needed to create a new graph
+ * @param ds The dataset used to store all script output data
+ * @return The newly create graph component.
+ */
+/* public DashboardAdapter createGraph(GraphData gd, IDataSet ds) {
+ DashboardAdapter adapter = new DashboardAdapter(composite, gd, ds);
+ updater.addUpdateListener(adapter.getGraph());
+ composite.add(adapter);
+
+ return adapter;
+ }*/
+ /**
+ * This method creates a new graph in the view. It creates a wrapper for the graph
+ * and then adds an update listener to the graph, and finally registers it with
+ * the composite.
+ * @param gd The data needed to create a new graph
+ * @param ds The dataset used to store all script output data
+ * @return The newly create graph component.
+ */
+ public DashboardAdapter createGraph(GraphData gd, IDataSet ds, String moduleName) {
+ Display disp = PlatformUI.getWorkbench().getDisplay();
+ Cursor cursor = new Cursor(disp, SWT.CURSOR_WAIT);
+ PlatformUI.getWorkbench().getDisplay().getActiveShell().setCursor(cursor);
+ // while (ds.getRowCount() <= 0 ) {}
+ int index = searchModuleNames(moduleName);
+
+ DashboardAdapter adapter = null;
+ if (index == -1)
+ {
+ createComposite(moduleName);
+ index = searchModuleNames(moduleName);
+ }
+ adapter = new DashboardAdapter(composites.get(index), gd, ds, moduleName);
+ updater.addUpdateListener(adapter.getGraph());
+ composites.get(index).add(adapter);
+ PlatformUI.getWorkbench().getDisplay().getActiveShell().setCursor(null);
+ cursor.dispose();
+ return adapter;
+ }
+
+ private int searchModuleNames(String moduleName) {
+ for (int i = 0; i<moduleNames.size();i++)
+ {
+
+ if (moduleName.equals(moduleNames.get(i))) return i;
+ }
+ return -1;
+ }
+
+ public UpdateManager getUpdater() {
+ return updater;
+ }
+
+ public void removeGraph(DashboardAdapter graph, String moduleName) {
+ int index = searchModuleNames(moduleName);
+ composites.get(index).remove(graph);
+ graph.dispose();
+ /*if (composites.get(index).getusedSlots() == 0)
+ {
+ composites.remove(index);
+ moduleNames.remove(index);
+ tabListeners.remove(index);
+ fireTabCloseEvent();
+ }*/
+ }
+
+ public void closeComposite(String moduleName)
+ {
+ int index = searchModuleNames(moduleName);
+ if (composites.get(index).getusedSlots() <= 0)
+ {
+ scriptFolder.getItem(index).dispose();
+ moduleNames.remove(index);
+ composites.remove(index);
+ }
+ }
+
+ public void addTabListener(ITabListener listener) {
+ tabListeners.add(listener);
+ }
+
+ public void removeTabListener(ITabListener listener) {
+ tabListeners.remove(listener);
+ }
+
+ private void fireTabCloseEvent() {
+ for(int i=0; i<tabListeners.size(); i++)
+ ((ITabListener)tabListeners.get(i)).tabClosed();
+ }
+
+
+ private void fireTabOpenEvent() {
+ for(int i=0; i<tabListeners.size(); i++)
+ ((ITabListener)tabListeners.get(i)).tabOpened();
+ }
+
+ private void fireTabChangedEvent() {
+ for(int i=0; i<tabListeners.size(); i++)
+ ((ITabListener)tabListeners.get(i)).tabChanged();
+ }
+
+ /**
+ * Removes all internal references in this class. Nothing should make any references
+ * to anyting in this class after calling the dispose method.
+ */
+ public void dispose() {
+ LogManager.logDebug("Start dispose:", this);
+ LogManager.logInfo("Disposing", this);
+ super.dispose();
+
+ if(null != scriptFolder)
+ scriptFolder.dispose();
+ scriptFolder = null;
+ if(null != composites)
+ composites.removeAll(composites);
+ composites = null;
+ scriptFolder = null;
+ if(null != tabListeners)
+ tabListeners.removeAll(tabListeners);
+ tabListeners = null;
+ LogManager.logDebug("End dispose:", this);
+
+ }
+
+ public static void addmodulename(String str)
+ {
+ if (allModuleNames == null) allModuleNames = new ArrayList<String>();
+
+ allModuleNames.add(str);
+ }
+
+ private ArrayList<DashboardComposite> composites;
+ private ArrayList<String> moduleNames;
+ public static ArrayList<String> allModuleNames = null;
+ private ArrayList<ITabListener> tabListeners;
+ private UpdateManager updater;
+ private CTabFolder scriptFolder;
+ public static final String ID = "org.eclipse.linuxtools.systemtap.ui.dashboard.views.DashboardView";
+
+}
+
+
+
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView.java
new file mode 100644
index 0000000000..b850367ad7
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/GraphsView.java
@@ -0,0 +1,152 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.views;
+
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.internal.DashboardPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+import org.eclipse.linuxtools.systemtap.ui.logging.LogManager;
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+
+/**
+ * This class provides the framework for the ModuleBrowsers. Since
+ * it is abstract, it can't be implemented itself. It does however
+ * provide a number of common methods that will be needed for all of
+ * the ModuleBrowsers.
+ * @author Ryan Morse
+ */
+public abstract class GraphsView extends ViewPart {
+ public GraphsView() {
+ super();
+ LogManager.logInfo("Initializing", this);
+ }
+
+ /**
+ * This class provides the framework for traversing the view's Tree structure.
+ */
+ private class ViewContentProvider implements IStructuredContentProvider, ITreeContentProvider {
+ public void inputChanged(Viewer v, Object oldInput, Object newInput) {}
+
+ public void dispose() {}
+
+ public Object[] getElements(Object parent) {
+ return getChildren(parent);
+ }
+
+ public Object getParent(Object child) {
+ return null;
+ }
+
+ public Object[] getChildren(Object par) {
+ TreeNode parent = ((TreeNode)par);
+
+ Object[] children = new Object[parent.getChildCount()];
+
+ for(int i=0; i<children.length; i++) {
+ children[i] = parent.getChildAt(i);
+ }
+
+ return children;
+ }
+
+ public boolean hasChildren(Object parent) {
+ return ((TreeNode)parent).getChildCount() > 0;
+ }
+ }
+
+ /**
+ * This class provides functionality for determining what image to
+ * display for each item in the tree.
+ */
+ private class ViewLabelProvider extends LabelProvider {
+ public String getText(Object obj) {
+ return obj.toString();
+ }
+
+ public Image getImage(Object obj) {
+ TreeNode treeObj = (TreeNode)obj;
+ Image img;
+
+ img = DashboardPlugin.getImageDescriptor("icons/misc/graph_dis.gif").createImage();
+ if (treeObj.getChildCount() > 0)
+ img = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
+
+ return img;
+ }
+ }
+
+ /**
+ * This method creates the framework for the view. It initializes the viewer, which
+ * contains the TreeNode and handles how to display each entry.
+ */
+ public void createPartControl(Composite parent) {
+ LogManager.logDebug("Start createPartControl: parent-" + parent, this);
+ parent.getShell().setCursor(new Cursor(parent.getShell().getDisplay(), SWT.CURSOR_WAIT));
+ viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
+ viewer.setContentProvider(new ViewContentProvider());
+ viewer.setLabelProvider(new ViewLabelProvider());
+
+ generateGraphsTree();
+ makeActions();
+ LogManager.logDebug("End createPartControl:", this);
+ }
+
+ /**
+ * This method is intented to provided the necessary information for generating everthing
+ * that needs to be displayed in the tree viewer.
+ */
+ protected abstract void generateGraphsTree();
+
+ /**
+ * This method is intented to add new Actions to the view.
+ */
+ protected void makeActions() {}
+
+ /**
+ * This method is intented to handle updating the view when items are added or removed.
+ */
+ public void refresh() {
+ generateGraphsTree();
+ }
+
+ public TreeViewer getViewer() {
+ return viewer;
+ }
+
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+
+ /**
+ * This method removes all internal references. Nothing should be called/referenced after
+ * this method is run.
+ */
+ public void dispose() {
+ LogManager.logInfo("disposing", this);
+ super.dispose();
+ viewer = null;
+ }
+
+ public static final String ID = "org.eclipse.linuxtools.systemtap.ui.dashboard.views.GraphsView";
+ protected TreeViewer viewer;
+} \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView.java
new file mode 100644
index 0000000000..670ef53220
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/src/org/eclipse/linuxtools/systemtap/ui/dashboard/views/ModuleView.java
@@ -0,0 +1,260 @@
+/*******************************************************************************
+ * Copyright (c) 2006 IBM Corporation.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - Jeff Briggs, Henry Hughes, Ryan Morse, Anithra P J
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.systemtap.ui.dashboard.views;
+
+import org.eclipse.jface.resource.FontRegistry;
+import org.eclipse.jface.viewers.IColorProvider;
+import org.eclipse.jface.viewers.IFontProvider;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.linuxtools.systemtap.ui.dashboard.internal.DashboardPlugin;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Cursor;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+
+import org.eclipse.linuxtools.systemtap.ui.logging.LogManager;
+import org.eclipse.linuxtools.systemtap.ui.structures.TreeNode;
+
+/**
+ * This class provides the framework for the ModuleBrowsers. Since
+ * it is abstract, it can't be implemented itself. It does however
+ * provide a number of common methods that will be needed for all of
+ * the ModuleBrowsers.
+ * @author Ryan Morse
+ */
+public abstract class ModuleView extends ViewPart {
+ public ModuleView() {
+ super();
+ LogManager.logInfo("Initializing", this);
+ }
+
+ /**
+ * This class provides the framework for traversing the view's Tree structure.
+ */
+ private class ViewContentProvider implements IStructuredContentProvider, ITreeContentProvider {
+ public void inputChanged(Viewer v, Object oldInput, Object newInput) {}
+
+ public void dispose() {}
+
+ public Object[] getElements(Object parent) {
+ return getChildren(parent);
+ }
+
+ public Object getParent(Object child) {
+ return null;
+ }
+
+ public Object[] getChildren(Object par) {
+ TreeNode parent = ((TreeNode)par);
+
+ Object[] children = new Object[parent.getChildCount()];
+
+ for(int i=0; i<children.length; i++) {
+ children[i] = parent.getChildAt(i);
+ }
+
+ return children;
+ }
+
+ public boolean hasChildren(Object parent) {
+ return ((TreeNode)parent).getChildCount() > 0;
+ }
+ }
+public class ViewLabelProvider extends LabelProvider
+ implements ILabelProvider, IFontProvider, IColorProvider{
+
+ FontRegistry registry = new FontRegistry();
+ int j=0;
+
+ public Image getImage(Object element) {
+ TreeNode treeObj = (TreeNode)element;
+ Image img = null;
+ img = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
+ if (treeObj.getChildCount() == 0)
+ img = DashboardPlugin.getImageDescriptor("icons/misc/module_obj.gif").createImage();
+
+ return img;
+ }
+
+ public String getText(Object obj) {
+ return obj.toString();
+ }
+
+ public void addListener(ILabelProviderListener listener) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void dispose() {
+ // TODO Auto-generated method stub
+
+ }
+
+ public boolean isLabelProperty(Object element, String property) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void removeListener(ILabelProviderListener listener) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public Font getFont(Object element) {
+ Font font = Display.getCurrent().getSystemFont();
+ TreeNode parent = ((TreeNode)element);
+ /*if (parent.getChildCount()>0) {
+ font = registry.getBold(Display.getCurrent().getSystemFont().g);
+ }*/
+ return font;
+ }
+
+ public Color getBackground(Object element) {
+ TreeNode parent = ((TreeNode)element);
+ Color c = null;
+ // if (parent.getChildCount()>0) {
+ // c = new Color(Display.getCurrent(), IGraphColorConstants.COLORS[j]);
+ // j++;
+ // }
+ return c;
+ }
+
+ public Color getForeground(Object element, int columnIndex) {
+ //Globals.debug("Get foreground colour for index " + columnIndex + "!",8);
+ Color color = null;
+ //if (element instanceof MyModelItem) {
+ //color = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
+ //}
+ return color;
+ }
+
+ public Color getForeground(Object element) {
+ // Globals.debug("Get foreground colour!",8);
+ // Color color = Display.getCurrent().getSystemColor(SWT.COLOR_BLUE);;
+ // if (element instanceof MyModelItem) {
+ // MyModelItem mItem = (MyModelItem) element;
+ //color = Display.getCurrent().getSystemColor(SWT.COLOR_GREEN);
+ //}
+ return null;
+ }
+
+ public Color getBackground(Object element, int columnIndex) {
+ return null;
+ }
+
+}
+ /**
+ * This class provides functionality for determining what image to
+ * display for each item in the tree.
+ */
+ /*private class ViewLabelProvider extends LabelProvider implements ITableColorProvider{
+ public String getText(Object obj) {
+ return obj.toString();
+ }
+
+ public Image getImage(Object obj) {
+ TreeNode treeObj = (TreeNode)obj;
+ Image img;
+
+ img = DashboardPlugin.getImageDescriptor("icons/misc/module_obj.gif").createImage();
+ if (treeObj.getChildCount() > 0)
+ img = PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
+
+ return img;
+ }
+
+ public Color getBackground(Object obj, int columnIndex) {
+ // if (((TreeNode)obj).getChildCount() > 0)
+ //{
+ Color color = new Color(null, 255, 255, 255);//color is black
+ return color;
+ // }
+ //else
+ //return null;
+ }
+
+ public Color getForeground(Object element, int columnIndex) {
+ // TODO Auto-generated method stub
+ Color color = new Color(null, 255, 255, 255);//color is black
+ return color;
+ }
+ } */
+
+ /**
+ * This method creates the framework for the view. It initializes the viewer, which
+ * contains the TreeNode and handles how to display each entry.
+ */
+ public void createPartControl(Composite parent) {
+ LogManager.logDebug("Start createPartControl: parent-" + parent, this);
+ parent.getShell().setCursor(new Cursor(parent.getShell().getDisplay(), SWT.CURSOR_WAIT));
+ // viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
+ viewer = new TreeViewer(parent);
+ viewer.setContentProvider(new ViewContentProvider());
+ viewer.setLabelProvider(new ViewLabelProvider());
+
+ generateModuleTree();
+ makeActions();
+ LogManager.logDebug("End createPartControl:", this);
+ }
+
+ /**
+ * This method is intented to provided the necessary information for generating everthing
+ * that needs to be displayed in the tree viewer.
+ */
+ protected abstract void generateModuleTree();
+
+ /**
+ * This method is intented to add new Actions to the view.
+ */
+ protected void makeActions() {}
+
+ /**
+ * This method is intented to handle updating the view when items are added or removed.
+ */
+ public void refresh() {
+ generateModuleTree();
+ }
+
+ public TreeViewer getViewer() {
+ return viewer;
+ }
+
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+
+ /**
+ * This method removes all internal references. Nothing should be called/referenced after
+ * this method is run.
+ */
+ public void dispose() {
+ LogManager.logInfo("disposing", this);
+ super.dispose();
+ viewer = null;
+ }
+
+ public static final String ID = "org.eclipse.linuxtools.systemtap.ui.dashboard.views.ModuleView";
+ protected TreeViewer viewer;
+} \ No newline at end of file
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/toc.xml b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/toc.xml
new file mode 100755
index 0000000000..dff78c3e80
--- /dev/null
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.dashboard/toc.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Systemtap Dashboard User Guide" topic="documentation/html/toc.html">
+ <topic label="Getting Started" href="documentation/html/gettingstarted/gettingStarted.html">
+ <anchor id="gettingstarted"/>
+ </topic>
+ <topic label="Concepts" href="documentation/html/concepts/concepts.html">
+ <anchor id="concepts"/>
+ </topic>
+ <topic label="Tasks" href="documentation/html/tasks/tasks.html">
+ <anchor id="tasks"/>
+ </topic>
+ <topic label="Reference" href="documentation/html/reference/reference.html">
+ <anchor id="reference"/>
+ </topic>
+</toc>

Back to the top