svn commit: rev 37297 - in avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro: . studio studio/eclipse studio/eclipse/ui studio/eclipse/ui/common studio/eclipse/ui/constants studio/eclipse/ui/controller studio/eclipse/ui/panels studio/eclipse/ui/preferences studio/eclipse/ui/properties studio/eclipse/ui/tools studio/eclipse/ui/wizards

[email protected] 1 Sep 2004 04:01:04 -0000
Newsgroups gmane.comp.jakarta.avalon.cvs
Message-ID <[email protected]>
Author: oberhack
Date: Tue Aug 31 21:01:03 2004
New Revision: 37297

Added:
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/MetroStudioUI.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/MetroStudioUIResources.properties
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/CommonDialogs.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/IModelObject.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/IUIStoreConstants.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/IViewPresentationService.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/ModelObject.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/constants/
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/constants/IUIStoreConstants.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/controller/
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/controller/CreateBlockProjectOperation.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/controller/NewMetroProjectWizardController.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/controller/PreferencesController.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/panels/
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/panels/RepositorySettingsPanel.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/panels/ServerSettingsPanel.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/preferences/
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/preferences/MainPreferencePage.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/preferences/RepositoryPreferencePage.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/preferences/ServerPreferencePage.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/properties/
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/properties/SamplePropertyPage.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/tools/
      - copied from rev 22169, avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/avalon/ide/eclipse/merlin/ui/tools/
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/wizards/
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/wizards/NewMetroProjectSelectionPage.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/wizards/NewMetroProjectWizard.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/wizards/WizardUtil.java
Modified:
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/tools/AvalonProposals.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/tools/ExampleBuilder.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/tools/ImageViewerEditor.java
   avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/tools/JavadocProcessor.java
