Fixed relevant FindBug messages
authorEugene Ostroukhov <eugeneo@symbian.org>
Thu, 02 Sep 2010 10:50:38 -0700
changeset 483 109da596fa9d
parent 482 2973198ae2a9
child 484 f5df819c1852
Fixed relevant FindBug messages
features/org.symbian.tools.wrttools.feature/feature.xml
plugins/org.symbian.tools.tmw.core/src/org/symbian/tools/tmw/core/internal/runtimes/RuntimeClasspathManager.java
plugins/org.symbian.tools.tmw.debug/plugin.xml
plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/PreferenceInitializer.java
plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/launch/WidgetTabSelector.java
plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/launch/WrtLabelProvider.java
plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/property/DebuggerPropertyTester.java
plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/property/PropertyTester.java
plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/ui/actions/WatchExpression.java
plugins/org.symbian.tools.tmw.previewer/src/org/symbian/tools/tmw/previewer/http/WebappManager.java
plugins/org.symbian.tools.tmw.previewer/src/org/symbian/tools/tmw/previewer/http/WorkspaceResourcesServlet.java
plugins/org.symbian.tools.tmw.previewer/src/org/symbian/tools/tmw/previewer/http/handlers/MasterScriptProvider.java
plugins/org.symbian.tools.tmw.previewer/src/org/symbian/tools/tmw/previewer/preview/AbstractPreviewPage.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeploymentTargetTypeDescriptor.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeploymentTargetWrapper.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/targets/FilesystemDeploymentTarget.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/importwizard/ApplicationImportWizard.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/importwizard/ApplicationImportWizardPage.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/project/CompoundInstaller.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/project/LazyInstaller.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/project/PrepareProjectJob.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/project/ProjectTemplateManagerImpl.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/FacetsSelectionPanel.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationTemplateWizardPage.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/WizardContext.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/ui/Images.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/ui/deployment/bluetooth/BluetoothTarget.java
plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/ui/deployment/bluetooth/BluetoothTargetType.java
plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/internal/validation/WrtApplicationValidator.java
plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/project/WRT11ApplicationLayout.java
plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/util/Util.java
plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/projectimport/ArchivedProject.java
plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/projectimport/WrtProjectLocationWizardPage.java
--- a/features/org.symbian.tools.wrttools.feature/feature.xml	Wed Sep 01 16:59:08 2010 -0700
+++ b/features/org.symbian.tools.wrttools.feature/feature.xml	Thu Sep 02 10:50:38 2010 -0700
@@ -34,20 +34,6 @@
          unpack="false"/>
 
    <plugin
-         id="org.symbian.tools.wrttools.debug.core"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.symbian.tools.wrttools.previewer"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
          id="org.symbian.tools.wrttools.product"
          download-size="0"
          install-size="0"
--- a/plugins/org.symbian.tools.tmw.core/src/org/symbian/tools/tmw/core/internal/runtimes/RuntimeClasspathManager.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.core/src/org/symbian/tools/tmw/core/internal/runtimes/RuntimeClasspathManager.java	Thu Sep 02 10:50:38 2010 -0700
@@ -46,9 +46,62 @@
 
 @SuppressWarnings("restriction")
 public class RuntimeClasspathManager {
+    private static final class Version implements IVersion {
+        private final String version;
+
+        public Version(String version) {
+            this.version = version;
+        }
+
+        public int compareTo(Object o) {
+            return version.compareTo(((IVersion) o).getVersionString());
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+            if (!(obj instanceof IVersion)) {
+                return false;
+            }
+            IVersion other = (IVersion) obj;
+            if (version == null) {
+                return false;
+            } else if (!version.equals(other.toString())) {
+                return false;
+            }
+            return true;
+        }
+
+        public String getVersionString() {
+            return version;
+        }
+
+        @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + ((version == null) ? 0 : version.hashCode());
+            return result;
+        }
+    }
+
+    private static final class VersionableObject extends Versionable<Version> {
+        @Override
+        public String createVersionNotFoundErrMsg(String verstr) {
+            return "Version not found";
+        }
+
+        @Override
+        public String getPluginId() {
+            return TMWCore.PLUGIN_ID;
+        }
+    }
+
     private static final class VersionedEntry<T> {
+        protected final T entry;
         protected final IVersionExpr versionExpression;
-        protected final T entry;
 
         public VersionedEntry(String versionExpression, T entry) {
             if (versionExpression == null) {
@@ -77,63 +130,27 @@
         }
     }
 
-    private static final class VersionableObject extends Versionable<Version> {
-        @Override
-        public String getPluginId() {
-            return TMWCore.PLUGIN_ID;
-        }
-
-        @Override
-        public String createVersionNotFoundErrMsg(String verstr) {
-            return "Version not found";
-        }
-    }
-
-    private static final class Version implements IVersion {
-        private final String version;
-
-        public Version(String version) {
-            this.version = version;
-        }
-
-        public int compareTo(Object o) {
-            return version.compareTo(((IVersion) o).getVersionString());
-        }
-
-        public String getVersionString() {
-            return version;
-        }
-    }
+    private final Map<String, Collection<VersionedEntry<Map<String, Collection<VersionedEntry<IFacetIncludePathProvider[]>>>>>> providers = new HashMap<String, Collection<VersionedEntry<Map<String, Collection<VersionedEntry<IFacetIncludePathProvider[]>>>>>>();
+    private boolean ready = false;
 
-    private final Map<String, Collection<VersionedEntry<Map<String, Collection<VersionedEntry<IFacetIncludePathProvider[]>>>>>> providers = new HashMap<String, Collection<VersionedEntry<Map<String, Collection<VersionedEntry<IFacetIncludePathProvider[]>>>>>>();
-    private final boolean ready = false;
-
-    public IIncludePathEntry[] getProjectClasspathEntries(IFacetedProject project) {
-        collectProviders();
-        final ITMWProject p = TMWCore.create(project.getProject());
-        if (p != null) {
-            final IMobileWebRuntime runtime = p.getTargetRuntime();
-            final Map<String, Collection<VersionedEntry<IFacetIncludePathProvider[]>>> facetToEntry;
-            if (runtime != null) {
-                facetToEntry = join(getMatchingEntries(runtime.getId(), runtime.getVersion(), providers));
-            } else {
-                facetToEntry = join(getMatchingEntries(null, null, providers));
+    public Map<String, Collection<VersionedEntry<IFacetIncludePathProvider[]>>> collectFaceletEntries(
+            IConfigurationElement[] elements) {
+        final Map<String, Collection<VersionedEntry<IFacetIncludePathProvider[]>>> faceletsToProviders = new HashMap<String, Collection<VersionedEntry<IFacetIncludePathProvider[]>>>();
+        for (IConfigurationElement element : elements) {
+            if ("facet-include-path".equals(element.getName())) {
+                final IFacetIncludePathProvider[] providers = collectProviders(element.getChildren());
+                final VersionedEntry<IFacetIncludePathProvider[]> versionedEntry = new VersionedEntry<IFacetIncludePathProvider[]>(
+                        element.getAttribute("version"), providers);
+                final String id = element.getAttribute("facelet-id");
+                Collection<VersionedEntry<IFacetIncludePathProvider[]>> provs = faceletsToProviders.get(id);
+                if (provs == null) {
+                    provs = new LinkedList<RuntimeClasspathManager.VersionedEntry<IFacetIncludePathProvider[]>>();
+                    faceletsToProviders.put(id, provs);
+                }
+                provs.add(versionedEntry);
             }
-            final Collection<IFacetIncludePathProvider[]> entries = getMatchingEntries(null, null, facetToEntry);
-            final Set<IProjectFacetVersion> facets = project.getProjectFacets();
-            for (IProjectFacetVersion facet : facets) {
-                entries.addAll(getMatchingEntries(facet.getProjectFacet().getId(), facet.getVersionString(),
-                        facetToEntry));
-            }
-            final Collection<IIncludePathEntry> pathEntries = new HashSet<IIncludePathEntry>();
-            for (IFacetIncludePathProvider[] providers : entries) {
-                for (IFacetIncludePathProvider provider : providers) {
-                    pathEntries.addAll(Arrays.asList(provider.getEntries(p)));
-                }
-            }
-            return pathEntries.toArray(new IIncludePathEntry[pathEntries.size()]);
         }
-        return new IIncludePathEntry[0];
+        return faceletsToProviders;
     }
 
     @SuppressWarnings({ "rawtypes", "unchecked" })
@@ -164,6 +181,7 @@
                     versions.add(ver);
                 }
             }
+            ready = true;
         }
     }
 
@@ -179,40 +197,6 @@
         return providers.toArray(new IFacetIncludePathProvider[providers.size()]);
     }
 
-    public Map<String, Collection<VersionedEntry<IFacetIncludePathProvider[]>>> collectFaceletEntries(
-            IConfigurationElement[] elements) {
-        final Map<String, Collection<VersionedEntry<IFacetIncludePathProvider[]>>> faceletsToProviders = new HashMap<String, Collection<VersionedEntry<IFacetIncludePathProvider[]>>>();
-        for (IConfigurationElement element : elements) {
-            if ("facet-include-path".equals(element.getName())) {
-                final IFacetIncludePathProvider[] providers = collectProviders(element.getChildren());
-                final VersionedEntry<IFacetIncludePathProvider[]> versionedEntry = new VersionedEntry<IFacetIncludePathProvider[]>(
-                        element.getAttribute("version"), providers);
-                final String id = element.getAttribute("facelet-id");
-                Collection<VersionedEntry<IFacetIncludePathProvider[]>> provs = faceletsToProviders.get(id);
-                if (provs == null) {
-                    provs = new LinkedList<RuntimeClasspathManager.VersionedEntry<IFacetIncludePathProvider[]>>();
-                    faceletsToProviders.put(id, provs);
-                }
-                provs.add(versionedEntry);
-            }
-        }
-        return faceletsToProviders;
-    }
-
-    private <T, V> Map<T, Collection<V>> join(Collection<Map<T, Collection<V>>> maps) {
-        final Map<T, Collection<V>> res = new HashMap<T, Collection<V>>();
-        for (Map<T, Collection<V>> map : maps) {
-            for (Map.Entry<T, Collection<V>> entry : map.entrySet()) {
-                if (res.containsKey(entry.getKey())) {
-                    res.get(entry.getKey()).addAll(entry.getValue());
-                } else {
-                    res.put(entry.getKey(), new LinkedList<V>(entry.getValue()));
-                }
-            }
-        }
-        return res;
-    }
-
     private <T> Collection<T> getMatchingEntries(String id, String version,
             Map<String, Collection<VersionedEntry<T>>> map) {
         final Collection<VersionedEntry<T>> entries = new LinkedList<VersionedEntry<T>>();
@@ -234,4 +218,46 @@
         }
         return res;
     }
+
+    public IIncludePathEntry[] getProjectClasspathEntries(IFacetedProject project) {
+        collectProviders();
+        final ITMWProject p = TMWCore.create(project.getProject());
+        if (p != null) {
+            final IMobileWebRuntime runtime = p.getTargetRuntime();
+            final Map<String, Collection<VersionedEntry<IFacetIncludePathProvider[]>>> facetToEntry;
+            if (runtime != null) {
+                facetToEntry = join(getMatchingEntries(runtime.getId(), runtime.getVersion(), providers));
+            } else {
+                facetToEntry = join(getMatchingEntries(null, null, providers));
+            }
+            final Collection<IFacetIncludePathProvider[]> entries = getMatchingEntries(null, null, facetToEntry);
+            final Set<IProjectFacetVersion> facets = project.getProjectFacets();
+            for (IProjectFacetVersion facet : facets) {
+                entries.addAll(getMatchingEntries(facet.getProjectFacet().getId(), facet.getVersionString(),
+                        facetToEntry));
+            }
+            final Collection<IIncludePathEntry> pathEntries = new HashSet<IIncludePathEntry>();
+            for (IFacetIncludePathProvider[] providers : entries) {
+                for (IFacetIncludePathProvider provider : providers) {
+                    pathEntries.addAll(Arrays.asList(provider.getEntries(p)));
+                }
+            }
+            return pathEntries.toArray(new IIncludePathEntry[pathEntries.size()]);
+        }
+        return new IIncludePathEntry[0];
+    }
+
+    private <T, V> Map<T, Collection<V>> join(Collection<Map<T, Collection<V>>> maps) {
+        final Map<T, Collection<V>> res = new HashMap<T, Collection<V>>();
+        for (Map<T, Collection<V>> map : maps) {
+            for (Map.Entry<T, Collection<V>> entry : map.entrySet()) {
+                if (res.containsKey(entry.getKey())) {
+                    res.get(entry.getKey()).addAll(entry.getValue());
+                } else {
+                    res.put(entry.getKey(), new LinkedList<V>(entry.getValue()));
+                }
+            }
+        }
+        return res;
+    }
 }
--- a/plugins/org.symbian.tools.tmw.debug/plugin.xml	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.debug/plugin.xml	Thu Sep 02 10:50:38 2010 -0700
@@ -91,7 +91,7 @@
    <extension
          point="org.eclipse.core.expressions.propertyTesters">
       <propertyTester
-            class="org.symbian.tools.tmw.debug.internal.property.PropertyTester"
+            class="org.symbian.tools.tmw.debug.internal.property.DebuggerPropertyTester"
             id="org.symbian.tools.wrttools.debug.projectTester"
             namespace="org.symbian"
             properties="isWrtProject"
