<?xml version="1.0" encoding="UTF-8" ?>
<introContent>
  <!-- Extension to the SDK Samples Page. -->

  <extensionContent id="org.eclipse.objectteams.otdt.samples.samplesExtension" 
  						name="Object Teams Samples"
  						alt-style="css/swt-intro.properties"
  						style="css/samples.css"
						path="samples/@">
      <group label="Object Teams Samples" id="content-group" style-id="content-group">
		  <text style-id="group-description">Explore Object Teams development through code samples.</text>
<!--		  
		  <link label="Object Teams samples" 
				url="http://org.eclipse.ui.intro/showPage?id=otsamples" 
				id="otsamples" 
				style-id="content-link">
			<text>A small collection of Object Teams samples
			</text>
		  </link>	
-->
        <link label="OTSample-StopWatch" 
        	  url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;class=org.eclipse.pde.internal.ui.samples.ShowSampleAction&amp;id=org.eclipse.objectteams.otdt.samples.stopwatch" 
        	  id="stopwatchsample" 
        	  style-id="content-link">
		  <text>This implementation of a simple stop watch demonstrates how the Model-View-Controller pattern can be applied in Object Teams. 

			The example gives a basic overview over these concepts: 
			   (1) team and role classes, 
			   (2) method bindings, and
			   (3) lifting a base object to its role.
		  </text>
		</link>
        <link label="OTSample-Observer" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;class=org.eclipse.pde.internal.ui.samples.ShowSampleAction&amp;id=org.eclipse.objectteams.otdt.samples.observer" id="observersample" style-id="content-link">
		  <text>A reusable implementation of the standard Observer pattern with two applications.
					  
			A fine point in this example is the temporary deactivation of a team to avoid the "jumping aspects" problem.</text></link>		  
		<link label="OTSample-Flightbonus" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;class=org.eclipse.pde.internal.ui.samples.ShowSampleAction&amp;id=org.eclipse.objectteams.otdt.samples.flightbooking" id="flightbonussample" style-id="content-link">
          <text>This examples demonstrates, how a reusable collaboration for collecting bonus points 
			can be integrated into an existing application for flight booking.
			
			It shows a typical decomposition into three parts: 
			   (1) a core application, 
			   (2) an abstract collaboration, and
			   (3) a connector which combines the other two modules.</text></link>	
        <link label="OTSample-Ordersystem" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;class=org.eclipse.pde.internal.ui.samples.ShowSampleAction&amp;id=org.eclipse.objectteams.otdt.samples.ordersystem" id="ordersystemsample" style-id="content-link">        
        	<text>A comprehensive example showing different patterns of applying Object Teams.
			It implements three components: a storage, reservation of items, and orders.
			Also a GUI is provided which is cleanly separated into Model/View/Controller</text></link>
        <link label="OTSample-ATM" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;class=org.eclipse.pde.internal.ui.samples.ShowSampleAction&amp;id=org.eclipse.objectteams.otdt.samples.atm" id="atmsample" style-id="content-link">        
    	    <text>An example showing the use of guard predicates in Object Teams. 
    	    
        	It implements a simple ATM that adds specific behaviour to specific groups of accounts:
        	   (1) Foreign accounts are charged additional fees,
        	   (2) The balance of foreign cannot be queried,
        	   (3) Subscribed accounts receive a gratification for each crediting operation performed at the ATM.</text></link>

		  <anchor id="otSampleAnchor"/>
      </group>
  </extensionContent>
<!--
  <page style="css/samples.css" alt-style="css/swt.properties" id="otsamples" style-id="page">
      <title style-id="intro-header">Welcome to Eclipse 3.0</title>
    <group id="background-image" filteredFrom="swt"/>
    <group id="curve-image" filteredFrom="swt"/>
    <include path="overview/navigation-links"/>
    
	<group id="page-content" >
	  <group id="content-header" label="Object Teams/Java Samples" filteredFrom="html"></group>
	  <text style-id="page-title" id="page-title" filteredFrom="swt">Object Teams/Java Samples</text>
	  <text style-id="page-description" id="page-description">Explore Object Teams by installing some prefabricated samples.</text>
      <group id="workbench" style-id="samples-group">
        <link label="OTSample-StopWatch" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.stopwatch" id="stopwatchsample" style-id="sample-link">
		  <text>This implementation of a simple stop watch demonstrates how the Model-View-Controller pattern can be applied in Object Teams. 

			The example gives a basic overview over these concepts: 
			   (1) team and role classes, 
			   (2) method bindings, and
			   (3) lifting a base object to its role.</text></link>
        <link label="OTSample-Observer" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.observer" id="observersample" style-id="sample-link">
		  <text>A reusable implementation of the standard Observer pattern with two applications.
					  
			A fine point in this example is the temporary deactivation of a team to avoid the "jumping aspects" problem.</text></link>		  
		<link label="OTSample-Flightbonus" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.flightbooking" id="flightbonussample" style-id="sample-link">
          <text>This examples demonstrates, how a reusable collaboration for collecting bonus points 
			can be integrated into an existing application for flight booking.
			
			It shows a typical decomposition into three parts: 
			   (1) a core application, 
			   (2) an abstract collaboration, and
			   (3) a connector which combines the other two modules.</text></link>	
        <link label="OTSample-Ordersystem" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.ordersystem" id="ordersystemsample" style-id="sample-link">        
        	<text>A comprehensive example showing different patterns of applying Object Teams.
			It implements three components: a storage, reservation of items, and orders.</text></link>
        <link label="OTSample-ATM" url="http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.objectteams.otdt.samples&amp;id=org.eclipse.objectteams.otdt.samples.atm" id="atmsample" style-id="sample-link">        
    	    <text>An example showing the use of guard predicates in Object Teams. 
    	    
        	It implements a simple ATM that adds specific behaviour to specific groups of accounts:
        	   (1) Foreign accounts are charged additional fees,
        	   (2) The balance of foreign cannot be queried,
        	   (3) Subscribed accounts receive a gratification for each crediting operation performed at the ATM.</text></link>
     </group>        
	</group>
  </page>
-->
</introContent>

