[jbosstools-commits] JBoss Tools SVN: r35397 - in trunk/common/plugins: org.jboss.tools.common.jdt and 25 other directories.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Wed Oct 5 17:29:15 EDT 2011


Author: fbricon
Date: 2011-10-05 17:29:14 -0400 (Wed, 05 Oct 2011)
New Revision: 35397

Added:
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/.classpath
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/.gitignore
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/.project
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/.settings/
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/.settings/org.eclipse.jdt.core.prefs
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/.settings/org.eclipse.m2e.core.prefs
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/META-INF/
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/META-INF/MANIFEST.MF
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/build.properties
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/plugin.properties
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/plugin.xml
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/pom.xml
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/JDTExtUIActivator.java
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/Messages.java
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/buildpath/
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/buildpath/dialog/
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/buildpath/dialog/MaterializeLibraryDialog.java
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/buildpath/handlers/
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/buildpath/handlers/MaterializeLibraryHandler.java
   trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/messages.properties
   trunk/common/plugins/org.jboss.tools.common.jdt/
   trunk/common/plugins/org.jboss.tools.common.jdt/.classpath
   trunk/common/plugins/org.jboss.tools.common.jdt/.gitignore
   trunk/common/plugins/org.jboss.tools.common.jdt/.project
   trunk/common/plugins/org.jboss.tools.common.jdt/.settings/
   trunk/common/plugins/org.jboss.tools.common.jdt/.settings/org.eclipse.jdt.core.prefs
   trunk/common/plugins/org.jboss.tools.common.jdt/.settings/org.eclipse.m2e.core.prefs
   trunk/common/plugins/org.jboss.tools.common.jdt/META-INF/
   trunk/common/plugins/org.jboss.tools.common.jdt/META-INF/MANIFEST.MF
   trunk/common/plugins/org.jboss.tools.common.jdt/build.properties
   trunk/common/plugins/org.jboss.tools.common.jdt/plugin.properties
   trunk/common/plugins/org.jboss.tools.common.jdt/plugin.xml
   trunk/common/plugins/org.jboss.tools.common.jdt/pom.xml
   trunk/common/plugins/org.jboss.tools.common.jdt/src/
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/JDTExtActivator.java
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/Messages.java
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/buildpath/
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/buildpath/ILibraryMaterializationPostProcessor.java
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/buildpath/ILibraryMaterializationPostProcessorFactory.java
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/buildpath/MaterializeLibraryJob.java
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/internal/
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/internal/buildpath/
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/internal/buildpath/LibraryMaterializationPostProcessorFactory.java
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/internal/buildpath/MavenLibraryMaterializationPostProcessor.java
   trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/messages.properties
Modified:
   trunk/common/plugins/pom.xml
Log:
JBIDE-8972  : initial "Materialize Classpath container" commit

Added: trunk/common/plugins/org.jboss.tools.common.jdt/.classpath
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/.classpath	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/.classpath	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: trunk/common/plugins/org.jboss.tools.common.jdt/.gitignore
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/.gitignore	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/.gitignore	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,2 @@
+/target
+/bin

Added: trunk/common/plugins/org.jboss.tools.common.jdt/.project
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/.project	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/.project	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.jboss.tools.common.jdt</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+	<linkedResources>
+		<link>
+			<name>lib-org.jboss.tools.common_3.3.0.v20111004-2137-H487-M4</name>
+			<type>2</type>
+			<location>/home/fbricon/Dev/eclipses/Indigo-SR1/plugins/org.jboss.tools.common_3.3.0.v20111004-2137-H487-M4</location>
+		</link>
+	</linkedResources>
+</projectDescription>

Added: trunk/common/plugins/org.jboss.tools.common.jdt/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/.settings/org.eclipse.jdt.core.prefs	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/.settings/org.eclipse.jdt.core.prefs	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,8 @@
+#Sun Jul 03 19:41:52 CEST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6

Added: trunk/common/plugins/org.jboss.tools.common.jdt/.settings/org.eclipse.m2e.core.prefs
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/.settings/org.eclipse.m2e.core.prefs	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/.settings/org.eclipse.m2e.core.prefs	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,5 @@
+#Fri Sep 16 10:56:24 CEST 2011
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1

Added: trunk/common/plugins/org.jboss.tools.common.jdt/META-INF/MANIFEST.MF
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/META-INF/MANIFEST.MF	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %BundleName
+Bundle-SymbolicName: org.jboss.tools.common.jdt;singleton:=true
+Bundle-Version: 3.3.0.qualifier
+Bundle-Activator: org.jboss.tools.common.jdt.core.JDTExtActivator
+Require-Bundle: org.eclipse.core.runtime;bundle-version="3.7.0",
+ org.eclipse.jdt.core;bundle-version="3.7.0",
+ org.eclipse.core.variables;bundle-version="3.2.500",
+ org.eclipse.core.resources,
+ org.apache.commons.io,
+ org.jboss.tools.common
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-Vendor: %BundleVendor
+Bundle-Localization: plugin
+Export-Package: org.jboss.tools.common.jdt.core,
+ org.jboss.tools.common.jdt.core.buildpath
+Bundle-ActivationPolicy: lazy

Added: trunk/common/plugins/org.jboss.tools.common.jdt/build.properties
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/build.properties	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/build.properties	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               plugin.properties

Added: trunk/common/plugins/org.jboss.tools.common.jdt/plugin.properties
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/plugin.properties	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/plugin.properties	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,3 @@
+#Properties file for org.jboss.tools.common.jdt
+BundleVendor = JBoss by Red Hat
+BundleName = JBoss Tools JDT Extension
\ No newline at end of file

Added: trunk/common/plugins/org.jboss.tools.common.jdt/plugin.xml
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/plugin.xml	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/plugin.xml	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.5"?>
+<plugin>
+ 
+</plugin>

