<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="../../../..//default_style.css" type="text/css">
<link rel="stylesheet" href="../../../..//webtools/wtp.css" type="text/css">
<title>WTP Tutorials - Developing the WTP with Eclipse</title>
</head>
<body>
<table width="100%" cellspacing="5" cellpadding="2" border="0">
<tbody>
<tr>
<td width="60%" align="left"><font class="indextop">WTP Tutorials - Developing the WTP with Eclipse</font>
<br>
<font class="indexsub">WTP Tutorials - Developing the WTP with Eclipse</font></td><td width="40%"><img width="120" hspace="50" height="86" align="middle" src="../../../..//images/Idea.jpg"></td>
</tr>
</tbody>
</table>
<table width="100%" cellspacing="5" cellpadding="2" border="0">
<col width="16">
<col width="*">
<tbody>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<p>
			
<b>By Mark Hutchinson, IBM</b>
			
<BR>
			February 21, 2005
			<BR>
			
<BR>
		
</p>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<p>
			This tutorial shows you how to set up your Eclipse
			environment to develop or modify the Web Tools Platform (WTP) project plug-ins. First 
			we will discuss how to connect to the CVS repository to check
			out the WTP source code. We will then set up our target platform.
			Next we will make a modification to the WTP source and run
			our eclipse application.  Finally, we will create a patch
			for our change, which we could submit to the WTP project.
		</p>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<br>
</td>
</tr>
<tr>
<td valign="top" bgcolor="#0080c0" align="left" colspan="2"><b><font face="Arial,Helvetica" color="#ffffff">Checking Out the Source Code</font></b></td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<ol>
			
<li>
			Access the source code for the Eclipse Web Tools Platform
			from the Concurrent Versions System (CVS) repository.
			To access the CVS repository select Window &gt; Open
			Perspective &gt; Other and select CVS Repository Exploring.
            <br>
<br>
</li>
			
<li>
			The CVS Repositories view is now on the left side of your
			screen. Select the Add CVS Repository icon
			<img src="images/addrepositoryicon.gif" alt="Add Repository Icon" width="25" heigt="23" border="0">
			and in the Add CVS repository dialog enter the following values:
			<br>
			
<b>Host:</b>
			dev.eclipse.org
			<br>
			
<b>Repository Path:</b>
			/cvsroot/webtools
			<br>
			
<b>User:</b>
			anonymous
			<br>
			Select finish.
			<br>

			
<img src="images/addrepository.gif" width="438" height="542" border="0" alt="Add CVS Repository">
			<br>
			
<br>
            
</li>
			
<li>
			Navigate through the folders and find the plug-ins that you
			are interested in having the source for. The most recent
			code is in HEAD. The
			<a href="http://www.eclipse.org/webtools/wst/main.html">Web Standards Tools</a>
			plug-ins are found in the wst folder, and the
			<a href="http://www.eclipse.org/webtools/jst/main.html">J2EE Standard Tools</a>
			plug-ins are found in the jst folder. For this tutorial	we will modify
			<b>HEAD/wst/components/xml/plugins/org.eclipse.wst.xml.ui</b>
			
<br>
<br>
</li>
            
<li>
			Add the source into your local workspace by right clicking
			on that plug-in and selecting "Check Out".
			<br>
			
<img src="images/repositories.gif" alt="check out source code" width="487" height="689" border="0">
			<br>
			
<br>
            
</li>
			
<li>
			Switch back to the Java perspective. The source code for the
			plug-in you downloaded is now in your workspace.
            </li>
		
</ol>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<br>
</td>
</tr>
<tr>
<td valign="top" bgcolor="#0080c0" align="left" colspan="2"><b><font face="Arial,Helvetica" color="#ffffff">Setting up the Target Platform</font></b></td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<p>
			The target platform specified contains the eclipse plug-ins
			which your code will be compiled against. Having a target
			platform allows you to compile and run your modified code
			without having to bring all of the source code into your
			development workbench. The target platform should be the
			same platform you are developing for.
		</p>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<p>To set up your target platform:</p>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<ol>
			
<li>
			
<a href="http://download.eclipse.org/webtools/downloads/">Download</a> 
			and install the desired Eclipse and WTP versions in a separate folder from your current development
			Eclipse platform. Ensure that this new platform runs. This
			will be your target platform.
            <br>
<br>
</li>
			
<li>
			From your development workbench select Window &gt; Preferences
			&gt; Plug-in development &gt; Target Platform.
            <br>
<br>
</li>
			
<li>
			Enter the location of the platform you wish to target.
            <br>
<br>
</li>
			
<li>
			Select the "Not in Workspace" button. This ensures the
			source code in your workspace will be run rather than
			the plug-ins from the target platform.
			<img src="images/targetplatform.gif" alt="target platform preferences" width="652" height="505" border="0">
            </li>
		
</ol>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<br>
</td>
</tr>
<tr>
<td valign="top" bgcolor="#0080c0" align="left" colspan="2"><b><font face="Arial,Helvetica" color="#ffffff">Modifying the Source Code</font></b></td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<p>
			As an example, we are going to add to the pop-up menu shown
			when the user right clicks on an XML file in the
			Navigator view. First we need to add to the plugin.xml file
		</p>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<ol>
			