--- a/plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/PreferenceInitializer.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/PreferenceInitializer.java	Thu Sep 02 10:50:38 2010 -0700
@@ -25,30 +25,32 @@
 import org.symbian.tools.tmw.core.utilities.CoreUtil;
 
 public class PreferenceInitializer extends AbstractPreferenceInitializer {
-	private final static String DEFAULT_CHROME_LOCATION = "Local Settings/Application Data/Google/Chrome/Application";
+    private static final String DEFAULT_CHROME_PATH_WINXP = "C:/Program Files/Google/Chrome/Application/";
+    private static final String DEFAULT_CHROME_PATH_LINUX = "/opt/google/chrome";
+    private static final String DEFAULT_CHROME_PATH_MAC = "/Applications";
+    private final static String DEFAULT_CHROME_PATH_VISTA = "Local Settings/Application Data/Google/Chrome/Application";
 
-	@Override
-	public void initializeDefaultPreferences() {
-		IPreferenceStore store = Activator.getDefault().getPreferenceStore();
-		File folder = getDefaultFolder();
-		if (ChromeDebugUtils.getExecutablePath(folder.getAbsolutePath()) != null) {
-			store.setDefault(IConstants.PREF_NAME_CHROME_LOCATION, folder
-					.getAbsolutePath());
-		}
-	}
+    @Override
+    public void initializeDefaultPreferences() {
+        IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+        File folder = getDefaultFolder();
+        if (ChromeDebugUtils.getExecutablePath(folder.getAbsolutePath()) != null) {
+            store.setDefault(IConstants.PREF_NAME_CHROME_LOCATION, folder.getAbsolutePath());
+        }
+    }
 
-	private File getDefaultFolder() {
-		if (CoreUtil.isMac()) {
-			return new File("/Applications");
-		} else if (CoreUtil.isLinux()) {
-			return new File("/opt/google/chrome");
-		}
-		String property = System.getProperty("user.home");
-		File folder = new File(property, DEFAULT_CHROME_LOCATION);
+    private File getDefaultFolder() {
+        if (CoreUtil.isMac()) {
+            return new File(DEFAULT_CHROME_PATH_MAC);
+        } else if (CoreUtil.isLinux()) {
+            return new File(DEFAULT_CHROME_PATH_LINUX);
+        }
+        String property = System.getProperty("user.home");
+        File folder = new File(property, DEFAULT_CHROME_PATH_VISTA);
         if (!folder.exists()) {
-            folder = new File("C:/Program Files/Google/Chrome/Application/");
+            folder = new File(DEFAULT_CHROME_PATH_WINXP);
         }
-		return folder;
-	}
+        return folder;
+    }
 
 }