Added: trunk/common/plugins/org.jboss.tools.common.jdt/pom.xml
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/pom.xml	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/pom.xml	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion> 
+	<parent>
+		<groupId>org.jboss.tools.common</groupId>
+		<artifactId>plugins</artifactId>
+		<version>3.3.0-SNAPSHOT</version>
+	</parent>
+	<groupId>org.jboss.tools.common.plugins</groupId>
+	<artifactId>org.jboss.tools.common.jdt</artifactId> 
+	
+	<packaging>eclipse-plugin</packaging>
+</project>

Added: trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/JDTExtActivator.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/JDTExtActivator.java	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/JDTExtActivator.java	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,87 @@
+/*************************************************************************************
+ * Copyright (c) 2008-2011 Red Hat, Inc. and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     JBoss by Red Hat - Initial implementation.
+ ************************************************************************************/
+package org.jboss.tools.common.jdt.core;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.core.runtime.Status;
+import org.jboss.tools.common.jdt.core.buildpath.ILibraryMaterializationPostProcessorFactory;
+import org.jboss.tools.common.jdt.core.internal.buildpath.LibraryMaterializationPostProcessorFactory;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class JDTExtActivator extends Plugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.jboss.tools.common.jdt"; //$NON-NLS-1$
+	
+	// The shared instance
+	private static JDTExtActivator plugin;
+	
+	private ILibraryMaterializationPostProcessorFactory postProcessorFactory; 
+	
+	/**
+	 * The constructor
+	 */	
+	public JDTExtActivator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+		postProcessorFactory = new LibraryMaterializationPostProcessorFactory();
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		postProcessorFactory = null;
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static JDTExtActivator getDefault() {
+		return plugin;
+	}
+	
+	public static void log(Exception e, String message) {
+		IStatus status = new Status(IStatus.ERROR, PLUGIN_ID, message, e);
+		plugin.getLog().log(status);
+	}
+
+	public static void logWarning(String message) {
+		IStatus status = new Status(IStatus.WARNING, PLUGIN_ID, message);
+		plugin.getLog().log(status);
+	}
+	
+	public static void log(Throwable e) {
+		IStatus status = new Status(IStatus.ERROR, PLUGIN_ID, e
+				.getLocalizedMessage(), e);
+		plugin.getLog().log(status);
+	}
+	
+	public ILibraryMaterializationPostProcessorFactory getLibraryMaterializationPostProcessorFactory() {
+		return postProcessorFactory;
+	}
+}
\ No newline at end of file

Added: trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/Messages.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/Messages.java	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/Messages.java	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,36 @@
+/*************************************************************************************
+ * Copyright (c) 2008-2011 Red Hat, Inc. and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     JBoss by Red Hat - Initial implementation.
+ ************************************************************************************/
+package org.jboss.tools.common.jdt.core;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * 
+ * @author Fred Bricon
+ *
+ */
+public class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.jboss.tools.common.jdt.core.messages"; //$NON-NLS-1$
+	
+	public static String Materialize_Library;
+
+	public static String MaterializeLibraryJob_error_copying_file;
+
+	public static String MaterializeLibraryJob_Error_creating_classpath_entry;
+	
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+	}
+}

Added: trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/buildpath/ILibraryMaterializationPostProcessor.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/buildpath/ILibraryMaterializationPostProcessor.java	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/buildpath/ILibraryMaterializationPostProcessor.java	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,14 @@
+package org.jboss.tools.common.jdt.core.buildpath;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.core.IJavaProject;
+
+public interface ILibraryMaterializationPostProcessor {
+
+	void execute(IJavaProject javaProject, IPath containerPath) throws CoreException;
+
+ 	boolean applies(IJavaProject javaProject, IPath containerPath) throws CoreException;
+
+}

Added: trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/buildpath/ILibraryMaterializationPostProcessorFactory.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/buildpath/ILibraryMaterializationPostProcessorFactory.java	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/buildpath/ILibraryMaterializationPostProcessorFactory.java	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,7 @@
+package org.jboss.tools.common.jdt.core.buildpath;
+
+public interface ILibraryMaterializationPostProcessorFactory {
+
+	public abstract ILibraryMaterializationPostProcessor[] getLibraryMaterializationPostProcessors();
+
+}
\ No newline at end of file