<li>
			In the Java perspective, open the plugin.xml file for the
			org.eclipse.wst.xml.ui plug-in you just checked out.
            <br>
<br>
</li>
			
<li>
			Add the following to the source of plugin.xml:
			<pre>
&lt;!--  =============================================================================== --&gt; 
&lt;!--                                 My Popup Menu                                    --&gt; 
&lt;!--  =============================================================================== --&gt;
 &lt;extension point="org.eclipse.ui.popupMenus"&gt;
	 &lt;objectContribution 
	 	objectClass="org.eclipse.core.resources.IFile" 
	 	nameFilter="*.xml" 
	 	id="org.eclipse.wst.xml.ui.actions"&gt;	
	  	&lt;action 
	  		label="Show a Message Dialog" 
	  		class="org.eclipse.wst.xml.ui.actions.PopUp" 
	  		menubarPath="My Menu" 
	  		enablesFor="1" 
	  		id="org.eclipse.wst.xml.ui.actions.PopUp" /&gt; 
	  &lt;/objectContribution&gt;
  &lt;/extension&gt;
			</pre>
            
</li>
			
<li>
			In the package Explorer expand "src" and right click on
			org.eclipse.wxt.xml.ui.actions and select new class.

			Name this class PopUp.
            <br>
<br>
</li>
			
<li>
			Add this source code to PopUp.java:
			<pre>
package org.eclipse.wst.xml.ui.actions;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.actions.ActionDelegate;
import org.eclipse.wst.xml.ui.internal.XMLUIPlugin;

public class PopUp extends ActionDelegate {
	public void run(IAction action) {
		MessageDialog message;
		Shell shell = XMLUIPlugin.getInstance().getWorkbench()
				.getActiveWorkbenchWindow().getShell();
		String labels[] = new String[1];
		labels[0] = "OK";
		message = new MessageDialog(shell, "My Message Dialog", null,
				"I have modified eclipse!", 2, labels, 1);
		message.open();
	}
}
			</pre>
            
</li>
		
</ol>
</td>
</tr>
<tr>
<td valign="top" bgcolor="#0080c0" align="left" colspan="2"><b><font face="Arial,Helvetica" color="#ffffff">Running Your Eclipse Application</font></b></td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<ol>
			
<li>
			In the Java perspective from the menu bar select Run &gt; Run.
            <br>
<br>
</li>
			
<li>
			In the Run dialog select the Eclipse Application option,
			then select new.
            <br>
<br>
</li>
			
<li>
			Enter the location of the desired workspace, and select Run.
           
			<br>
			
<img src="images/run.gif" alt="run" width="729" height="599" border="0">
            </li>
		
</ol>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<p>
			When this version of Eclipse is run it compiles the source code in your
			workspace, and runs from your target platform. A
			second instance of Eclipse is now running and you are now
			able to test any code modifications you have made.
		</p>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<p>Now test out your modification:</p>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<ol start="4">
			
<li>
			We need a project in the navigator to test this on. Select
			File &gt; New &gt; Example &gt; Editing and Validating XML Files.
            <br>
<br>
</li>
			
<li>
			Right click on any XML file, for example Invoice.xml. Notice
			that the new option "Show Message Dialog" has been
			added to this menu.
			<br>
			
<img src="images/menu.gif" alt="menu" border="0" width="370" height="663">
			<br>
			
<br>
            
</li>
			
<li>
			Select "Show a Message Dialog." A message dialog appears.
			<br>
			
<img src="images/dialog.gif" alt="My Message Dialog" border="0" width="444" height="142">
            </li>
		
</ol>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<br>
</td>
</tr>
<tr>
<td valign="top" bgcolor="#0080c0" align="left" colspan="2"><b><font face="Arial,Helvetica" color="#ffffff">Creating a Patch for your Modification</font></b></td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<p>
			To contribute an enhancement to WTP, you can submit
			your code changes as a patch.
		</p>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<ol>
			
<li>In the Package Explorer view, right click on the modified plug-in 
			project and select Team &gt; Create Patch.
			<br>
			
<img src="images/createpatchmenu.gif" alt="select Team > Create Patch" width="601" height="679">
			<br>
<br>
			
</li>
            
<li>Select "Save in File System" and enter the file name.  Select Next.
			<br>
			
<img src="images/createpatch.gif" alt="Create Patch" border="0" width="543" height="543">
			<br>
<br>
			
</li>
            
<li>Ensure the Diff Output Format is set to "unified."  Select Finish.<br>
<br>
</li>
			
<li>The patch has been saved to your file system.  If this were an actual feature 
			enhancement the patch could be submitted to the webtools project using
			<a href="https://bugs.eclipse.org/bugs/">
			Bugzilla
			</a>
            
</li>
		
</ol>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<br>
</td>
</tr>
<tr>
<td valign="top" bgcolor="#0080c0" align="left" colspan="2"><b><font face="Arial,Helvetica" color="#ffffff">Summary</font></b></td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<p>In this tutorial you learned how to set up your Eclipse environment to get started developing 
		Web Tools Platform plug-ins by creating a simple addition to the user interface.
		</p>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<p></p>
</td>
</tr>
<tr>
<td valign="top" align="right">&nbsp;</td><td valign="top">
<p></p>
</td>
</tr>
</tbody>
</table>
</body>
</html>
