This commit was manufactured by cvs2svn to create tag 'v20050419'.
diff --git a/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/GenericRuntimeUtil.java b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/GenericRuntimeUtil.java
new file mode 100644
index 0000000..a034a14
--- /dev/null
+++ b/plugins/org.eclipse.jst.server.core/sjavacore/org/eclipse/jst/server/core/GenericRuntimeUtil.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.server.core;
+
+import org.eclipse.wst.server.core.IRuntime;
+/**
+ * Utility methods for the generic J2EE runtime.
+ * 
+ * @since 1.0
+ */
+public class GenericRuntimeUtil {
+	protected static final String RUNTIME_TYPE_ID = "org.eclipse.jst.server.core.runtimeType";
+
+	/**
+	 * Cannot create GenericRuntimeUtil - use static methods.
+	 */
+	private GenericRuntimeUtil() {
+		// can't create
+	}
+
+	/**
+	 * Returns <code>true</code> if the given runtime is a generic J2EE runtime, and
+	 * <code>false</code> otherwise. The runtime may not be null.
+	 * 
+	 * @param runtime 
+	 * @return <code>true</code> if 
+	 */
+	public static boolean isGenericJ2EERuntime(IRuntime runtime) {
+		if (runtime == null)
+			throw new IllegalArgumentException();
+
+		return (runtime.getRuntimeType() != null &&
+			runtime.getRuntimeType().getId().startsWith(RUNTIME_TYPE_ID));
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerBehaviour.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerBehaviour.java
index be3d36a..1c31b53 100644
--- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerBehaviour.java
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerBehaviour.java
@@ -431,7 +431,6 @@
     }
     public void initialize() {
       super.initialize();
-      setModules(getServer().getModules());
     }
     public void publishFinish(IProgressMonitor monitor) throws CoreException {
         IModule[] modules = this.getServer().getModules();
diff --git a/plugins/org.eclipse.jst.server.generic.modules/.cvsignore b/plugins/org.eclipse.jst.server.generic.modules/.cvsignore
deleted file mode 100644
index 42654c1..0000000
--- a/plugins/org.eclipse.jst.server.generic.modules/.cvsignore
+++ /dev/null
@@ -1,5 +0,0 @@
-bin
-build.xml
-commonmodules.jar
-org.eclipse.jst.server.generic.modules_1.0.0.jar
-temp.folder
diff --git a/plugins/org.eclipse.jst.server.generic.modules/.project b/plugins/org.eclipse.jst.server.generic.modules/.project
deleted file mode 100644
index af14ba8..0000000
--- a/plugins/org.eclipse.jst.server.generic.modules/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.jst.server.generic.ui</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.jst.server.generic.ui/.classpath b/plugins/org.eclipse.jst.server.generic.ui/.classpath
deleted file mode 100644
index 065ac06..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/plugins/org.eclipse.jst.server.generic.ui/.cvsignore b/plugins/org.eclipse.jst.server.generic.ui/.cvsignore
deleted file mode 100644
index 058a1b7..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/.cvsignore
+++ /dev/null
@@ -1,5 +0,0 @@
-bin
-build.xml
-genericui.jar
-org.eclipse.jst.server.generic.ui_1.0.0.jar
-temp.folder
diff --git a/plugins/org.eclipse.jst.server.generic.ui/.project b/plugins/org.eclipse.jst.server.generic.ui/.project
deleted file mode 100644
index af14ba8..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.jst.server.generic.ui</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/plugins/org.eclipse.jst.server.generic.ui/build.properties b/plugins/org.eclipse.jst.server.generic.ui/build.properties
deleted file mode 100644
index 6b4a2a0..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/build.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-source.genericui.jar = src/
-output.genericui.jar = bin/
-bin.includes = plugin.xml,\
-               genericui.jar,\
-               icons/,\
-               plugin.properties
-src.includes = icons/,\
-               plugin.xml,\
-               plugin.properties,\
-               src/
diff --git a/plugins/org.eclipse.jst.server.generic.ui/icons/obj16/lomboz.gif b/plugins/org.eclipse.jst.server.generic.ui/icons/obj16/lomboz.gif
deleted file mode 100644
index 5b3a198..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/icons/obj16/lomboz.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.jst.server.generic.ui/icons/wizban/logo.gif b/plugins/org.eclipse.jst.server.generic.ui/icons/wizban/logo.gif
deleted file mode 100644
index 854d525..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/icons/wizban/logo.gif
+++ /dev/null
Binary files differ
diff --git a/plugins/org.eclipse.jst.server.generic.ui/plugin.properties b/plugins/org.eclipse.jst.server.generic.ui/plugin.properties
deleted file mode 100644
index 8a61dcb..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/plugin.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-pluginName=Generic Server Plugin UI
-providerName=Eteration.com
-pluginDescription=UI Components for the generic server plugin.
-
diff --git a/plugins/org.eclipse.jst.server.generic.ui/plugin.xml b/plugins/org.eclipse.jst.server.generic.ui/plugin.xml
deleted file mode 100644
index 69538c2..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/plugin.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin
-   id="org.eclipse.jst.server.generic.ui"
-   name="%pluginName"
-   version="1.0.0"
-   provider-name="%providerName"
-   class="org.eclipse.jst.server.generic.ui.internal.GenericUiPlugin"
-   description="%pluginDescription">
-
-   <runtime>
-      <library name="genericui.jar">
-         <export name="*"/>
-      </library>
-   </runtime>
-
-   <requires>
-      <import plugin="org.eclipse.ui"/>
-      <import plugin="org.eclipse.core.runtime"/>
-      <import plugin="org.eclipse.wst.server.ui"/>
-       <import plugin="org.eclipse.debug.ui"/>
-      <import plugin="org.eclipse.jdt.debug.ui"/>
-      <import plugin="org.eclipse.jst.server.generic.core"/>
-      <import plugin="org.eclipse.wst.server.core" />
-   </requires>
-
-  <extension point="org.eclipse.wst.server.ui.editorPages">
-      <page
-         id="org.eclipse.jst.server.generic.configuration.editor.webmodule"
-         order="20"
-         name="Lomboz server Edit"
-         typeIds="org.eclipse.jst.server.generic.*"
-         class="org.eclipse.jst.server.generic.ui.internal.GenericServerEditorPartFactory"/>
-   </extension>
-   
-    <extension point="org.eclipse.wst.server.ui.editorPageSections">
-      <section
-         id="org.eclipse.jst.server.generic.editor.general"
-         order="0"
-         insertionId="org.eclipse.wst.server.editor.overview.left"
-         typeIds="org.eclipse.jst.server.generic.*"
-         class="org.eclipse.jst.server.generic.ui.internal.GenericServerEditorSectionFactory"/>       
-   </extension>
- 	
-  <extension point="org.eclipse.debug.ui.launchConfigurationTypeImages">
-    <launchConfigurationTypeImage
-      id="org.eclipse.jst.server.generic.image.ui.launchConfigurationTypeImage"
-      configTypeID="org.eclipse.jst.server.generic.core.launchConfigurationType"
-      icon="icons/obj16/lomboz.gif">
-    </launchConfigurationTypeImage>
-  </extension>
-  
-  <extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">
-    <launchConfigurationTabGroup
-      id="org.eclipse.jst.server.generic.ui.internal.launchConfigurationTabGroup"
-      type="org.eclipse.jst.server.generic.core.launchConfigurationType"
-      class="org.eclipse.jst.server.generic.ui.internal.GenericLaunchConfigurationTabGroup">
-    </launchConfigurationTabGroup>
-  </extension>
-   
-
-</plugin>
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericLaunchConfigurationTabGroup.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericLaunchConfigurationTabGroup.java
deleted file mode 100644
index 195f272..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericLaunchConfigurationTabGroup.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 Eteration Bilisim A.S.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- * 
- * Contributors:
- *     Gorkem Ercan - initial API and implementation
- *     Naci M. Dai
- * 
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Eteration Bilisim A.S.  For more
- * information on eteration, please see
- * <http://www.eteration.com/>.
- ***************************************************************************/
-package org.eclipse.jst.server.generic.ui.internal;
-
-import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup;
-import org.eclipse.debug.ui.CommonTab;
-import org.eclipse.debug.ui.EnvironmentTab;
-import org.eclipse.debug.ui.ILaunchConfigurationDialog;
-import org.eclipse.debug.ui.ILaunchConfigurationTab;
-import org.eclipse.debug.ui.sourcelookup.SourceLookupTab;
-import org.eclipse.jdt.debug.ui.launchConfigurations.JavaArgumentsTab;
-import org.eclipse.jdt.debug.ui.launchConfigurations.JavaClasspathTab;
-import org.eclipse.jdt.debug.ui.launchConfigurations.JavaJRETab;
-import org.eclipse.wst.server.ui.ServerLaunchConfigurationTab;
-
-
-public class GenericLaunchConfigurationTabGroup extends AbstractLaunchConfigurationTabGroup{
-	/**
-	 * @see org.eclipse.debug.ui.ILaunchConfigurationTabGroup ILaunchConfigurationTabGroup#createTabs(ILaunchConfigurationDialog, String)
-	 */
-	public void createTabs(ILaunchConfigurationDialog dialog, String mode) {
-		ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[7];
-		tabs[0] = new ServerLaunchConfigurationTab(new String[] { "org.eclipse.jst.server.generic" });
-		tabs[0].setLaunchConfigurationDialog(dialog);
-		tabs[1] = new JavaArgumentsTab();
-		tabs[1].setLaunchConfigurationDialog(dialog);
-		tabs[2] = new JavaClasspathTab();
-		tabs[2].setLaunchConfigurationDialog(dialog);
-		tabs[3] = new SourceLookupTab();
-		tabs[3].setLaunchConfigurationDialog(dialog);
-		tabs[4] = new EnvironmentTab();
-		tabs[4].setLaunchConfigurationDialog(dialog);
-		tabs[5] = new JavaJRETab();
-		tabs[5].setLaunchConfigurationDialog(dialog);	 
-		tabs[6] = new CommonTab();
-		tabs[6].setLaunchConfigurationDialog(dialog);
-		setTabs(tabs);
-	}}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerEditorPartFactory.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerEditorPartFactory.java
deleted file mode 100644
index bb0d6ea..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerEditorPartFactory.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 Eteration Bilisim A.S.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- * 
- * Contributors:
- *     Gorkem Ercan - initial API and implementation
- *     Naci M. Dai
- * 
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Eteration Bilisim A.S.  For more
- * information on eteration, please see
- * <http://www.eteration.com/>.
- ***************************************************************************/
-package org.eclipse.jst.server.generic.ui.internal;
-
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.ui.editor.ServerEditorPartFactoryDelegate;
-
-
-public class GenericServerEditorPartFactory extends
-		ServerEditorPartFactoryDelegate {
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.server.ui.editor.IServerEditorPartFactoryDelegate#shouldCreatePage(org.eclipse.wst.server.core.IServer, org.eclipse.wst.server.core.IServerConfiguration)
-	 */
-	public boolean shouldCreatePage(IServer server) {
-		// TODO Auto-generated method stub
-		return true;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.server.ui.editor.IServerEditorPartFactoryDelegate#createPage()
-	 */
-	public IEditorPart createPage() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerEditorSectionFactory.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerEditorSectionFactory.java
deleted file mode 100644
index c385397..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerEditorSectionFactory.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package org.eclipse.jst.server.generic.ui.internal;
-/*******************************************************************************
- * Copyright (c) 2004 Eteration Bilisim A.S.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- * 
- * Contributors:
- *     Gorkem Ercan - initial API and implementation
- *     Naci M. Dai
- * 
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Eteration Bilisim A.S.  For more
- * information on eteration, please see
- * <http://www.eteration.com/>.
- ***************************************************************************/
-
-import org.eclipse.wst.server.core.IServer;
-import org.eclipse.wst.server.ui.editor.IServerEditorSection;
-import org.eclipse.wst.server.ui.editor.ServerEditorPageSectionFactoryDelegate;
-
-public class GenericServerEditorSectionFactory extends
-		ServerEditorPageSectionFactoryDelegate {
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.server.ui.editor.IServerEditorPageSectionFactoryDelegate#shouldCreateSection(org.eclipse.wst.server.core.IServer, org.eclipse.wst.server.core.IServerConfiguration)
-	 */
-	public boolean shouldCreateSection(IServer server) {
-		// TODO Auto-generated method stub
-		return true;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.server.ui.editor.IServerEditorPageSectionFactoryDelegate#createSection()
-	 */
-	public IServerEditorSection createSection() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerRuntimeWizardFragment.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerRuntimeWizardFragment.java
deleted file mode 100644
index f331707..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerRuntimeWizardFragment.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 Eteration Bilisim A.S.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- * 
- * Contributors:
- *     Gorkem Ercan - initial API and implementation
- *     Naci M. Dai
- * 
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Eteration Bilisim A.S.  For more
- * information on eteration, please see
- * <http://www.eteration.com/>.
- ***************************************************************************/
-package org.eclipse.jst.server.generic.ui.internal;
-
-import java.util.Map;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.jface.dialogs.IMessageProvider;
-import org.eclipse.jst.server.generic.core.internal.GenericServerRuntime;
-import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.wst.server.core.IRuntime;
-import org.eclipse.wst.server.core.IRuntimeType;
-import org.eclipse.wst.server.core.IRuntimeWorkingCopy;
-import org.eclipse.wst.server.core.ServerCore;
-import org.eclipse.wst.server.core.TaskModel;
-import org.eclipse.wst.server.core.model.RuntimeDelegate;
-import org.eclipse.wst.server.ui.wizard.IWizardHandle;
-
-/**
- * A serverDefinitionType aware wizard for defining runtimes.
- * 
- * @author Gorkem Ercan
- */
-public class GenericServerRuntimeWizardFragment extends ServerDefinitionTypeAwareWizardFragment {
-	
-	private ServerTypeDefinitionGroup fServerPanel;
-	private RuntimeDelegate fRuntimeDelegate;
-    private Map fServerRuntimeProperties;
-	
-	/**
-	 * Constructor
-	 */
-	public GenericServerRuntimeWizardFragment() {
-		super();
-	}
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.server.ui.wizard.IWizardFragment#isComplete()
-	 */
-	public boolean isComplete() {
-	  	RuntimeDelegate runtime = getRuntimeDelegate();
-		if (runtime == null)
-			return false;
-		IStatus status = runtime.validate();
-		return (status != null && status.isOK());
-	}
-	
-	public void createContent(Composite parent, IWizardHandle handle) {
-		createServerDefinitionTypeComposite(parent);
-	}
-
-	
-
-	/**
-     * @param selected
-     */
-    private void createServerDefinitionTypeComposite(Composite parent) {     
-        Map properties= null;
-        if(getRuntimeDelegate()!=null)
-            properties = getRuntimeDelegate().getAttribute(GenericServerRuntime.SERVER_INSTANCE_PROPERTIES,(Map)null);
-        ServerRuntime definition = getServerTypeDefinition(getServerDefinitionId(),properties);
-        fServerPanel = new ServerTypeDefinitionGroup(this,definition,ServerTypeDefinitionGroup.CONTEXT_RUNTIME,properties,parent);
-    }
-	
-	private String getServerDefinitionId()
-	{
-		String currentDefinition= null;
-		if(getRuntimeDelegate()!=null)
-			currentDefinition =  getRuntimeDelegate().getRuntime().getRuntimeType().getId();
-		if(currentDefinition!= null && currentDefinition.length()>0)
-		{	
-			return currentDefinition;
-		}
-		return null;
-	}
-	
-	
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.server.ui.wizard.IWizardFragment#enter()
-	 */
-	public void enter() {
-		
-        String serverDefinition = getServerDefinitionId();
-		if(serverDefinition!=null && serverDefinition.length()>0)
-		{
-		    Map properties = null;
-	        if (getRuntimeDelegate() != null) {
-	            properties = getRuntimeDelegate().getAttribute(GenericServerRuntime.SERVER_INSTANCE_PROPERTIES,(Map) null);
-	        }
-	        ServerRuntime definition = getServerTypeDefinition(serverDefinition,properties);
-//	        fServerPanel.reset(definition,ServerTypeDefinitionGroup.CONTEXT_RUNTIME, properties);
-		}
-        else{
-            populateRuntimeDelegateProperties();
-        }
-        validate();
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.eclipse.wst.server.ui.wizard.IWizardFragment#exit()
-	 */
-	public void exit() {
-	    try {
-	        getRuntimeDelegate().getRuntimeWorkingCopy().save(true,new NullProgressMonitor());
-	    }
-	    catch(Exception e){//unhandled
-	    }
-        fRuntimeDelegate=null;
-   }
-
-	protected Map getServerRuntimeProperties(){
-	    return fServerRuntimeProperties; 
-	}
-
-	private String createName()
-	{
-	    RuntimeDelegate dl = getRuntimeDelegate();
-	    IRuntimeType runtimeType = dl.getRuntime().getRuntimeType();
-	    String name = GenericServerUIMessages.getFormattedString("runtimeName", new String[] {runtimeType.getName()});
-		IRuntime[] list = ServerCore.getRuntimes();
-		int suffix = 1;
-		String suffixName=name;
-		for(int i=0;i<list.length;i++)
-	    {
-	        if(list[i].getName().equals(name)|| list[i].getName().equals(suffixName))
-	            suffix++;
-	        suffixName= name+" "+suffix;
-	    }
-	    
-		if(suffix>1)
-		    return suffixName;
-	    return name;
-	}
-	
-	private RuntimeDelegate getRuntimeDelegate()
-	{
-		if(fRuntimeDelegate == null)
-		{	
-		    IRuntimeWorkingCopy wc = (IRuntimeWorkingCopy)getTaskModel().getObject(TaskModel.TASK_RUNTIME);
-		    if(wc==null)
-		        return null;
-		    fRuntimeDelegate = (RuntimeDelegate)wc.getAdapter(RuntimeDelegate.class);
-		}
-		return fRuntimeDelegate;
-	}
-    /* (non-Javadoc)
-     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#description()
-     */
-    public String description() {
-        String rName = getRuntimeName();
-        if(rName == null || rName.length()<1)
-            rName="Generic";      
-        return  GenericServerUIMessages.getFormattedString("runtimeWizardDescription",new String[] {rName});
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#title()
-     */
-    public String title() {
-        String rName = getRuntimeName();
-        if(rName == null || rName.length()<1)
-            rName="Generic";
-       return GenericServerUIMessages.getFormattedString("runtimeWizardTitle",new String[]{rName});
-    }
-    
-    private String getRuntimeName()
-    {
-       if(getRuntimeDelegate()!=null && getRuntimeDelegate().getRuntime()!=null)
-            return getRuntimeDelegate().getRuntime().getName();
-        return null;
-    }
-    
-    /* (non-Javadoc)
-     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#serverDefinitionTypePropertiesChanged()
-     */
-    public void serverDefinitionTypePropertiesChanged() {
-		populateRuntimeDelegateProperties();
-		validate();
-   }
-    /**
-     * 
-     */
-    private void populateRuntimeDelegateProperties() {
-       
-        fServerRuntimeProperties = fServerPanel.getProperties();
-        Map properties = getServerRuntimeProperties();
-        RuntimeDelegate dl = getRuntimeDelegate();
-        dl.setAttribute(GenericServerRuntime.SERVER_DEFINITION_ID, getRuntimeDelegate().getRuntime().getRuntimeType().getId());
-        dl.setAttribute(GenericServerRuntime.SERVER_INSTANCE_PROPERTIES,properties);
-        dl.getRuntimeWorkingCopy().setName(createName());
-    }
-    
-    private void validate()
-    {
-		if (getRuntimeDelegate() == null) {
-			this.getWizard().setMessage("", IMessageProvider.ERROR);
-			return;
-		}
-		IStatus status = getRuntimeDelegate().validate();
-		if (status == null || status.isOK())
-			getWizard().setMessage(null, IMessageProvider.NONE);
-		else
-			getWizard().setMessage(status.getMessage(), IMessageProvider.ERROR);
-		getWizard().update();
-    }
-}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerUIMessages.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerUIMessages.java
deleted file mode 100644
index 03eb33f..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerUIMessages.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package org.eclipse.jst.server.generic.ui.internal;
-
-import java.text.MessageFormat;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-/**
- * Helper class to get messages
- * 
- * @author Gorkem Ercan
- */
-public class GenericServerUIMessages {
-
-	private static final String RESOURCE_BUNDLE= "org.eclipse.jst.server.generic.ui.internal.GenericServerUIMessages";//$NON-NLS-1$
-
-	private static ResourceBundle fResourceBundle= ResourceBundle.getBundle(RESOURCE_BUNDLE);
-
-	private GenericServerUIMessages() {
-	}
-
-	/**
-	 * Return string from the resource bundle.
-	 * 
-	 * @param key the string used to get the bundle value, must not be <code>null</code>
-	 * @return the string from the resource bundle
-	 */
-	public static String getString(String key) {
-		try {
-			return fResourceBundle.getString(key);
-		} catch (MissingResourceException e) {
-			return "!" + key + "!";
-		}
-	}
-	
-	/**
-	 * Gets a string from the resource bundle that is 
-	 * formatted it with the given argument.
-	 * 
-	 * @param key the string used to get the bundle value, must not be null
-	 * @param arg the argument used to format the string
-	 * @return the formatted string
-	 */
-	public static String getFormattedString(String key, Object[] arg) {
-		String format= null;
-		try {
-			format= fResourceBundle.getString(key);
-		} catch (MissingResourceException e) {
-			return "!" + key + "!";
-		}
-		if (arg == null)
-			arg= new Object[0];
-		return MessageFormat.format(format,arg );
-	}
-	
-	/**
-	 * Returns a resource bundle.
-	 * 
-	 * @return the resource bundle
-	 */
-	public static ResourceBundle getResourceBundle() {
-		return fResourceBundle;
-	}
-}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerUIMessages.properties b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerUIMessages.properties
deleted file mode 100644
index 987124f..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerUIMessages.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-serverWizardTitle=New {0} Server
-serverWizardDescription=Create a new {0} server 
-runtimeWizardTitle=New {0} Runtime
-runtimeWizardDescription=Define a new {0} runtime
-serverTypeGroup.label.browse=Browse...
-serverName = {0}(Generic)
-runtimeName= {0}(Generic)
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerWizardFragment.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerWizardFragment.java
deleted file mode 100644
index 13a6704..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericServerWizardFragment.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 Eteration Bilisim A.S.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- * 
- * Contributors:
- *     Gorkem Ercan - initial API and implementation
- *     Naci M. Dai
- * 
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Eteration Bilisim A.S.  For more
- * information on eteration, please see
- * <http://www.eteration.com/>.
- ***************************************************************************/
-package org.eclipse.jst.server.generic.ui.internal;
-
-import java.util.Map;
-
-import org.eclipse.jst.server.generic.core.internal.GenericServerRuntime;
-import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.wst.server.core.IRuntimeWorkingCopy;
-import org.eclipse.wst.server.core.IServerWorkingCopy;
-import org.eclipse.wst.server.core.TaskModel;
-import org.eclipse.wst.server.core.model.RuntimeDelegate;
-import org.eclipse.wst.server.core.model.ServerDelegate;
-import org.eclipse.wst.server.ui.wizard.IWizardHandle;
-/**
- * 
- *
- * @author Gorkem Ercan
- */
-public class GenericServerWizardFragment extends ServerDefinitionTypeAwareWizardFragment 
-{
-
-    private ServerTypeDefinitionGroup fComposite;
-    private Map fProperties; 
-	/* (non-Javadoc)
-	 * @see com.ibm.wtp.server.ui.wizard.IWizardFragment#isComplete()
-	 */
-	public boolean isComplete() {
-	    
-		ServerRuntime serverRuntime = getServerTypeDefinitionFor(getServer());
-		if(serverRuntime==null)
-		    return false;
-		return true;
-	}
-
-	public void createContent(Composite parent, IWizardHandle handle){
-		createBody(parent,handle);
-	}
-	/**
-	 * 
-	 */
-	private void createBody(Composite parent, IWizardHandle handle) 
-	{
-		IServerWorkingCopy server = getServer();
-		ServerRuntime definition = getServerTypeDefinitionFor(server);
-		fComposite = new ServerTypeDefinitionGroup(this, definition,ServerTypeDefinitionGroup.CONTEXT_SERVER, null,parent);
-
-	}
-
-	/**
-     * @param server
-     * @return
-     */
-    private ServerRuntime getServerTypeDefinitionFor(IServerWorkingCopy server) {
-        
-        RuntimeDelegate runtime = (RuntimeDelegate)server.getRuntime().getAdapter(RuntimeDelegate.class);
-        if(runtime==null){
-            IRuntimeWorkingCopy wc = (IRuntimeWorkingCopy)getTaskModel().getObject(TaskModel.TASK_RUNTIME);
-            runtime= (RuntimeDelegate)wc.getAdapter(RuntimeDelegate.class);
-        }        
-        String id = runtime.getRuntime().getRuntimeType().getId();
-        if(id==null){   
-            return null;
-        }
-        Map runtimeProperties = runtime.getAttribute(GenericServerRuntime.SERVER_INSTANCE_PROPERTIES,(Map)null);
-		ServerRuntime definition = getServerTypeDefinition(id,runtimeProperties);
-        return definition;
-    }
-
-    /**
-     * @return
-     */
-    private IServerWorkingCopy getServer() {
-        IServerWorkingCopy server = (IServerWorkingCopy)getTaskModel().getObject(TaskModel.TASK_SERVER);
-        return server;
-    }
-
-    public void enter() {
-        IServerWorkingCopy server = getServer();
-        ServerRuntime definition = getServerTypeDefinitionFor(server);
-//        if(definition != null && fComposite!=null)
-//            fComposite.reset(definition,ServerTypeDefinitionGroup.CONTEXT_SERVER,null);
-	}
-	public void exit(){
-	        fProperties = fComposite.getProperties();
-	        serverDefinitionTypePropertiesChanged();
-	}
-	
-	protected Map getServerProperties(){
-	    return fProperties;
-	}
-	
-    /* (non-Javadoc)
-     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#description()
-     */
-    public String description() {
-        String sName = getServerName();
-        if(sName==null || sName.length()<1)
-            sName="Generic";
-        return  GenericServerUIMessages.getFormattedString("serverWizardDescription",new String[] {sName});
-    }
-
-    private String getServerName()
-    {
-        if(getServer()!=null && getServer().getRuntime()!=null)
-           return getServer().getRuntime().getRuntimeType().getName();
-        return null;
-    }
-    /* (non-Javadoc)
-     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#title()
-     */
-    public String title() {
-        String sName= getServerName();
-        if(sName==null || sName.length()<1)
-            sName="Generic";
-        return  GenericServerUIMessages.getFormattedString("serverWizardTitle",new String[]{sName});
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.jst.server.generic.internal.ui.ServerDefinitionTypeAwareWizardFragment#serverDefinitionTypePropertiesChanged()
-     */
-    public void serverDefinitionTypePropertiesChanged() {
-        fProperties = fComposite.getProperties();
-        IServerWorkingCopy serverWorkingCopy = getServer();
-        ServerRuntime definition = getServerTypeDefinitionFor(serverWorkingCopy);
-        
-        serverWorkingCopy.setName(GenericServerUIMessages.getFormattedString("serverName",new String[] {definition.getName()}));
-        ServerDelegate dl= (ServerDelegate)serverWorkingCopy.getAdapter(ServerDelegate.class);
-        dl.setAttribute(GenericServerRuntime.SERVER_INSTANCE_PROPERTIES,getServerProperties());
-    }
-}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericUiPlugin.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericUiPlugin.java
deleted file mode 100644
index 62febf9..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/GenericUiPlugin.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 Eteration Bilisim A.S.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- * 
- * Contributors:
- *     Gorkem Ercan - initial API and implementation
- *     Naci M. Dai
- * 
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Eteration Bilisim A.S.  For more
- * information on eteration, please see
- * <http://www.eteration.com/>.
- ***************************************************************************/
-package org.eclipse.jst.server.generic.ui.internal;
-
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.ui.plugin.*;
-import org.osgi.framework.BundleContext;
-import java.util.*;
-
-/**
- * The main plugin class to be used in the desktop.
- * 
- * @author Gorkem Ercan
- */
-public class GenericUiPlugin extends AbstractUIPlugin {
-	
-    public static final String WIZBAN_IMAGE = "genericlogo";
-    //The shared instance.
-	private static GenericUiPlugin plugin;
-	//Resource bundle.
-	private ResourceBundle resourceBundle;
-	
-	/**
-	 * The constructor.
-	 */
-	public GenericUiPlugin() {
-		super();
-		plugin = this;
-		try {
-			resourceBundle = ResourceBundle.getBundle("org.eclipse.jst.server.generic.ui.GenericUiPluginResources");
-		} catch (MissingResourceException x) {
-			resourceBundle = null;
-		}
-	}
-
-	/**
-	 * This method is called upon plug-in activation
-	 */
-	public void start(BundleContext context) throws Exception {
-		super.start(context);
-	}
-
-	/**
-	 * This method is called when the plug-in is stopped
-	 */
-	public void stop(BundleContext context) throws Exception {
-		super.stop(context);
-	}
-
-	/**
-	 * Returns the shared instance.
-	 */
-	public static GenericUiPlugin getDefault() {
-		return plugin;
-	}
-
-	/**
-	 * Returns the string from the plugin's resource bundle,
-	 * or 'key' if not found.
-	 */
-	public static String getResourceString(String key) {
-		ResourceBundle bundle = GenericUiPlugin.getDefault().getResourceBundle();
-		try {
-			return (bundle != null) ? bundle.getString(key) : key;
-		} catch (MissingResourceException e) {
-			return key;
-		}
-	}
-
-    protected ImageRegistry createImageRegistry() {
-        ImageRegistry registry = new ImageRegistry();
-        ImageDescriptor desc = ImageDescriptor.createFromURL(getDefault().getBundle().getEntry("/icons/wizban/logo.gif"));
-        registry.put(WIZBAN_IMAGE,desc);
-        return registry;
-    }
-  	public ImageDescriptor imageDescriptor(String key){
-		return getImageRegistry().getDescriptor(key);
-	}
-	/**
-	 * Returns the plugin's resource bundle,
-	 */
-	public ResourceBundle getResourceBundle() {
-		return resourceBundle;
-	}
-}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerDefinitionTypeAwareWizardFragment.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerDefinitionTypeAwareWizardFragment.java
deleted file mode 100644
index 8cdfd0d..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerDefinitionTypeAwareWizardFragment.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Created on Oct 19, 2004
- *
- * TODO To change the template for this generated file go to
- * Window - Preferences - Java - Code Style - Code Templates
- */
-package org.eclipse.jst.server.generic.ui.internal;
-
-import java.util.Map;
-
-import org.eclipse.jst.server.generic.core.internal.CorePlugin;
-import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.wst.server.ui.wizard.IWizardHandle;
-import org.eclipse.wst.server.ui.wizard.WizardFragment;
-
-/**
- * 
- *
- * @author Gorkem Ercan
- */
-public abstract class ServerDefinitionTypeAwareWizardFragment extends WizardFragment {
-
-    private IWizardHandle fWizard;
-	public boolean hasComposite() {
-		return true;
-	}
-
-	public Composite createComposite(Composite parent, IWizardHandle handle) {
-	    
-	    this.fWizard = handle;
-	    Composite container = new Composite(parent, SWT.NONE);
-		container.setLayoutData(new GridData(GridData.FILL_BOTH));
-		GridLayout grid = new GridLayout(1,false);
-		container.setLayout(grid);
-		handle.setImageDescriptor(GenericUiPlugin.getDefault().imageDescriptor(GenericUiPlugin.WIZBAN_IMAGE));
-		handle.setTitle(title());
-		handle.setDescription(description());
-		createContent(container,handle);
-		return container;
-	}
-	public IWizardHandle getWizard(){
-	    return fWizard;
-	}
-	/**
-	 * Returns the description to be displayed on the wizard head.
-	 * @return
-	 */
-	public abstract String description();
-	/**
-	 * Returns the title of the wizard.
-	 * @return
-	 */
-	public abstract String title();
-	
-	public abstract void createContent(Composite parent, IWizardHandle handle);
-
-	public abstract void serverDefinitionTypePropertiesChanged();
-	
-	protected ServerRuntime getServerTypeDefinition(String definitionID, Map properties)
-	{
-	    return CorePlugin.getDefault().getServerTypeDefinitionManager().getServerRuntimeDefinition(definitionID,properties);
-	}
-	
-	protected ServerRuntime[] getAllServerDefinitionTypes()
-	{
-	    return CorePlugin.getDefault().getServerTypeDefinitionManager().getServerTypeDefinitions();
-	}
-
-}
diff --git a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerTypeDefinitionGroup.java b/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerTypeDefinitionGroup.java
deleted file mode 100644
index 2f66de9..0000000
--- a/plugins/org.eclipse.jst.server.generic.ui/src/org/eclipse/jst/server/generic/ui/internal/ServerTypeDefinitionGroup.java
+++ /dev/null
@@ -1,325 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 Eteration Bilisim A.S.
- * All rights reserved.   This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- * 
- * Contributors:
- *     Gorkem Ercan - initial API and implementation
- *     Naci M. Dai
- * 
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED.  IN NO EVENT SHALL ETERATION A.S. OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Eteration Bilisim A.S.  For more
- * information on eteration, please see
- * <http://www.eteration.com/>.
- ***************************************************************************/
-package org.eclipse.jst.server.generic.ui.internal;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jst.server.generic.servertype.definition.Property;
-import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.FileDialog;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.server.ui.internal.SWTUtil;
-
-
-public class ServerTypeDefinitionGroup 
-{
-    public static final String CONTEXT_SERVER = Property.CONTEXT_SERVER;
-    public static final String CONTEXT_RUNTIME = Property.CONTEXT_RUNTIME;
-
-    private ServerRuntime fServerTypeDefinition;
-    private List fPropertyControls = new ArrayList();
-    private Map fPropertyMap =new HashMap();
-    private String fContext="undefined";
-    private Composite fDefinitionComposite;
-    private ServerDefinitionTypeAwareWizardFragment fAwareWizardFragment;
-    private class PropertyModifyListener implements ModifyListener
-    {
-        /* (non-Javadoc)
-         * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
-         */
-        public void modifyText(ModifyEvent e) {
-            fAwareWizardFragment.serverDefinitionTypePropertiesChanged();
-            
-        }
-        
-    }
-    
-    /**
-     * Construct a composite for the given ServerTypeDefinition
-     * 
-     * @param definition
-     * @param initialProperties initial values null means use default
-     * @param parent
-     * @param style
-     */
-    public ServerTypeDefinitionGroup(ServerDefinitionTypeAwareWizardFragment fragment, ServerRuntime definition, String context, Map initialProperties, Composite parent) 
-    {
-        fAwareWizardFragment = fragment;
-        initServerTypeDefinition(definition,context,initialProperties);
-        createControl(parent);
-    }
-    private void initProperties(Map initialProperties)
-    {
-        if(initialProperties!= null)
-            this.fPropertyMap=initialProperties;
-        else
-            fPropertyMap=new HashMap();
-    }
-//    /**
-//     * Changes the values with the given ones. Renders the UI 
-//     * with the given new values.
-//     *  
-//     * @param definition
-//     * @param context
-//     * @param initialProperties
-//     */
-//    public void reset(ServerRuntime definition, String context, Map initialProperties)
-//    {
-//        initServerTypeDefinition(definition, context, initialProperties);
-//        fDefinitionGroup.setText(definition.getName());
-//        Control[] allControls = fDefinitionGroup.getChildren();
-//        for(int i= 0; i<allControls.length;i++)
-//        {
-//            Control c = allControls[i];
-//            c.dispose();
-//        }
-//        fPropertyControls.clear();
-//        createPropertyControls(fDefinitionGroup);
-//        
-//        fDefinitionGroup.layout(true);
-//        
-//    }
-    
-    /**
-     * @param definition
-     * @param context
-     * @param initialProperties
-     */
-    private void initServerTypeDefinition(ServerRuntime definition, String context, Map initialProperties) {
-        fServerTypeDefinition = definition;
-        initProperties(initialProperties);
-        this.fContext = context;
-    }
-    /**
-     * @param parent
-     */
-    private void createControl(Composite parent) {
-
-        fDefinitionComposite = new Composite(parent, SWT.SHADOW_ETCHED_IN);
-        fDefinitionComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
-        fDefinitionComposite.setLayout(new GridLayout(3,false));
-        if(fServerTypeDefinition!=null)
-        {   
-           createPropertyControls(fDefinitionComposite);
-        }
-    }
-    /**
-     * @param defPanel
-     */
-    private void createPropertyControls(Composite definitionComposite) {
-		List properties = fServerTypeDefinition.getProperty();
-		for(int i = 0; i<properties.size(); i++)
-		{
-		    Property property = (Property)properties.get(i);		    
-		    if(this.fContext.equals(property.getContext()))
-		        createPropertyControl(definitionComposite,property);
-		}
-        
-    }
-     
-    private void createPropertyControl(Composite parent, Property property)
-    {
-    	if( "directory".equals(property.getType())) {
-    		Text path = createLabeledPath(property.getLabel(),getPropertyValue(property),parent);
-    		path.setData(property);
-    		fPropertyControls.add(path);
-    	} else if( "file".equals(property.getType())) {
-    	    Text file = createLabeledFile(property.getLabel(),getPropertyValue(property),parent);
-    		file.setData(property);
-    		fPropertyControls.add(file);
-    	} else if( "string".equals(property.getType())) {
-    	    Text str = createLabeledText(property.getLabel(),getPropertyValue(property),parent);
-    		str.setData(property);
-    		fPropertyControls.add(str);
-    	} else if( "boolean".equals(property.getType())) {
-    	    Button bool =createLabeledCheck(property.getLabel(),("true".equals( getPropertyValue(property))),	parent);
-    		bool.setData(property);
-    		fPropertyControls.add(bool);
-    	} else  {
-    	    Text defaultText= createLabeledText(property.getLabel(),getPropertyValue(property),parent);
-    		defaultText.setData(property);
-    		fPropertyControls.add(defaultText);
-     	}
-    }
-	private String getPropertyValue(Property property)
-	{
-		String value = property.getDefault();
-		if(fPropertyMap!=null && fPropertyMap.isEmpty()==false)
-			value=(String)fPropertyMap.get(property.getId()); 
-		return value;
-	}
-    protected Button createLabeledCheck(String title, boolean value,
-    		Composite defPanel) {
-    	GridData gridData;
-    	Label label = new Label(defPanel, SWT.WRAP);
-    	gridData = new GridData();
-    	label.setLayoutData(gridData);
-    	label.setText(title);
-
-    	Button fButton = new Button(defPanel, SWT.CHECK);
-    	
-    	gridData = new GridData(GridData.FILL_HORIZONTAL
-    			| GridData.GRAB_HORIZONTAL);
-    	gridData.horizontalSpan = 2;
-    	fButton.setLayoutData(gridData);
-    	fButton.setSelection(value);
-    	fButton.addSelectionListener(new SelectionListener() {
-            public void widgetSelected(SelectionEvent e) {
-               fAwareWizardFragment.serverDefinitionTypePropertiesChanged();
-            }
-
-            public void widgetDefaultSelected(SelectionEvent e) {
-                // TODO Auto-generated method stub
-
-            }
-        });
-    	
-    	return fButton;
-    }
-    protected Text createLabeledFile(String title, String value,
-    		Composite defPanel) {
-    	GridData gridData;
-    	Label label = new Label(defPanel, SWT.WRAP);
-    	gridData = new GridData();
-    	label.setLayoutData(gridData);
-    	label.setText(title);
-    
-    	final Text fText = new Text(defPanel, SWT.SHADOW_IN | SWT.BORDER);
-    	gridData = new GridData(GridData.FILL_HORIZONTAL
-    			| GridData.GRAB_HORIZONTAL);
-    	gridData.horizontalSpan = 1;
-    	fText.setLayoutData(gridData);
-    	fText.setText(value);
-    	fText.addModifyListener(new PropertyModifyListener());
-    	Button fButton = SWTUtil.createButton(defPanel,GenericServerUIMessages.getString("serverTypeGroup.label.browse") );
-    	
-    	fButton.addSelectionListener(new SelectionListener() {
-    		public void widgetSelected(SelectionEvent e) {
-    			FileDialog dlg = new FileDialog(fDefinitionComposite.getShell());
-    			dlg.setFileName(fText.getText());
-    			String res = dlg.open();
-    			if (res != null) {
-    				fText.setText(res);
-    			}
-    		}
-    
-    		public void widgetDefaultSelected(SelectionEvent e) {
-    			widgetSelected(e);
-    		}
-    
-    	});
-    
-    	return fText;
-    }
-    protected Text createLabeledPath(String title, String value,
-    		Composite parent) {
-    	GridData gridData;
-    	Label label = new Label(parent, SWT.WRAP);
-    	gridData = new GridData();
-    	label.setLayoutData(gridData);
-    	label.setText(title);
-    
-    	final Text fText = new Text(parent, SWT.SHADOW_IN | SWT.BORDER);
-    	gridData = new GridData(GridData.FILL_HORIZONTAL);
-    	gridData.horizontalSpan = 1;
-    	fText.setLayoutData(gridData);
-    	fText.setText(value);
-    	fText.addModifyListener(new PropertyModifyListener());
-    	Button fButton = SWTUtil.createButton(parent,GenericServerUIMessages.getString("serverTypeGroup.label.browse"));
-    	fButton.addSelectionListener(new SelectionListener() {
-    		public void widgetSelected(SelectionEvent e) {
-    			DirectoryDialog dlg = new DirectoryDialog(fDefinitionComposite.getShell());
-    			dlg.setFilterPath(fText.getText());
-    			String res = dlg.open();
-    			if (res != null) {
-    				fText.setText(res);
-    			}
-    		}
-    
-    		public void widgetDefaultSelected(SelectionEvent e) {
-    			widgetSelected(e);
-    		}
-    
-    	});
-    
-    	return fText;
-    }
-    protected Text createLabeledText(String title, String value,
-    		Composite defPanel) {
-    	GridData gridData;
-    	Label label = new Label(defPanel, SWT.WRAP);
-    	gridData = new GridData();
-    	label.setLayoutData(gridData);
-    	label.setText(title);
-    
-    	Text fText = new Text(defPanel, SWT.SHADOW_IN | SWT.BORDER);
-    	gridData = new GridData(GridData.FILL_HORIZONTAL
-    			| GridData.GRAB_HORIZONTAL);
-    	gridData.horizontalSpan = 2;
-    	fText.setLayoutData(gridData);
-    	fText.setText(value);
-    	fText.addModifyListener(new PropertyModifyListener());
-    	return fText;
-    }
-    public Map getProperties()
-    {
-    	for(int i=0; i<fPropertyControls.size();i++)
-    	{
-    		if(fPropertyControls.get(i)instanceof Button)
-    		{
-    			Button button = (Button)fPropertyControls.get(i);
-    			Property prop = (Property)button.getData();
-    			fPropertyMap.put(prop.getId(),Boolean.toString(button.getSelection()));
-    		}
-    		else
-    		{
-    			Text text = (Text)fPropertyControls.get(i);
-    			Property prop = (Property)text.getData();
-    			fPropertyMap.put(prop.getId(),text.getText());
-    		}
-    	}
-    	return fPropertyMap;
-    }
-}
diff --git a/plugins/org.eclipse.wst.internet.monitor.core/monitorcore/org/eclipse/wst/internet/monitor/core/ContentFilterDelegate.java b/plugins/org.eclipse.wst.internet.monitor.core/monitorcore/org/eclipse/wst/internet/monitor/core/ContentFilterDelegate.java
new file mode 100644
index 0000000..f4e08e4
--- /dev/null
+++ b/plugins/org.eclipse.wst.internet.monitor.core/monitorcore/org/eclipse/wst/internet/monitor/core/ContentFilterDelegate.java
@@ -0,0 +1,49 @@
+/**********************************************************************
+ * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    IBM Corporation - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.wst.internet.monitor.core;
+
+import java.io.IOException;
+/**
+ * A content filter that filters contents from the monitor traffic on a request.
+ * <p>
+ * This abstract class is intended to be subclassed only by clients
+ * to extend the <code>contentFilters</code> extension point.
+ * The subclass must have a public 0-argument constructor, which will be used
+ * automatically to instantiate the delegate when required. 
+ * </p>
+ * <p>
+ * [issue: The notion of content filters is a UI/presentation
+ * concern, not something that is makes sense to have as core
+ * functionality. The contentFilters extension point, IContentFilter,
+ * and ContentFilterDelegate should all move to the o.e.wst.internet.monitor.ui
+ * plug-in.]
+ * [issue: CS - I'd echo the comment above that this seems like a UI concern.  
+ * I noticed there's also a viewer on the UI side, so i'm not sure how these would interact. 
+ * I assume that filters operate on the byte stream and aren't concerned with UI presentation...
+ * but usually UI's and filters are tightly coupled.
+ * </p>
+ * 
+ * @since 1.0
+ */
+public abstract class ContentFilterDelegate {
+	/**
+	 * Filter the given content from the given request. The content that has been filtered out will 
+	 * not be shown to clients of the TCP/IP monitor.
+	 * 
+	 * @param request the request that the filter will be performed on
+	 * @param isRequest set to true if the content filter applies to request monitor traffic,
+	 *    or set to false if the content filter applies to the response monitor traffic
+	 * @param content the message content to be filtered out
+	 * @return the filtered content
+	 * @throws IOException if there is an error while parsing or filtering the content
+	 */
+	public abstract byte[] filter(Request request, boolean isRequest, byte[] content) throws IOException;
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.internet.monitor.core/schema/contentFilters.exsd b/plugins/org.eclipse.wst.internet.monitor.core/schema/contentFilters.exsd
new file mode 100644
index 0000000..9549579
--- /dev/null
+++ b/plugins/org.eclipse.wst.internet.monitor.core/schema/contentFilters.exsd
@@ -0,0 +1,131 @@
+<?xml version='1.0' encoding='UTF-8'?>

+<!-- Schema file written by PDE -->

+<schema targetNamespace="org.eclipse.wst.internet.monitor.core">

+<annotation>

+      <appInfo>

+         <meta.schema plugin="org.eclipse.wst.internet.monitor.core" id="contentFilters" name="Content Filters"/>

+      </appInfo>

+      <documentation>

+         This extension point is used to filter content received in a monitor.

+      </documentation>

+   </annotation>

+

+   <element name="extension">

+      <complexType>

+         <sequence>

+            <element ref="filter" minOccurs="0" maxOccurs="unbounded"/>

+         </sequence>

+         <attribute name="point" type="string" use="required">

+            <annotation>

+               <documentation>

+                  a fully qualified identifier of the target extension point

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="id" type="string">

+            <annotation>

+               <documentation>

+                  an optional identifier of the extension instance

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="name" type="string">

+            <annotation>

+               <documentation>

+                  an optional name of the extension instance

+               </documentation>

+            </annotation>

+         </attribute>

+      </complexType>

+   </element>

+

+   <element name="filter">

+      <annotation>

+         <appInfo>

+            <meta.element labelAttribute="name"/>

+         </appInfo>

+      </annotation>

+      <complexType>

+         <sequence>

+         </sequence>

+         <attribute name="id" type="string" use="required">

+            <annotation>

+               <documentation>

+                  specifies a unique identifier for this extension point

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="class" type="string" use="required">

+            <annotation>

+               <documentation>

+                  specifies the fully qualified name of a Java class that extends &lt;samp&gt;org.eclipse.wst.internet.monitor.core.ContentFilterDelegate&lt;/samp&gt;.
+Content filter instances of this type will delegate to instances of this class.

+               </documentation>

+               <appInfo>

+                  <meta.attribute kind="java" basedOn="org.eclipse.wst.internet.monitor.core.ContentFilterDelegate"/>

+               </appInfo>

+            </annotation>

+         </attribute>

+         <attribute name="name" type="string" use="required">

+            <annotation>

+               <documentation>

+                  a translatable name used to identify the filter

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="order" type="int">

+            <annotation>

+               <documentation>

+                  an integer used to order filters relative to each other. Lower orders are processed first

+               </documentation>

+               <appInfo>

+                  <meta.attribute kind="java"/>

+               </appInfo>

+            </annotation>

+         </attribute>

+      </complexType>

+   </element>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="examples"/>

+      </appInfo>

+      <documentation>

+         The following is an example of a content filter extension point:
+
+&lt;p&gt;
+&lt;pre&gt;
+ &lt;extension point=&quot;org.eclipse.wst.internet.monitor.core.contentFilter&quot;&gt;
+  &lt;filter
+   id=&quot;com.example.ExampleIdentifier&quot;
+   name=&quot;%exampleName&quot;
+   class=&quot;com.example.ExampleContentFilter&quot;/&gt;
+ &lt;/extension&gt;
+&lt;/pre&gt;
+&lt;/p&gt;

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="apiInfo"/>

+      </appInfo>

+      <documentation>

+         Value of the attribute &lt;b&gt;class&lt;/b&gt; must be a fully qualified name of a Java class that extends the abstract class &lt;b&gt;org.eclipse.wst.internet.monitor.core.ContentFilterDelegate&lt;/b&gt;.

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="copyright"/>

+      </appInfo>

+      <documentation>

+         Copyright (c) 2003, 2004 IBM Corporation and others.&lt;br&gt;
+All rights reserved. This program and the accompanying materials are made 
+available under the terms of the Eclipse Public License v1.0 which accompanies 
+this distribution, and is available at 
+&lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;

+      </documentation>

+   </annotation>

+

+</schema>

diff --git a/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/MonitorUICore.java b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/MonitorUICore.java
new file mode 100644
index 0000000..6a0a756
--- /dev/null
+++ b/plugins/org.eclipse.wst.internet.monitor.ui/monitorui/org/eclipse/wst/internet/monitor/ui/MonitorUICore.java
@@ -0,0 +1,41 @@
+/**********************************************************************
+ * Copyright (c) 2004, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    IBM Corporation - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.wst.internet.monitor.ui;
+
+import org.eclipse.wst.internet.monitor.core.Request;
+import org.eclipse.wst.internet.monitor.ui.internal.MonitorUIPlugin;
+/**
+ * Main class for access to the monitor UI.
+ * <p>
+ * This class provides all functionality through static members. It is not intended
+ * to be instantiated or subclassed.
+ * </p>
+ * 
+ * @since 1.0
+ */
+public final class MonitorUICore {
+	/**
+	 * Cannot create MonitorUICore - use static methods.
+	 */
+	private MonitorUICore() {
+		// can't create
+	}
+
+	/**
+	 * Returns an array of the requests currently being displayed in the TCP/IP
+	 * monitor view.
+	 *
+	 * @return an array of requests
+	 */
+	public static Request[] getRequests() {
+		return MonitorUIPlugin.getInstance().getRequests();
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.core/schema/serverLocators.exsd b/plugins/org.eclipse.wst.server.core/schema/serverLocators.exsd
new file mode 100644
index 0000000..82cd3ec
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.core/schema/serverLocators.exsd
@@ -0,0 +1,127 @@
+<?xml version='1.0' encoding='UTF-8'?>

+<!-- Schema file written by PDE -->

+<schema targetNamespace="org.eclipse.wst.server.core">

+<annotation>

+      <appInfo>

+         <meta.schema plugin="org.eclipse.wst.server.core" id="serverLocators" name="Server Locators"/>

+      </appInfo>

+      <documentation>

+         This extension point is used to locate new servers on the local or remote machines.

+      </documentation>

+   </annotation>

+

+   <element name="extension">

+      <complexType>

+         <sequence>

+            <element ref="serverLocator" minOccurs="0" maxOccurs="unbounded"/>

+         </sequence>

+         <attribute name="point" type="string" use="required">

+            <annotation>

+               <documentation>

+                  a fully qualified identifier of the target extension point

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="id" type="string">

+            <annotation>

+               <documentation>

+                  an optional identifier of the extension instance

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="name" type="string">

+            <annotation>

+               <documentation>

+                  an optional name of the extension instance

+               </documentation>

+            </annotation>

+         </attribute>

+      </complexType>

+   </element>

+

+   <element name="serverLocator">

+      <annotation>

+         <appInfo>

+            <meta.element labelAttribute="name"/>

+         </appInfo>

+      </annotation>

+      <complexType>

+         <attribute name="id" type="string" use="required">

+            <annotation>

+               <documentation>

+                  specifies a unique identifier for this extension point

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="class" type="string" use="required">

+            <annotation>

+               <documentation>

+                  specifies the fully qualified name of the Java class that implements &lt;samp&gt;ServerLocatorDelegate&lt;/samp&gt;.
+Server locator instances of this type will delegate to instances of this class.

+               </documentation>

+               <appInfo>

+                  <meta.attribute kind="java"/>

+               </appInfo>

+            </annotation>

+         </attribute>

+         <attribute name="supportsRemoteHosts" type="string" use="required">

+            <annotation>

+               <documentation>

+                  local and/or remote

+               </documentation>

+            </annotation>

+         </attribute>

+         <attribute name="typeIds" type="string" use="required">

+            <annotation>

+               <documentation>

+                  

+               </documentation>

+            </annotation>

+         </attribute>

+      </complexType>

+   </element>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="examples"/>

+      </appInfo>

+      <documentation>

+         The following is an example of a server locator extension point:
+
+&lt;p&gt;
+&lt;pre&gt;
+  &lt;extension point=&quot;org.eclipse.wst.server.core.serverLocators&quot;&gt;
+    &lt;serverLocator
+       id=&quot;com.example.locator&quot;
+       name=&quot;%serverLocatorName&quot;
+       description=&quot;%serverLocatorDescription&quot;
+       class=&quot;com.example.ExampleServerLocator&quot;/&gt;
+  &lt;/extension&gt;
+&lt;/pre&gt;
+&lt;/p&gt;

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="apiInfo"/>

+      </appInfo>

+      <documentation>

+         Value of the attribute &lt;b&gt;class&lt;/b&gt; must be a fully qualified name of a Java class that implements the interface &lt;b&gt;org.eclipse.wst.server.core.model.ServerLocatorDelegate&lt;/b&gt;.

+      </documentation>

+   </annotation>

+

+   <annotation>

+      <appInfo>

+         <meta.section type="copyright"/>

+      </appInfo>

+      <documentation>

+         Copyright (c) 2000, 2003 IBM Corporation and others.&lt;br&gt;
+All rights reserved. This program and the accompanying materials are made 
+available under the terms of the Eclipse Public License v1.0 which accompanies 
+this distribution, and is available at 
+&lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;

+      </documentation>

+   </annotation>

+

+</schema>

diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/IModuleFactoryListener.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/IModuleFactoryListener.java
new file mode 100644
index 0000000..fb77448
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/IModuleFactoryListener.java
@@ -0,0 +1,24 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.server.core.model;
+/**
+ * 
+ * 
+ * @since 1.0
+ */
+public interface IModuleFactoryListener {
+	/**
+	 * Fired when modules have been added or removed from this factory.
+	 *
+	 * @param event org.eclipse.wst.server.core.model.ModuleFactoryEvent
+	 */
+	public void moduleFactoryChanged(ModuleFactoryEvent event);
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/IModuleListener.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/IModuleListener.java
new file mode 100644
index 0000000..532ceb7
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/IModuleListener.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.server.core.model;
+/**
+ * 
+ * @since 1.0
+ */
+public interface IModuleListener {
+	/**
+	 * A module has been changed as specified in the event.
+	 *
+	 * @param event org.eclipse.wst.server.core.model.ModuleEvent
+	 */
+	public void moduleChanged(ModuleEvent event);
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/IRunningActionServer.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/IRunningActionServer.java
new file mode 100644
index 0000000..86889f0
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/IRunningActionServer.java
@@ -0,0 +1,21 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.server.core.model;
+/**
+ * This interface is a tag for a server that should be running before calling
+ * modifyModules(). It will be implemented by delegate classes of servers that
+ * should be started before calling API.
+ * 
+ * @since 1.0
+ */
+public interface IRunningActionServer {
+	// marker interface
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/ModuleEvent.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/ModuleEvent.java
new file mode 100644
index 0000000..4aab6bc
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/ModuleEvent.java
@@ -0,0 +1,102 @@
+/**********************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.wst.server.core.model;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.wst.server.core.IModule;
+/**
+ * An event fired when a module changes.
+ * 
+ * @since 1.0
+ */
+public class ModuleEvent {
+	private IModule module;
+	private boolean isChanged;
+	private IModule[] added;
+	private IModule[] changed;
+	private IModule[] removed;
+
+	class IModuleArtifact {
+		IPath path;
+		long timestamp;
+	}
+
+	/**
+	 * Create a new module event.
+	 * 
+	 * @param module the module that has been changed
+	 * @param isChanged true if the module has changed
+	 * @param added added child modules
+	 * @param changed changed child modules
+	 * @param removed removed child modules
+	 */
+	public ModuleEvent(IModule module, boolean isChanged, IModule[] added, IModule[] changed, IModule[] removed) {
+		this.module = module;
+		this.isChanged = isChanged;
+		this.added = added;
+		this.changed = changed;
+		this.removed = removed;
+	}
+
+	/**
+	 * Returns the module that has been changed.
+	 *
+	 * @return the module
+	 */
+	public IModule getModule() {
+		return module;
+	}
+
+	/**
+	 * Returns true if this module's settings have changed.
+	 * 
+	 * @return <code>true</code> if the contents have changed
+	 */
+	public boolean isChanged() {
+		return isChanged;
+	}
+
+	/**
+	 * Returns any child modules that have been added.
+	 * 
+	 * @return the added child modules, or null if no modules have been added
+	 */
+	public IModule[] getAddedChildModules() {
+		return added;
+	}
+
+	/**
+	 * Returns any child modules that have been changed.
+	 * 
+	 * @return the changed child modules, or null if no modules have been changed
+	 */
+	public IModule[] getChangedChildModules() {
+		return changed;
+	}
+
+	/**
+	 * Returns any child modules that have been removed.
+	 * 
+	 * @return the removed child modules, or null if no modules have been removed
+	 */
+	public IModule[] getRemovedChildModules() {
+		return removed;
+	}
+
+	/**
+	 * Returns the module artifacts that have changed.
+	 * 
+	 * @return the changed module artifacts
+	 */
+	public IModuleArtifact[] getChangedArtifacts() {
+		return null;
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/ModuleFactoryEvent.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/ModuleFactoryEvent.java
new file mode 100644
index 0000000..f41a880
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/ModuleFactoryEvent.java
@@ -0,0 +1,51 @@
+/**********************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.wst.server.core.model;
+
+import org.eclipse.wst.server.core.IModule;
+/**
+ * An event fired when a module factory changes.
+ * 
+ * @since 1.0
+ */
+public class ModuleFactoryEvent {
+	protected IModule[] added;
+	protected IModule[] removed;
+
+	/**
+	 * Create a new event.
+	 * 
+	 * @param added added modules
+	 * @param removed removed modules
+	 */
+	public ModuleFactoryEvent(IModule[] added, IModule[] removed) {
+		this.added = added;
+		this.removed = removed;
+	}
+
+	/**
+	 * Returns any modules that have been added.
+	 * 
+	 * @return org.eclipse.wst.server.core.model.IModule[]
+	 */
+	public IModule[] getAddedModules() {
+		return added;
+	}
+
+	/**
+	 * Returns any modules that have been removed.
+	 * 
+	 * @return org.eclipse.wst.server.core.model.IModule[]
+	 */
+	public IModule[] getRemovedModules() {
+		return removed;
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/ServerLocatorDelegate.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/ServerLocatorDelegate.java
new file mode 100644
index 0000000..a877f1d
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/model/ServerLocatorDelegate.java
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.server.core.model;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.wst.server.core.IServerWorkingCopy;
+/**
+ * A server locator provides the ability to locate or search for additional
+ * server of a particular type, on a particular host.
+ * <p>
+ * This abstract class is intended to be extended only by clients
+ * to extend the <code>serverLocators</code> extension point.
+ * </p>
+ * 
+ * @since 1.0
+ */
+public abstract class ServerLocatorDelegate {
+	/**
+	 * A callback listener used to report progress.
+	 */
+	public interface IServerSearchListener {
+		/**
+		 * Called when a new server is found by the locator.
+		 * The server must never be null.
+		 * 
+		 * @param server the runtime that was found.
+		 */
+		public void serverFound(IServerWorkingCopy server);
+	}
+
+	/**
+	 * Searches for servers. 
+	 * It uses the callback listener to report servers that are found.
+	 * 
+	 * @param host a host string conforming to RFC 2732
+	 * @param listener a listener to report status to
+	 * @param monitor a progress monitor, or <code>null</code> if progress
+	 *    reporting and cancellation are not desired
+	 */
+	public abstract void searchForServers(String host, IServerSearchListener listener, IProgressMonitor monitor);
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/util/ServerEvent.java b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/util/ServerEvent.java
new file mode 100644
index 0000000..1b3ecc6
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.core/servercore/org/eclipse/wst/server/core/util/ServerEvent.java
@@ -0,0 +1,226 @@
+/**********************************************************************
+ * Copyright (c) 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ **********************************************************************/
+package org.eclipse.wst.server.core.util;
+
+import org.eclipse.wst.server.core.IModule;
+import org.eclipse.wst.server.core.IServer;
+/**
+ * An event fired when a server change or module changes.
+ * 
+ * @since 1.0
+ */
+public class ServerEvent {
+	private IServer server;
+	private int kind;
+	private IModule[] moduleTree;
+	private int state;
+	private int publishState;
+	private boolean restartState;
+	
+	/**
+	 * For notification when the state has changed.
+	 * <p>
+	 * This kind is mutually exclusive with <code>PUBLISH_STATE_CHANGE</code> and 
+	 * <code>RESTART_STATE_CHANGE</code>.
+	 * </p>
+	 * 
+	 * @see #getKind()
+	 */
+	public static final int STATE_CHANGE = 0x0001;
+	
+	/**
+	 * Fired when published is needed or no longer needs to be published, 
+	 * or it's state has changed.
+	 * <p>
+	 * This kind is mutually exclusive with <code>STATE_CHANGE</code> and 
+	 * <code>RESTART_STATE_CHANGE</code>.
+	 * </p>
+	 * 
+	 * @see #getKind()
+	 */
+	public static final int PUBLISH_STATE_CHANGE = 0x0002;
+	
+	/**
+	 * For notification when the server isRestartNeeded() property changes.
+	 * <p>
+	 * This kind is mutually exclusive with <code>STATE_CHANGE</code> and 
+	 * <code>PUBLISH_STATE_CHANGE</code>.
+	 * </p>
+	 * 
+	 * @see #getKind()
+	 */
+	public static final int RESTART_STATE_CHANGE = 0x0004;
+	
+	/**
+	 * For event on server changes. This kind is mutually exclusive with <code>MODULE_CHANGE</code>.
+	 * 
+	 * @see #getKind()
+	 */
+	public static final int SERVER_CHANGE = 0x0010;
+	
+	/**
+	 * For event on module changes. This kind is mutually exclusive with <code>SERVER_CHANGE</code>.
+	 * 
+	 * @see #getKind()
+	 */
+	public static final int MODULE_CHANGE = 0x0020;
+
+	/**
+	 * Create a new server event for server change events.
+	 * 
+	 * @param kind the kind of the change. (<code>XXX_CHANGE</code>). If the kind does not 
+	 *    include the <code>SERVER_CHANGE</code> kind, the SERVER_CHANGE will be added automatically.  
+	 *    constants declared on {@link ServerEvent}
+	 * @param server the server that the server event takes place
+	 * @param state the server state after the change (<code>STATE_XXX</code>)
+	 *    constants declared on {@link IServer}
+	 * @param publishingState the server publishing state after the 
+	 *    change (<code>PUBLISH_STATE_XXX</code>)
+	 *    constants declared on {@link IServer}
+	 * @param restartState get the server restart state after the server is restart 
+	 *    needed property change event
+	 */
+	public ServerEvent(int kind, IServer server, int state, int publishingState, boolean restartState) {
+		this.kind = kind |= SERVER_CHANGE;
+		this.server = server;
+		this.state = state;
+		this.publishState = publishingState;
+		this.restartState = restartState;
+		
+		if (server == null)
+			throw new IllegalArgumentException("Server parameter must not be null");
+		if ((kind & MODULE_CHANGE) != 0)
+			throw new IllegalArgumentException("Kind parameter invalid");
+		
+		checkKind();
+	}
+
+	/**
+	 * Create a new ServerEvent for module change events.
+	 * 
+	 * @param kind the kind of the change. (<code>XXX_CHANGE</code>). If the kind does not 
+	 *    include the <code>MODULE_CHANGE</code> kind, the MODULE_CHANGE will be added automatically.  
+	 *    constants declared on {@link ServerEvent}
+	 * @param server the server that the module event takes place
+	 * @param module the module that has changed
+	 * @param state the module state after the change (<code>STATE_XXX</code>)
+	 *    constants declared on {@link IServer}
+	 * @param publishingState the module publishing state after the 
+	 *    change (<code>PUBLISH_STATE_XXX</code>)
+	 *    constants declared on {@link IServer}
+	 * @param restartState get the module restart state after the module is restart 
+	 *    needed property change event.
+	 */
+	public ServerEvent(int kind, IServer server, IModule[] module, int state, int publishingState, boolean restartState) {
+		this.kind = kind |= MODULE_CHANGE;
+		this.server = server;
+		this.moduleTree = module;
+		this.state = state;
+		this.publishState = publishingState;
+		this.restartState = restartState;
+		
+		if (moduleTree == null || moduleTree.length == 0)
+			throw new IllegalArgumentException("Module parameter invalid");
+		if ((kind & SERVER_CHANGE) != 0)
+			throw new IllegalArgumentException("Kind parameter invalid");
+		
+		checkKind();
+	}
+	
+	private void checkKind() {
+		int i = 0;
+		if ((kind & STATE_CHANGE) != 0)
+			i++;
+		if ((kind & RESTART_STATE_CHANGE) != 0)
+			i++;
+		if ((kind & PUBLISH_STATE_CHANGE) != 0)
+			i++;
+		
+		if (i != 1)
+			throw new IllegalArgumentException("Kind parameter invalid");
+	}
+
+	/**
+	 * Returns the kind of the server event.
+	 * <p>
+	 * This kind can be used to test whether this event is a server event or module event by using
+	 * the following code (the example is checking for the server event):
+	 * ((getKind() | SERVER_CHANGE) != 0) 
+	 * the following code (the example is checking for the module event):
+	 * ((getKind() | MODULE_CHANGE) != 0) 
+	 * 
+	 * @return the kind of the change (<code>XXX_CHANGE</code>
+	 *    constants declared on {@link ServerEvent}
+	 */
+	public int getKind() {
+		return kind;
+	}
+	
+	/**
+	 * Returns the module tree of the module involved in the module change event,
+	 * or <code>null</code> if the event is not a module event, i.e. isModuleEvent() is false.
+	 *  
+	 * @return the module tree of the module involved in the module change event,
+	 *    or <code>null</code> if the event is not a module event, i.e.
+	 *    isModuleEvent() is false.
+	 */
+	public IModule[] getModule() {
+		return moduleTree;
+	}
+	
+	/**
+	 * Get the publish state after the change that triggers this server event. If this event 
+	 * is of the SERVER_CHANGE kind, then the publishing state is the server publishing state.
+	 * If this event is of the MODULE_CHANGE kind, then the publishing state is the module
+	 * publishing state.
+	 * 
+	 * @return the publishing state after the change (<code>PUBLISH_STATE_XXX</code>)
+	 *    constants declared on {@link IServer}
+	 */
+	public int getPublishState() {
+		return publishState;
+	}
+	
+	/**
+	 * Get the restart state after isRestartNeeded() property change event.
+	 * If this event is of the SERVER_CHANGE kind, then the restart state is the server 
+	 * restart state. If this event is of the MODULE_CHANGE kind, then the restart state 
+	 * is the module restart state. 
+	 * 
+	 * @return <code>true</code> if restart is needed, and
+	 *    <code>false</code> otherwise
+	 */
+	public boolean getRestartState() {
+		return restartState;
+	}
+	
+	/**
+	 * Get the state after the change that triggers this server event. If this event 
+	 * is of the SERVER_CHANGE kind, then the state is the server state.
+	 * If this event is of the MODULE_CHANGE kind, then the state is the module
+	 * state.
+	 * 
+	 * @return the server state after the change (<code>STATE_XXX</code>)
+	 *    constants declared on {@link IServer}
+	 */
+	public int getState() {
+		return state;
+	}
+	
+	/**
+	 * Returns the server involved in the change event.
+	 * 
+	 * @return the server involved in the change event.
+	 */
+	public IServer getServer() {
+		return server;
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/editor/IOrdered.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/editor/IOrdered.java
new file mode 100644
index 0000000..ff05a36
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/editor/IOrdered.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.server.ui.editor;
+/**
+ * An object that has an absolute ordering, and can be ordered against other objects.
+ * 
+ * <p>
+ * [issue: It is notoriously difficult to place any kind of
+ * useful order on objects that are contributed independently by
+ * non-collaborating parties. The IOrdered mechanism is weak, and
+ * can't really solve the problem. Issues of presentation are usually
+ * best left to the UI, which can sort objects based on arbitrary
+ * properties.]
+ * </p>
+ * 
+ * <p>This interface is not intended to be implemented by clients.</p>
+ * 
+ * @since 1.0
+ */
+public interface IOrdered {
+	/**
+	 * Returns the order (index/priority).
+	 * 
+	 * @return int
+	 */
+	public int getOrder();
+}
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/editor/ServerEditorActionFactoryDelegate.java b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/editor/ServerEditorActionFactoryDelegate.java
new file mode 100644
index 0000000..6cbbfaf
--- /dev/null
+++ b/plugins/org.eclipse.wst.server.ui/serverui/org/eclipse/wst/server/ui/editor/ServerEditorActionFactoryDelegate.java
@@ -0,0 +1,43 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.server.ui.editor;
+
+import org.eclipse.jface.action.IAction;
+import org.eclipse.ui.IEditorSite;
+
+import org.eclipse.wst.server.core.IServerWorkingCopy;
+/**
+ *
+ * @since 1.0
+ */
+public abstract class ServerEditorActionFactoryDelegate {
+	/**
+	 * Returns true if this editor action should be visible on the given
+	 * server. This allows actions to be filtered based on the server type
+	 * or server attributes.
+	 * 
+	 * @param server the server being edited
+	 * @return <code>true</code> if the action should be displayed, or
+	 *    <code>false</code> otherwise
+	 */
+	public boolean shouldDisplay(IServerWorkingCopy server) {
+		return true;
+	}
+
+	/**
+	 * Create the action.
+	 * 
+	 * @param site the editor site
+	 * @param input the server editor port input
+	 * @return an action that can be run against the server
+	 */
+	public abstract IAction createAction(IEditorSite site, IServerEditorPartInput input);
+}
\ No newline at end of file