Added: trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/buildpath/MaterializeLibraryJob.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/buildpath/MaterializeLibraryJob.java	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/buildpath/MaterializeLibraryJob.java	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,222 @@
+package org.jboss.tools.common.jdt.core.buildpath;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.LinkedHashSet;
+import java.util.Map;
+
+import org.apache.commons.io.FileUtils;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.resources.WorkspaceJob;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jdt.core.IClasspathContainer;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.osgi.util.NLS;
+import org.jboss.tools.common.jdt.core.JDTExtActivator;
+import org.jboss.tools.common.jdt.core.Messages;
+
+public class MaterializeLibraryJob extends WorkspaceJob {
+
+	private final IFolder libFolder;
+	private final IJavaProject javaProject;
+	private final Map<IPath, String> jars;
+	private final IClasspathContainer containerToRemove;
+
+	public MaterializeLibraryJob(IJavaProject javaProject,
+								 IClasspathContainer containerToMaterialize,
+								 Map<IPath, String> jars, 
+								 IFolder libFolder) {
+		super(Messages.Materialize_Library); 
+		if (javaProject == null || javaProject.getProject() == null) {
+			throw new IllegalArgumentException("Project must not be null");
+		}
+		if (containerToMaterialize == null) {
+			throw new IllegalArgumentException("Container to materialize must not be null");
+		}
+		if (libFolder == null) {
+			throw new IllegalArgumentException("Destination library folder must not be null");
+		}
+		this.javaProject = javaProject;
+		this.libFolder = libFolder;
+		this.containerToRemove = containerToMaterialize;
+		this.jars = jars;
+	}
+
+	@Override
+	public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
+
+		final IPath rootPath = ResourcesPlugin.getWorkspace().getRoot().getLocation();
+		
+		IPath containerToRemovePath = containerToRemove.getPath();
+		
+		LinkedHashSet<IClasspathEntry> newCpes = null;
+		
+		//Create new Classpath entries
+		if (jars != null && !jars.isEmpty()) {
+			newCpes = copyClasspathEntries(monitor,	rootPath);	
+		}
+		
+		// Remove the Classpath Library first
+		removeClasspathContainer(javaProject, containerToRemovePath);
+
+		// Then add the new Classpath entries
+		if (newCpes != null && !newCpes.isEmpty()) {
+			IClasspathEntry[] entries = new IClasspathEntry[newCpes.size()];
+			newCpes.toArray(entries);
+			addToClasspath(javaProject, entries, monitor);
+		}
+
+		//Finally execute post processors (needed to remove project nature, for ex.)
+		for (ILibraryMaterializationPostProcessor processor : getPostProcessors()) {
+			processor.execute(javaProject, containerToRemovePath);
+		}
+
+		javaProject.getProject().refreshLocal(IResource.DEPTH_INFINITE, monitor);
+
+		return Status.OK_STATUS;
+	}
+
+	private LinkedHashSet<IClasspathEntry> copyClasspathEntries(
+			IProgressMonitor monitor, final IPath rootPath)
+			throws CoreException, JavaModelException {
+		
+		int jarSize = jars.size();
+		
+		monitor.beginTask(Messages.Materialize_Library, jarSize); 
+		
+		mkdirs(libFolder, monitor);
+
+		IPath destination = libFolder.getLocation();
+
+		LinkedHashSet<IClasspathEntry> newCpes = new LinkedHashSet<IClasspathEntry>(jarSize);
+
+		IClasspathEntry[] cpEntries = containerToRemove.getClasspathEntries();
+
+		for (IClasspathEntry entry : cpEntries) {
+			if (entry.getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
+				
+				IPath sourceFilePath = entry.getPath();
+				String fileName = jars.get(sourceFilePath);
+				if (fileName == null) {
+					// Jar was not selected
+					continue;
+				}
+				
+				monitor.subTask(fileName);
+				IPath destinationFilePath = destination.append(fileName);
+				try {
+					if ((javaProject.findPackageFragmentRoot(destinationFilePath) == null)// Not already defined
+							&& copy(sourceFilePath, destinationFilePath)) {
+						// TODO handle duplicate files -> rename?
+						// FIXME use absolute / relative paths depending on the
+						// location of the destination folder (in project /
+						// elsewhere in the workspace)
+						// FIXME need a more elegant way to get a relative path
+						// with a leading /
+						IPath relativePath = new Path("/").append(libFolder.getFullPath()).append(fileName); //$NON-NLS-1$
+						IClasspathEntry newEntry = getNewClasspathEntry(entry, relativePath);
+						newCpes.add(newEntry);
+					}
+				} catch (IOException e) {
+					IStatus status = new Status(IStatus.ERROR,
+							JDTExtActivator.PLUGIN_ID, NLS.bind(Messages.MaterializeLibraryJob_error_copying_file, fileName), e);
+					throw new CoreException(status);
+				}
+			} else if (entry.getEntryKind() == IClasspathEntry.CPE_PROJECT) {
+				newCpes.add(entry);
+			}
+		}
+		return newCpes;
+	}
+
+	private ILibraryMaterializationPostProcessor[] getPostProcessors() {
+		ILibraryMaterializationPostProcessorFactory ppFactory = JDTExtActivator.getDefault()
+																  .getLibraryMaterializationPostProcessorFactory();
+		ILibraryMaterializationPostProcessor[] postProcessors = ppFactory.getLibraryMaterializationPostProcessors();
+		return postProcessors;
+	}
+
+	private IClasspathEntry getNewClasspathEntry(IClasspathEntry entry,
+			IPath destinationFilePath) throws CoreException {
+		try {
+			return JavaCore.newLibraryEntry(destinationFilePath,
+					entry.getSourceAttachmentPath(),
+					entry.getSourceAttachmentRootPath(),
+					entry.getAccessRules(), entry.getExtraAttributes(),
+					entry.isExported());
+		} catch (Exception e) {
+			IStatus status = new Status(IStatus.ERROR, JDTExtActivator.PLUGIN_ID, 
+					NLS.bind(Messages.MaterializeLibraryJob_Error_creating_classpath_entry, e.getMessage()), e);
+			throw new CoreException(status);
+		}
+	}
+
+	private void addToClasspath(IJavaProject javaProject,
+			IClasspathEntry[] newCpes, IProgressMonitor monitor)
+			throws JavaModelException {
+		if (newCpes.length > 0) {
+			IClasspathEntry[] originalClasspathEntries = javaProject.getRawClasspath();
+			IClasspathEntry[] newClasspath = new IClasspathEntry[originalClasspathEntries.length + newCpes.length];
+			System.arraycopy(originalClasspathEntries, 0, newClasspath, 0,	originalClasspathEntries.length);
+			System.arraycopy(newCpes, 0, newClasspath, originalClasspathEntries.length, newCpes.length);
+			javaProject.setRawClasspath(newClasspath, monitor);
+		}
+	}
+
+	private boolean copy(IPath sourceFilePath, IPath destinationFilePath)
+			throws IOException {
+		File sourcefile = sourceFilePath.toFile();
+		if (sourcefile.isFile()) {
+			File destinationFile = destinationFilePath.toFile();
+			//Overwrite existing file
+			FileUtils.copyFile(sourcefile, destinationFile);
+			if (destinationFile.exists()) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	private void removeClasspathContainer(IJavaProject javaProject,
+			IPath containerToRemovePath) throws JavaModelException {
+		if (javaProject != null) {
+			// remove classpatch container from JavaProject
+			ArrayList<IClasspathEntry> newEntries = new ArrayList<IClasspathEntry>();
+			for (IClasspathEntry entry : javaProject.getRawClasspath()) {
+				if (!containerToRemovePath.equals(entry.getPath())) {
+					newEntries.add(entry);
+				}
+			}
+			javaProject.setRawClasspath(newEntries.toArray(new IClasspathEntry[newEntries.size()]),	null);
+		}
+	}
+
+	private void mkdirs(final IFolder folder, IProgressMonitor monitor)
+			throws CoreException {
+		if (!folder.exists()) {
+			if (folder.getParent() instanceof IFolder) {
+				mkdirs((IFolder) folder.getParent(), monitor);
+			}
+			folder.create(true /* force */, true /* local */, monitor);
+		} else {
+			IContainer x = folder;
+			while (x instanceof IFolder && x.isDerived()) {
+				x.setDerived(false, monitor);
+				x = x.getParent();
+			}
+		}
+
+	}
+}
\ No newline at end of file

Added: trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/internal/buildpath/LibraryMaterializationPostProcessorFactory.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/internal/buildpath/LibraryMaterializationPostProcessorFactory.java	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/internal/buildpath/LibraryMaterializationPostProcessorFactory.java	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,16 @@
+package org.jboss.tools.common.jdt.core.internal.buildpath;
+
+import org.jboss.tools.common.jdt.core.buildpath.ILibraryMaterializationPostProcessor;
+import org.jboss.tools.common.jdt.core.buildpath.ILibraryMaterializationPostProcessorFactory;
+
+public class LibraryMaterializationPostProcessorFactory implements ILibraryMaterializationPostProcessorFactory {
+
+	/* (non-Javadoc)
+	 * @see org.jboss.tools.common.jdt.core.buildpath.ILibraryMaterializationPostProcessorFactory#getLibraryMaterializationPostProcessors()
+	 */
+	@Override
+	public ILibraryMaterializationPostProcessor[] getLibraryMaterializationPostProcessors() {
+		return new ILibraryMaterializationPostProcessor[]{new MavenLibraryMaterializationPostProcessor()};
+	}
+
+}

Added: trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/internal/buildpath/MavenLibraryMaterializationPostProcessor.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/internal/buildpath/MavenLibraryMaterializationPostProcessor.java	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/internal/buildpath/MavenLibraryMaterializationPostProcessor.java	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,26 @@
+package org.jboss.tools.common.jdt.core.internal.buildpath;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.jdt.core.IJavaProject;
+import org.jboss.tools.common.EclipseUtil;
+import org.jboss.tools.common.jdt.core.buildpath.ILibraryMaterializationPostProcessor;
+
+public class MavenLibraryMaterializationPostProcessor implements ILibraryMaterializationPostProcessor {
+
+  private static final String MAVEN_NATURE_ID = "org.eclipse.m2e.core.maven2Nature";
+  
+  public boolean applies(IJavaProject javaProject, IPath containerPath) throws CoreException {
+	  boolean applies = javaProject != null && javaProject.getProject().hasNature(MAVEN_NATURE_ID)
+	  && ("org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER".equals(containerPath.toPortableString()));	  
+	  return applies;
+  }
+  
+  public void execute(IJavaProject javaProject, IPath containerPath) throws CoreException {
+    if (applies(javaProject, containerPath)) {
+      System.err.println("Removing "+ MAVEN_NATURE_ID + " from "+ javaProject.getProject().getName());
+      EclipseUtil.removeNatureFromProject(javaProject.getProject(), MAVEN_NATURE_ID);
+    }
+  }
+
+}

Added: trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/messages.properties
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/messages.properties	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt/src/org/jboss/tools/common/jdt/core/messages.properties	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,4 @@
+Materialize_Library=Materialize Library
+
+MaterializeLibraryJob_error_copying_file=An error occured while copying {0}
+MaterializeLibraryJob_Error_creating_classpath_entry=Error creating the classpath entry :{0}

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/.classpath
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/.classpath	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/.classpath	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/.gitignore
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/.gitignore	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/.gitignore	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,2 @@
+/target
+/bin

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/.project
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/.project	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/.project	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.jboss.tools.common.jdt.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/.settings/org.eclipse.jdt.core.prefs	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/.settings/org.eclipse.jdt.core.prefs	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,8 @@
+#Sun Jul 03 19:41:52 CEST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/.settings/org.eclipse.m2e.core.prefs
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/.settings/org.eclipse.m2e.core.prefs	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/.settings/org.eclipse.m2e.core.prefs	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,5 @@
+#Fri Sep 16 10:56:24 CEST 2011
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/META-INF/MANIFEST.MF
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/META-INF/MANIFEST.MF	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/META-INF/MANIFEST.MF	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %BundleName
+Bundle-SymbolicName: org.jboss.tools.common.jdt.ui;singleton:=true
+Bundle-Version: 3.3.0.qualifier
+Bundle-Activator: org.jboss.tools.common.jdt.ui.JDTExtUIActivator
+Require-Bundle: org.eclipse.ui;bundle-version="3.7.0",
+ org.eclipse.core.runtime;bundle-version="3.7.0",
+ org.eclipse.jdt.core;bundle-version="3.7.0",
+ org.eclipse.jdt.ui;bundle-version="3.7.0",
+ org.eclipse.core.variables;bundle-version="3.2.500",
+ org.jboss.tools.common.jdt,
+ org.eclipse.core.resources,
+ org.apache.commons.io,
+ org.jboss.tools.common,
+ org.eclipse.jst.j2ee.ui;bundle-version="1.1.500"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-Vendor: %BundleVendor
+Bundle-Localization: plugin
+Export-Package: org.jboss.tools.common.jdt.ui,
+ org.jboss.tools.common.jdt.ui.buildpath.dialog,
+ org.jboss.tools.common.jdt.ui.buildpath.handlers
+Bundle-ActivationPolicy: lazy

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/build.properties
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/build.properties	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/build.properties	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = target/classes/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               plugin.properties

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/plugin.properties
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/plugin.properties	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/plugin.properties	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,3 @@
+#Properties file for org.jboss.tools.common.jdt.ui
+BundleVendor = JBoss by Red Hat
+BundleName = JBoss Tools JDT Extension UI
\ No newline at end of file

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/plugin.xml
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/plugin.xml	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/plugin.xml	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.5"?>
+<plugin>
+   <extension point="org.eclipse.ui.commands">
+      <command
+            id="org.jboss.tools.common.jdt.ui.commands.materializeLibrary"
+            name="Materialize Library"
+            defaultHandler="org.jboss.tools.common.jdt.ui.buildpath.handlers.MaterializeLibraryHandler"
+            >
+      </command>
+   </extension>
+   <extension point="org.eclipse.ui.menus">
+      <menuContribution 
+      	allPopups="true"
+            locationURI="popup:org.eclipse.ui.popup.any?after=additions">
+        <command
+              commandId="org.jboss.tools.common.jdt.ui.commands.materializeLibrary"
+              label="Materialize Library..."
+              mnemonic="M">
+           <visibleWhen checkEnabled="false">
+                 <!--               org.eclipse.jdt.internal.ui.packageview.ClassPathContainer   
+                 <instanceof value="org.eclipse.jdt.internal.ui.packageview.ClassPathContainer"/>
+                 -->
+      			<with variable="selection">
+                  <and>
+                    <count value="1" />
+                    <iterate operator="and">
+                       <adapt type="org.eclipse.jdt.internal.ui.packageview.ClassPathContainer" />
+ 				    </iterate>
+				  </and>
+				</with>
+           </visibleWhen>
+        </command>
+      </menuContribution>
+   </extension>
+   
+   <!-- 
+   <extension point="org.eclipse.ui.popupMenus">
+        <objectContribution id="materializeLibraryPopup"
+                          objectClass="org.eclipse.core.runtime.IAdaptable"
+                          adaptable="true">
+         <action id="materializeLibraryAction"
+                 class="org.jboss.tools.common.jdt.ui.generic.GenericCommandActionDelegate:org.jboss.tools.common.jdt.ui.commands.materializeLibrary"
+                 label="Materialize fucking library"
+                 style="push"
+                 definitionId="materializeLibrary"
+                 menubarPath="org.eclipse.m2e.core.fileMenu/open"
+                 enablesFor="+"/>
+      </objectContribution>
+  </extension>   
+   -->
+</plugin>

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/pom.xml
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/pom.xml	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/pom.xml	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion> 
+	<parent>
+		<groupId>org.jboss.tools.common</groupId>
+		<artifactId>plugins</artifactId>
+		<version>3.3.0-SNAPSHOT</version>
+	</parent>
+	<groupId>org.jboss.tools.common.plugins</groupId>
+	<artifactId>org.jboss.tools.common.jdt.ui</artifactId> 
+	
+	<packaging>eclipse-plugin</packaging>
+</project>

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/JDTExtUIActivator.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/JDTExtUIActivator.java	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/JDTExtUIActivator.java	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,71 @@
+/*************************************************************************************
+ * Copyright (c) 2008-2011 Red Hat, Inc. and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     JBoss by Red Hat - Initial implementation.
+ ************************************************************************************/
+package org.jboss.tools.common.jdt.ui;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class JDTExtUIActivator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.jboss.tools.common.jdt.ui"; //$NON-NLS-1$
+	
+	// The shared instance
+	private static JDTExtUIActivator plugin;
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static JDTExtUIActivator getDefault() {
+		return plugin;
+	}
+	
+	public static void log(Exception e, String message) {
+		IStatus status = new Status(IStatus.ERROR, PLUGIN_ID, message, e);
+		plugin.getLog().log(status);
+	}
+
+	public static void logWarning(String message) {
+		IStatus status = new Status(IStatus.WARNING, PLUGIN_ID, message);
+		plugin.getLog().log(status);
+	}
+	
+	public static void log(Throwable e) {
+		IStatus status = new Status(IStatus.ERROR, PLUGIN_ID, e
+				.getLocalizedMessage(), e);
+		plugin.getLog().log(status);
+	}
+}
\ No newline at end of file

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/Messages.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/Messages.java	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/Messages.java	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,32 @@
+/*************************************************************************************
+ * Copyright (c) 2008-2011 Red Hat, Inc. and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     JBoss by Red Hat - Initial implementation.
+ ************************************************************************************/
+package org.jboss.tools.common.jdt.ui;
+
+import org.eclipse.osgi.util.NLS;
+
+/**
+ * 
+ * @author Fred Bricon
+ *
+ */
+public class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.jboss.tools.common.jdt.ui.messages"; //$NON-NLS-1$
+	
+	public static String Materialize_Library;
+	
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+	}
+}

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/buildpath/dialog/MaterializeLibraryDialog.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/buildpath/dialog/MaterializeLibraryDialog.java	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/buildpath/dialog/MaterializeLibraryDialog.java	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,373 @@
+/*************************************************************************************
+ * Copyright (c) 2009-2011 Red Hat, Inc. and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     JBoss by Red Hat - Initial implementation.
+ ************************************************************************************/
+package org.jboss.tools.common.jdt.ui.buildpath.dialog;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.IClasspathContainer;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.internal.ui.JavaPluginImages;
+import org.eclipse.jface.dialogs.TitleAreaDialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.CellLabelProvider;
+import org.eclipse.jface.viewers.CheckStateChangedEvent;
+import org.eclipse.jface.viewers.CheckboxTableViewer;
+import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
+import org.eclipse.jface.viewers.ICellEditorValidator;
+import org.eclipse.jface.viewers.ICellModifier;
+import org.eclipse.jface.viewers.ICheckStateListener;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.eclipse.jface.viewers.ViewerCell;
+import org.eclipse.jface.window.ToolTip;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+import org.eclipse.swt.widgets.Text;
+
+public class MaterializeLibraryDialog extends TitleAreaDialog {
+
+  private static final String TITLE = "Materialize Classpath Library";
+
+  private static final String SOURCE_PROPERTY = "SOURCE_PROPERTY";
+
+  private static final String FILENAME_PROPERTY = "FILENAME_PROPERTY";
+
+  private IFolder libFolder;
+  private Map<IClasspathEntry, String> classpathEntryPaths;
+  private Map<IPath, String> selectedClasspathEntryPaths;
+
+  private final String libName;
+  private final IProject project;
+
+  private static Image JAR_IMAGE = JavaPluginImages.DESC_OBJS_EXTJAR.createImage();
+  private static Image PRJ_IMAGE = JavaPluginImages.DESC_OBJS_JAVA_MODEL.createImage();
+
+  // private StringButtonDialogField libFolderDialogField;
+
+  private Text libfolderText;
+
+  private CheckboxTableViewer classpathEntriesViewer;
+
+  public MaterializeLibraryDialog(Shell shell, IProject project, IClasspathContainer containerToMaterialize, String defaultLib) {
+    super(shell);
+    setShellStyle(super.getShellStyle() | SWT.RESIZE | SWT.MODELESS);
+    setTitle(TITLE);
+    this.project = project;
+    IPath folderPath = project.getFullPath().append(defaultLib);
+    libFolder = ResourcesPlugin.getWorkspace().getRoot().getFolder(folderPath);
+    this.libName = containerToMaterialize.getDescription();
+    initClasspathEntryPaths(containerToMaterialize);
+  }
+
+  private void initClasspathEntryPaths(IClasspathContainer container) {
+    IClasspathEntry[] cpEntries =  container.getClasspathEntries();
+    classpathEntryPaths = new LinkedHashMap<IClasspathEntry, String>(cpEntries.length);
+    for (IClasspathEntry entry : cpEntries) {
+      if ((entry.getEntryKind() == IClasspathEntry.CPE_LIBRARY && entry.getPath() != null)
+          || (entry.getEntryKind() == IClasspathEntry.CPE_PROJECT)) {
+          IPath sourceFilePath = entry.getPath();
+          String fileName = sourceFilePath.lastSegment();
+          classpathEntryPaths.put(entry, fileName);
+      }
+    }
+  }
+
+  @Override
+  protected void configureShell(Shell shell) {
+    super.configureShell(shell);
+    shell.setText(TITLE);
+  }
+
+  @Override
+  protected Control createDialogArea(Composite parent) {
+    Composite area = (Composite) super.createDialogArea(parent);
+
+    Composite container = new Composite(area, SWT.NONE);
+    container.setEnabled(true);
+
+    GridLayout layout = new GridLayout(3, false);
+    layout.marginLeft = 12;
+    container.setLayout(layout);
+    container.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+    setTitle(TITLE);
+    setMessage("Copy jars from " + libName);
+
+    // ContainerFieldAdapter adapter= new ContainerFieldAdapter();
+    // libFolderDialogField = new StringButtonDialogField(adapter);
+    // libFolderDialogField.setLabelText("Destination folder");
+    // libFolderDialogField.setButtonLabel("Browse...");
+    // libFolderDialogField.doFillIntoGrid(container,
+    // libFolderDialogField.getNumberOfControls());
+    // LayoutUtil.setWidthHint(libFolderDialogField.getTextControl(null),
+    // convertWidthInCharsToPixels(40));
+
+    Label libFolderLabel = new Label(container, SWT.NONE);
+    libFolderLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
+    libFolderLabel.setText("Destination folder");
+
+    libfolderText = new Text(container, SWT.BORDER);
+    libfolderText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+    libfolderText.setEditable(true);
+    libfolderText.setText(libFolder.getFullPath().toPortableString());
+
+    // libFolderDialogField.setText(libFolder.getFullPath().toPortableString());
+    displayClasspathEntriesTable(container);
+
+    return area;
+  }
+
+  private void displayClasspathEntriesTable(Composite container) {
+    GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true, 2, 4);
+    gd.heightHint = 500;
+    gd.widthHint = 600;
+
+    classpathEntriesViewer = CheckboxTableViewer.newCheckList(container, SWT.BORDER | SWT.MULTI);
+    Table table = classpathEntriesViewer.getTable();
+    table.setFocus();
+    table.setLayoutData(gd);
+    table.setLinesVisible(true);
+    table.setHeaderVisible(true);
+
+    TableColumn emptyColumn = new TableColumn(table, SWT.NONE);
+    emptyColumn.setWidth(20);
+
+    TableViewerColumn sourceColumn = new TableViewerColumn(classpathEntriesViewer, SWT.NONE);
+    sourceColumn.getColumn().setText("Source ");
+    sourceColumn.getColumn().setWidth(300);
+
+
+    TableViewerColumn destinationColumn = new TableViewerColumn(classpathEntriesViewer, SWT.NONE);
+    destinationColumn.getColumn().setText("Copy as...");
+    destinationColumn.getColumn().setWidth(200);
+
+    classpathEntriesViewer.setContentProvider(ArrayContentProvider.getInstance());
+    classpathEntriesViewer.setLabelProvider(new ClasspathEntryLabelProvider());
+    classpathEntriesViewer.addCheckStateListener(new ICheckStateListener() {
+      public void checkStateChanged(CheckStateChangedEvent event) {
+        refresh();
+      }
+    });
+    classpathEntriesViewer.setInput(classpathEntryPaths.entrySet());
+    classpathEntriesViewer.setAllChecked(true);
+
+    
+    addSelectionButton(container, "Select All", true);
+	addSelectionButton(container, "Deselect All", false);
+	
+    addTableListeners();
+
+  }
+
+  private void addTableListeners() {
+    addCellEditors();
+  }
+
+  protected void addCellEditors() {
+    classpathEntriesViewer.setColumnProperties(new String[] {
+        "EMPTY", SOURCE_PROPERTY, FILENAME_PROPERTY });
+
+    TextCellEditor ce = new TextCellEditor(classpathEntriesViewer.getTable()); 
+    ce.setValidator(new ICellEditorValidator() {
+		@Override
+		public String isValid(Object arg0) {
+			String name = arg0.toString();
+			return (checkValidName(name))?null:name;
+		}
+	});
+	
+    CellEditor[] editors = new CellEditor[] {
+        null,
+        new TextCellEditor(classpathEntriesViewer.getTable()),
+        ce };
+    	
+    classpathEntriesViewer.setCellEditors(editors);
+    classpathEntriesViewer.setCellModifier(new FileNameCellModifier());
+  }
+
+  public Map<IPath, String> getSelectedClasspathEntryPaths() {
+    return selectedClasspathEntryPaths;
+  }
+
+  public IFolder getLibFolder() {
+    return libFolder;
+  }
+
+  private static IFolder getLibFolderFromText(String text) {
+    String portablePath = text.replaceAll("\\\\", "/");
+    IPath path = new Path(portablePath);
+    return ResourcesPlugin.getWorkspace().getRoot().getFolder(path);
+  }
+
+  @Override
+  protected void okPressed() {
+    libFolder = getLibFolderFromText(libfolderText.getText());
+    Object[] selection = classpathEntriesViewer.getCheckedElements();
+    selectedClasspathEntryPaths = new LinkedHashMap<IPath, String>(selection.length);
+    for (Object o : selection) {
+      @SuppressWarnings("unchecked")
+      Map.Entry<IClasspathEntry, String> entry = (Map.Entry<IClasspathEntry, String>)o;
+      selectedClasspathEntryPaths.put(entry.getKey().getPath(),entry.getValue());
+    }
+
+    Set<String> duplicates = findDuplicates(selectedClasspathEntryPaths.values()); 
+    if (!duplicates.isEmpty()) {
+  	  setErrorMessage("Duplicate entries found : "+duplicates.toString());
+  	  return;
+    }
+    super.okPressed();
+  }
+
+  private Set<String> findDuplicates(Collection<String> values) {
+	Set<String> uniqueNames = new HashSet<String>(values.size());
+	Set<String> duplicateNames = new HashSet<String>();
+	for (String name : values) {
+		if (!uniqueNames.add(name)) {
+			duplicateNames.add(name);
+		}
+	}
+	return duplicateNames;
+}
+
+private class ClasspathEntryLabelProvider extends LabelProvider implements ITableLabelProvider {
+
+    private static final int SOURCE_COLUMN = 1;
+    private static final int FILENAME_COLUMN = 2;
+
+    public String getColumnText(Object element, int columnIndex) {
+      Map.Entry<IClasspathEntry, String> entry = (Map.Entry<IClasspathEntry, String>) element;
+      StringBuilder text = new StringBuilder();
+      if (entry != null) {
+        if (columnIndex == SOURCE_COLUMN) {
+          text.append(entry.getKey().getPath().lastSegment());
+        } else if (columnIndex == FILENAME_COLUMN){
+          text.append(entry.getValue());
+        }
+      }
+
+       return text.toString();
+    }
+
+    @Override
+    public Image getColumnImage(Object element, int columnIndex) {
+      Image img = null;
+      if (columnIndex > 0) {
+        Map.Entry<IClasspathEntry, String> entry = (Map.Entry<IClasspathEntry, String>) element;
+        if (entry.getKey().getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
+          img = JAR_IMAGE;//return lib image
+        } else {
+          img = PRJ_IMAGE;
+        }
+      }
+      return img;
+    }
+  }
+
+  private Button addSelectionButton(Composite container, String label, final boolean ischecked) {
+		Button button = new Button(container, SWT.NONE);
+		button.setLayoutData(new GridData(SWT.FILL, SWT.UP,
+				false, false, 1, 1));
+		button.setText(label);
+		button.addSelectionListener(new SelectionListener() {
+			public void widgetSelected(SelectionEvent e) {
+				classpathEntriesViewer.setAllChecked(ischecked);
+				refresh();
+			}
+
+			public void widgetDefaultSelected(SelectionEvent e) {
+
+			}
+		});
+		
+		return button;
+	}
+  
+  protected void refresh() {
+	  classpathEntriesViewer.refresh();
+  }
+
+  private class FileNameCellModifier implements ICellModifier {
+
+    public boolean canModify(Object element, String property) {
+      Map.Entry<IClasspathEntry, String> entry = (Map.Entry<IClasspathEntry, String>) element;
+      return (entry.getKey().getEntryKind() == IClasspathEntry.CPE_LIBRARY) && 
+    		  (FILENAME_PROPERTY.equals(property) || SOURCE_PROPERTY.equals(property)) ;
+    }
+
+    public Object getValue(Object element, String property) {
+      Map.Entry<IClasspathEntry, String> entry = (Map.Entry<IClasspathEntry, String>) element;
+      //if(entry.getKey().getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
+        if (property.equals(SOURCE_PROPERTY)) {
+          return entry.getKey().getPath().toOSString();
+        } else if (property.equals(FILENAME_PROPERTY)) {
+          return entry.getValue();
+        }
+      //}
+      return ""; //$NON-NLS-1$
+    }
+
+    public void modify(Object element, String property, Object value) {
+      if (property.equals(FILENAME_PROPERTY)) {
+        TableItem item = (TableItem)element;
+        Map.Entry<IClasspathEntry, String> entry = (Map.Entry<IClasspathEntry, String>) item.getData();
+        if(entry.getKey().getEntryKind() == IClasspathEntry.CPE_LIBRARY) {
+          String name = value.toString();
+          if (checkValidName(name)) {
+              entry.setValue(name);
+              setErrorMessage(null);
+          } 
+          classpathEntriesViewer.refresh();
+        }
+      }
+    }
+  }
+
+	public boolean checkValidName(String name) {
+		//TODO checks for :
+		// - duplicates
+		// - existing CPE
+		IWorkspace workspace = ResourcesPlugin.getWorkspace();
+		IStatus result = workspace.validateName(name, IResource.FILE);
+		if (!result.isOK()) {
+			 return false;
+		}
+		return (name.endsWith(".jar") || name.endsWith(".zip"));
+	}
+
+}

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/buildpath/handlers/MaterializeLibraryHandler.java
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/buildpath/handlers/MaterializeLibraryHandler.java	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/buildpath/handlers/MaterializeLibraryHandler.java	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,185 @@
+/*************************************************************************************
+ * Copyright (c) 2008-2011 Red Hat, Inc. and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *     JBoss by Red Hat - Initial implementation.
+ ************************************************************************************/
+package org.jboss.tools.common.jdt.ui.buildpath.handlers;
+
+import java.util.Map;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResourceRuleFactory;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jdt.core.IClasspathContainer;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jdt.internal.ui.packageview.ClassPathContainer;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.MessageDialogWithToggle;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.handlers.HandlerUtil;
+import org.jboss.tools.common.jdt.core.buildpath.MaterializeLibraryJob;
+import org.jboss.tools.common.jdt.ui.buildpath.dialog.MaterializeLibraryDialog;
+
+/**
+ * Materialize Library Handler.
+ * 
+ * @author Fred Bricon
+ */
+
+ at SuppressWarnings("restriction")
+public class MaterializeLibraryHandler extends AbstractHandler {
+
+  @Override
+  public Object execute(final ExecutionEvent event) throws ExecutionException {
+
+    ISelection selection = HandlerUtil.getCurrentSelection(event);
+    ClassPathContainer libraryFromUI = getSelectedLibrary(selection);
+
+    if (libraryFromUI != null) {
+      
+      IPath path = libraryFromUI.getClasspathEntry().getPath();
+      
+      IJavaProject javaProject = libraryFromUI.getJavaProject();
+      
+      final String libName = libraryFromUI.getLabel();
+      
+      try {
+        IClasspathContainer containerToMaterialize = JavaCore.getClasspathContainer(path, javaProject);
+      
+        IProject project = javaProject.getProject();
+        
+        final IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
+        
+        MaterializeLibraryDialog dialog = new MaterializeLibraryDialog(window.getShell(), 
+                                                                       project,
+                                                                       containerToMaterialize, 
+                                                                       getDefaultLib(libraryFromUI.getClasspathEntry()) 
+                                                                       ); 
+        if(dialog.open() == Dialog.OK) {
+          Map<IPath, String> jarsToMaterialize = dialog.getSelectedClasspathEntryPaths();
+  
+          IFolder libFolder = dialog.getLibFolder();
+          
+          Job job = new MaterializeLibraryJob(javaProject, 
+                                              containerToMaterialize,
+                                              jarsToMaterialize, 
+                                              libFolder);
+          job.setRule(getRule(project));
+          job.addJobChangeListener(new IJobChangeListener() {
+			
+			@Override
+			public void sleeping(IJobChangeEvent arg0) {
+			}
+			
+			@Override
+			public void scheduled(IJobChangeEvent arg0) {
+			}
+			
+			@Override
+			public void running(IJobChangeEvent arg0) {
+			}
+			
+			@Override
+			public void done(IJobChangeEvent changeEvent) {
+				final IStatus result = changeEvent.getResult();
+				if (IStatus.OK != result.getCode()) {
+					Display.getDefault().asyncExec(new Runnable() {
+						public void run() {
+							Shell shell = HandlerUtil.getActiveShell(event);
+							MessageDialogWithToggle.openError(shell, NLS.bind("Error Materializing {0}", libName), result.getMessage()); 
+						}
+					});
+				}
+			}
+			
+			@Override
+			public void awake(IJobChangeEvent arg0) {
+			}
+			
+			@Override
+			public void aboutToRun(IJobChangeEvent arg0) {
+			}
+          });
+          job.schedule(); 
+        }
+
+      } catch (JavaModelException e) {
+        // TODO Auto-generated catch block
+        e.printStackTrace();
+      }
+
+    }
+    return null;
+  }
+
+  private String getDefaultLib(IClasspathEntry classpathEntry) { 
+    String defaultLib = "lib";
+    //TODO look for the value of IClasspathAttribute "org.eclipse.jst.component.dependency"
+    //TODO Even if we get WEB-INF/lib from IClasspathAttribute, how do we get the first mapped source folder 
+    //without depending on the component fwk? extension points (and new component adapter plugin)? reflection?  
+    return defaultLib;
+  }
+
+  private ISchedulingRule getRule(IProject project) {
+    IResourceRuleFactory ruleFactory = ResourcesPlugin.getWorkspace().getRuleFactory();
+    ISchedulingRule rule = ruleFactory.buildRule();
+    return rule;
+  }
+
+  private ClassPathContainer getSelectedLibrary(ISelection selection) {
+    ClassPathContainer container = null;
+    if (selection instanceof IStructuredSelection) {
+      IStructuredSelection structuredSelection = (IStructuredSelection) selection;
+      Object o = structuredSelection.getFirstElement();
+      if (o instanceof ClassPathContainer) {
+        container = (ClassPathContainer) o;
+      }
+    }
+    return container;
+  }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Added: trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/messages.properties
===================================================================
--- trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/messages.properties	                        (rev 0)
+++ trunk/common/plugins/org.jboss.tools.common.jdt.ui/src/org/jboss/tools/common/jdt/ui/messages.properties	2011-10-05 21:29:14 UTC (rev 35397)
@@ -0,0 +1,3 @@
+Materialize_Library=Materialize Library
+
+

Modified: trunk/common/plugins/pom.xml
===================================================================
--- trunk/common/plugins/pom.xml	2011-10-05 21:19:29 UTC (rev 35396)
+++ trunk/common/plugins/pom.xml	2011-10-05 21:29:14 UTC (rev 35397)
@@ -32,6 +32,8 @@
 		<module>org.jboss.tools.common.verification.ui</module>
 		<module>org.jboss.tools.common.jdt.debug</module>
 		<module>org.jboss.tools.common.jdt.debug.ui</module>
+		<module>org.jboss.tools.common.jdt</module>
+		<module>org.jboss.tools.common.jdt.ui</module>
 	</modules>
 </project>
 	



More information about the jbosstools-commits mailing list