<html>
  <head>
    <meta name="copyright" content="Copyright Technical University Berlin and others 2004, 2010. This page is made available under the Eclipse Public License v1.0. For full details see http://www.eclipse.org/legal/epl-v10.html" />
	<link rel=stylesheet type="text/css" href="../css/book.css">
	<link rel=stylesheet type="text/css" href="otguide.css">
    <title>Debugging OT/J programs - Team Monitor View</title>
    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  </head>
  <body>
    <h1>Team Monitor View</h1>
    <p>
    A special view exists for monitoring which team instances have been created and whether each 
    of them is currently active or not. When debugging callin bindings which do not trigger while
    they are intended to do so, the team monitor should provide first help to find out whether
    there is any active instance of the team being considered. If no active instance exists,
    callins can not trigger.
    </p>
    <img src="images/screenshots/team_monitor_marked.png" />
    <p>
    The team monitor view is a variant of the variables view with the following features:
    <ul>
    <li>Display all instances of all teams in the system.
    <li>Display the activation state of each team instance as one of
        <br /><img src="images/team_inact.gif"> a team instance in not active (for the current thread, if one is selected)
        <br /><img src="images/team_act.gif"> a team instance is active, either globally or for the
            thread selected in the debug view
        <br /><img src="images/team_act_implicit.gif"> a team instance is implicitly active due to executing a team or role method.
    <li>Change the activation state of a team using the context menu (<span class="ui">Activate Team</span> or <span class="ui">Deactivate Team</span>).<br />
        This operation affects the currently selected thread. If global (de)activation should be 
        achieved, select the debug target (<img src="images/debugt_obj.gif"/>) instead of any individual thread.
    <li>Inspect fields of a team instance or perform any operation inherited from the <a href="debugging.html#variables">variables view</a>.<br/>
    	Note, that filtering of OT/J Internal Variables is also supported (and enabled by default).
    </ul>
    <p>
    <i>Note that teams may only appear if a thread is currently suspended. If teams are visible while
    all threads are running, the <span class="ui">Activate Team</span> or <span class="ui">Deactivate Team</span> options
    cannot be performed.</i>
    </p>
    <p><span class="underline">Technical note:</span> When debugging an Eclipse application or OSGi fragment with OT/Equinox enabled,
    	the team monitor can only work if an open Object Teams Plug-in Project can be found in the workspace.
    	If this requirement is not met a corresponding warning will be logged.</p> 
  </body>
</html>