Log:


Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/MetroStudioUI.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/MetroStudioUI.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,151 @@
+/*
+   
+      Copyright 2004. The Apache Software Foundation.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License. 
+   
+ */
+package org.apache.metro.studio.eclipse.ui;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * @author <a href="mailto:[email protected]">Avalon Development Team</a> 
+ * The main plugin class to be used in the desktop.
+ */
+public class MetroStudioUI extends AbstractUIPlugin
+{
+    //The shared instance.
+    private static MetroStudioUI plugin;
+    //Resource bundle.
+    private ResourceBundle resourceBundle;
+    public static final String PLUGIN_ID = "org.apache.metro.MetroStudioUI";
+    /**
+	 * The constructor.
+	 */
+    public MetroStudioUI()
+    {
+        super();
+        plugin = this;
+        try
+        {
+            resourceBundle =
+                ResourceBundle.getBundle(
+                    "org.apache.metro.studio.eclipse.ui.MetroStudioUIResources");
+        } catch (MissingResourceException x)
+        {
+            resourceBundle = null;
+        }
+    }
+
+    /**
+	 * Returns the shared instance.
+	 */
+    public static MetroStudioUI getDefault()
+    {
+        return plugin;
+    }
+
+    /**
+	 * Returns the workspace instance.
+	 */
+    public static IWorkspace getWorkspace()
+    {
+        return ResourcesPlugin.getWorkspace();
+    }
+
+    /**
+	 * Returns the string from the plugin's resource bundle, or 'key' if not
+	 * found.
+	 */
+    public static String getResourceString(String key)
+    {
+        ResourceBundle bundle = MetroStudioUI.getDefault().getResourceBundle();
+        try
+        {
+            return (bundle != null ? bundle.getString(key) : key);
+        } catch (MissingResourceException e)
+        {
+            return key;
+        }
+    }
+
+    /**
+	 * Returns the plugin's resource bundle,
+	 */
+    public ResourceBundle getResourceBundle()
+    {
+        return resourceBundle;
+    }
+
+    public static void log(IStatus status)
+    {
+        getDefault().getLog().log(status);
+    }
+
+    public static void log(Throwable e, String message)
+    {
+        boolean isDebugging = true; // change to false for production
+        IStatus status =
+            new Status(
+                IStatus.ERROR,
+                ResourcesPlugin.getPlugin().getBundle().getSymbolicName(),
+                IStatus.ERROR,
+                message,
+                e);
+
+        log(status);
+        if (isDebugging)
+        {
+            System.out.println(message + ": " + e.getMessage()); //$NON-NLS-1$
+        }
+    }
+
+    public static ImageDescriptor getImageDescriptor(String path)
+    {
+        try
+        {
+            URL prefix = MetroStudioUI.getDefault().getBundle().getEntry("/");
+            return ImageDescriptor.createFromURL(new URL(prefix, path));
+        } catch (MalformedURLException e)
+        {
+            log(e, "getResourceBundle() handling MalformedURLException"); //$NON-NLS-1$
+            return 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);
+	}
+}

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/MetroStudioUIResources.properties
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/MetroStudioUIResources.properties	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,45 @@
+#########################################
+#
+#
+#   
+#      Copyright 2004. The Apache Software Foundation.
+#
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License. 
+#   
+# 
+#
+#########################################
+
+new.MerlinDevelopment.window.title=New Merlin Project
+new.MerlinDevelopment.errorDialog.title=Error
+new.MerlinDevelopment.mainPage.title=Merlin Block Development
+new.MerlinDevelopment.mainPage.description=Create a project to develop blocks for the Merlin container
+new.MerlinDevelopment.selectionPage.title=Project Selection Page
+new.MerlinDevelopment.selectionPage.description=Select a type of project you want to create.
+new.MerlinDevelopment.containerPage.title=Project Details
+new.MerlinDevelopment.containerPage.description=Enter required data to create your Merlin project
+javadoc.avalon.component=mark a class as merlin component
+javadoc.avalon.component.tag=avalon.component name="xx" version="1.0.0" livestyle="singleton"
+javadoc.avalon.dependency=defines a dependency
+javadoc.avalon.dependency.tag=avalon.dependency type="xx" key="yy"
+javadoc.avalon.service.tag=avalon.service type="xx" version="1.0.0"
+javadoc.avalon.service=defines the service interface
+javadoc.avalon.entry.tag=avalon.entry entry="urn:avalon:xx"
+javadoc.avalon.entry=defines an entry for special context values
+javadoc.avalon.stage=define lifecycle extensions
+javadoc.avalon.stage.tag=avalon.stage id="urn:name:type"
+javadoc.avalon.extension=definition of an extension
+javadoc.avalon.extension.tag=avalon.extension id="urn:name:type"
+javadoc.avalon.logger.tag=avalon.logger name="xx.yy"
+javadoc.avalon.logger=defines a logger
+

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/CommonDialogs.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/CommonDialogs.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,54 @@
+/*
+ * Created on 20.08.2004
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.apache.metro.studio.eclipse.ui.common;
+
+import java.io.File;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Shell;
+
+/**
+ * @author EH2OBCK
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+public class CommonDialogs {
+	
+	public static String getPath(Shell shell)
+	{
+		File directory = null;
+		DirectoryDialog fileDialog = new DirectoryDialog(shell, SWT.OPEN);
+		//if (startingDirectory != null)
+			//fileDialog.setFilterPath(startingDirectory.getPath());
+		String dir = fileDialog.open();
+		if (dir != null) {
+			dir = dir.trim();
+			if (dir.length() > 0)
+				directory = new File(dir);
+		}
+		if(dir == null) return null;
+		return directory.getAbsolutePath();
+	}
+	public static String getFilePath(Shell shell)
+	{
+		File directory = null;
+		FileDialog fileDialog = new FileDialog(shell, SWT.OPEN);
+		//if (startingDirectory != null)
+			//fileDialog.setFilterPath(startingDirectory.getPath());
+		String dir = fileDialog.open();
+		if (dir != null) {
+			dir = dir.trim();
+			if (dir.length() > 0)
+				directory = new File(dir);
+		}
+		if(dir == null) return null;
+		return directory.getAbsolutePath();
+	}
+}

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/IModelObject.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/IModelObject.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,16 @@
+/*
+ * Created on 20.08.2004
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.apache.metro.studio.eclipse.ui.common;
+
+/**
+ * @author EH2OBCK
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+public interface IModelObject {
+}

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/IUIStoreConstants.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/IUIStoreConstants.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,21 @@
+/*
+ * Created on 19.08.2004
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.apache.metro.studio.eclipse.ui.common;
+
+/**
+ * @author EH2OBCK
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+public interface IUIStoreConstants {
+	
+	public static final String METRO_LIB = "lib";
+	public static final String METRO_LIB_DEFAULT = "merlin-cli-1.3.0.jar";
+	public static final String METRO_LANG = "lang";
+	public static final String METRO_LANG_DEFAULT = "en";
+}

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/IViewPresentationService.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/IViewPresentationService.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,16 @@
+/*
+ * Created on 20.08.2004
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.apache.metro.studio.eclipse.ui.common;
+
+/**
+ * @author EH2OBCK
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+public interface IViewPresentationService {
+}

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/ModelObject.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/common/ModelObject.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,115 @@
+/*
+ * Created on 20.08.2004
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.apache.metro.studio.eclipse.ui.common;
+
+import java.util.Hashtable;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.jface.dialogs.DialogPage;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.ui.dialogs.PropertyPage;
+
+/**
+ * @author EH2OBCK
+ *
+ * This ModelObject implements the Presentation IModelObject
+ * without using the event handling
+ * It only shield the differences between the stores used by PreferencePages
+ * or PropertyPages so that this Panel can be reused in either situation.
+ */
+public class ModelObject implements IModelObject {
+	private transient Hashtable defaults = new Hashtable();
+	
+	private IResource element;
+	private IViewPresentationService service;
+	private IPreferenceStore store;
+	/**
+	 * 
+	 */
+	public ModelObject(DialogPage page) {
+		super();
+		if(page instanceof PropertyPage)
+		{
+			element = (IResource)((PropertyPage)page).getElement();
+		} else
+		{
+			store = ((PreferencePage)page).getPreferenceStore();
+		}
+	}
+	public String getDefaultString(String name)
+	{
+		if(element != null)
+		{return (String)defaults.get(name);
+		}
+		if(store != null)
+		{
+			return store.getDefaultString(name);
+		}
+		return null;
+	}
+	public String getString(String name)
+	{
+		try {
+			if(element != null)
+			{return (String)element.getPersistentProperty(new QualifiedName("", name));
+			}
+			if(store != null)
+			{
+				return store.getString(name);
+			}
+		} catch (CoreException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
+	/**
+	 * @param repository_panel
+	 */
+	public ModelObject controlClicked(String controlName) {
+		
+		// local = service.clicked(controlName, this);
+		return this;
+	}
+	public void setDefaultString(String name, String defaultValue)
+	{
+		if(element != null)
+		{defaults.put(name, defaultValue);
+		}
+		if(store != null)
+		{
+			store.setDefault(name, defaultValue);
+		}
+	}
+	
+	public void setString(String name, String value)
+	{
+		try {
+			if(element != null)
+			{element.setPersistentProperty(new QualifiedName("", name),
+					value);
+			}
+			if(store != null)
+			{
+				store.setValue(name, value);
+			}
+		} catch (CoreException e) {
+			e.printStackTrace();
+		}
+	}
+	/**
+	 * @param repository_panel
+	 * @return
+	 */
+	public ModelObject windowCreated(String repository_panel) {
+		
+		return this;
+	}
+
+}

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/constants/IUIStoreConstants.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/constants/IUIStoreConstants.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,23 @@
+/*
+ * Created on 19.08.2004
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+package org.apache.metro.studio.eclipse.ui.constants;
+
+/**
+ * @author EH2OBCK
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Generation - Code and Comments
+ */
+public interface IUIStoreConstants {
+	
+	public static final String METRO_LIB = "lib";
+	public static final String METRO_LIB_DEFAULT = "merlin-cli-1.3.0.jar";
+	public static final String METRO_LANG = "lang";
+	public static final String METRO_LANG_DEFAULT = "en";
+	
+	public static final String METRO_HOME = "metro.home";
+}

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/controller/CreateBlockProjectOperation.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/controller/CreateBlockProjectOperation.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,76 @@
+/*
+   
+      Copyright 2004. The Apache Software Foundation.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License. 
+   
+ */
+package org.apache.metro.studio.eclipse.ui.controller;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.apache.metro.facility.presentationservice.api.IModelChannel;
+import org.apache.metro.facility.presentationservice.impl.ChannelException;
+import org.apache.metro.studio.eclipse.ui.wizards.NewMetroProjectWizard;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+
+/**
+ * @author <a href="mailto:[email protected]">Avalon Development Team</a>
+ *
+ */
+public class CreateBlockProjectOperation implements IRunnableWithProgress
+{
+
+    private IModelChannel channel;
+    
+    public CreateBlockProjectOperation()
+    {}
+
+    /**
+	 * @param pParam
+	 * @param pModel
+	 */
+    public CreateBlockProjectOperation(IModelChannel channel)
+    {
+        this.channel = channel;
+    }
+
+    public void run(IProgressMonitor monitor)
+        throws InvocationTargetException, InterruptedException
+    {
+        if (monitor == null)
+        {
+            monitor = new NullProgressMonitor();
+        }
+        try
+        {
+            try
+            {
+                // monitor.beginTask(MerlinDeveloperUI.getResourceString("NewWebAppProjectOperation.createWebAppTask.description"), 1); //$NON-NLS-1$
+
+                channel.controlClicked(NewMetroProjectWizard.NEW_PROJECT_FINISH);             
+
+            } finally
+            {
+                monitor.done();
+            }
+        } catch (ChannelException e)
+        {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+    }
+
+}
\ No newline at end of file

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/controller/NewMetroProjectWizardController.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/controller/NewMetroProjectWizardController.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,128 @@
+/*
+
+   Copyright 2004. The Apache Software Foundation.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License. 
+
+*/
+package org.apache.metro.studio.eclipse.ui.controller;
+
+import org.apache.metro.facility.presentationservice.api.ChannelListener;
+import org.apache.metro.facility.presentationservice.impl.ChannelEvent;
+import org.apache.metro.facility.presentationservice.impl.ChannelException;
+import org.apache.metro.facility.presentationservice.impl.ViewChannel;
+import org.apache.metro.studio.eclipse.core.templateengine.BlockProjectManager;
+import org.apache.metro.studio.eclipse.core.templateengine.ResourceTemplateManager;
+import org.apache.metro.studio.eclipse.ui.wizards.NewMetroProjectSelectionPage;
+import org.apache.metro.studio.eclipse.ui.wizards.NewMetroProjectWizard;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+
+/**
+ * @author <a href="mailto:[email protected]">Metro Development Team</a>
+ * 22.08.2004
+ * last change:
+ * 
+ */
+public class NewMetroProjectWizardController
+{
+    ResourceTemplateManager rm;
+    /**
+     * 
+     */
+    public NewMetroProjectWizardController()
+    {
+        super();
+    }
+    
+    private ChannelEvent selectionListClicked(ChannelEvent event)
+    {
+
+        String help = BlockProjectManager.getResourceHelp(event.getValue(NewMetroProjectSelectionPage.SELECTION_CONTROL_SELECTED));
+        event.putValue("resource.help", help);
+		return event;
+    }
+    
+    private ChannelEvent selectionApplyClicked(ChannelEvent event)
+    {
+        try
+        {
+            String projectName = event.getValue(NewMetroProjectWizard.NEW_PROJECT_NAME);
+            String templateName = event.getValue(NewMetroProjectSelectionPage.SELECTION_CONTROL_SELECTED);
+
+            IProject project = BlockProjectManager.create(projectName, templateName);
+            project.refreshLocal(IResource.DEPTH_INFINITE, null);
+        } catch (CoreException e)
+        {
+
+            e.printStackTrace();
+        }
+
+
+		return event;
+    }
+    
+    private ChannelEvent selectionWindowCreated(ChannelEvent event)
+    {
+        rm = ResourceTemplateManager.load(ResourceTemplateManager.DEFAULT_CONFIG_PATH);
+        event.putValueArray(NewMetroProjectSelectionPage.SELECTION_CONTROL_LIST, BlockProjectManager.listTemplateNames());
+		return event;
+    }
+
+    /**
+     * register all event listeners
+     *
+     */
+    public void initialize()
+    {
+        
+        try
+        {
+            ViewChannel channel = new ViewChannel("newBlockWizard");
+            
+            channel.addControlClickedListener(NewMetroProjectSelectionPage.SELECTION_CONTROL, new ChannelListener (){
+                public ChannelEvent notify(ChannelEvent event) throws ChannelException
+                {
+                    selectionListClicked(event);                    
+                    return event;
+            
+                }          
+            });
+
+            channel.addControlClickedListener(NewMetroProjectWizard.NEW_PROJECT_FINISH, new ChannelListener (){
+                public ChannelEvent notify(ChannelEvent event) throws ChannelException
+                {
+                    selectionApplyClicked(event);                    
+                    return event;
+            
+                }          
+            });
+            
+            channel.addWindowCreatedListener(NewMetroProjectSelectionPage.SELECTION_PANEL, new ChannelListener (){
+                public ChannelEvent notify(ChannelEvent event) throws ChannelException
+                {
+                    event = selectionWindowCreated(event);                    
+                    return event;
+            
+                }          
+            });
+
+        } catch (ChannelException e)
+        {
+            e.printStackTrace();
+        }
+
+    }
+
+}

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/controller/PreferencesController.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/controller/PreferencesController.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,103 @@
+/*
+
+   Copyright 2004. The Apache Software Foundation.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License. 
+
+*/
+package org.apache.metro.studio.eclipse.ui.controller;
+
+import org.apache.metro.facility.presentationservice.api.ChannelListener;
+import org.apache.metro.facility.presentationservice.impl.ChannelEvent;
+import org.apache.metro.facility.presentationservice.impl.ChannelException;
+import org.apache.metro.facility.presentationservice.impl.ViewChannel;
+import org.apache.metro.studio.eclipse.core.environment.MetroEnvironment;
+import org.apache.metro.studio.eclipse.core.environment.ServerEnvironment;
+import org.apache.metro.studio.eclipse.ui.panels.ServerSettingsPanel;
+
+/**
+ * @author <a href="mailto:[email protected]">Metro Development Team</a>
+ * 22.08.2004
+ * last change:
+ * 
+ */
+public class PreferencesController
+{
+
+    /**
+     * 
+     */
+    public PreferencesController()
+    {
+        super();
+    }
+    
+    private void serverApplyClicked(ChannelEvent event)
+    {
+		event.getValue(ServerSettingsPanel.SERVER_DEPLOY);
+		event.getValue(ServerSettingsPanel.SERVER_LANG);
+		event.getValue(ServerSettingsPanel.SERVER_ROOT_BLOCK);
+		event.getValue(ServerSettingsPanel.SERVER_ROOT_FACILITY);
+		event.getValue(ServerSettingsPanel.SERVER_STARTUP_JAR);
+
+    }
+    
+    private void serverWindowCreated(ChannelEvent event)
+    {
+        MetroEnvironment env = new MetroEnvironment();
+        
+		event.putValue(ServerSettingsPanel.SERVER_DEPLOY, "");
+		event.putValue(ServerSettingsPanel.SERVER_LANG, ServerEnvironment.DEFAULT_LANG);
+		event.putValue(ServerSettingsPanel.SERVER_ROOT_BLOCK, env.getMerlinHome());
+		event.putValue(ServerSettingsPanel.SERVER_ROOT_FACILITY, "");
+		event.putValue(ServerSettingsPanel.SERVER_STARTUP_JAR, "");
+
+    }
+
+    /**
+     * register all event listeners
+     *
+     */
+    public void initialize()
+    {
+        
+        try
+        {
+            ViewChannel channel = new ViewChannel("server");
+            
+            channel.addControlClickedListener(ServerSettingsPanel.SERVER_APPLY, new ChannelListener (){
+                public ChannelEvent notify(ChannelEvent event) throws ChannelException
+                {
+                    serverApplyClicked(event);                    
+                    return event;
+            
+                }          
+            });
+            
+            channel.addWindowCreatedListener(ServerSettingsPanel.SERVER_PANEL, new ChannelListener (){
+                public ChannelEvent notify(ChannelEvent event) throws ChannelException
+                {
+                    serverWindowCreated(event);                    
+                    return event;
+            
+                }          
+            });
+
+        } catch (ChannelException e)
+        {
+            e.printStackTrace();
+        }
+
+    }
+
+}

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/panels/RepositorySettingsPanel.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/panels/RepositorySettingsPanel.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,238 @@
+/*
+ * Created on 17.08.2004
+ * 
+ * TODO To change the template for this generated file go to Window -
+ * Preferences - Java - Code Generation - Code and Comments
+ */
+package org.apache.metro.studio.eclipse.ui.panels;
+import org.apache.metro.studio.eclipse.ui.common.CommonDialogs;
+import org.apache.metro.studio.eclipse.ui.common.ModelObject;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+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.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+/**
+ * @author EH2OBCK
+ * 
+ * TODO To change the template for this generated type comment go to Window -
+ * Preferences - Java - Code Generation - Code and Comments
+ */
+public class RepositorySettingsPanel {
+
+	public static final String REPOSITORY_PANEL = "repository.panel";
+	public static final String REPOSITORY_APPLY = "repository.apply";
+	public static final String REPOSITORY_DEFAULT = "repository.default";
+	
+	public static final String REPOSITORY_USER = "repository.user";
+	public static final String REPOSITORY_SYSTEM = "repository.system";
+	public static final String REPOSITORY_REMOTE = "repository.remote";
+	public static final String REPOSITORY_PROXY_HOST = "repository.proxyhost";
+	public static final String REPOSITORY_PROXY_PORT = "repository.proxyport";
+	public static final String REPOSITORY_PROXY_USER = "repository.proxyuser";
+	public static final String REPOSITORY_PROXY_PWD = "repository.proxypwd";
+	
+	private Text password;
+	private Text userName;
+	private Text proxyPort;
+	private Text proxyHome;
+	private List remoteHosts;
+	private Text userRepository;
+	private Text systemRepository;
+	private Text metroHome;
+	private Shell shell;
+	
+	private ModelObject model;
+	
+	/**
+	 *  
+	 */
+	public RepositorySettingsPanel() {
+		super();
+	}
+	
+	public void initializeControls(ModelObject cModel)
+	{
+		this.model = cModel.windowCreated(REPOSITORY_PANEL);
+		showControls();
+		
+	}
+	
+	public void performApply()
+	{
+		storeControls();
+		model.controlClicked(REPOSITORY_APPLY);
+	}
+	
+	public void performDefaults()
+	{
+		model = model.controlClicked(REPOSITORY_DEFAULT);
+		showControls();
+	}
+	
+	private void storeControls()
+	{
+		model.setString(REPOSITORY_PROXY_PWD, password.getText());
+		model.setString(REPOSITORY_PROXY_USER, userName.getText());
+		model.setString(REPOSITORY_PROXY_PORT, proxyPort.getText());
+		model.setString(REPOSITORY_PROXY_HOST, proxyHome.getText());
+		model.setString(REPOSITORY_USER, userRepository.getText());
+		model.setString(REPOSITORY_SYSTEM, systemRepository.getText());
+	}
+	private void showControls()
+	{
+		password.setText(model.getString(REPOSITORY_PROXY_PWD));
+		userName.setText(model.getString(REPOSITORY_PROXY_USER));
+		proxyPort.setText(model.getString(REPOSITORY_PROXY_PORT));
+		proxyHome.setText(model.getString(REPOSITORY_PROXY_HOST));
+		//remoteHosts.setText(model.getString(REPOSITORY_PROXY_PWD));
+		userRepository.setText(model.getString(REPOSITORY_USER));
+		systemRepository.setText(model.getString(REPOSITORY_SYSTEM));
+
+	}
+	/**
+	 * Create all controls
+	 * @param parent
+	 * @return
+	 */
+	public Control createControls(Composite parent) {
+		shell = parent.getShell();
+		Composite contents = new Composite(parent, SWT.NONE);
+		final GridLayout gridLayout = new GridLayout();
+		gridLayout.numColumns = 3;
+		contents.setLayout(gridLayout);
+		contents.setLayoutData(new GridData(GridData.FILL_BOTH));
+		{
+			final Label label = new Label(contents, SWT.NONE);
+			label.setText("Metro Home:");
+		}
+		{
+			metroHome = new Text(contents, SWT.BORDER);
+			metroHome.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		}
+		{
+			final Button button = new Button(contents, SWT.NONE);
+			button.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					metroHome.setText(CommonDialogs.getPath(shell));				}
+			});
+			button.setText("...");
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+			label.setText("System Repository:");
+		}
+		{
+			systemRepository = new Text(contents, SWT.BORDER);
+			systemRepository.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
+		}
+		{
+			final Button button = new Button(contents, SWT.NONE);
+			button.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					systemRepository.setText(CommonDialogs.getPath(shell));				}
+			});
+			button.setText("...");
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+			label.setText("User Repository:");
+		}
+		{
+			userRepository = new Text(contents, SWT.BORDER);
+			userRepository.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
+		}
+		{
+			final Button button = new Button(contents, SWT.NONE);
+			button.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					userRepository.setText(CommonDialogs.getPath(shell));				}
+			});
+			button.setText("...");
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+			final GridData gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
+			gridData.verticalSpan = 2;
+			label.setLayoutData(gridData);
+			label.setText("Remote Repositories:");
+		}
+		{
+			remoteHosts = new List(contents, SWT.BORDER);
+			final GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+			gridData.heightHint = 80;
+			gridData.verticalSpan = 2;
+			remoteHosts.setLayoutData(gridData);
+		}
+		{
+			final Button button = new Button(contents, SWT.NONE);
+			final GridData gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING);
+			gridData.verticalSpan = 2;
+			button.setLayoutData(gridData);
+			button.setText("...");
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+			label.setText("Proxy Host:");
+		}
+		{
+			proxyHome = new Text(contents, SWT.BORDER);
+			final GridData gridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+			proxyHome.setLayoutData(gridData);
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+			label.setText("Proxy Port:");
+		}
+		{
+			proxyPort = new Text(contents, SWT.BORDER);
+			final GridData gridData = new GridData();
+			gridData.widthHint = 150;
+			gridData.horizontalSpan = 2;
+			proxyPort.setLayoutData(gridData);
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+			label.setText("Username:");
+		}
+		{
+			userName = new Text(contents, SWT.BORDER);
+			final GridData gridData = new GridData();
+			gridData.widthHint = 150;
+			gridData.horizontalSpan = 2;
+			userName.setLayoutData(gridData);
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+			label.setText("Password:");
+		}
+		{
+			password = new Text(contents, SWT.BORDER);
+			final GridData gridData = new GridData();
+			gridData.widthHint = 150;
+			gridData.horizontalSpan = 2;
+			password.setLayoutData(gridData);
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+		}
+		{
+			final Button button = new Button(contents, SWT.CHECK);
+			button.setText("Test Remote Repository");
+		}
+
+
+		return contents;
+	}
+
+}
\ No newline at end of file

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/panels/ServerSettingsPanel.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/panels/ServerSettingsPanel.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,257 @@
+/*
+ * Created on 17.08.2004
+ * 
+ * TODO To change the template for this generated file go to Window -
+ * Preferences - Java - Code Generation - Code and Comments
+ */
+package org.apache.metro.studio.eclipse.ui.panels;
+import org.apache.metro.facility.presentationservice.api.IModelChannel;
+import org.apache.metro.facility.presentationservice.impl.ChannelException;
+import org.apache.metro.facility.presentationservice.impl.ModelChannel;
+import org.apache.metro.studio.eclipse.ui.common.CommonDialogs;
+import org.apache.metro.studio.eclipse.ui.common.ModelObject;
+import org.apache.metro.studio.eclipse.ui.controller.PreferencesController;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+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.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+/**
+ * @author EH2OBCK
+ * 
+ * TODO To change the template for this generated type comment go to Window -
+ * Preferences - Java - Code Generation - Code and Comments
+ */
+public class ServerSettingsPanel {
+
+	public static final String SERVER_PANEL = "server.panel";
+	public static final String SERVER_APPLY = "server.apply";
+	public static final String SERVER_DEFAULT = "server.default";
+	
+	public static final String SERVER_STARTUP_JAR = "server.startup.jar";
+	public static final String SERVER_ROOT_FACILITY = "server.facility";
+	public static final String SERVER_ROOT_BLOCK = "server.block";
+	public static final String SERVER_LANG = "server.lang";
+	public static final String SERVER_TIMEOUT = "server.timeout";
+	public static final String SERVER_DEBUG = "server.debug";
+	public static final String SERVER_DEPLOY = "server.deploy";
+	public static final String SERVER_EXECUTE = "server.execute";
+	public static final String SERVER_ASSAMBLY = "server.assambly";
+	public static final String SERVER_SECURITY = "server.security";
+
+	private Text deploymentTimeout;
+	private Text language;
+	private Text rootBlock;
+	private Text rootFacility;
+	private Text serverLib;
+
+	private Shell shell;
+	private IModelChannel model;
+	
+	/**
+	 *  
+	 */
+	public ServerSettingsPanel() {
+		super();
+	}
+	
+	public void initializeControls(ModelObject cModel)
+	{
+	    try
+        {
+	        // initialize the controller
+	        new PreferencesController().initialize();
+            model = new ModelChannel("server");
+            model.windowCreated(SERVER_PANEL);
+            showControls();
+        } catch (ChannelException e)
+        {
+            e.printStackTrace();
+        }
+	}
+
+	public void performDefaults()
+	{
+		try
+        {
+            model.controlClicked(SERVER_DEFAULT);
+            showControls();
+        } catch (ChannelException e)
+        {
+            e.printStackTrace();
+        }
+	}
+
+	public void performApply()
+	{
+		try
+        {
+            storeControls();
+            model.controlClicked(SERVER_APPLY);
+        } catch (ChannelException e)
+        {
+            e.printStackTrace();
+        }
+	}
+	
+	private void showControls()
+	{
+		deploymentTimeout.setText(model.getValue(SERVER_DEPLOY));
+		language.setText(model.getValue(SERVER_LANG));
+		rootBlock.setText(model.getValue(SERVER_ROOT_BLOCK));
+		rootFacility.setText(model.getValue(SERVER_ROOT_FACILITY));
+		serverLib.setText(model.getValue(SERVER_STARTUP_JAR));
+	}
+	
+	private void storeControls()
+	{
+		model.putValue(SERVER_DEPLOY, deploymentTimeout.getText());
+		model.putValue(SERVER_LANG, language.getText());
+		model.putValue(SERVER_ROOT_BLOCK, rootBlock.getText());
+		model.putValue(SERVER_ROOT_FACILITY, rootFacility.getText());
+		model.putValue(SERVER_STARTUP_JAR, serverLib.getText());
+	}
+	
+	public Control createControls(Composite parent) {
+		shell = parent.getShell();
+		
+		Composite contents = new Composite(parent, SWT.NONE);
+		final GridLayout gridLayout = new GridLayout();
+		gridLayout.numColumns = 3;
+		contents.setLayout(gridLayout);
+		contents.setLayoutData(new GridData(GridData.FILL_BOTH));
+		{
+			final Label label = new Label(contents, SWT.NONE);
+			label.setText("Server &Lib (*.jar):");
+		}
+		{
+			serverLib = new Text(contents, SWT.BORDER);
+			serverLib.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+		}
+		{
+			final Button button = new Button(contents, SWT.NONE);
+			button.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					serverLib.setText(CommonDialogs.getFilePath(shell));
+				}
+			});
+			button.setText("...");
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+			label.setText("Root &Facility:");
+		}
+		{
+			rootFacility = new Text(contents, SWT.BORDER);
+			rootFacility.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
+		}
+		{
+			final Button button = new Button(contents, SWT.NONE);
+			button.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) {
+					rootFacility.setText(CommonDialogs.getFilePath(shell));
+				}
+			});
+			button.setText("...");
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+			label.setText("Root &Block:");
+		}
+		{
+			rootBlock = new Text(contents, SWT.BORDER);
+			rootBlock.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
+		}
+		{
+			final Button button = new Button(contents, SWT.NONE);
+			button.addSelectionListener(new SelectionAdapter() {
+				public void widgetSelected(SelectionEvent e) 
+				{
+					rootBlock.setText(CommonDialogs.getFilePath(shell));
+				}
+			});
+			button.setText("...");
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+			label.setText("Language:");
+		}
+		{
+			language = new Text(contents, SWT.BORDER);
+			final GridData gridData = new GridData();
+			gridData.horizontalSpan = 2;
+			gridData.widthHint = 150;
+			language.setLayoutData(gridData);
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+			label.setText("Deployment Timeout:");
+		}
+		{
+			deploymentTimeout = new Text(contents, SWT.BORDER);
+			final GridData gridData = new GridData();
+			gridData.horizontalSpan = 2;
+			gridData.widthHint = 150;			
+			deploymentTimeout.setLayoutData(gridData);
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+		}
+		{
+			final Button button = new Button(contents, SWT.CHECK);
+			final GridData gridData = new GridData();
+			gridData.horizontalSpan = 2;
+			button.setLayoutData(gridData);
+			button.setText("Show debug messages");
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+		}
+		{
+			final Button button = new Button(contents, SWT.CHECK);
+			final GridData gridData = new GridData();
+			gridData.horizontalSpan = 2;
+			button.setLayoutData(gridData);
+			button.setText("Show deployment parameters");
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+		}
+		{
+			final Button button = new Button(contents, SWT.CHECK);
+			final GridData gridData = new GridData();
+			gridData.horizontalSpan = 2;
+			button.setLayoutData(gridData);
+			button.setText("Start in server mode");
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+		}
+		{
+			final Button button = new Button(contents, SWT.CHECK);
+			final GridData gridData = new GridData();
+			gridData.horizontalSpan = 2;
+			button.setLayoutData(gridData);
+			button.setText("Show assambly model");
+		}
+		{
+			final Label label = new Label(contents, SWT.NONE);
+		}
+		{
+			final Button button = new Button(contents, SWT.CHECK);
+			final GridData gridData = new GridData();
+			gridData.horizontalSpan = 2;
+			button.setLayoutData(gridData);
+			button.setText("Enable code security:");
+		}
+
+		return contents;
+	}
+
+}
\ No newline at end of file

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/preferences/MainPreferencePage.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/preferences/MainPreferencePage.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,59 @@
+package org.apache.metro.studio.eclipse.ui.preferences;
+
+import org.apache.metro.studio.eclipse.ui.MetroStudioUI;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+/**
+ * This class represents a preference page that
+ * is contributed to the Preferences dialog. By 
+ * subclassing <samp>FieldEditorPreferencePage</samp>, we
+ * can use the field support built into JFace that allows
+ * us to create a page that is small and knows how to 
+ * save, restore and apply itself.
+ * <p>
+ * This page is used to modify preferences only. They
+ * are stored in the preference store that belongs to
+ * the main plug-in class. That way, preferences can
+ * be accessed directly via the preference store.
+ */
+
+
+public class MainPreferencePage
+	extends PreferencePage
+	implements IWorkbenchPreferencePage {
+
+	public MainPreferencePage() {
+		super();
+		setPreferenceStore(MetroStudioUI.getDefault().getPreferenceStore());
+		setDescription("A demonstration of a preference page implementation");
+		initializeDefaults();
+	}
+/**
+ * Sets the default values of the preferences.
+ */
+	private void initializeDefaults() {
+		IPreferenceStore store = getPreferenceStore();
+		// store.setDefault(ILaunchConfigConstants.MERLIN_DIR, "test");
+	}
+
+	protected Control createContents(Composite parent)
+	{
+		Composite composite = new Composite(parent, SWT.NONE);
+		FillLayout layout = new FillLayout();
+		layout.marginHeight = 20;
+		composite.setLayout(layout);
+
+		// new DirectorySettingsPanel().createControls(composite);
+		return composite;
+	}
+	
+	public void init(IWorkbench workbench) {
+	}
+}
\ No newline at end of file

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/preferences/RepositoryPreferencePage.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/preferences/RepositoryPreferencePage.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,71 @@
+package org.apache.metro.studio.eclipse.ui.preferences;
+
+import org.apache.metro.studio.eclipse.ui.MetroStudioUI;
+import org.apache.metro.studio.eclipse.ui.common.ModelObject;
+import org.apache.metro.studio.eclipse.ui.panels.RepositorySettingsPanel;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+/**
+ * This class represents a preference page that is contributed to the
+ * Preferences dialog. By subclassing <samp>FieldEditorPreferencePage </samp>,
+ * we can use the field support built into JFace that allows us to create a page
+ * that is small and knows how to save, restore and apply itself.
+ * <p>
+ * This page is used to modify preferences only. They are stored in the
+ * preference store that belongs to the main plug-in class. That way,
+ * preferences can be accessed directly via the preference store.
+ */
+public class RepositoryPreferencePage extends PreferencePage
+		implements
+			IWorkbenchPreferencePage {
+	
+	RepositorySettingsPanel panel;
+	
+	public RepositoryPreferencePage() {
+		super();
+		setPreferenceStore(MetroStudioUI.getDefault().getPreferenceStore());
+		setDescription("A demonstration of a preference page implementation");
+	}
+
+	
+	protected Control createContents(Composite parent) {
+		Composite composite = new Composite(parent, SWT.NONE);
+		FillLayout layout = new FillLayout();
+		composite.setLayout(layout);
+
+		panel = new RepositorySettingsPanel();
+
+		panel.createControls(composite);
+		panel.initializeControls(new ModelObject(this));
+		return composite;
+	}
+	
+	public void init(IWorkbench workbench) {
+	}
+	/**
+	 * @see org.eclipse.jface.preference.PreferencePage#performApply()
+	 */
+	protected void performApply() {
+		panel.performApply();
+		super.performApply();
+	}
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
+	 */
+	protected void performDefaults() {
+		panel.performDefaults();
+		super.performDefaults();
+	}
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.preference.IPreferencePage#performOk()
+	 */
+	public boolean performOk() {
+		panel.performApply();
+		return super.performOk();
+	}
+}
\ No newline at end of file

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/preferences/ServerPreferencePage.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/preferences/ServerPreferencePage.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,72 @@
+package org.apache.metro.studio.eclipse.ui.preferences;
+
+import org.apache.metro.studio.eclipse.ui.MetroStudioUI;
+import org.apache.metro.studio.eclipse.ui.common.ModelObject;
+import org.apache.metro.studio.eclipse.ui.panels.ServerSettingsPanel;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+/**
+ * This class represents a preference page that is contributed to the
+ * Preferences dialog. By subclassing <samp>FieldEditorPreferencePage </samp>,
+ * we can use the field support built into JFace that allows us to create a page
+ * that is small and knows how to save, restore and apply itself.
+ * <p>
+ * This page is used to modify preferences only. They are stored in the
+ * preference store that belongs to the main plug-in class. That way,
+ * preferences can be accessed directly via the preference store.
+ */
+public class ServerPreferencePage extends PreferencePage
+		implements
+			IWorkbenchPreferencePage {
+	
+	ServerSettingsPanel panel;
+	
+	public ServerPreferencePage() {
+		super();
+		setPreferenceStore(MetroStudioUI.getDefault().getPreferenceStore());
+		setDescription("A demonstration of a preference page implementation");
+	}
+	
+	/**
+	 * Create all controls.
+	 * This is extracted to a Panel class so that the layout can be 
+	 * reused in Property- or Wizard- classes
+	 */
+	protected Control createContents(Composite parent) {
+		Composite composite = new Composite(parent, SWT.NONE);
+		FillLayout layout = new FillLayout();
+		composite.setLayout(layout);
+
+		panel = new ServerSettingsPanel();
+		panel.createControls(composite);
+		panel.initializeControls(new ModelObject(this));
+		return composite;
+	}
+	/**
+	 * Apply button pressed
+	 */
+	protected void performApply() {
+		panel.performApply();
+	}
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.preference.PreferencePage#performDefaults()
+	 */
+	protected void performDefaults() {
+		panel.performDefaults();
+
+	}
+	/* (non-Javadoc)
+	 * @see org.eclipse.jface.preference.IPreferencePage#performOk()
+	 */
+	public boolean performOk() {
+		panel.performApply();
+		return super.performOk();
+	}
+	public void init(IWorkbench workbench) {
+	}
+}
\ No newline at end of file

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/properties/SamplePropertyPage.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/properties/SamplePropertyPage.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,127 @@
+package org.apache.metro.studio.eclipse.ui.properties;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.dialogs.PropertyPage;
+
+public class SamplePropertyPage extends PropertyPage {
+
+	private static final String PATH_TITLE = "Path:";
+	private static final String OWNER_TITLE = "&Owner:";
+	private static final String OWNER_PROPERTY = "OWNER";
+	private static final String DEFAULT_OWNER = "John Doe";
+
+	private static final int TEXT_FIELD_WIDTH = 50;
+
+	private Text ownerText;
+
+	/**
+	 * Constructor for SamplePropertyPage.
+	 */
+	public SamplePropertyPage() {
+		super();
+	}
+
+	private void addFirstSection(Composite parent) {
+		Composite composite = createDefaultComposite(parent);
+
+		//Label for path field
+		Label pathLabel = new Label(composite, SWT.NONE);
+		pathLabel.setText(PATH_TITLE);
+
+		// Path text field
+		Text pathValueText = new Text(composite, SWT.WRAP | SWT.READ_ONLY);
+		pathValueText.setText(((IResource) getElement()).getFullPath().toString());
+	}
+
+	private void addSeparator(Composite parent) {
+		Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL);
+		GridData gridData = new GridData();
+		gridData.horizontalAlignment = GridData.FILL;
+		gridData.grabExcessHorizontalSpace = true;
+		separator.setLayoutData(gridData);
+	}
+
+	private void addSecondSection(Composite parent) {
+		Composite composite = createDefaultComposite(parent);
+
+		// Label for owner field
+		Label ownerLabel = new Label(composite, SWT.NONE);
+		ownerLabel.setText(OWNER_TITLE);
+
+		// Owner text field
+		ownerText = new Text(composite, SWT.SINGLE | SWT.BORDER);
+		GridData gd = new GridData();
+		gd.widthHint = convertWidthInCharsToPixels(TEXT_FIELD_WIDTH);
+		ownerText.setLayoutData(gd);
+
+		// Populate owner text field
+		try {
+			String owner =
+				((IResource) getElement()).getPersistentProperty(
+					new QualifiedName("", OWNER_PROPERTY));
+			ownerText.setText((owner != null) ? owner : DEFAULT_OWNER);
+		} catch (CoreException e) {
+			ownerText.setText(DEFAULT_OWNER);
+		}
+	}
+
+	/**
+	 * @see PreferencePage#createContents(Composite)
+	 */
+	protected Control createContents(Composite parent) {
+		Composite composite = new Composite(parent, SWT.NONE);
+		FillLayout layout = new FillLayout();
+		layout.marginHeight = 20;
+		composite.setLayout(layout);
+		/*
+		addFirstSection(composite);
+		addSeparator(composite);
+		addSecondSection(composite);
+		*/
+		// new DirectorySettingsPanel().createControls(composite);
+		return composite;
+	}
+
+	private Composite createDefaultComposite(Composite parent) {
+		Composite composite = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout();
+		layout.numColumns = 2;
+		composite.setLayout(layout);
+
+		GridData data = new GridData();
+		data.verticalAlignment = GridData.FILL;
+		data.horizontalAlignment = GridData.FILL;
+		composite.setLayoutData(data);
+
+		return composite;
+	}
+
+	protected void performDefaults() {
+		// Populate the owner text field with the default value
+		ownerText.setText(DEFAULT_OWNER);
+	}
+	
+	public boolean performOk() {
+		// store the value in the owner text field
+		try {
+			((IResource) getElement()).setPersistentProperty(
+				new QualifiedName("", OWNER_PROPERTY),
+				ownerText.getText());
+		} catch (CoreException e) {
+			return false;
+		}
+		return true;
+	}
+
+}
\ No newline at end of file

