<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>Object Teams Package Explorer</title>
    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  </head>
  <body>
    <h1>Object Teams Package Explorer</h1>
    <p>
    The <b>Object Teams package explorer</b> provides the following features
    (in addition to the features of the standard JDT
    <a href="/help/topic/org.eclipse.jdt.doc.user/reference/ref-view-package-explorer.htm">
    package explorer view</a>):<br>
    <ul>
	  <li>Showing the <b>Object Teams element hierarchy</b> of the Object Teams projects in the
	  workbench including
	  <ul>
	  <li><u>specific classes:</u><br />
	    	&ndash; <b>team</b> class (<img src="../images/team_obj.gif">).<br>
	    	&ndash; <b>role</b> class (<img src="../images/role_obj.png">).<br>
	  	  	&ndash; a <b>nested team</b> (<img src="../images/team_role_obj.gif">) is a role as well as a team.
	  	  	</li>
	  <li><u>role class decorations:</u><br>
	  		&ndash; <b>bound role</b> class (<span><img style="position:relative;left:0px;" src="../images/role_obj.png"><img style="position:relative;left:-2px;top:-4px;" src="../images/boundrole_co.gif"></span>)
	  		&mdash; <em>has a <code class="keyword">playedBy</code> declaration.</em>
	  		<br>
	  		&ndash; <b>overriding role</b> class (<span><img style="position:relative;left:0px;" src="../images/role_obj.png"><img style="position:relative;left:-2px;top:4px;" src="../images/over_co_ovr16.gif"></span>)
	  		&mdash <em>overrides a role from the super team</em><br>
	  <li><u>methods:</u><br />
	  	    &ndash; <b>callin</b> methods are marked with a decoration <img src="../images/callinmethod_co.gif">.
	  	    </li>
	  <li><u>method bindings:</u><br />
	  		&ndash; <b>callin</b>: before(<img src="../images/callinbindingbefore_obj.gif">), 
	  		after (<img src="../images/callinbindingafter_obj.gif">), replace (<img src="../images/callinbindingreplace_obj.gif">)
	  		<br />
	  		&ndash; <b>callout</b>: (<img src="../images/calloutbinding_obj.gif">)
	  		</li>
	  <li><u>guard predicates:</u><br>
	  		&ndash; <b>regular guard</b> (<img src="../images/guard_obj.gif">)<br>
	  		&ndash; <b>base guard</b> (<img src="../images/baseguard_obj.gif">)<br>
   	  </ul>
   	  <li>Displaying <b>Role Files</b> physically/logically (<img src="../images/external_roles.gif">):
   	  	<ul>
		<li><b>Physical</b> display uses the file and directory structure, i.e., 
   	     role files will appear in a special folder/package representing the enclosing team.</li>
   	    <li><b>Logical</b> display presents role files and inline roles uniformly as direct
   	     children of their enclosing team.</li>
   	    </ul>
   	  <li><b>Overlay icons</b> for <b>compilations units</b> (team or role file) 
   	     and <b>packages</b> (team package) can be enabled by checking
		 <span class="ui">Preferences-&gt;General-&gt;Appearance-&gt;Label Decorations-&gt;Java Type Indicator</span>.
		 <ul>
		 <li><u>compilation unit:</u><br>
		 	&ndash holding a team class (<span><img style="position:relative;left:0px;" src="../images/jcu_obj.gif"><img style="position:relative;left:-7px;top:-5px;" src="../images/team_ovr.gif"></span>)<br>
		 	&ndash holding a role class (<span><img style="position:relative;left:0px;" src="../images/jcu_obj.gif"><img style="position:relative;left:-7px;top:-5px;" src="../images/role_ovr.png"></span> or 
		 	<span><img style="position:relative;left:0px;" src="../images/jcu_obj.gif"><img style="position:relative;left:-7px;top:-5px;" src="../images/team_role_ovr.gif"></span>)</li>
		 <li><u>package:</u><br>
		 	&ndash team package  (<span><img style="position:relative;left:0px;" src="../images/package.gif"><img style="position:relative;left:-7px;top:-5px;" src="../images/team_ovr.gif"></span>)
		 </ul>
   	</ul>
    </p>
    <table>
    <tr><td>
    	<p><u><b>Physical view:</b></u><br>
    		role file <code>FlightBonusDialog</code> is displayed as
    		a child of its team package.
    	</p>
    	  <img src="images/screenshots/packageExplorer.png"
	  	   alt="Object Teams package explorer view">
    </td><td><span style="width=20px;">&nbsp;</span></td><td>
		<p><u><b>Logical view:</b></u><br>
			role <code>FlightBonusDialog</code> is displayed as
			a child of its enclosing team class.
		</p>
		  <img src="images/screenshots/packageExplorer_logical.png"
	  	 	alt="Object Teams package explorer logical view">
   
	</td></tr></table>
	<h2>Aspect bindings in Object Teams Plug-in projects</h2>
	<p>
	If an Object Teams Plug-in project has 
	<a href="../reference/extension-points/org_objectteams_otequinox_aspectBindings.html">aspect bindings</a> 
	these will be displayed in the package explorer directly under the project's root:
	</p><p>
		<img src="images/screenshots/AspectBindingsInPackageExplorer.png" title="Package explorer showing aspect bindings"/>
	</p><p>
	Below the node called <span class="ui">OT/Equinox Aspect Bindings</span> you will find the list of all <img src="../images/plugin_obj.gif"/> <strong>base plug-ins</strong>
	adapted by the given OT plug-in. Each base plug-in in turn lists all <img src="../images/team_obj.gif"/> <strong>teams</strong> that implement this adaptation.<br/>
	Base plug-ins to which <strong>forced exports</strong> are applied are decorated with a little up-and-left arrow:
	</p><p>
		<img alt="Decoration for base plug-in with forced export" src="images/screenshots/ForcedExports.png">
	</p><p>
	Double clicking a base plugin or a team shows the corresponding element in an editor:
	<ul>
	<li>a base plugin as sub-element of an aspectBinding extension in the PDE's extension editor.</li>
	<li>a team class in the source code editor</li>
	</ul>
	</p>
	
  </body>
</html>