--- a/plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/launch/WidgetTabSelector.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/launch/WidgetTabSelector.java	Thu Sep 02 10:50:38 2010 -0700
@@ -43,7 +43,7 @@
 			for (TabConnector tabConnector : tabs) {
 				String url = tabConnector.getUrl();
 				try {
-					if (uri.toURL().equals(new URL(url))) {
+                    if (uri.toURL().toExternalForm().equals(new URL(url).toExternalForm())) {
 						connector = tabConnector;
 						return tabConnector;
 					}
--- a/plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/launch/WrtLabelProvider.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/launch/WrtLabelProvider.java	Thu Sep 02 10:50:38 2010 -0700
@@ -28,8 +28,7 @@
             IFile resource = (IFile) element;
             int line = script.getStartLine() + stackFrame.getLineNumber();
             if (line != -1) {
-                String resourcePath = resource != null ? resource.getProjectRelativePath().toString() : script
-                        .getName();
+                final String resourcePath = resource.getProjectRelativePath().toString();
                 name = NLS.bind("{0} [{1}:{2}]", new Object[] { name, resourcePath, line });
             }
         } else if (element instanceof IFileStore) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/property/DebuggerPropertyTester.java	Thu Sep 02 10:50:38 2010 -0700
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ *******************************************************************************/
+package org.symbian.tools.tmw.debug.internal.property;
+
+import org.eclipse.core.resources.IResource;
+import org.symbian.tools.tmw.core.TMWCore;
+
+public class DebuggerPropertyTester extends org.eclipse.core.expressions.PropertyTester {
+
+    public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
+        if (property.equals("isWrtProject")) {
+            return TMWCore.create(((IResource) receiver).getProject()) != null;
+        }
+        return false;
+    }
+
+}
--- a/plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/internal/property/PropertyTester.java	Wed Sep 01 16:59:08 2010 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 Symbian Foundation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of the License "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Symbian Foundation - initial contribution.
- * Contributors:
- * Description:
- * Overview:
- * Details:
- * Platforms/Drives/Compatibility:
- * Assumptions/Requirement/Pre-requisites:
- * Failures and causes:
- *******************************************************************************/
-package org.symbian.tools.tmw.debug.internal.property;
-
-import org.eclipse.core.resources.IResource;
-import org.symbian.tools.tmw.core.TMWCore;
-
-public class PropertyTester extends org.eclipse.core.expressions.PropertyTester {
-
-    public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
-        if (property.equals("isWrtProject")) {
-            return TMWCore.create(((IResource) receiver).getProject()) != null;
-        }
-        return false;
-    }
-
-}
--- a/plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/ui/actions/WatchExpression.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.debug/src/org/symbian/tools/tmw/debug/ui/actions/WatchExpression.java	Thu Sep 02 10:50:38 2010 -0700
@@ -42,7 +42,7 @@
 
 @SuppressWarnings("restriction")
 public class WatchExpression extends ActionDelegate implements IEditorActionDelegate {
-    private final class FindNode extends ASTVisitor {
+    private static final class FindNode extends ASTVisitor {
         private final int offset;
         private final int length;
 
--- a/plugins/org.symbian.tools.tmw.previewer/src/org/symbian/tools/tmw/previewer/http/WebappManager.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.previewer/src/org/symbian/tools/tmw/previewer/http/WebappManager.java	Thu Sep 02 10:50:38 2010 -0700
@@ -53,7 +53,7 @@
     public static void start(String webappName) throws Exception {
 		Dictionary d = new Hashtable();
 		
-		d.put("http.port", new Integer(getPortParameter())); //$NON-NLS-1$
+        d.put("http.port", Integer.valueOf(getPortParameter())); //$NON-NLS-1$
 
 		// set the base URL
 		d.put("other.info", "org.symbian.wst.debugger"); //$NON-NLS-1$ //$NON-NLS-2$
--- a/plugins/org.symbian.tools.tmw.previewer/src/org/symbian/tools/tmw/previewer/http/WorkspaceResourcesServlet.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.previewer/src/org/symbian/tools/tmw/previewer/http/WorkspaceResourcesServlet.java	Thu Sep 02 10:50:38 2010 -0700
@@ -217,7 +217,7 @@
         return null;
     }
 
-    private final Providers providers = new Providers();
+    private transient final Providers providers = new Providers();
 
     private void copyData(InputStream contents, OutputStream ouput) throws IOException {
         byte[] buf = new byte[4048];
--- a/plugins/org.symbian.tools.tmw.previewer/src/org/symbian/tools/tmw/previewer/http/handlers/MasterScriptProvider.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.previewer/src/org/symbian/tools/tmw/previewer/http/handlers/MasterScriptProvider.java	Thu Sep 02 10:50:38 2010 -0700
@@ -44,16 +44,15 @@
     private static final String[] FILES_SERVICES_DATA = { "appManager_data.js", "calendar_data.js", "contact_data.js",
             "landmarks_data.js", "location_data.js", "logging_data.js", "mediaManagement_data.js", "messaging_data.js",
             "sensor_data.js", "sysInfo_data.js" };
-    private String WRT10;
-    private String WRT11_SERVICES;
+    private static String WRT10;
+    private static String WRT11_SERVICES;
 
     public String[] getPaths() {
         return new String[] { PATH_LOADER_JS, PATH_DEVICE_JS };
     }
 
     public InputStream getResourceStream(IProject project, IPath resource, Map<String, String[]> parameters,
-            String sessionId)
-            throws IOException, CoreException {
+            String sessionId) throws IOException, CoreException {
         synchronized (this) {
             if (WRT10 == null || PreviewerPlugin.DONT_CACHE_SCRIPT) {
                 loadCoreAPI();
@@ -67,16 +66,21 @@
         final IPath path = new Path(base).append(jsfile);
         InputStream stream = FileLocator.openStream(PreviewerPlugin.getDefault().getBundle(), path, false);
         if (stream != null) {
+            BufferedReader reader = null;
             try {
                 builder.append(String.format("// Start \"%s\"\n", path.toOSString()));
-                BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "utf8"));
+                reader = new BufferedReader(new InputStreamReader(stream, "utf8"));
                 String sz;
                 while ((sz = reader.readLine()) != null) {
                     builder.append(sz).append('\n');
                 }
                 builder.append(String.format("// End \"%s\"\n", path.toOSString()));
             } finally {
-                stream.close();
+                if (reader == null) {
+                    stream.close();
+                } else {
+                    reader.close();
+                }
             }
         } else {
             PreviewerPlugin.log("Missing JS file " + path.toOSString(), null);
@@ -113,8 +117,7 @@
     }
 
     public void post(IProject project, IPath resource, Map<String, String[]> parameterMap, JSONObject object,
-            String sessionId)
-            throws IOException, CoreException {
+            String sessionId) throws IOException, CoreException {
         // Nothing to do
     }
 
--- a/plugins/org.symbian.tools.tmw.previewer/src/org/symbian/tools/tmw/previewer/preview/AbstractPreviewPage.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.previewer/src/org/symbian/tools/tmw/previewer/preview/AbstractPreviewPage.java	Thu Sep 02 10:50:38 2010 -0700
@@ -48,7 +48,7 @@
         this.previewView = previewView;
     }
 
-    protected void toggleRefresh() {
+    protected synchronized void toggleRefresh() {
         toggleState = !toggleState;
         toggleRefresh.setChecked(toggleState);
         previewView.setProjectAutorefresh(project, toggleState);
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeploymentTargetTypeDescriptor.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeploymentTargetTypeDescriptor.java	Thu Sep 02 10:50:38 2010 -0700
@@ -32,7 +32,7 @@
 import org.symbian.tools.tmw.ui.deployment.IDeploymentTargetType;
 
 public final class DeploymentTargetTypeDescriptor implements IDeploymentTargetType {
-    public class NullProvider implements IDeploymentTargetType {
+    public static class NullProvider implements IDeploymentTargetType {
         public IDeploymentTarget[] getTargets(ITMWProject project) {
             return null;
         }
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeploymentTargetWrapper.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/DeploymentTargetWrapper.java	Thu Sep 02 10:50:38 2010 -0700
@@ -32,7 +32,7 @@
 import org.symbian.tools.tmw.ui.deployment.IDeploymentTarget;
 
 public class DeploymentTargetWrapper implements IDeploymentTarget {
-    public class WorkbenchAdapter2Wrapper implements IWorkbenchAdapter2 {
+    public static final class WorkbenchAdapter2Wrapper implements IWorkbenchAdapter2 {
         private final IWorkbenchAdapter2 adapter;
 
         public WorkbenchAdapter2Wrapper(IWorkbenchAdapter2 adapter) {
@@ -52,7 +52,7 @@
         }
     }
 
-    public class WorkbenchAdapterWrapper implements IWorkbenchAdapter {
+    public static final class WorkbenchAdapterWrapper implements IWorkbenchAdapter {
         private final IWorkbenchAdapter adapter;
 
         public WorkbenchAdapterWrapper(IWorkbenchAdapter adapter) {
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/targets/FilesystemDeploymentTarget.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/deployment/targets/FilesystemDeploymentTarget.java	Thu Sep 02 10:50:38 2010 -0700
@@ -65,7 +65,9 @@
             throw new CoreException(
                     new Status(IStatus.ERROR, TMWCoreUI.PLUGIN_ID, "Failed to copy application file", e));
         } finally {
-            file.delete();
+            if (!file.delete()) {
+                TMWCoreUI.log("Can't delete %s", file);
+            }
         }
         return Status.OK_STATUS;
     }
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/importwizard/ApplicationImportWizard.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/importwizard/ApplicationImportWizard.java	Thu Sep 02 10:50:38 2010 -0700
@@ -175,7 +175,7 @@
 
     public void init(IWorkbench workbench, IStructuredSelection selection) {
         file = null;
-        if (selection instanceof IStructuredSelection && !selection.isEmpty()) {
+        if (!selection.isEmpty()) {
             Object element = (selection).getFirstElement();
             if (element instanceof IAdaptable) {
                 IResource resource = (IResource) ((IAdaptable) element).getAdapter(IResource.class);
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/importwizard/ApplicationImportWizardPage.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/importwizard/ApplicationImportWizardPage.java	Thu Sep 02 10:50:38 2010 -0700
@@ -51,7 +51,7 @@
 
 @SuppressWarnings("restriction")
 public class ApplicationImportWizardPage extends WizardPage {
-    public class MapContentProvider implements IStructuredContentProvider {
+    private static final class MapContentProvider implements IStructuredContentProvider {
 
         public void dispose() {
             // Do nothing
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/project/CompoundInstaller.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/project/CompoundInstaller.java	Thu Sep 02 10:50:38 2010 -0700
@@ -37,7 +37,7 @@
 import org.symbian.tools.tmw.ui.project.ITemplateInstaller;
 
 public class CompoundInstaller implements ITemplateInstaller {
-    private final class InstallerFiles {
+    private static final class InstallerFiles {
         private final ITemplateInstaller installer;
         private final Collection<IPath> paths;
 
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/project/LazyInstaller.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/project/LazyInstaller.java	Thu Sep 02 10:50:38 2010 -0700
@@ -29,7 +29,7 @@
 import org.symbian.tools.tmw.ui.project.ITemplateInstaller;
 
 public final class LazyInstaller implements ITemplateInstaller {
-    private final class NullInstaller implements ITemplateInstaller {
+    private static final class NullInstaller implements ITemplateInstaller {
         public void cleanup() {
             // Do nothing
         }
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/project/PrepareProjectJob.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/project/PrepareProjectJob.java	Thu Sep 02 10:50:38 2010 -0700
@@ -40,7 +40,7 @@
     private final IRunnableWithProgress action;
 
     public PrepareProjectJob(IProject project, IRunnableWithProgress action) {
-        super(String.format("Preparing project", project.getName()));
+        super(String.format("Preparing project %s", project.getName()));
         this.project = project;
         this.action = action;
         setUser(false);
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/project/ProjectTemplateManagerImpl.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/project/ProjectTemplateManagerImpl.java	Thu Sep 02 10:50:38 2010 -0700
@@ -18,6 +18,7 @@
  */
 package org.symbian.tools.tmw.internal.ui.project;
 
+import java.io.Serializable;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
@@ -36,7 +37,9 @@
 import org.symbian.tools.tmw.ui.project.ITemplateInstaller;
 
 public class ProjectTemplateManagerImpl implements IProjectTemplateManager {
-    public class TemplateComparator implements Comparator<IProjectTemplate> {
+    private static final class TemplateComparator implements Comparator<IProjectTemplate>, Serializable {
+        private static final long serialVersionUID = -6418798170300850625L;
+
         public int compare(IProjectTemplate o1, IProjectTemplate o2) {
             if (o1 == o2) {
                 return 0;
@@ -52,6 +55,7 @@
             }
         }
     }
+
     private Map<IMobileWebRuntime, ITemplateInstaller> emptyProjects;
     private Map<IMobileWebRuntime, Map<String, String>> runtimeTemplateParameters;
     private Map<IMobileWebRuntime, IProjectTemplate[]> templates;
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/FacetsSelectionPanel.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/FacetsSelectionPanel.java	Thu Sep 02 10:50:38 2010 -0700
@@ -637,7 +637,7 @@
         }
     }
 
-    private final class FixedFacetToolTip extends ToolTip {
+    private static final class FixedFacetToolTip extends ToolTip {
         private static final int FAKE_EVENT_TYPE = -9999;
 
         private String message = ""; //$NON-NLS-1$
@@ -707,7 +707,7 @@
         }
     }
 
-    private final class ProblemsLabelProvider implements ITableLabelProvider {
+    private static final class ProblemsLabelProvider implements ITableLabelProvider {
         public String getColumnText(final Object element, final int column) {
             return ((IStatus) element).getMessage();
         }
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationTemplateWizardPage.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/NewApplicationTemplateWizardPage.java	Thu Sep 02 10:50:38 2010 -0700
@@ -29,7 +29,7 @@
 import org.symbian.tools.tmw.ui.project.IProjectTemplate;
 
 public class NewApplicationTemplateWizardPage extends WizardPage {
-    public class ProjectTemplateLabelProvider extends LabelProvider {
+    private static final class ProjectTemplateLabelProvider extends LabelProvider {
 
         @Override
         public Image getImage(Object element) {
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/WizardContext.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/internal/ui/wizard/WizardContext.java	Thu Sep 02 10:50:38 2010 -0700
@@ -240,7 +240,7 @@
         this.runtime = runtime;
         propertySupport.firePropertyChange(RUNTIME, prev, runtime);
         propertySupport.firePropertyChange(TEMPLATES, prevTemplates, getTemplates());
-        if (prevTemplate == null) {
+        if (template == null) {
             propertySupport.firePropertyChange(TEMPLATE, prevTemplate, getTemplate());
         }
     }
@@ -263,7 +263,7 @@
     public void setWidgetName(String widgetName) {
         String prevId = getWidgetId();
         String prev = getWidgetName();
-        if (widgetName == getProjectName()) {
+        if (widgetName == null || widgetName.equals(getProjectName())) {
             this.widgetName = null;
         } else {
             this.widgetName = widgetName;
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/ui/Images.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/ui/Images.java	Thu Sep 02 10:50:38 2010 -0700
@@ -23,9 +23,9 @@
 import org.eclipse.swt.graphics.Image;
 
 public final class Images {
-    private final String DISCOVER_ICON = "icons/full/obj16/discover.gif";
-    private final String EXCLUDED_ICON = "icons/full/obj16/excluded.gif";
-    private final String BLUETOOTH_ICON = "icons/full/obj16/bluetooth.gif";
+    private static final String DISCOVER_ICON = "icons/full/obj16/discover.gif";
+    private static final String EXCLUDED_ICON = "icons/full/obj16/excluded.gif";
+    private static final String BLUETOOTH_ICON = "icons/full/obj16/bluetooth.gif";
 
     private final ImageRegistry registry;
 
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/ui/deployment/bluetooth/BluetoothTarget.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/ui/deployment/bluetooth/BluetoothTarget.java	Thu Sep 02 10:50:38 2010 -0700
@@ -53,10 +53,12 @@
 import org.symbian.tools.tmw.core.TMWCore;
 import org.symbian.tools.tmw.core.projects.ITMWProject;
 import org.symbian.tools.tmw.core.runtimes.IPackager;
+import org.symbian.tools.tmw.ui.TMWCoreUI;
 import org.symbian.tools.tmw.ui.deployment.IDeploymentTarget;
 
 public class BluetoothTarget extends PlatformObject implements IDeploymentTarget {
     private static final UUID OBEX_OBJECT_PUSH = new UUID(0x1105);
+    public static final long BLUETOOTH_TIMEOUT = 5 * 60 * 1000; // 5 min
     private String serviceURL;
     private RemoteDevice device;
     protected String[] exceptionCodes = new String[] { "OBEX_HTTP_UNSUPPORTED_TYPE", "OBEX_HTTP_FORBIDDEN" };
@@ -84,7 +86,9 @@
         try {
             deployWidget(application, packager.getFileType(project), new SubProgressMonitor(monitor, 10));
         } finally {
-            application.delete();
+            if (!application.delete()) {
+                TMWCoreUI.log("Can't delete %s", application);
+            }
         }
         monitor.done();
         MultiStatus multiStatus = new MultiStatus(TMWCore.PLUGIN_ID, 0, message, null);
@@ -151,7 +155,7 @@
             hsOperation.setHeader(HeaderSet.TYPE, fileType);
             int size = (int) inputWidget.length();
             byte file[] = new byte[size];
-            hsOperation.setHeader(HeaderSet.LENGTH, new Long(file.length));
+            hsOperation.setHeader(HeaderSet.LENGTH, Long.valueOf(file.length));
 
             // Create PUT Operation
             putOperation = clientSession.put(hsOperation);
@@ -291,7 +295,7 @@
             synchronized (serviceSearchCompletedEvent) {
                 LocalDevice.getLocalDevice().getDiscoveryAgent()
                         .searchServices(attrIDs, searchUuidSet, device, listener);
-                serviceSearchCompletedEvent.wait();
+                serviceSearchCompletedEvent.wait(BLUETOOTH_TIMEOUT);
             }
 
         } catch (IOException e) {
--- a/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/ui/deployment/bluetooth/BluetoothTargetType.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.tmw.ui/src/org/symbian/tools/tmw/ui/deployment/bluetooth/BluetoothTargetType.java	Thu Sep 02 10:50:38 2010 -0700
@@ -19,7 +19,6 @@
 package org.symbian.tools.tmw.ui.deployment.bluetooth;
 
 import java.io.IOException;
-import java.io.PrintStream;
 import java.util.Collection;
 import java.util.Map;
 import java.util.TreeMap;
@@ -38,7 +37,6 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.ISchedulingRule;
 import org.symbian.tools.tmw.core.projects.ITMWProject;
-import org.symbian.tools.tmw.ui.ConsoleFactory;
 import org.symbian.tools.tmw.ui.TMWCoreUI;
 import org.symbian.tools.tmw.ui.deployment.IDeploymentTarget;
 import org.symbian.tools.tmw.ui.deployment.IDeploymentTargetType;
@@ -111,7 +109,6 @@
         }
     }
 
-    private static PrintStream savedSysOut;
     private boolean discovered = false;
     private TargetDiscoveryListener listener;
     private Map<String, BluetoothTarget> targets = new TreeMap<String, BluetoothTarget>();
@@ -139,7 +136,7 @@
             try {
                 started = LocalDevice.getLocalDevice().getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, listener);
                 if (started) {
-                    inquiryCompletedEvent.wait();
+                    inquiryCompletedEvent.wait(BluetoothTarget.BLUETOOTH_TIMEOUT);
                     discovered = true;
                 }
             } catch (BluetoothStateException e) {
@@ -151,18 +148,6 @@
         monitor.done();
     }
 
-    /** Toggle BlueCove logging
-     */
-    public void enableBlueCoveDiagnostics(boolean enable) {
-        System.setProperty("bluecove.debug", Boolean.valueOf(enable).toString());
-        BlueCoveImpl.instance().enableNativeDebug(enable);
-        if (enable) {
-            System.setOut(new PrintStream(ConsoleFactory.createStream()));
-        } else {
-            System.setOut(savedSysOut);
-        }
-    }
-
     public IDeploymentTarget findTarget(ITMWProject project, String id) {
         if (!isBloothToothConnected()) {
             return null;
--- a/plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/internal/validation/WrtApplicationValidator.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/internal/validation/WrtApplicationValidator.java	Thu Sep 02 10:50:38 2010 -0700
@@ -90,16 +90,16 @@
 		return result;
 	}
 
-    public enum plistElements {
+    private static enum PListElements {
         plist, array, data, date, dict, real, integer, string, FALSE, TRUE, key, xml
     };
 
     private void validateElement(IDOMElement element, ValidationResult result,
 			IResource resource) {
 		// showData("");
-        plistElements[] values = plistElements.values();
+        PListElements[] values = PListElements.values();
 		boolean isValidElement = false;
-        for (plistElements validElement : values) {
+        for (PListElements validElement : values) {
 			if (validElement.toString().equalsIgnoreCase(
 					element.getNodeName().trim())) {
 				isValidElement = true;
--- a/plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/project/WRT11ApplicationLayout.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/project/WRT11ApplicationLayout.java	Thu Sep 02 10:50:38 2010 -0700
@@ -93,7 +93,7 @@
 
     public IPath getResourcePath(IFile file) {
         try {
-            if (file != null && file.getProjectRelativePath().equals(CoreUtil.getIndexFile(file.getProject()))) {
+            if (file != null && file.equals(CoreUtil.getIndexFile(file.getProject()))) {
                 return new Path(INDEX);
             }
         } catch (CoreException e) {
--- a/plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/util/Util.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/util/Util.java	Thu Sep 02 10:50:38 2010 -0700
@@ -18,9 +18,6 @@
  */
 package org.symbian.tools.wrttools.util;
 
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 public class Util {
 
@@ -28,74 +25,6 @@
         return widgetName != null ? widgetName.replace(" ", "") : "";
     }
 
-    public static String removeNonAlphaNum(String projectName) {
-        return projectName != null ? projectName
-                .replaceAll("[^a-zA-Z0-9 ]", "") : null;
-    }
-
-    public static void logEvent(Logger log, Level level, Throwable throwable) {
-        if (level == Level.SEVERE) {
-            log.severe(throwable.getLocalizedMessage());
-            if (throwable.getCause() != null) {
-                log.severe(throwable.getCause().toString());
-            }
-            log.severe(throwable.getStackTrace().toString());
-        }
-        if (level == Level.WARNING) {
-            log.warning(throwable.getLocalizedMessage());
-            if (throwable.getCause() != null) {
-                log.warning(throwable.getCause().toString());
-            }
-            log.warning(throwable.getStackTrace().toString());
-        }
-        if (level == Level.INFO) {
-            log.info(throwable.getLocalizedMessage());
-            if (throwable.getCause() != null) {
-                log.info(throwable.getCause().toString());
-            }
-            log.info(throwable.getStackTrace().toString());
-        }
-
-    }
-
-    public static String replaceChar(String input, char asciiOutChar,
-            char asciiInChar) {
-        char x;
-        int ascii;
-        String outString = "";
-        int outCharAscii = (asciiOutChar > 127) ? '?'
-                : (char) (asciiOutChar & 0x7F);
-
-        for (int i = 0; i < input.length(); i++) {
-            x = input.charAt(i);
-            ascii = (x > 127) ? '?' : (char) (x & 0x7F);
-
-            if (ascii == outCharAscii) {
-                outString = outString + asciiInChar;
-            } else {
-                outString = outString + x;
-            }
-
-        }
-        return outString;
-    }
-
-    public static void showData(String s) {
-        System.out.println(s);
-    }
-
-    public static void showData(List<String> listString, String header) {
-
-        if (listString != null && listString.size() > 0) {
-            System.out.println("--------" + header + "------");
-            for (String s : listString) {
-                System.out.println(s);
-            }
-        } else {
-            System.out.println("--------Empty/Null " + header + "------");
-        }
-    }
-
     /* Validation tests for both Windows & Mac OS */
     private static String commonValidate(String argName) {
         if (argName.length() == 0) {
@@ -126,8 +55,7 @@
         }
         final char lastChar = widgetName.charAt(widgetName.length() - 1);
         // trailing or beginning space is not valid in filenames for Widget name
-        if ((Character.isWhitespace(widgetName.charAt(0)) || Character
-                .isWhitespace(lastChar))) {
+        if ((Character.isWhitespace(widgetName.charAt(0)) || Character.isWhitespace(lastChar))) {
             return ("Invalid Widget name. Beginning or trailing spaces are not allowed");
         }
 
@@ -168,19 +96,4 @@
 
         return null;
     }
-
-    public static String toProjectName(String widgetId) {
-        if (widgetId == null || widgetId.trim().length() == 0) {
-            return "";
-        }
-        StringBuilder builder = new StringBuilder();
-        for (char c : widgetId.trim().toCharArray()) {
-            if (Character.isJavaIdentifierPart(c)) {
-                builder.append(c);
-            } else {
-                builder.append("_");
-            }
-        }
-        return builder.toString();
-    }
 }
--- a/plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/projectimport/ArchivedProject.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/projectimport/ArchivedProject.java	Thu Sep 02 10:50:38 2010 -0700
@@ -24,19 +24,15 @@
 import java.io.InputStreamReader;
 import java.net.URI;
 import java.util.List;
-import java.util.zip.ZipEntry;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IProjectDescription;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.ui.dialogs.IOverwriteQuery;
 import org.eclipse.ui.internal.wizards.datatransfer.DataTransferMessages;
 import org.eclipse.ui.internal.wizards.datatransfer.ILeveledImportStructureProvider;
-import org.eclipse.ui.internal.wizards.datatransfer.TarEntry;
 import org.eclipse.ui.wizards.datatransfer.ImportOperation;
 import org.symbian.tools.wrttools.util.CoreUtil;
 import org.symbian.tools.wrttools.util.ProjectUtils;
@@ -102,15 +98,7 @@
                 }
             } else {
                 InputStream stream = provider.getContents(infoPlist);
-                if (stream == null) {
-                    if (dotProject instanceof ZipEntry) {
-                        IPath path = new Path(((ZipEntry) dotProject).getName());
-                        projectName = path.segment(path.segmentCount() - 2);
-                    } else if (dotProject instanceof TarEntry) {
-                        IPath path = new Path(((TarEntry) dotProject).getName());
-                        projectName = path.segment(path.segmentCount() - 2);
-                    }
-                } else {
+                if (stream != null) {
                     String manifest = CoreUtil.read(new BufferedReader(new InputStreamReader(stream)));
                     projectName = CoreUtil.getApplicationName(manifest);
                 }
--- a/plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/projectimport/WrtProjectLocationWizardPage.java	Wed Sep 01 16:59:08 2010 -0700
+++ b/plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/wizards/projectimport/WrtProjectLocationWizardPage.java	Thu Sep 02 10:50:38 2010 -0700
@@ -52,7 +52,6 @@
 import org.eclipse.jface.viewers.CheckboxTreeViewer;
 import org.eclipse.jface.viewers.ICheckStateListener;
 import org.eclipse.jface.viewers.IColorProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.viewers.Viewer;
@@ -74,12 +73,8 @@
 import org.eclipse.swt.widgets.FileDialog;
 import org.eclipse.swt.widgets.Label;
 import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.IWorkingSet;
-import org.eclipse.ui.IWorkingSetManager;
-import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.actions.WorkspaceModifyOperation;
 import org.eclipse.ui.dialogs.IOverwriteQuery;
-import org.eclipse.ui.dialogs.WorkingSetGroup;
 import org.eclipse.ui.internal.ide.IDEWorkbenchMessages;
 import org.eclipse.ui.internal.ide.StatusUtil;
 import org.eclipse.ui.internal.wizards.datatransfer.ArchiveFileManipulations;
@@ -96,223 +91,191 @@
 import org.symbian.tools.wrttools.util.ProjectUtils;
 
 @SuppressWarnings({ "restriction", "unchecked", "rawtypes" })
-public class WrtProjectLocationWizardPage extends WizardPage implements
-		IOverwriteQuery {
+public class WrtProjectLocationWizardPage extends WizardPage implements IOverwriteQuery {
 
-	/**
-	 * @since 3.5
-	 * 
-	 */
-	private final class ProjectLabelProvider extends LabelProvider implements
-			IColorProvider {
+    /**
+     * @since 3.5
+     * 
+     */
+    private final class ProjectLabelProvider extends LabelProvider implements IColorProvider {
 
-		public Color getBackground(Object element) {
-			return null;
-		}
+        public Color getBackground(Object element) {
+            return null;
+        }
 
-		public Color getForeground(Object element) {
-			ProjectRecord projectRecord = (ProjectRecord) element;
+        public Color getForeground(Object element) {
+            ProjectRecord projectRecord = (ProjectRecord) element;
             if (projectRecord.hasConflicts()) {
                 return getShell().getDisplay().getSystemColor(SWT.COLOR_GRAY);
             }
-			return null;
-		}
+            return null;
+        }
 
-		public String getText(Object element) {
-			return ((ProjectRecord) element).getProjectLabel();
-		}
-	}
+        public String getText(Object element) {
+            return ((ProjectRecord) element).getProjectLabel();
+        }
+    }
 
     // constant from WizardArchiveFileResourceImportPage1
     private static final String[] FILE_IMPORT_MASK = { "*.zip;*.tar;*.tar.gz;*.tgz;*.wgz", "*.*" }; //$NON-NLS-1$ //$NON-NLS-2$
 
-	/**
-	 * The name of the folder containing metadata information for the workspace.
-	 */
-	public static final String METADATA_FOLDER = ".metadata"; //$NON-NLS-1$
+    /**
+     * The name of the folder containing metadata information for the workspace.
+     */
+    public static final String METADATA_FOLDER = ".metadata"; //$NON-NLS-1$
 
-	// Keep track of the archive that we browsed to last time
-	// the wizard was invoked.
-	private static String previouslyBrowsedArchive = ""; //$NON-NLS-1$
+    // Keep track of the archive that we browsed to last time
+    // the wizard was invoked.
+    private static String previouslyBrowsedArchive = ""; //$NON-NLS-1$
 
-	// Keep track of the directory that we browsed to last time
-	// the wizard was invoked.
-	private static String previouslyBrowsedDirectory = ""; //$NON-NLS-1$
+    // Keep track of the directory that we browsed to last time
+    // the wizard was invoked.
+    private static String previouslyBrowsedDirectory = ""; //$NON-NLS-1$
 
-	private final static String STORE_ARCHIVE_SELECTED = "WizardProjectsImportPage.STORE_ARCHIVE_SELECTED"; //$NON-NLS-1$
+    private final static String STORE_ARCHIVE_SELECTED = "WizardProjectsImportPage.STORE_ARCHIVE_SELECTED"; //$NON-NLS-1$
 
-	private Text archivePathField;
+    private Text archivePathField;
 
-	private Button browseArchivesButton;
+    private Button browseArchivesButton;
 
-	private Button browseDirectoriesButton;
+    private Button browseDirectoriesButton;
 
     List createdProjects;
 
-	private IStructuredSelection currentSelection;
-
-	private Text directoryPathField;
-
-	// The initial path to set
-	private String initialPath;
+    private Text directoryPathField;
 
-	// The last time that the file or folder at the selected path was modified
-	// to mimize searches
-	private long lastModified;
+    // The last time that the file or folder at the selected path was modified
+    // to mimize searches
+    private long lastModified;
 
-	// The last selected path to minimize searches
-	private String lastPath;
+    // The last selected path to minimize searches
+    private String lastPath;
 
-	private Button projectFromArchiveRadio;
+    private Button projectFromArchiveRadio;
 
-	private Button projectFromDirectoryRadio;
+    private Button projectFromDirectoryRadio;
 
-	private CheckboxTreeViewer projectsList;
-	private ProjectRecord[] selectedProjects = new ProjectRecord[0];
+    private CheckboxTreeViewer projectsList;
+    private ProjectRecord[] selectedProjects = new ProjectRecord[0];
 
-	/**
-	 * The import structure provider.
-	 * 
-	 * @since 3.4
-	 */
-	private ILeveledImportStructureProvider structureProvider;
+    /**
+     * The import structure provider.
+     * 
+     * @since 3.4
+     */
+    private ILeveledImportStructureProvider structureProvider;
 
-	private WorkingSetGroup workingSetGroup;
-
-	private IProject[] wsProjects;
+    private IProject[] wsProjects;
 
     public WrtProjectLocationWizardPage() {
         super("projectlocation", "Import WRT Projects", null);
         setDescription("Import existing WRT project created in any IDEs");
-	}
-
-	private void addToWorkingSets() {
+    }
 
-		IWorkingSet[] selectedWorkingSets = workingSetGroup
-				.getSelectedWorkingSets();
-		if (selectedWorkingSets == null || selectedWorkingSets.length == 0) {
-            return; // no Working set is selected
+    private void archiveRadioSelected() {
+        if (projectFromArchiveRadio.getSelection()) {
+            directoryPathField.setEnabled(false);
+            browseDirectoriesButton.setEnabled(false);
+            archivePathField.setEnabled(true);
+            browseArchivesButton.setEnabled(true);
+            updateProjectsList(archivePathField.getText());
+            archivePathField.setFocus();
         }
-		IWorkingSetManager workingSetManager = PlatformUI.getWorkbench()
-				.getWorkingSetManager();
-		for (Iterator i = createdProjects.iterator(); i.hasNext();) {
-			IProject project = (IProject) i.next();
-			workingSetManager.addToWorkingSets(project, selectedWorkingSets);
-		}
-	}
+    }
+
+    public List<IProject> getCreatedProjects() {
+        return createdProjects;
+    }
 
-	private void archiveRadioSelected() {
-		if (projectFromArchiveRadio.getSelection()) {
-			directoryPathField.setEnabled(false);
-			browseDirectoriesButton.setEnabled(false);
-			archivePathField.setEnabled(true);
-			browseArchivesButton.setEnabled(true);
-			updateProjectsList(archivePathField.getText());
-			archivePathField.setFocus();
-		}
-	}
+    /**
+     * Collect the list of .project files that are under directory into files.
+     * 
+     * @param files
+     * @param directory
+     * @param directoriesVisited
+     *            Set of canonical paths of directories, used as recursion guard
+     * @param monitor
+     *            The monitor to report to
+     * @return boolean <code>true</code> if the operation was completed.
+     */
+    private boolean collectProjectFilesFromDirectory(Collection files, File directory, Set directoriesVisited,
+            IProgressMonitor monitor) {
 
-	public List<IProject> getCreatedProjects() {
-		return createdProjects;
-	}
-	
-	/**
-	 * Collect the list of .project files that are under directory into files.
-	 * 
-	 * @param files
-	 * @param directory
-	 * @param directoriesVisited
-	 *            Set of canonical paths of directories, used as recursion guard
-	 * @param monitor
-	 *            The monitor to report to
-	 * @return boolean <code>true</code> if the operation was completed.
-	 */
-	private boolean collectProjectFilesFromDirectory(Collection files,
-			File directory, Set directoriesVisited, IProgressMonitor monitor) {
-
-		if (monitor.isCanceled()) {
-			return false;
-		}
-		monitor.subTask(NLS.bind(
-				DataTransferMessages.WizardProjectsImportPage_CheckingMessage,
-				directory.getPath()));
-		File[] contents = directory.listFiles();
-		if (contents == null) {
+        if (monitor.isCanceled()) {
+            return false;
+        }
+        monitor.subTask(NLS.bind(DataTransferMessages.WizardProjectsImportPage_CheckingMessage, directory.getPath()));
+        File[] contents = directory.listFiles();
+        if (contents == null) {
             return false;
         }
 
-		// Initialize recursion guard for recursive symbolic links
-		if (directoriesVisited == null) {
-			directoriesVisited = new HashSet();
-			try {
-				directoriesVisited.add(directory.getCanonicalPath());
-			} catch (IOException exception) {
-				StatusManager.getManager().handle(
-						StatusUtil.newStatus(IStatus.ERROR, exception
-								.getLocalizedMessage(), exception));
-			}
-		}
+        // Initialize recursion guard for recursive symbolic links
+        if (directoriesVisited == null) {
+            directoriesVisited = new HashSet();
+            try {
+                directoriesVisited.add(directory.getCanonicalPath());
+            } catch (IOException exception) {
+                StatusManager.getManager().handle(
+                        StatusUtil.newStatus(IStatus.ERROR, exception.getLocalizedMessage(), exception));
+            }
+        }
+
+        File dotProjectFile = ProjectUtils.isWrtProject(contents);
 
-		
-		File dotProjectFile = ProjectUtils.isWrtProject(contents);
-		
-		if (dotProjectFile != null) {
-			files.add(dotProjectFile);
-			// don't search sub-directories since we can't have nested
-			// projects
-			return true;
-		}
-		// no project description found, so recurse into sub-directories
-		for (int i = 0; i < contents.length; i++) {
-			if (contents[i].isDirectory()) {
-				if (!contents[i].getName().equals(METADATA_FOLDER)) {
-					try {
-						String canonicalPath = contents[i].getCanonicalPath();
-						if (!directoriesVisited.add(canonicalPath)) {
-							// already been here --> do not recurse
-							continue;
-						}
-					} catch (IOException exception) {
-						StatusManager.getManager().handle(
-								StatusUtil.newStatus(IStatus.ERROR, exception
-										.getLocalizedMessage(), exception));
+        if (dotProjectFile != null) {
+            files.add(dotProjectFile);
+            // don't search sub-directories since we can't have nested
+            // projects
+            return true;
+        }
+        // no project description found, so recurse into sub-directories
+        for (int i = 0; i < contents.length; i++) {
+            if (contents[i].isDirectory()) {
+                if (!contents[i].getName().equals(METADATA_FOLDER)) {
+                    try {
+                        String canonicalPath = contents[i].getCanonicalPath();
+                        if (!directoriesVisited.add(canonicalPath)) {
+                            // already been here --> do not recurse
+                            continue;
+                        }
+                    } catch (IOException exception) {
+                        StatusManager.getManager().handle(
+                                StatusUtil.newStatus(IStatus.ERROR, exception.getLocalizedMessage(), exception));
 
-					}
-					collectProjectFilesFromDirectory(files, contents[i],
-							directoriesVisited, monitor);
-				}
-			}
-		}
-		return true;
-	}
+                    }
+                    collectProjectFilesFromDirectory(files, contents[i], directoriesVisited, monitor);
+                }
+            }
+        }
+        return true;
+    }
 
-	/**
-	 * Collect the list of .project files that are under directory into files.
-	 * 
-	 * @param files
-	 * @param monitor
-	 *            The monitor to report to
-	 * @return boolean <code>true</code> if the operation was completed.
-	 */
-	private boolean collectProjectFilesFromProvider(Collection files,
-			Object entry, int level, IProgressMonitor monitor) {
+    /**
+     * Collect the list of .project files that are under directory into files.
+     * 
+     * @param files
+     * @param monitor
+     *            The monitor to report to
+     * @return boolean <code>true</code> if the operation was completed.
+     */
+    private boolean collectProjectFilesFromProvider(Collection files, Object entry, int level, IProgressMonitor monitor) {
 
-		if (monitor.isCanceled()) {
-			return false;
-		}
-		monitor.subTask(NLS.bind(
-				DataTransferMessages.WizardProjectsImportPage_CheckingMessage,
-				structureProvider.getLabel(entry)));
-		List children = structureProvider.getChildren(entry);
-		if (children == null) {
-			children = new ArrayList(1);
-		}
-		Iterator childrenEnum = children.iterator();
-		ProjectRecord projectRecord = null;
+        if (monitor.isCanceled()) {
+            return false;
+        }
+        monitor.subTask(NLS.bind(DataTransferMessages.WizardProjectsImportPage_CheckingMessage,
+                structureProvider.getLabel(entry)));
+        List children = structureProvider.getChildren(entry);
+        if (children == null) {
+            children = new ArrayList(1);
+        }
+        Iterator childrenEnum = children.iterator();
+        ProjectRecord projectRecord = null;
         Object infoPlist = null;
         Object dotProject = null;
-		while (childrenEnum.hasNext()) {
-			Object child = childrenEnum.next();
+        while (childrenEnum.hasNext()) {
+            Object child = childrenEnum.next();
             String elementLabel = structureProvider.getLabel(child);
             if (structureProvider.isFolder(child)) {
                 collectProjectFilesFromProvider(files, child, level + 1, monitor);
@@ -321,1025 +284,929 @@
             } else if (elementLabel.equalsIgnoreCase(CoreUtil.METADATA_FILE)) {
                 infoPlist = child;
             }
-		}
+        }
         if (infoPlist != null) {
             projectRecord = new ArchivedProject(infoPlist, dotProject, entry, level, structureProvider);
             files.add(projectRecord);
         }
-		return true;
-	}
+        return true;
+    }
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets
-	 * .Composite)
-	 */
-	public void createControl(Composite parent) {
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets
+     * .Composite)
+     */
+    public void createControl(Composite parent) {
 
-		initializeDialogUnits(parent);
+        initializeDialogUnits(parent);
 
-		Composite workArea = new Composite(parent, SWT.NONE);
-		setControl(workArea);
+        Composite workArea = new Composite(parent, SWT.NONE);
+        setControl(workArea);
 
-		workArea.setLayout(new GridLayout());
-		workArea.setLayoutData(new GridData(GridData.FILL_BOTH
-				| GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
+        workArea.setLayout(new GridLayout());
+        workArea.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL));
 
-		createProjectsRoot(workArea);
-		createProjectsList(workArea);
-		createWorkingSetGroup(workArea);
-		restoreWidgetValues();
-		Dialog.applyDialogFont(workArea);
-		
-		updateProjectsList(directoryPathField.getText().trim());
-	}
+        createProjectsRoot(workArea);
+        createProjectsList(workArea);
+        restoreWidgetValues();
+        Dialog.applyDialogFont(workArea);
+
+        updateProjectsList(directoryPathField.getText().trim());
+    }
 
-	/**
-	 * Create the project described in record. If it is successful return true.
-	 * 
-	 * @param record
-	 * @return boolean <code>true</code> if successful
-	 * @throws InterruptedException
-	 */
-	private boolean createExistingProject(final ProjectRecord record,
-			IProgressMonitor monitor) throws InvocationTargetException,
-			InterruptedException {
-		monitor.beginTask(MessageFormat.format("Creating {0}", record
-				.getProjectName()), IProgressMonitor.UNKNOWN);
+    /**
+     * Create the project described in record. If it is successful return true.
+     * 
+     * @param record
+     * @return boolean <code>true</code> if successful
+     * @throws InterruptedException
+     */
+    private boolean createExistingProject(final ProjectRecord record, IProgressMonitor monitor)
+            throws InvocationTargetException, InterruptedException {
+        monitor.beginTask(MessageFormat.format("Creating {0}", record.getProjectName()), IProgressMonitor.UNKNOWN);
 
-		try {
-			IProject project = ProjectUtils.createWrtProject(record
-					.getProjectName(), null,
-					new SubProgressMonitor(monitor, 10));
-			createdProjects.add(project);
+        try {
+            IProject project = ProjectUtils.createWrtProject(record.getProjectName(), null, new SubProgressMonitor(
+                    monitor, 10));
+            createdProjects.add(project);
             ImportOperation operation = record.getImportOperation(project, structureProvider, this);
             if (operation != null) {
                 operation.setContext(getShell());
                 operation.run(monitor);
             }
-			return true;
-		} catch (CoreException e) {
-			Activator.log(e);
-			return false;
-		} finally {
-			monitor.done();
-		}
-	}
+            return true;
+        } catch (CoreException e) {
+            Activator.log(e);
+            return false;
+        } finally {
+            monitor.done();
+        }
+    }
 
-	/**
-	 * Create the selected projects
-	 * 
-	 * @return boolean <code>true</code> if all project creations were
-	 *         successful.
-	 */
-	public boolean createProjects() {
-		saveWidgetValues();
+    /**
+     * Create the selected projects
+     * 
+     * @return boolean <code>true</code> if all project creations were
+     *         successful.
+     */
+    public boolean createProjects() {
+        saveWidgetValues();
 
-		final Object[] selected = projectsList.getCheckedElements();
-		createdProjects = new ArrayList();
-		WorkspaceModifyOperation op = new WorkspaceModifyOperation() {
-			protected void execute(IProgressMonitor monitor)
-					throws InvocationTargetException, InterruptedException {
-				try {
-					monitor.beginTask("", selected.length); 
-					if (monitor.isCanceled()) {
-						throw new OperationCanceledException();
-					}
-					for (int i = 0; i < selected.length; i++) {
-						createExistingProject((ProjectRecord) selected[i],
-								new SubProgressMonitor(monitor, 1));
-					}
-				} finally {
-					monitor.done();
-				}
-			}
-		};
-		// run the new project creation operation
-		try {
-			getContainer().run(true, true, op);
-		} catch (InterruptedException e) {
-			return false;
-		} catch (InvocationTargetException e) {
-			// one of the steps resulted in a core exception
-			Throwable t = e.getTargetException();
-			String message = DataTransferMessages.WizardExternalProjectImportPage_errorMessage;
-			IStatus status;
-			if (t instanceof CoreException) {
-				status = ((CoreException) t).getStatus();
-			} else {
-				status = new Status(IStatus.ERROR,
- Activator.PLUGIN_ID, 1, message, t);
-			}
-			ErrorDialog.openError(getShell(), message, null, status);
-			return false;
-		}
-		ArchiveFileManipulations.closeStructureProvider(structureProvider,
-				getShell());
+        final Object[] selected = projectsList.getCheckedElements();
+        createdProjects = new ArrayList();
+        WorkspaceModifyOperation op = new WorkspaceModifyOperation() {
+            protected void execute(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+                try {
+                    monitor.beginTask("", selected.length);
+                    if (monitor.isCanceled()) {
+                        throw new OperationCanceledException();
+                    }
+                    for (int i = 0; i < selected.length; i++) {
+                        createExistingProject((ProjectRecord) selected[i], new SubProgressMonitor(monitor, 1));
+                    }
+                } finally {
+                    monitor.done();
+                }
+            }
+        };
+        // run the new project creation operation
+        try {
+            getContainer().run(true, true, op);
+        } catch (InterruptedException e) {
+            return false;
+        } catch (InvocationTargetException e) {
+            // one of the steps resulted in a core exception
+            Throwable t = e.getTargetException();
+            String message = DataTransferMessages.WizardExternalProjectImportPage_errorMessage;
+            IStatus status;
+            if (t instanceof CoreException) {
+                status = ((CoreException) t).getStatus();
+            } else {
+                status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, 1, message, t);
+            }
+            ErrorDialog.openError(getShell(), message, null, status);
+            return false;
+        }
+        ArchiveFileManipulations.closeStructureProvider(structureProvider, getShell());
 
-		// Adds the projects to the working sets
-		addToWorkingSets();
-
-		return true;
-	}
+        return true;
+    }
 
-	/**
-	 * Create the checkbox list for the found projects.
-	 * 
-	 * @param workArea
-	 */
-	private void createProjectsList(Composite workArea) {
+    /**
+     * Create the checkbox list for the found projects.
+     * 
+     * @param workArea
+     */
+    private void createProjectsList(Composite workArea) {
+
+        Label title = new Label(workArea, SWT.NONE);
+        title.setText(DataTransferMessages.WizardProjectsImportPage_ProjectsListTitle);
 
-		Label title = new Label(workArea, SWT.NONE);
-		title
-				.setText(DataTransferMessages.WizardProjectsImportPage_ProjectsListTitle);
+        Composite listComposite = new Composite(workArea, SWT.NONE);
+        GridLayout layout = new GridLayout();
+        layout.numColumns = 2;
+        layout.marginWidth = 0;
+        layout.makeColumnsEqualWidth = false;
+        listComposite.setLayout(layout);
 
-		Composite listComposite = new Composite(workArea, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 2;
-		layout.marginWidth = 0;
-		layout.makeColumnsEqualWidth = false;
-		listComposite.setLayout(layout);
+        listComposite
+                .setLayoutData(new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH));
 
-		listComposite.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
-				| GridData.GRAB_VERTICAL | GridData.FILL_BOTH));
+        projectsList = new CheckboxTreeViewer(listComposite, SWT.BORDER);
+        GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+        gridData.widthHint = new PixelConverter(projectsList.getControl()).convertWidthInCharsToPixels(25);
+        gridData.heightHint = new PixelConverter(projectsList.getControl()).convertHeightInCharsToPixels(10);
+        projectsList.getControl().setLayoutData(gridData);
+        projectsList.setContentProvider(new ITreeContentProvider() {
 
-		projectsList = new CheckboxTreeViewer(listComposite, SWT.BORDER);
-		GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
-		gridData.widthHint = new PixelConverter(projectsList.getControl())
-				.convertWidthInCharsToPixels(25);
-		gridData.heightHint = new PixelConverter(projectsList.getControl())
-				.convertHeightInCharsToPixels(10);
-		projectsList.getControl().setLayoutData(gridData);
-		projectsList.setContentProvider(new ITreeContentProvider() {
+            /*
+             * (non-Javadoc)
+             * 
+             * @see org.eclipse.jface.viewers.IContentProvider#dispose()
+             */
+            public void dispose() {
+
+            }
 
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.jface.viewers.IContentProvider#dispose()
-			 */
-			public void dispose() {
-
-			}
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java
+             * .lang.Object)
+             */
+            public Object[] getChildren(Object parentElement) {
+                return null;
+            }
 
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java
-			 * .lang.Object)
-			 */
-			public Object[] getChildren(Object parentElement) {
-				return null;
-			}
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.jface.viewers.IStructuredContentProvider#getElements
+             * (java.lang.Object)
+             */
+            public Object[] getElements(Object inputElement) {
+                return getProjectRecords();
+            }
 
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.jface.viewers.IStructuredContentProvider#getElements
-			 * (java.lang.Object)
-			 */
-			public Object[] getElements(Object inputElement) {
-				return getProjectRecords();
-			}
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.jface.viewers.ITreeContentProvider#getParent(java
+             * .lang.Object)
+             */
+            public Object getParent(Object element) {
+                return null;
+            }
 
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.jface.viewers.ITreeContentProvider#getParent(java
-			 * .lang.Object)
-			 */
-			public Object getParent(Object element) {
-				return null;
-			}
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java
+             * .lang.Object)
+             */
+            public boolean hasChildren(Object element) {
+                return false;
+            }
 
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java
-			 * .lang.Object)
-			 */
-			public boolean hasChildren(Object element) {
-				return false;
-			}
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse
+             * .jface.viewers.Viewer, java.lang.Object, java.lang.Object)
+             */
+            public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+            }
+
+        });
+
+        projectsList.setLabelProvider(new ProjectLabelProvider());
 
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse
-			 * .jface.viewers.Viewer, java.lang.Object, java.lang.Object)
-			 */
-			public void inputChanged(Viewer viewer, Object oldInput,
-					Object newInput) {
-			}
-
-		});
-
-		projectsList.setLabelProvider(new ProjectLabelProvider());
+        projectsList.addCheckStateListener(new ICheckStateListener() {
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.jface.viewers.ICheckStateListener#checkStateChanged
+             * (org.eclipse.jface.viewers.CheckStateChangedEvent)
+             */
+            public void checkStateChanged(CheckStateChangedEvent event) {
+                ProjectRecord element = (ProjectRecord) event.getElement();
+                if (element.hasConflicts()) {
+                    projectsList.setChecked(element, false);
+                }
+                setPageComplete(projectsList.getCheckedElements().length > 0);
+            }
+        });
 
-		projectsList.addCheckStateListener(new ICheckStateListener() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.jface.viewers.ICheckStateListener#checkStateChanged
-			 * (org.eclipse.jface.viewers.CheckStateChangedEvent)
-			 */
-			public void checkStateChanged(CheckStateChangedEvent event) {
-				ProjectRecord element = (ProjectRecord) event.getElement();
-                if (element.hasConflicts()) {
-					projectsList.setChecked(element, false);
-				}
-				setPageComplete(projectsList.getCheckedElements().length > 0);
-			}
-		});
+        projectsList.setInput(this);
+        projectsList.setComparator(new ViewerComparator());
+        createSelectionButtons(listComposite);
+    }
 
-		projectsList.setInput(this);
-		projectsList.setComparator(new ViewerComparator());
-		createSelectionButtons(listComposite);
-	}
+    /**
+     * Create the area where you select the root directory for the projects.
+     * 
+     * @param workArea
+     *            Composite
+     */
+    private void createProjectsRoot(Composite workArea) {
 
-	/**
-	 * Create the area where you select the root directory for the projects.
-	 * 
-	 * @param workArea
-	 *            Composite
-	 */
-	private void createProjectsRoot(Composite workArea) {
+        // project specification group
+        Composite projectGroup = new Composite(workArea, SWT.NONE);
+        GridLayout layout = new GridLayout();
+        layout.numColumns = 3;
+        layout.makeColumnsEqualWidth = false;
+        layout.marginWidth = 0;
+        projectGroup.setLayout(layout);
+        projectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
 
-		// project specification group
-		Composite projectGroup = new Composite(workArea, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.numColumns = 3;
-		layout.makeColumnsEqualWidth = false;
-		layout.marginWidth = 0;
-		projectGroup.setLayout(layout);
-		projectGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+        // new project from directory radio button
+        projectFromDirectoryRadio = new Button(projectGroup, SWT.RADIO);
+        projectFromDirectoryRadio.setText(DataTransferMessages.WizardProjectsImportPage_RootSelectTitle);
 
-		// new project from directory radio button
-		projectFromDirectoryRadio = new Button(projectGroup, SWT.RADIO);
-		projectFromDirectoryRadio
-				.setText(DataTransferMessages.WizardProjectsImportPage_RootSelectTitle);
+        // project location entry field
+        this.directoryPathField = new Text(projectGroup, SWT.BORDER);
+
+        GridData directoryPathData = new GridData(SWT.FILL, SWT.NONE, true, false);
+        directoryPathData.widthHint = new PixelConverter(directoryPathField).convertWidthInCharsToPixels(25);
+        directoryPathField.setLayoutData(directoryPathData);
+
+        directoryPathField.setText(ProjectUtils.getDefaultAptanaLocation());
 
-		// project location entry field
-		this.directoryPathField = new Text(projectGroup, SWT.BORDER);
+        // browse button
+        browseDirectoriesButton = new Button(projectGroup, SWT.PUSH);
+        browseDirectoriesButton.setText(DataTransferMessages.DataTransfer_browse);
+        setButtonLayoutData(browseDirectoriesButton);
 
-		GridData directoryPathData = new GridData(SWT.FILL, SWT.NONE, true,
-				false);
-		directoryPathData.widthHint = new PixelConverter(directoryPathField)
-				.convertWidthInCharsToPixels(25);
-		directoryPathField.setLayoutData(directoryPathData);
+        // new project from archive radio button
+        projectFromArchiveRadio = new Button(projectGroup, SWT.RADIO);
+        projectFromArchiveRadio.setText(DataTransferMessages.WizardProjectsImportPage_ArchiveSelectTitle);
 
-		directoryPathField.setText(ProjectUtils.getDefaultAptanaLocation());
-		
-		// browse button
-		browseDirectoriesButton = new Button(projectGroup, SWT.PUSH);
-		browseDirectoriesButton
-				.setText(DataTransferMessages.DataTransfer_browse);
-		setButtonLayoutData(browseDirectoriesButton);
+        // project location entry field
+        archivePathField = new Text(projectGroup, SWT.BORDER);
 
-		// new project from archive radio button
-		projectFromArchiveRadio = new Button(projectGroup, SWT.RADIO);
-		projectFromArchiveRadio
-				.setText(DataTransferMessages.WizardProjectsImportPage_ArchiveSelectTitle);
+        GridData archivePathData = new GridData(SWT.FILL, SWT.NONE, true, false);
+        archivePathData.widthHint = new PixelConverter(archivePathField).convertWidthInCharsToPixels(25);
+        archivePathField.setLayoutData(archivePathData); // browse button
+        browseArchivesButton = new Button(projectGroup, SWT.PUSH);
+        browseArchivesButton.setText(DataTransferMessages.DataTransfer_browse);
+        setButtonLayoutData(browseArchivesButton);
+
+        projectFromDirectoryRadio.setSelection(true);
+        archivePathField.setEnabled(false);
+        browseArchivesButton.setEnabled(false);
 
-		// project location entry field
-		archivePathField = new Text(projectGroup, SWT.BORDER);
+        browseDirectoriesButton.addSelectionListener(new SelectionAdapter() {
+            /*
+             * (non-Javadoc)
+             * 
+             * @see org.eclipse.swt.events.SelectionAdapter#widgetS
+             * elected(org.eclipse.swt.events.SelectionEvent)
+             */
+            public void widgetSelected(SelectionEvent e) {
+                handleLocationDirectoryButtonPressed();
+            }
 
-		GridData archivePathData = new GridData(SWT.FILL, SWT.NONE, true, false);
-		archivePathData.widthHint = new PixelConverter(archivePathField)
-				.convertWidthInCharsToPixels(25);
-		archivePathField.setLayoutData(archivePathData); // browse button
-		browseArchivesButton = new Button(projectGroup, SWT.PUSH);
-		browseArchivesButton.setText(DataTransferMessages.DataTransfer_browse);
-		setButtonLayoutData(browseArchivesButton);
-
-		projectFromDirectoryRadio.setSelection(true);
-		archivePathField.setEnabled(false);
-		browseArchivesButton.setEnabled(false);
+        });
 
-		browseDirectoriesButton.addSelectionListener(new SelectionAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see org.eclipse.swt.events.SelectionAdapter#widgetS
-			 * elected(org.eclipse.swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				handleLocationDirectoryButtonPressed();
-			}
+        browseArchivesButton.addSelectionListener(new SelectionAdapter() {
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
+             * .swt.events.SelectionEvent)
+             */
+            public void widgetSelected(SelectionEvent e) {
+                handleLocationArchiveButtonPressed();
+            }
 
-		});
+        });
+
+        directoryPathField.addTraverseListener(new TraverseListener() {
 
-		browseArchivesButton.addSelectionListener(new SelectionAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
-			 * .swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				handleLocationArchiveButtonPressed();
-			}
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.swt.events.TraverseListener#keyTraversed(org.eclipse
+             * .swt.events.TraverseEvent)
+             */
+            public void keyTraversed(TraverseEvent e) {
+                if (e.detail == SWT.TRAVERSE_RETURN) {
+                    e.doit = false;
+                    updateProjectsList(directoryPathField.getText().trim());
+                }
+            }
 
-		});
-
-		directoryPathField.addTraverseListener(new TraverseListener() {
+        });
 
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.swt.events.TraverseListener#keyTraversed(org.eclipse
-			 * .swt.events.TraverseEvent)
-			 */
-			public void keyTraversed(TraverseEvent e) {
-				if (e.detail == SWT.TRAVERSE_RETURN) {
-					e.doit = false;
-					updateProjectsList(directoryPathField.getText().trim());
-				}
-			}
+        directoryPathField.addFocusListener(new FocusAdapter() {
 
-		});
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.swt.events.FocusListener#focusLost(org.eclipse.swt
+             * .events.FocusEvent)
+             */
+            public void focusLost(org.eclipse.swt.events.FocusEvent e) {
+                updateProjectsList(directoryPathField.getText().trim());
+            }
 
-		directoryPathField.addFocusListener(new FocusAdapter() {
+        });
+
+        archivePathField.addTraverseListener(new TraverseListener() {
 
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.swt.events.FocusListener#focusLost(org.eclipse.swt
-			 * .events.FocusEvent)
-			 */
-			public void focusLost(org.eclipse.swt.events.FocusEvent e) {
-				updateProjectsList(directoryPathField.getText().trim());
-			}
-
-		});
-
-		archivePathField.addTraverseListener(new TraverseListener() {
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.swt.events.TraverseListener#keyTraversed(org.eclipse
+             * .swt.events.TraverseEvent)
+             */
+            public void keyTraversed(TraverseEvent e) {
+                if (e.detail == SWT.TRAVERSE_RETURN) {
+                    e.doit = false;
+                    updateProjectsList(archivePathField.getText().trim());
+                }
+            }
 
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.swt.events.TraverseListener#keyTraversed(org.eclipse
-			 * .swt.events.TraverseEvent)
-			 */
-			public void keyTraversed(TraverseEvent e) {
-				if (e.detail == SWT.TRAVERSE_RETURN) {
-					e.doit = false;
-					updateProjectsList(archivePathField.getText().trim());
-				}
-			}
+        });
 
-		});
+        archivePathField.addFocusListener(new FocusAdapter() {
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.swt.events.FocusListener#focusLost(org.eclipse.swt
+             * .events.FocusEvent)
+             */
+            public void focusLost(org.eclipse.swt.events.FocusEvent e) {
+                updateProjectsList(archivePathField.getText().trim());
+            }
+        });
 
-		archivePathField.addFocusListener(new FocusAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.swt.events.FocusListener#focusLost(org.eclipse.swt
-			 * .events.FocusEvent)
-			 */
-			public void focusLost(org.eclipse.swt.events.FocusEvent e) {
-				updateProjectsList(archivePathField.getText().trim());
-			}
-		});
-
-		projectFromDirectoryRadio.addSelectionListener(new SelectionAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse
-			 * .swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				directoryRadioSelected();
-			}
-		});
+        projectFromDirectoryRadio.addSelectionListener(new SelectionAdapter() {
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse
+             * .swt.events.SelectionEvent)
+             */
+            public void widgetSelected(SelectionEvent e) {
+                directoryRadioSelected();
+            }
+        });
 
-		projectFromArchiveRadio.addSelectionListener(new SelectionAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse
-			 * .swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				archiveRadioSelected();
-			}
-		});
-	}
+        projectFromArchiveRadio.addSelectionListener(new SelectionAdapter() {
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse
+             * .swt.events.SelectionEvent)
+             */
+            public void widgetSelected(SelectionEvent e) {
+                archiveRadioSelected();
+            }
+        });
+    }
 
-	/**
-	 * Create the selection buttons in the listComposite.
-	 * 
-	 * @param listComposite
-	 */
-	private void createSelectionButtons(Composite listComposite) {
-		Composite buttonsComposite = new Composite(listComposite, SWT.NONE);
-		GridLayout layout = new GridLayout();
-		layout.marginWidth = 0;
-		layout.marginHeight = 0;
-		buttonsComposite.setLayout(layout);
+    /**
+     * Create the selection buttons in the listComposite.
+     * 
+     * @param listComposite
+     */
+    private void createSelectionButtons(Composite listComposite) {
+        Composite buttonsComposite = new Composite(listComposite, SWT.NONE);
+        GridLayout layout = new GridLayout();
+        layout.marginWidth = 0;
+        layout.marginHeight = 0;
+        buttonsComposite.setLayout(layout);
 
-		buttonsComposite.setLayoutData(new GridData(
-				GridData.VERTICAL_ALIGN_BEGINNING));
+        buttonsComposite.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
 
-		Button selectAll = new Button(buttonsComposite, SWT.PUSH);
-		selectAll.setText(DataTransferMessages.DataTransfer_selectAll);
-		selectAll.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent e) {
-				for (int i = 0; i < selectedProjects.length; i++) {
+        Button selectAll = new Button(buttonsComposite, SWT.PUSH);
+        selectAll.setText(DataTransferMessages.DataTransfer_selectAll);
+        selectAll.addSelectionListener(new SelectionAdapter() {
+            public void widgetSelected(SelectionEvent e) {
+                for (int i = 0; i < selectedProjects.length; i++) {
                     if (selectedProjects[i].hasConflicts()) {
                         projectsList.setChecked(selectedProjects[i], false);
                     } else {
                         projectsList.setChecked(selectedProjects[i], true);
                     }
-				}
-				setPageComplete(projectsList.getCheckedElements().length > 0);
-			}
-		});
-		Dialog.applyDialogFont(selectAll);
-		setButtonLayoutData(selectAll);
+                }
+                setPageComplete(projectsList.getCheckedElements().length > 0);
+            }
+        });
+        Dialog.applyDialogFont(selectAll);
+        setButtonLayoutData(selectAll);
 
-		Button deselectAll = new Button(buttonsComposite, SWT.PUSH);
-		deselectAll.setText(DataTransferMessages.DataTransfer_deselectAll);
-		deselectAll.addSelectionListener(new SelectionAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
-			 * .swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
+        Button deselectAll = new Button(buttonsComposite, SWT.PUSH);
+        deselectAll.setText(DataTransferMessages.DataTransfer_deselectAll);
+        deselectAll.addSelectionListener(new SelectionAdapter() {
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
+             * .swt.events.SelectionEvent)
+             */
+            public void widgetSelected(SelectionEvent e) {
 
-				projectsList.setCheckedElements(new Object[0]);
-				setPageComplete(false);
-			}
-		});
-		Dialog.applyDialogFont(deselectAll);
-		setButtonLayoutData(deselectAll);
+                projectsList.setCheckedElements(new Object[0]);
+                setPageComplete(false);
+            }
+        });
+        Dialog.applyDialogFont(deselectAll);
+        setButtonLayoutData(deselectAll);
 
-		Button refresh = new Button(buttonsComposite, SWT.PUSH);
-		refresh.setText(DataTransferMessages.DataTransfer_refresh);
-		refresh.addSelectionListener(new SelectionAdapter() {
-			/*
-			 * (non-Javadoc)
-			 * 
-			 * @see
-			 * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
-			 * .swt.events.SelectionEvent)
-			 */
-			public void widgetSelected(SelectionEvent e) {
-				if (projectFromDirectoryRadio.getSelection()) {
-					updateProjectsList(directoryPathField.getText().trim());
-				} else {
-					updateProjectsList(archivePathField.getText().trim());
-				}
-			}
-		});
-		Dialog.applyDialogFont(refresh);
-		setButtonLayoutData(refresh);
-	}
+        Button refresh = new Button(buttonsComposite, SWT.PUSH);
+        refresh.setText(DataTransferMessages.DataTransfer_refresh);
+        refresh.addSelectionListener(new SelectionAdapter() {
+            /*
+             * (non-Javadoc)
+             * 
+             * @see
+             * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
+             * .swt.events.SelectionEvent)
+             */
+            public void widgetSelected(SelectionEvent e) {
+                if (projectFromDirectoryRadio.getSelection()) {
+                    updateProjectsList(directoryPathField.getText().trim());
+                } else {
+                    updateProjectsList(archivePathField.getText().trim());
+                }
+            }
+        });
+        Dialog.applyDialogFont(refresh);
+        setButtonLayoutData(refresh);
+    }
 
-	/**
-	 * @param workArea
-	 */
-	private void createWorkingSetGroup(Composite workArea) {
-		String[] workingSetIds = new String[] {
-				"org.eclipse.ui.resourceWorkingSetPage", //$NON-NLS-1$
-				"org.eclipse.jdt.ui.JavaWorkingSetPage" }; //$NON-NLS-1$
-		workingSetGroup = new WorkingSetGroup(workArea, currentSelection,
-				workingSetIds);
-	}
+    private void directoryRadioSelected() {
+        if (projectFromDirectoryRadio.getSelection()) {
+            directoryPathField.setEnabled(true);
+            browseDirectoriesButton.setEnabled(true);
+            archivePathField.setEnabled(false);
+            browseArchivesButton.setEnabled(false);
+            updateProjectsList(directoryPathField.getText());
+            directoryPathField.setFocus();
+        }
+    }
 
-	private void directoryRadioSelected() {
-		if (projectFromDirectoryRadio.getSelection()) {
-			directoryPathField.setEnabled(true);
-			browseDirectoriesButton.setEnabled(true);
-			archivePathField.setEnabled(false);
-			browseArchivesButton.setEnabled(false);
-			updateProjectsList(directoryPathField.getText());
-			directoryPathField.setFocus();
-		}
-	}
+    /**
+     * Display an error dialog with the specified message.
+     * 
+     * @param message
+     *            the error message
+     */
+    protected void displayErrorDialog(String message) {
+        MessageDialog.open(MessageDialog.ERROR, getContainer().getShell(), getErrorDialogTitle(), message, SWT.SHEET);
+    }
 
-	/**
-	 * Display an error dialog with the specified message.
-	 * 
-	 * @param message
-	 *            the error message
-	 */
-	protected void displayErrorDialog(String message) {
-		MessageDialog.open(MessageDialog.ERROR, getContainer().getShell(),
-				getErrorDialogTitle(), message, SWT.SHEET);
-	}
-
-	/**
-	 * Get the title for an error dialog. Subclasses should override.
-	 */
-	protected String getErrorDialogTitle() {
-		return IDEWorkbenchMessages.WizardExportPage_internalErrorTitle;
-	}
+    /**
+     * Get the title for an error dialog. Subclasses should override.
+     */
+    protected String getErrorDialogTitle() {
+        return IDEWorkbenchMessages.WizardExportPage_internalErrorTitle;
+    }
 
-	/**
-	 * Method used for test suite.
-	 * 
-	 * @return Button the Import from Directory RadioButton
-	 */
-	public Button getProjectFromDirectoryRadio() {
-		return projectFromDirectoryRadio;
-	}
+    /**
+     * Method used for test suite.
+     * 
+     * @return Button the Import from Directory RadioButton
+     */
+    public Button getProjectFromDirectoryRadio() {
+        return projectFromDirectoryRadio;
+    }
 
-	/**
-	 * Get the array of project records that can be imported from the source
-	 * workspace or archive, selected by the user. If a project with the same
-	 * name exists in both the source workspace and the current workspace, then
-	 * the hasConflicts flag would be set on that project record.
-	 * 
-	 * Method declared public for test suite.
-	 * 
-	 * @return ProjectRecord[] array of projects that can be imported into the
-	 *         workspace
-	 */
-	public ProjectRecord[] getProjectRecords() {
-		List projectRecords = new ArrayList();
-		for (int i = 0; i < selectedProjects.length; i++) {
+    /**
+     * Get the array of project records that can be imported from the source
+     * workspace or archive, selected by the user. If a project with the same
+     * name exists in both the source workspace and the current workspace, then
+     * the hasConflicts flag would be set on that project record.
+     * 
+     * Method declared public for test suite.
+     * 
+     * @return ProjectRecord[] array of projects that can be imported into the
+     *         workspace
+     */
+    public ProjectRecord[] getProjectRecords() {
+        List projectRecords = new ArrayList();
+        for (int i = 0; i < selectedProjects.length; i++) {
             if (isProjectInWorkspace(selectedProjects[i].getProjectName())) {
                 selectedProjects[i].setHasConflicts(true);
-			}
-			projectRecords.add(selectedProjects[i]);
-		}
-		return (ProjectRecord[]) projectRecords
-				.toArray(new ProjectRecord[projectRecords.size()]);
-	}
+            }
+            projectRecords.add(selectedProjects[i]);
+        }
+        return (ProjectRecord[]) projectRecords.toArray(new ProjectRecord[projectRecords.size()]);
+    }
+
+    /**
+     * Retrieve all the projects in the current workspace.
+     * 
+     * @return IProject[] array of IProject in the current workspace
+     */
+    private IProject[] getProjectsInWorkspace() {
+        if (wsProjects == null) {
+            wsProjects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+        }
+        return wsProjects;
+    }
 
-	/**
-	 * Retrieve all the projects in the current workspace.
-	 * 
-	 * @return IProject[] array of IProject in the current workspace
-	 */
-	private IProject[] getProjectsInWorkspace() {
-		if (wsProjects == null) {
-            wsProjects = ResourcesPlugin.getWorkspace().getRoot()
-					.getProjects();
-		}
-		return wsProjects;
-	}
+    /**
+     * Method used for test suite.
+     * 
+     * @return CheckboxTreeViewer the viewer containing all the projects found
+     */
+    public CheckboxTreeViewer getProjectsList() {
+        return projectsList;
+    }
 
-	/**
-	 * Method used for test suite.
-	 * 
-	 * @return CheckboxTreeViewer the viewer containing all the projects found
-	 */
-	public CheckboxTreeViewer getProjectsList() {
-		return projectsList;
-	}
-
-	/**
-	 * Answer a handle to the zip file currently specified as being the source.
-	 * Return null if this file does not exist or is not of valid format.
-	 */
-	private TarFile getSpecifiedTarSourceFile(String fileName) {
-		if (fileName.length() == 0) {
-			return null;
-		}
+    /**
+     * Answer a handle to the zip file currently specified as being the source.
+     * Return null if this file does not exist or is not of valid format.
+     */
+    private TarFile getSpecifiedTarSourceFile(String fileName) {
+        if (fileName.length() == 0) {
+            return null;
+        }
 
-		try {
-			return new TarFile(fileName);
-		} catch (TarException e) {
-			displayErrorDialog(DataTransferMessages.TarImport_badFormat);
-		} catch (IOException e) {
-			displayErrorDialog(DataTransferMessages.ZipImport_couldNotRead);
-		}
+        try {
+            return new TarFile(fileName);
+        } catch (TarException e) {
+            displayErrorDialog(DataTransferMessages.TarImport_badFormat);
+        } catch (IOException e) {
+            displayErrorDialog(DataTransferMessages.ZipImport_couldNotRead);
+        }
 
-		archivePathField.setFocus();
-		return null;
-	}
+        archivePathField.setFocus();
+        return null;
+    }
 
-	/**
-	 * Answer a handle to the zip file currently specified as being the source.
-	 * Return null if this file does not exist or is not of valid format.
-	 */
-	private ZipFile getSpecifiedZipSourceFile(String fileName) {
-		if (fileName.length() == 0) {
-			return null;
-		}
+    /**
+     * Answer a handle to the zip file currently specified as being the source.
+     * Return null if this file does not exist or is not of valid format.
+     */
+    private ZipFile getSpecifiedZipSourceFile(String fileName) {
+        if (fileName.length() == 0) {
+            return null;
+        }
 
-		try {
-			return new ZipFile(fileName);
-		} catch (ZipException e) {
-			displayErrorDialog(DataTransferMessages.ZipImport_badFormat);
-		} catch (IOException e) {
-			displayErrorDialog(DataTransferMessages.ZipImport_couldNotRead);
-		}
+        try {
+            return new ZipFile(fileName);
+        } catch (ZipException e) {
+            displayErrorDialog(DataTransferMessages.ZipImport_badFormat);
+        } catch (IOException e) {
+            displayErrorDialog(DataTransferMessages.ZipImport_couldNotRead);
+        }
 
-		archivePathField.setFocus();
-		return null;
-	}
+        archivePathField.setFocus();
+        return null;
+    }
 
-	/**
-	 * The browse button has been selected. Select the location.
-	 */
-	protected void handleLocationArchiveButtonPressed() {
+    /**
+     * The browse button has been selected. Select the location.
+     */
+    protected void handleLocationArchiveButtonPressed() {
 
-		FileDialog dialog = new FileDialog(archivePathField.getShell(),
-				SWT.SHEET);
-		dialog.setFilterExtensions(FILE_IMPORT_MASK);
-		dialog
-				.setText(DataTransferMessages.WizardProjectsImportPage_SelectArchiveDialogTitle);
+        FileDialog dialog = new FileDialog(archivePathField.getShell(), SWT.SHEET);
+        dialog.setFilterExtensions(FILE_IMPORT_MASK);
+        dialog.setText(DataTransferMessages.WizardProjectsImportPage_SelectArchiveDialogTitle);
 
-		String fileName = archivePathField.getText().trim();
-		if (fileName.length() == 0) {
-			fileName = previouslyBrowsedArchive;
-		}
+        String fileName = archivePathField.getText().trim();
+        if (fileName.length() == 0) {
+            fileName = previouslyBrowsedArchive;
+        }
 
-		if (fileName.length() == 0) {
-            dialog.setFilterPath(ResourcesPlugin.getWorkspace()
-					.getRoot().getLocation().toOSString());
-		} else {
-			File path = new File(fileName).getParentFile();
-			if (path != null && path.exists()) {
-				dialog.setFilterPath(path.toString());
-			}
-		}
+        if (fileName.length() == 0) {
+            dialog.setFilterPath(ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString());
+        } else {
+            File path = new File(fileName).getParentFile();
+            if (path != null && path.exists()) {
+                dialog.setFilterPath(path.toString());
+            }
+        }
 
-		String selectedArchive = dialog.open();
-		if (selectedArchive != null) {
-			previouslyBrowsedArchive = selectedArchive;
-			archivePathField.setText(previouslyBrowsedArchive);
-			updateProjectsList(selectedArchive);
-		}
+        String selectedArchive = dialog.open();
+        if (selectedArchive != null) {
+            previouslyBrowsedArchive = selectedArchive;
+            archivePathField.setText(previouslyBrowsedArchive);
+            updateProjectsList(selectedArchive);
+        }
 
-	}
+    }
 
-	/**
-	 * The browse button has been selected. Select the location.
-	 */
-	protected void handleLocationDirectoryButtonPressed() {
+    /**
+     * The browse button has been selected. Select the location.
+     */
+    protected void handleLocationDirectoryButtonPressed() {
 
-		DirectoryDialog dialog = new DirectoryDialog(directoryPathField
-				.getShell(), SWT.SHEET);
-		dialog
-				.setMessage(DataTransferMessages.WizardProjectsImportPage_SelectDialogTitle);
+        DirectoryDialog dialog = new DirectoryDialog(directoryPathField.getShell(), SWT.SHEET);
+        dialog.setMessage(DataTransferMessages.WizardProjectsImportPage_SelectDialogTitle);
 
-		String dirName = directoryPathField.getText().trim();
-		if (dirName.length() == 0) {
-			dirName = previouslyBrowsedDirectory;
-		}
+        String dirName = directoryPathField.getText().trim();
+        if (dirName.length() == 0) {
+            dirName = previouslyBrowsedDirectory;
+        }
 
-		if (dirName.length() == 0) {
-            dialog.setFilterPath(ResourcesPlugin.getWorkspace()
-					.getRoot().getLocation().toOSString());
-		} else {
-			File path = new File(dirName);
-			if (path.exists()) {
-				dialog.setFilterPath(new Path(dirName).toOSString());
-			}
-		}
+        if (dirName.length() == 0) {
+            dialog.setFilterPath(ResourcesPlugin.getWorkspace().getRoot().getLocation().toOSString());
+        } else {
+            File path = new File(dirName);
+            if (path.exists()) {
+                dialog.setFilterPath(new Path(dirName).toOSString());
+            }
+        }
 
-		String selectedDirectory = dialog.open();
-		if (selectedDirectory != null) {
-			previouslyBrowsedDirectory = selectedDirectory;
-			directoryPathField.setText(previouslyBrowsedDirectory);
-			updateProjectsList(selectedDirectory);
-		}
+        String selectedDirectory = dialog.open();
+        if (selectedDirectory != null) {
+            previouslyBrowsedDirectory = selectedDirectory;
+            directoryPathField.setText(previouslyBrowsedDirectory);
+            updateProjectsList(selectedDirectory);
+        }
 
-	}
+    }
 
-	/**
-	 * Determine if the project with the given name is in the current workspace.
-	 * 
-	 * @param projectName
-	 *            String the project name to check
-	 * @return boolean true if the project with the given name is in this
-	 *         workspace
-	 */
-	private boolean isProjectInWorkspace(String projectName) {
-		if (projectName == null) {
-			return false;
-		}
-		IProject[] workspaceProjects = getProjectsInWorkspace();
-		for (int i = 0; i < workspaceProjects.length; i++) {
-			if (projectName.equals(workspaceProjects[i].getName())) {
-				return true;
-			}
-		}
-		return false;
-	}
+    /**
+     * Determine if the project with the given name is in the current workspace.
+     * 
+     * @param projectName
+     *            String the project name to check
+     * @return boolean true if the project with the given name is in this
+     *         workspace
+     */
+    private boolean isProjectInWorkspace(String projectName) {
+        if (projectName == null) {
+            return false;
+        }
+        IProject[] workspaceProjects = getProjectsInWorkspace();
+        for (int i = 0; i < workspaceProjects.length; i++) {
+            if (projectName.equals(workspaceProjects[i].getName())) {
+                return true;
+            }
+        }
+        return false;
+    }
 
-	/**
-	 * Performs clean-up if the user cancels the wizard without doing anything
-	 */
-	public void performCancel() {
-		ArchiveFileManipulations.closeStructureProvider(structureProvider,
-				getShell());
-	}
+    /**
+     * Performs clean-up if the user cancels the wizard without doing anything
+     */
+    public void performCancel() {
+        ArchiveFileManipulations.closeStructureProvider(structureProvider, getShell());
+    }
 
-	/**
-	 * The <code>WizardDataTransfer</code> implementation of this
-	 * <code>IOverwriteQuery</code> method asks the user whether the existing
-	 * resource at the given path should be overwritten.
-	 * 
-	 * @param pathString
-	 * @return the user's reply: one of <code>"YES"</code>, <code>"NO"</code>,
-	 *         <code>"ALL"</code>, or <code>"CANCEL"</code>
-	 */
-	public String queryOverwrite(String pathString) {
+    /**
+     * The <code>WizardDataTransfer</code> implementation of this
+     * <code>IOverwriteQuery</code> method asks the user whether the existing
+     * resource at the given path should be overwritten.
+     * 
+     * @param pathString
+     * @return the user's reply: one of <code>"YES"</code>, <code>"NO"</code>,
+     *         <code>"ALL"</code>, or <code>"CANCEL"</code>
+     */
+    public String queryOverwrite(String pathString) {
 
-		Path path = new Path(pathString);
+        Path path = new Path(pathString);
 
         if (path.segmentCount() > 1 && ".settings".equals(path.segment(1))) {
             return NO;
         }
 
-		String messageString;
-		// Break the message up if there is a file name and a directory
-		// and there are at least 2 segments.
-		if (path.getFileExtension() == null || path.segmentCount() < 2) {
-			messageString = NLS.bind(
-					IDEWorkbenchMessages.WizardDataTransfer_existsQuestion,
-					pathString);
-		} else {
-			messageString = NLS
-					.bind(
-							IDEWorkbenchMessages.WizardDataTransfer_overwriteNameAndPathQuestion,
-							path.lastSegment(), path.removeLastSegments(1)
-									.toOSString());
-		}
+        String messageString;
+        // Break the message up if there is a file name and a directory
+        // and there are at least 2 segments.
+        if (path.getFileExtension() == null || path.segmentCount() < 2) {
+            messageString = NLS.bind(IDEWorkbenchMessages.WizardDataTransfer_existsQuestion, pathString);
+        } else {
+            messageString = NLS.bind(IDEWorkbenchMessages.WizardDataTransfer_overwriteNameAndPathQuestion,
+                    path.lastSegment(), path.removeLastSegments(1).toOSString());
+        }
 
-		final MessageDialog dialog = new MessageDialog(getContainer()
-				.getShell(), IDEWorkbenchMessages.Question, null,
-				messageString, MessageDialog.QUESTION, new String[] {
-						IDialogConstants.YES_LABEL,
-						IDialogConstants.YES_TO_ALL_LABEL,
-						IDialogConstants.NO_LABEL,
-						IDialogConstants.NO_TO_ALL_LABEL,
-						IDialogConstants.CANCEL_LABEL }, 0) {
-			protected int getShellStyle() {
-				return super.getShellStyle() | SWT.SHEET;
-			}
-		};
-		String[] response = new String[] { YES, ALL, NO, NO_ALL, CANCEL };
-		// run in syncExec because callback is from an operation,
-		// which is probably not running in the UI thread.
-		getControl().getDisplay().syncExec(new Runnable() {
-			public void run() {
-				dialog.open();
-			}
-		});
-		return dialog.getReturnCode() < 0 ? CANCEL : response[dialog
-				.getReturnCode()];
-	}
+        final MessageDialog dialog = new MessageDialog(getContainer().getShell(), IDEWorkbenchMessages.Question, null,
+                messageString, MessageDialog.QUESTION, new String[] { IDialogConstants.YES_LABEL,
+                        IDialogConstants.YES_TO_ALL_LABEL, IDialogConstants.NO_LABEL, IDialogConstants.NO_TO_ALL_LABEL,
+                        IDialogConstants.CANCEL_LABEL }, 0) {
+            protected int getShellStyle() {
+                return super.getShellStyle() | SWT.SHEET;
+            }
+        };
+        String[] response = new String[] { YES, ALL, NO, NO_ALL, CANCEL };
+        // run in syncExec because callback is from an operation,
+        // which is probably not running in the UI thread.
+        getControl().getDisplay().syncExec(new Runnable() {
+            public void run() {
+                dialog.open();
+            }
+        });
+        return dialog.getReturnCode() < 0 ? CANCEL : response[dialog.getReturnCode()];
+    }
 
-	/**
-	 * Use the dialog store to restore widget values to the values that they
-	 * held last time this wizard was used to completion, or alternatively, if
-	 * an initial path is specified, use it to select values.
-	 * 
-	 * Method declared public only for use of tests.
-	 */
-	public void restoreWidgetValues() {
+    /**
+     * Use the dialog store to restore widget values to the values that they
+     * held last time this wizard was used to completion, or alternatively, if
+     * an initial path is specified, use it to select values.
+     * 
+     * Method declared public only for use of tests.
+     */
+    public void restoreWidgetValues() {
 
-		// First, check to see if we have resore settings, and
-		// take care of the checkbox
-		IDialogSettings settings = getDialogSettings();
+        // First, check to see if we have resore settings, and
+        // take care of the checkbox
+        IDialogSettings settings = getDialogSettings();
 
-		// Second, check to see if we don't have an initial path,
-		// and if we do have restore settings. If so, set the
-		// radio selection properly to restore settings
+        // Second, check to see if we don't have an initial path,
+        // and if we do have restore settings. If so, set the
+        // radio selection properly to restore settings
 
-		if (initialPath == null && settings != null) {
-			// radio selection
-			boolean archiveSelected = settings
-					.getBoolean(STORE_ARCHIVE_SELECTED);
-			projectFromDirectoryRadio.setSelection(!archiveSelected);
-			projectFromArchiveRadio.setSelection(archiveSelected);
-			if (archiveSelected) {
-				archiveRadioSelected();
-			} else {
-				directoryRadioSelected();
-			}
-		}
-		// Third, if we do have an initial path, set the proper
-		// path and radio buttons to the initial value. Move
-		// cursor to the end of the path so user can see the
-		// most relevant part (directory / archive name)
-		else if (initialPath != null) {
-			boolean dir = new File(initialPath).isDirectory();
+        if (settings != null) {
+            // radio selection
+            boolean archiveSelected = settings.getBoolean(STORE_ARCHIVE_SELECTED);
+            projectFromDirectoryRadio.setSelection(!archiveSelected);
+            projectFromArchiveRadio.setSelection(archiveSelected);
+            if (archiveSelected) {
+                archiveRadioSelected();
+            } else {
+                directoryRadioSelected();
+            }
+        }
+    }
 
-			projectFromDirectoryRadio.setSelection(dir);
-			projectFromArchiveRadio.setSelection(!dir);
-
-			if (dir) {
-				directoryPathField.setText(initialPath);
-				directoryPathField.setSelection(initialPath.length());
-				directoryRadioSelected();
-			} else {
-				archivePathField.setText(initialPath);
-				archivePathField.setSelection(initialPath.length());
-				archiveRadioSelected();
-			}
-		}
-	}
+    /**
+     * Since Finish was pressed, write widget values to the dialog store so that
+     * they will persist into the next invocation of this wizard page.
+     * 
+     * Method declared public only for use of tests.
+     */
+    public void saveWidgetValues() {
+        IDialogSettings settings = getDialogSettings();
+        if (settings != null) {
+            settings.put(STORE_ARCHIVE_SELECTED, projectFromArchiveRadio.getSelection());
+        }
+    }
 
-	/**
-	 * Since Finish was pressed, write widget values to the dialog store so that
-	 * they will persist into the next invocation of this wizard page.
-	 * 
-	 * Method declared public only for use of tests.
-	 */
-	public void saveWidgetValues() {
-		IDialogSettings settings = getDialogSettings();
-		if (settings != null) {
-			settings.put(STORE_ARCHIVE_SELECTED, projectFromArchiveRadio
-					.getSelection());
-		}
-	}
+    /*
+     * (non-Javadoc) Method declared on IDialogPage. Set the focus on path
+     * fields when page becomes visible.
+     */
+    public void setVisible(boolean visible) {
+        super.setVisible(visible);
+        if (visible && this.projectFromDirectoryRadio.getSelection()) {
+            this.directoryPathField.setFocus();
+        }
+        if (visible && this.projectFromArchiveRadio.getSelection()) {
+            this.archivePathField.setFocus();
+        }
+    }
 
-	/*
-	 * (non-Javadoc) Method declared on IDialogPage. Set the focus on path
-	 * fields when page becomes visible.
-	 */
-	public void setVisible(boolean visible) {
-		super.setVisible(visible);
-		if (visible && this.projectFromDirectoryRadio.getSelection()) {
-			this.directoryPathField.setFocus();
-		}
-		if (visible && this.projectFromArchiveRadio.getSelection()) {
-			this.archivePathField.setFocus();
-		}
-	}
+    /**
+     * Update the list of projects based on path. Method declared public only
+     * for test suite.
+     * 
+     * @param path
+     */
+    public void updateProjectsList(final String path) {
+        // on an empty path empty selectedProjects
+        if (path == null || path.length() == 0) {
+            setMessage("Select a directory to search for existing WRT projects.");
+            selectedProjects = new ProjectRecord[0];
+            projectsList.refresh(true);
+            projectsList.setCheckedElements(selectedProjects);
+            setPageComplete(projectsList.getCheckedElements().length > 0);
+            lastPath = path;
+            return;
+        }
 
-	/**
-	 * Update the list of projects based on path. Method declared public only
-	 * for test suite.
-	 * 
-	 * @param path
-	 */
-	public void updateProjectsList(final String path) {
-		// on an empty path empty selectedProjects
-		if (path == null || path.length() == 0) {
-            setMessage("Select a directory to search for existing WRT projects.");
-			selectedProjects = new ProjectRecord[0];
-			projectsList.refresh(true);
-			projectsList.setCheckedElements(selectedProjects);
-			setPageComplete(projectsList.getCheckedElements().length > 0);
-			lastPath = path;
-			return;
-		}
+        final File directory = new File(path);
+        long modified = directory.lastModified();
+        if (path.equals(lastPath) && lastModified == modified) {
+            // since the file/folder was not modified and the path did not
+            // change, no refreshing is required
+            return;
+        }
 
-		final File directory = new File(path);
-		long modified = directory.lastModified();
-		if (path.equals(lastPath) && lastModified == modified) {
-			// since the file/folder was not modified and the path did not
-			// change, no refreshing is required
-			return;
-		}
+        lastPath = path;
+        lastModified = modified;
 
-		lastPath = path;
-		lastModified = modified;
+        // We can't access the radio button from the inner class so get the
+        // status beforehand
+        final boolean dirSelected = this.projectFromDirectoryRadio.getSelection();
+        try {
+            getContainer().run(true, true, new IRunnableWithProgress() {
 
-		// We can't access the radio button from the inner class so get the
-		// status beforehand
-		final boolean dirSelected = this.projectFromDirectoryRadio
-				.getSelection();
-		try {
-			getContainer().run(true, true, new IRunnableWithProgress() {
-
-				/*
-				 * (non-Javadoc)
-				 * 
-				 * @see
-				 * org.eclipse.jface.operation.IRunnableWithProgress#run(org
-				 * .eclipse.core.runtime.IProgressMonitor)
-				 */
-				public void run(IProgressMonitor monitor) {
+                /*
+                 * (non-Javadoc)
+                 * 
+                 * @see
+                 * org.eclipse.jface.operation.IRunnableWithProgress#run(org
+                 * .eclipse.core.runtime.IProgressMonitor)
+                 */
+                public void run(IProgressMonitor monitor) {
 
-					monitor
-							.beginTask(
-									DataTransferMessages.WizardProjectsImportPage_SearchingMessage,
-									100);
-					selectedProjects = new ProjectRecord[0];
-					Collection files = new ArrayList();
-					monitor.worked(10);
-					if (!dirSelected
-							&& ArchiveFileManipulations.isTarFile(path)) {
-						TarFile sourceTarFile = getSpecifiedTarSourceFile(path);
-						if (sourceTarFile == null) {
-							return;
-						}
+                    monitor.beginTask(DataTransferMessages.WizardProjectsImportPage_SearchingMessage, 100);
+                    selectedProjects = new ProjectRecord[0];
+                    Collection files = new ArrayList();
+                    monitor.worked(10);
+                    if (!dirSelected && ArchiveFileManipulations.isTarFile(path)) {
+                        TarFile sourceTarFile = getSpecifiedTarSourceFile(path);
+                        if (sourceTarFile == null) {
+                            return;
+                        }
 
-						structureProvider = new TarLeveledStructureProvider(
-								sourceTarFile);
-						Object child = structureProvider.getRoot();
+                        structureProvider = new TarLeveledStructureProvider(sourceTarFile);
+                        Object child = structureProvider.getRoot();
 
-						if (!collectProjectFilesFromProvider(files, child, 0,
-								monitor)) {
-							return;
-						}
-						Iterator filesIterator = files.iterator();
-						selectedProjects = new ProjectRecord[files.size()];
-						int index = 0;
-						monitor.worked(50);
-						monitor
-								.subTask(DataTransferMessages.WizardProjectsImportPage_ProcessingMessage);
-						while (filesIterator.hasNext()) {
-							selectedProjects[index++] = (ProjectRecord) filesIterator
-									.next();
-						}
-					} else if (!dirSelected
-							&& ArchiveFileManipulations.isZipFile(path)) {
-						ZipFile sourceFile = getSpecifiedZipSourceFile(path);
-						if (sourceFile == null) {
-							return;
-						}
-						structureProvider = new ZipLeveledStructureProvider(
-								sourceFile);
-						Object child = structureProvider.getRoot();
+                        if (!collectProjectFilesFromProvider(files, child, 0, monitor)) {
+                            return;
+                        }
+                        Iterator filesIterator = files.iterator();
+                        selectedProjects = new ProjectRecord[files.size()];
+                        int index = 0;
+                        monitor.worked(50);
+                        monitor.subTask(DataTransferMessages.WizardProjectsImportPage_ProcessingMessage);
+                        while (filesIterator.hasNext()) {
+                            selectedProjects[index++] = (ProjectRecord) filesIterator.next();
+                        }
+                    } else if (!dirSelected && ArchiveFileManipulations.isZipFile(path)) {
+                        ZipFile sourceFile = getSpecifiedZipSourceFile(path);
+                        if (sourceFile == null) {
+                            return;
+                        }
+                        structureProvider = new ZipLeveledStructureProvider(sourceFile);
+                        Object child = structureProvider.getRoot();
 
-						if (!collectProjectFilesFromProvider(files, child, 0,
-								monitor)) {
-							return;
-						}
-						Iterator filesIterator = files.iterator();
-						selectedProjects = new ProjectRecord[files.size()];
-						int index = 0;
-						monitor.worked(50);
-						monitor
-								.subTask(DataTransferMessages.WizardProjectsImportPage_ProcessingMessage);
-						while (filesIterator.hasNext()) {
-							selectedProjects[index++] = (ProjectRecord) filesIterator
-									.next();
-						}
-					}
+                        if (!collectProjectFilesFromProvider(files, child, 0, monitor)) {
+                            return;
+                        }
+                        Iterator filesIterator = files.iterator();
+                        selectedProjects = new ProjectRecord[files.size()];
+                        int index = 0;
+                        monitor.worked(50);
+                        monitor.subTask(DataTransferMessages.WizardProjectsImportPage_ProcessingMessage);
+                        while (filesIterator.hasNext()) {
+                            selectedProjects[index++] = (ProjectRecord) filesIterator.next();
+                        }
+                    }
 
-					else if (dirSelected && directory.isDirectory()) {
+                    else if (dirSelected && directory.isDirectory()) {
 
-						if (!collectProjectFilesFromDirectory(files, directory,
-								null, monitor)) {
-							return;
-						}
-						Iterator filesIterator = files.iterator();
-						selectedProjects = new ProjectRecord[files.size()];
-						int index = 0;
-						monitor.worked(50);
-						monitor
-								.subTask(DataTransferMessages.WizardProjectsImportPage_ProcessingMessage);
-						while (filesIterator.hasNext()) {
-							File file = (File) filesIterator.next();
+                        if (!collectProjectFilesFromDirectory(files, directory, null, monitor)) {
+                            return;
+                        }
+                        Iterator filesIterator = files.iterator();
+                        selectedProjects = new ProjectRecord[files.size()];
+                        int index = 0;
+                        monitor.worked(50);
+                        monitor.subTask(DataTransferMessages.WizardProjectsImportPage_ProcessingMessage);
+                        while (filesIterator.hasNext()) {
+                            File file = (File) filesIterator.next();
                             selectedProjects[index] = new FileSystemProject(file);
-							index++;
-						}
-					} else {
-						monitor.worked(60);
-					}
-					monitor.done();
-				}
+                            index++;
+                        }
+                    } else {
+                        monitor.worked(60);
+                    }
+                    monitor.done();
+                }
 
-			});
-		} catch (InvocationTargetException e) {
+            });
+        } catch (InvocationTargetException e) {
             Activator.log(e.getMessage(), e);
-		} catch (InterruptedException e) {
-			// Nothing to do if the user interrupts.
-		}
+        } catch (InterruptedException e) {
+            // Nothing to do if the user interrupts.
+        }
 
-		projectsList.refresh(true);
-		ProjectRecord[] projects = getProjectRecords();
-		boolean displayWarning = false;
-		for (int i = 0; i < projects.length; i++) {
+        projectsList.refresh(true);
+        ProjectRecord[] projects = getProjectRecords();
+        boolean displayWarning = false;
+        for (int i = 0; i < projects.length; i++) {
             if (projects[i].hasConflicts()) {
-				displayWarning = true;
-				projectsList.setGrayed(projects[i], true);
-			} else {
-				projectsList.setChecked(projects[i], true);
-			}
-		}
+                displayWarning = true;
+                projectsList.setGrayed(projects[i], true);
+            } else {
+                projectsList.setChecked(projects[i], true);
+            }
+        }
 
-		if (displayWarning) {
-			setMessage(
-					DataTransferMessages.WizardProjectsImportPage_projectsInWorkspace,
-					WARNING);
-		} else {
+        if (displayWarning) {
+            setMessage(DataTransferMessages.WizardProjectsImportPage_projectsInWorkspace, WARNING);
+        } else {
             setMessage("Select a directory to search for existing WRT projects.");
-		}
-		setPageComplete(projectsList.getCheckedElements().length > 0);
-		if (selectedProjects.length == 0) {
-			setMessage(
-					DataTransferMessages.WizardProjectsImportPage_noProjectsToImport,
-					WARNING);
-		}
-	}
+        }
+        setPageComplete(projectsList.getCheckedElements().length > 0);
+        if (selectedProjects.length == 0) {
+            setMessage(DataTransferMessages.WizardProjectsImportPage_noProjectsToImport, WARNING);
+        }
+    }
 }