Modified: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/tools/AvalonProposals.java
==============================================================================
--- avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/avalon/ide/eclipse/merlin/ui/tools/AvalonProposals.java	(original)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/tools/AvalonProposals.java	Tue Aug 31 21:01:03 2004
@@ -15,7 +15,7 @@
    limitations under the License. 
    
  */
-package org.apache.avalon.ide.eclipse.merlin.ui.tools;
+package org.apache.metro.studio.eclipse.ui.tools;
 
 import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
 import org.eclipse.jface.text.BadLocationException;

Modified: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/tools/ExampleBuilder.java
==============================================================================
--- avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/avalon/ide/eclipse/merlin/ui/tools/ExampleBuilder.java	(original)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/tools/ExampleBuilder.java	Tue Aug 31 21:01:03 2004
@@ -26,7 +26,7 @@
 
 
  */
-package org.apache.avalon.ide.eclipse.merlin.ui.tools;
+package org.apache.metro.studio.eclipse.ui.tools;
 
 import java.util.Map;
 

Modified: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/tools/ImageViewerEditor.java
==============================================================================
--- avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/avalon/ide/eclipse/merlin/ui/tools/ImageViewerEditor.java	(original)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/tools/ImageViewerEditor.java	Tue Aug 31 21:01:03 2004
@@ -16,7 +16,7 @@
    
  */
 
