<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">
    <title>Team and role creation wizards</title>
    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <style type="text/css">
	  h2 {color: orange}
      h3 {color: blue}
      h4 {color: brown}
    </style>    
  </head>
  <body>
    <h1>Team and role creation wizards</h1>
    <h2>Team wizard</h2>
	<p>
	  <img src="images/screenshots/teamWizard.jpg"
	  	   alt="Wizard for creating a new team class">
	</p>    
    <h3>Opening the team wizard</h3>
    The easiest way to create a new team class is to use the team wizard.
    First select the container where you want the new team class to reside.
    Then the wizard can be opened either by selecting <b>File > New > Team</b> from the main
    workbench window or by selecting <b>New > Team</b> from the container's pop-up menu or
    by choosing <b>Team</b> from the drop-down menu on the <b>New</b> button in the
    workbench toolbar.    
    <h3>Define settings / enter information</h3>
    Most settings for a new team correspond exactly to those specified for a regular 
    <a href="PLUGINS_ROOT/org.eclipse.jdt.doc.user/reference/ref-wizard-class.htm">Java class</a>.
	<h4>Edit using the Binding Editor</h4>    
	If a super-team has been selected and if the team should be constructed as a <i>connector</i>
	the binding editor can be launched for adding class and method bindings.
    <h3>Resulting effects</h3>
    By clicking the <b>Finish</b> button the team is created with the chosen properties.
    The tree view of the package explorer and the outline is updated and the new team is
    displayed.<br><br>
    <h2>Role wizard</h2>
	<p>
	  <img src="images/screenshots/roleWizard.jpg"
	  	   alt="Wizard for creating a new role class">
	</p>
    <h3>Opening the role wizard</h3>
    The easiest way to create a new role class is to use the role wizard.
    First select the container where you want the new role class to reside.
    Then the wizard can be opened either by selecting <b>File > New > Role</b> from the main
    workbench window or by selecting <b>New > Role</b> from the container's pop-up menu or
    by choosing <b>Role</b> from the drop-down menu on the <b>New</b> button in the
    workbench toolbar.    
    <h3>Define settings / enter information</h3>
	<h4>Source folder and enclosing team</h4>    
    The fields of the source folder and the enclosing team incorporate the same semantics
    as in the team creation wizard. Entries can be modified/changed by clicking the
    respective <b>Browse...</b> button and choosing a folder and team class in the selection
    dialog respectively. The fully qualified name of the enclosing team is displayed unless
    it stands in the default package. A role is inlined by default, i.e. a role is defined
    inside the specified enclosing team. If an external role should be created the checkbox
    "inlined" has to be deselected
    (<a href="otjld/def/s1.html#s1.2.5"><img src="../images/ot_paragraph.png"> OTJLD &sect;1.2.5</a>).<br>
	<h4>Role name</h4>
    A valid name for the new role class must be entered. The type name is mandatory.<br>
  	<h4>Modifiers</h4>
    Possible visibility modifiers for role types are <code>public</code> and
    <code>protected</code>. Roles can also be either <code>abstract</code> or
    <code>final</code>.<br>
	<h4>Implicit superclass</h4>
    The implicit superclass field is set automatically if the entered type name matches a
    role type which already exists in a team class which is present in the supertype
    hierarchy of the enclosing team 
    (<a href="otjld/def/s1.html#s1.3.1"><img src="../images/ot_paragraph.png"> OTJLD &sect;1.3.1</a>). 
    The fully qualified name of the implicit superclass is then shown.<br>
	<h4>Explicit superclass</h4>
    Initially the explicit superclass is set to	"java.lang.Object". It can be changed by
    clicking the <b>Browse...</b> button and selecting a class from the selection dialog.
    A role can explicitly inherit from another role class of the same team or from any other
    regular class other than team classes.<br>
	<h4>Bound base class</h4>
	A bound base class can be defined by clicking the <b>Browse...</b> button and selecting
	a class from the selection dialog. A bound base class can be any class.
	(<a href="otjld/def/s2.html#s2.1"><img src="../images/ot_paragraph.png"> OTJLD &sect;2.1</a>)<br>
	<h4>Interfaces</h4>
	Interfaces which the role should implement can be added/removed with the <b>Add.../
	Remove</b> buttons.
	<h4>Method stubs</h4>
	<p>	
	Method stubs for inherited abstract methods	can be created by selecting the	according
	checkbox. Note, that this option includes those	abstract methods that are inherited
	from an implicit super role 
	(<a href="otjld/def/s1.html#s1.3.1"><img src="../images/ot_paragraph.png"> OTJLD &sect;1.3.1</a>).
	</p> 
	The checkbox is selected by default.
    <h3>Resulting effects</h3>
    By clicking the <b>Finish</b> button the role with the chosen properties is created
    inside the enclosing team, or, in the case of an external role, in a package which has
    the name of the enclosing team. The tree view of the package explorer and the outline
    is updated and the new role is displayed.
  </body>
</html>