-package org.apache.avalon.ide.eclipse.merlin.ui.tools;
+package org.apache.metro.studio.eclipse.ui.tools;
 
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.swt.SWT;
@@ -38,6 +38,7 @@
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.part.EditorPart;
 import org.eclipse.ui.part.FileEditorInput;
+
 public class ImageViewerEditor extends EditorPart
 {
 

Modified: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/tools/JavadocProcessor.java
==============================================================================
--- avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/avalon/ide/eclipse/merlin/ui/tools/JavadocProcessor.java	(original)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/tools/JavadocProcessor.java	Tue Aug 31 21:01:03 2004
@@ -15,14 +15,14 @@
    limitations under the License. 
    
  */
-package org.apache.avalon.ide.eclipse.merlin.ui.tools;
+package org.apache.metro.studio.eclipse.ui.tools;
 
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.List;
 import java.util.ResourceBundle;
 
-import org.apache.avalon.ide.eclipse.merlin.ui.MerlinDeveloperUI;
+import org.apache.metro.studio.eclipse.ui.MetroStudioUI;
 import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal;
 import org.eclipse.jdt.ui.text.java.IJavadocCompletionProcessor;
@@ -56,7 +56,7 @@
         // TODO Auto-generated method stub
         List props = new ArrayList();
 
-        ResourceBundle bundle = MerlinDeveloperUI.getDefault().getResourceBundle();
+        ResourceBundle bundle = MetroStudioUI.getDefault().getResourceBundle();
         Enumeration enum = bundle.getKeys();
         while (enum.hasMoreElements())
         {
@@ -65,8 +65,8 @@
             {
                 AvalonProposals prop = new AvalonProposals(offset, length);
                 prop.setKey("@" + key.substring(8,key.length()));
-                prop.setDescription(MerlinDeveloperUI.getResourceString(key));
-                prop.setTag(MerlinDeveloperUI.getResourceString(key + ".tag"));
+                prop.setDescription(MetroStudioUI.getResourceString(key));
+                prop.setTag(MetroStudioUI.getResourceString(key + ".tag"));
                 props.add(prop);
             }
         }

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/wizards/NewMetroProjectSelectionPage.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/wizards/NewMetroProjectSelectionPage.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,275 @@
+/*
+   
+      Copyright 2004. The Apache Software Foundation.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License. 
+   
+ */
+package org.apache.metro.studio.eclipse.ui.wizards;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.metro.facility.presentationservice.api.IModelChannel;
+import org.apache.metro.facility.presentationservice.impl.ChannelException;
+import org.apache.metro.studio.eclipse.ui.wizards.WizardUtil.SelectionPageCellModifier;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.CheckboxCellEditor;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.pde.internal.ui.elements.ListContentProvider;
+import org.eclipse.pde.internal.ui.parts.FormBrowser;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+
+
+/**
+ * @author <a href="mailto:[email protected]">Avalon Development Team</a> 
+ */
+public class NewMetroProjectSelectionPage extends WizardPage implements ISelectionChangedListener
+{
+    public static final String SELECTION_PANEL = "new.selection.panel";
+    public static final String SELECTION_FINISH = "new.selection.finish";
+    public static final String SELECTION_CONTROL = "new.selection.control";
+    public static final String SELECTION_CONTROL_SELECTED = "new.selection.control.selected";
+    public static final String SELECTION_CONTROL_LIST = "new.selection.control.list";
+    
+    private WizardSelectedAction doubleClickAction = new WizardSelectedAction();
+    private FormBrowser text;
+    private TableViewer projectTabel;
+    private List projectModels;
+    private String currentSelectedWizard = null;
+    private IModelChannel channel;
+
+    private class WizardSelectedAction extends Action
+    {
+        public WizardSelectedAction()
+        {
+            super("wizardSelection");
+        }
+    }
+
+    public NewMetroProjectSelectionPage(String pageName, IModelChannel channel)
+    {
+        super(pageName);
+        this.channel = channel;
+    }
+
+    /**
+	 * Main method to create all controls of this page. This method is called
+	 * by the wizard framework.
+	 * 
+	 */
+    public void createControl(Composite parent)
+    {
+        Composite composite = new Composite(parent, SWT.NULL);
+        composite.setLayout(new GridLayout());
+        composite.setLayoutData(new GridData(GridData.FILL_BOTH));
+        
+        createContainerGroup(composite);
+        setControl(composite);
+
+
+    }
+
+    /**
+	 * create all controls.
+	 * 
+	 */
+    protected void createContainerGroup(Composite parent)
+    {
+        Composite area = new Composite(parent, SWT.NULL);
+        final GridLayout gridLayout = new GridLayout();
+        gridLayout.makeColumnsEqualWidth = true;
+        gridLayout.numColumns = 2;
+        area.setLayout(gridLayout);
+        area.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+        {
+            /**
+             * Titel for all controls
+             */
+            final Label label = new Label(area, SWT.NONE);
+            final GridData gridData = new GridData();
+            gridData.horizontalSpan = 2;
+            label.setLayoutData(gridData);
+            label.setText("sample blocks");
+        }
+        {
+            /**
+             * Tabel for Project Types
+             */
+            Table table = createTable(area);
+            createTableView(table);
+           
+            try
+            {
+                channel.windowCreated(SELECTION_PANEL);
+                String[] value = channel.getValueArray(SELECTION_CONTROL_LIST);
+                projectTabel.add(value);
+                super.setPageComplete(true);
+                
+            } catch (ChannelException e)
+            {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+            
+        }
+        
+        {
+            /**
+             * HTML Text Editor foe showing the project description
+             */
+            text = new FormBrowser(SWT.BORDER | SWT.V_SCROLL);
+            text.createControl(area);
+            final GridData gridData = new GridData(GridData.FILL_BOTH);
+            Control c = text.getControl();
+            c.setLayoutData(gridData);
+        }
+
+    }
+
+    /**
+     * @param table
+     */
+    private void createTableView(Table table)
+    {
+        projectTabel = new TableViewer(table);
+        projectTabel.setColumnProperties(new String []{"", "", ""});
+        projectTabel.setContentProvider(new ListContentProvider());
+        projectTabel.setLabelProvider(WizardUtil.TABLE_LABEL_PROVIDER);
+        
+        // Set the cell modifier for the viewer
+        projectTabel.setCellModifier(new SelectionPageCellModifier(this));
+        // Create the cell editors
+        CellEditor[] editors = new CellEditor[3];
+        // Column 1 : Completed (Checkbox)
+        editors[0] = new CheckboxCellEditor(table);
+        // Assign the cell editors to the viewer 
+        projectTabel.setCellEditors(editors);
+        projectTabel.addDoubleClickListener(new IDoubleClickListener()
+                {
+                   public void doubleClick(DoubleClickEvent event)
+                   {
+                       doubleClickAction.run();
+                   }
+               });
+        projectTabel.addSelectionChangedListener(this);
+
+        // list view pane. Add a border to the pane.
+        projectTabel.getControl().setLayoutData(new GridData(GridData.FILL_BOTH));
+    }
+
+    public TableViewer getProjectTable(){
+        return projectTabel;
+    }
+    /**
+     * Create the Table Control, which is part of the TableViewer
+     * @param pParent
+     * @param pStyle
+     * @return
+     */
+    private Table createTable(Composite parent)
+    {
+        int style = SWT.SINGLE | SWT.BORDER |  
+        SWT.FULL_SELECTION | SWT.HIDE_SELECTION;
+        
+        Table table = new Table(parent, style);
+        table.setLayoutData(new GridData(GridData.FILL_VERTICAL));
+
+        TableColumn column = new TableColumn(table, SWT.NONE, 0);
+        column.setWidth(22);
+        column = new TableColumn(table, SWT.NONE, 1);
+        column.setWidth(20);
+        column = new TableColumn(table, SWT.NONE, 2);
+        column.setWidth(150);
+        TableLayout layout = new TableLayout();
+        //layout.addColumnData(new ColumnWeightData(100));
+        table.setLayout(layout);
+        return table;
+    }
+
+    public void selectionChanged(SelectionChangedEvent event)
+    {
+        
+        setErrorMessage(null);
+        IStructuredSelection selection = (IStructuredSelection) event.getSelection();
+        Iterator iter = selection.iterator();
+
+        if (iter.hasNext())
+            currentSelectedWizard = (String) iter.next();
+
+        BusyIndicator.showWhile(projectTabel.getControl().getDisplay(), new Runnable()
+        {
+            public void run()
+            {
+                try
+                {
+                    channel.putValue(SELECTION_CONTROL_SELECTED, currentSelectedWizard);
+                    channel.controlClicked(SELECTION_CONTROL);
+                    // get the text and display it
+                    text.setText(channel.getValue("resource.help"));
+                    
+                } catch (ChannelException e)
+                {
+                    e.printStackTrace();
+                }
+            }
+        });
+
+
+    }
+
+    /**
+     * @return
+     */
+    public String getSelectedProjectTemplate()
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    /**
+     * @param pTask
+     */
+    /*
+    public void updateTable(ProjectModel pTask)
+    {
+        Iterator it = projectModels.iterator();
+        while(it.hasNext()){
+            ProjectModel model = (ProjectModel)it.next();
+            if(model.isSelected() && !(model.equals(pTask))){
+                    model.setSelected(false);
+                    projectTabel.update(model, new String[]{"",""});
+                }
+        }
+        
+        projectTabel.update(pTask, new String[]{"",""});
+    }
+    */
+}
\ No newline at end of file

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/wizards/NewMetroProjectWizard.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/wizards/NewMetroProjectWizard.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,121 @@
+/*
+   
+      Copyright 2004. The Apache Software Foundation.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License. 
+   
+ */
+package org.apache.metro.studio.eclipse.ui.wizards;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.apache.metro.facility.presentationservice.api.IModelChannel;
+import org.apache.metro.facility.presentationservice.impl.ModelChannel;
+import org.apache.metro.studio.eclipse.ui.MetroStudioUI;
+import org.apache.metro.studio.eclipse.ui.controller.CreateBlockProjectOperation;
+import org.apache.metro.studio.eclipse.ui.controller.NewMetroProjectWizardController;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation;
+import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
+
+/**
+ * @author <a href="mailto:[email protected]">Avalon Development Team</a>*
+ */
+public class NewMetroProjectWizard extends Wizard implements INewWizard
+{
+    
+    private WizardNewProjectCreationPage projectPage;
+    private NewMetroProjectSelectionPage selectionPage;
+    
+    public static final String NEW_PROJECT_NAME = "new.project.name";
+    public static final String NEW_PROJECT_FINISH = "new.project.finish";
+    
+    private IModelChannel channel;
+
+    public boolean canFinish()
+    {
+        IWizardPage page = getContainer().getCurrentPage();
+        if (page == getProjectPage())
+            return false;
+        if (page == getSelectionPage())
+            return true;
+        return false;
+    }
+
+    public boolean performFinish()
+    {
+        try
+        {
+                channel.putValue(NEW_PROJECT_NAME, getProjectPage().getProjectName());
+                // run project creation in background
+                CreateBlockProjectOperation operation =
+                    new CreateBlockProjectOperation(channel);
+                IRunnableWithProgress op = new WorkspaceModifyDelegatingOperation(operation);
+                    getContainer().run(false, true, op);
+        } catch (InvocationTargetException e)
+        {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } catch (InterruptedException e)
+        {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        return true;
+    }
+
+    public void init(IWorkbench workbench, IStructuredSelection selection)
+    {
+        setWindowTitle(MetroStudioUI.getResourceString("new.blockDevelopment.window.title")); //$NON-NLS-1$
+        setDefaultPageImageDescriptor(MetroStudioUI.getImageDescriptor("icons/full/wizban/newjprj_wiz.gif")); //$NON-NLS-1$
+        
+    }
+
+    public void addPages()
+        {
+        	channel = new ModelChannel("newBlockWizard");
+            new NewMetroProjectWizardController().initialize();
+        	
+            projectPage = new WizardNewProjectCreationPage("mainPage"); //$NON-NLS-1$
+            projectPage.setTitle(MetroStudioUI.getResourceString("new.MerlinDevelopment.mainPage.title")); //$NON-NLS-1$
+            projectPage.setDescription(MetroStudioUI.getResourceString("new.MerlinDevelopment.mainPage.description")); //$NON-NLS-1$
+            addPage(projectPage);
+    
+            selectionPage = new NewMetroProjectSelectionPage("selectionPage", channel);
+            selectionPage.setTitle(MetroStudioUI.getResourceString("new.MerlinDevelopment.selectionPage.title")); //$NON-NLS-1$
+            selectionPage.setDescription(MetroStudioUI.getResourceString("new.MerlinDevelopment.mainPage.description")); //$NON-NLS-1$
+            addPage(selectionPage);
+        }
+
+    /**
+     * @return
+     */
+    public WizardNewProjectCreationPage getProjectPage()
+    {
+        return projectPage;
+    }
+
+    /**
+     * @return
+     */
+    public NewMetroProjectSelectionPage getSelectionPage()
+    {
+        return selectionPage;
+    }
+
+}
\ No newline at end of file

Added: avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/wizards/WizardUtil.java
==============================================================================
--- (empty file)
+++ avalon/trunk/central/laboratory/studio/eclipse/ui/src/org/apache/metro/studio/eclipse/ui/wizards/WizardUtil.java	Tue Aug 31 21:01:03 2004
@@ -0,0 +1,208 @@
+/*
+   
+      Copyright 2004. The Apache Software Foundation.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License. 
+   
+ */
+package org.apache.metro.studio.eclipse.ui.wizards;
+
+import org.apache.metro.studio.eclipse.ui.MetroStudioUI;
+import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.pde.internal.ui.elements.ElementLabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.TableItem;
+
+/**
+ * @author <a href="mailto:[email protected]">Avalon Development Team</a>*
+ */
+public class WizardUtil
+{
+
+    /**
+	 * This class is used as Labelprovider in SelectionPage
+	 *  
+	 */
+    static class TableLabelProvider extends ElementLabelProvider implements ITableLabelProvider
+    {
+
+        // Names of images used to represent checkboxes
+        public static final String CHECKED_IMAGE = "checked";
+        public static final String UNCHECKED_IMAGE = "unchecked";
+        public static final String MERLIN_IMAGE = "merlin";
+
+        // For the checkbox images
+        private static ImageRegistry imageRegistry = new ImageRegistry();
+
+        /**
+		 * Note: An image registry owns all of the image objects registered
+		 * with it, and automatically disposes of them the SWT Display is
+		 * disposed.
+		 */
+        static {
+            imageRegistry.put(
+                CHECKED_IMAGE,
+                MetroStudioUI.getImageDescriptor("icons/" + CHECKED_IMAGE + ".gif"));
+            imageRegistry.put(
+                UNCHECKED_IMAGE,
+                MetroStudioUI.getImageDescriptor("icons/" + UNCHECKED_IMAGE + ".gif"));
+            imageRegistry.put(
+                MERLIN_IMAGE,
+                MetroStudioUI.getImageDescriptor("icons/" + MERLIN_IMAGE + ".gif"));
+            
+        }
+
+        /**
+		 * Returns the image with the given key, or <code>null</code> if not
+		 * found.
+		 */
+        private Image getImage(boolean isSelected)
+        {
+            String key = isSelected ? CHECKED_IMAGE : UNCHECKED_IMAGE;
+            return imageRegistry.get(key);
+        }
+
+        /**
+		 * show the text label
+		 * 
+		 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object,
+		 *      int)
+		 */
+        public String getColumnText(Object o, int index)
+        {
+            String result = "";
+            switch (index)
+            {
+                case 0 : // COMPLETED_COLUMN
+                    result = "";
+                    break;
+                case 1 : // merlin icon
+                    result = "";
+                    break;
+                case 2 : // merlin icon
+                    result = (String)o;
+                    break;
+                default :
+            }
+            return result;
+        }
+        /**
+		 * show the icon
+		 * 
+		 * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object,
+		 *      int)
+		 */
+        public Image getColumnImage(Object element, int columnIndex)
+        {
+            Image result = null;
+            switch (columnIndex)
+            {
+                case 0 : // COMPLETED_COLUMN
+                    result = getImage(false);
+                    break;
+                case 1 : // merlin icon
+                    result = imageRegistry.get(MERLIN_IMAGE);
+                    break;
+                case 2:
+                    result = null;
+                    break;
+                default :
+            }
+            return result;
+        }
+
+    }
+    public static class SelectionPageCellModifier implements ICellModifier
+    {
+        private NewMetroProjectSelectionPage selectionPage;
+        private String[] columnNames;
+
+        /**
+		 * Constructor
+		 * 
+		 * @param selectionPage
+		 *            an instance of a selectionPage
+		 */
+        public SelectionPageCellModifier(NewMetroProjectSelectionPage tableViewer)
+        {
+            super();
+            this.selectionPage = tableViewer;
+        }
+
+        /**
+		 * @see org.eclipse.jface.viewers.ICellModifier#canModify(java.lang.Object,
+		 *      java.lang.String)
+		 */
+        public boolean canModify(Object element, String property)
+        {
+            return true;
+        }
+
+        /**
+		 * @see org.eclipse.jface.viewers.ICellModifier#getValue(java.lang.Object,
+		 *      java.lang.String)
+		 */
+        public Object getValue(Object element, String property)
+        {
+
+            // Find the index of the column
+            int columnIndex = 0;
+
+            Object result = null;
+            //&& ProjectModel task = (ProjectModel) element;
+
+            switch (columnIndex)
+            {
+                case 0 : // COMPLETED_COLUMN
+                    //&& result = new Boolean(task.isSelected());
+                    result = new Boolean(true);
+                    break;
+                default :
+                    result = "";
+            }
+            return result;
+        }
+
+        /**
+		 * @see org.eclipse.jface.viewers.ICellModifier#modify(java.lang.Object,
+		 *      java.lang.String, java.lang.Object)
+		 */
+        public void modify(Object element, String property, Object value)
+        {
+
+            // Find the index of the column
+            int columnIndex = 0;
+
+            TableItem item = (TableItem) element;
+            // ProjectModel task = (ProjectModel) item.getData();
+
+            switch (columnIndex)
+            {
+                case 0 : // COMPLETED_COLUMN
+                    // task.setSelected(((Boolean) value).booleanValue());
+                    break;
+                default :
+                    }
+            //selectionPage.updateTable(task);
+        }
+    }
+    public static final ILabelProvider TABLE_LABEL_PROVIDER = new TableLabelProvider();
+
+    public WizardUtil()
+    {
+        super();
+    }
+}