Author: snjeza
Date: 2009-07-13 14:49:56 -0400 (Mon, 13 Jul 2009)
New Revision: 16550
Added:
trunk/maven/plugins/org.jboss.tools.maven.core/poms/
trunk/maven/plugins/org.jboss.tools.maven.core/poms/jsf-template11.xml
trunk/maven/plugins/org.jboss.tools.maven.core/poms/jsf-template12.xml
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/PluginUpdater.java
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/ProjectFacetsFactoryTester.java
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/libprov/
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/libprov/MavenLibraryProviderInstallOperation.java
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/libprov/MavenLibraryProviderInstallOperationConfig.java
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/libprov/MavenLibraryProviderUninstallOperation.java
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/AutoResizeTableLayout.java
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/DependencyEditingSupport.java
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/ExclusionEditingSupport.java
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/MavenUserLibraryProviderInstallPanel.java
Modified:
trunk/maven/plugins/org.jboss.tools.maven.core/META-INF/MANIFEST.MF
trunk/maven/plugins/org.jboss.tools.maven.core/build.properties
trunk/maven/plugins/org.jboss.tools.maven.core/plugin.xml
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/MavenCoreActivator.java
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/internal/project/facet/MavenFacetInstallDelegate.java
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/MavenSeamActivator.java
trunk/maven/plugins/org.jboss.tools.maven.ui/META-INF/MANIFEST.MF
trunk/maven/plugins/org.jboss.tools.maven.ui/plugin.xml
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/Activator.java
Log:
https://jira.jboss.org/jira/browse/JBIDE-4565 Adding WTP 3.1 Maven Library Provider
Modified: trunk/maven/plugins/org.jboss.tools.maven.core/META-INF/MANIFEST.MF
===================================================================
--- trunk/maven/plugins/org.jboss.tools.maven.core/META-INF/MANIFEST.MF 2009-07-13
16:38:18 UTC (rev 16549)
+++ trunk/maven/plugins/org.jboss.tools.maven.core/META-INF/MANIFEST.MF 2009-07-13
18:49:56 UTC (rev 16550)
@@ -18,9 +18,13 @@
org.eclipse.jst.j2ee;visibility:=reexport,
org.eclipse.jst.j2ee.web;visibility:=reexport,
org.jboss.tools.common;visibility:=reexport,
- org.eclipse.jdt.launching;visibility:=reexport
+ org.eclipse.jdt.launching;visibility:=reexport,
+ org.eclipse.ui.workbench;visibility:=reexport,
+ org.maven.ide.components.maven_model_edit;visibility:=reexport,
+ org.eclipse.core.expressions
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-Vendor: JBoss by Red Hat
Export-Package: org.jboss.tools.maven.core,
- org.jboss.tools.maven.core.internal.project.facet
+ org.jboss.tools.maven.core.internal.project.facet,
+ org.jboss.tools.maven.core.libprov
Modified: trunk/maven/plugins/org.jboss.tools.maven.core/build.properties
===================================================================
--- trunk/maven/plugins/org.jboss.tools.maven.core/build.properties 2009-07-13 16:38:18
UTC (rev 16549)
+++ trunk/maven/plugins/org.jboss.tools.maven.core/build.properties 2009-07-13 18:49:56
UTC (rev 16550)
@@ -2,4 +2,5 @@
output.. = bin/
bin.includes = META-INF/,\
.,\
- plugin.xml
+ plugin.xml,\
+ poms/
Modified: trunk/maven/plugins/org.jboss.tools.maven.core/plugin.xml
===================================================================
--- trunk/maven/plugins/org.jboss.tools.maven.core/plugin.xml 2009-07-13 16:38:18 UTC (rev
16549)
+++ trunk/maven/plugins/org.jboss.tools.maven.core/plugin.xml 2009-07-13 18:49:56 UTC (rev
16550)
@@ -35,4 +35,64 @@
</supported>
</extension>
+ <extension
point="org.eclipse.jst.common.project.facet.core.libraryProviders">
+ <provider id="maven-library-provider" abstract="true">
+ <label>Maven library provider</label>
+ <priority>500</priority>
+ <action type="INSTALL">
+ <config
class="org.jboss.tools.maven.core.libprov.MavenLibraryProviderInstallOperationConfig"/>
+ <operation
class="org.jboss.tools.maven.core.libprov.MavenLibraryProviderInstallOperation"/>
+ </action>
+
+ <action type="UNINSTALL">
+ <operation
class="org.jboss.tools.maven.core.libprov.MavenLibraryProviderUninstallOperation"/>
+ </action>
+
+ </provider>
+ </extension>
+
+ <extension point="org.eclipse.core.expressions.propertyTesters">
+ <propertyTester
+ namespace="org.jboss.tools.maven.core"
+ properties="projectFacets"
+ type="java.util.Collection"
+ class="org.jboss.tools.maven.core.ProjectFacetsFactoryTester"
+ id="org.jboss.tools.maven.core.ProjectFacetsFactoryTester">
+ </propertyTester>
+ </extension>
+
+ <extension
point="org.eclipse.jst.common.project.facet.core.libraryProviders">
+ <provider id="jsf12-maven-library-provider"
extends="maven-library-provider">
+ <label>Maven JSF 1.2 Libraries</label>
+ <param name="template"
value="platform:/plugin/org.jboss.tools.maven.core/poms/jsf-template12.xml"/>
+ <enablement>
+ <and>
+ <with variable="projectFacets">
+ <test property="org.jboss.tools.maven.core.projectFacets"
value="jst.jsf,jboss.m2" forcePluginActivation="true"/>
+ </with>
+ <with variable="requestingProjectFacet">
+ <test
property="org.eclipse.wst.common.project.facet.core.projectFacet"
value="jst.jsf:1.2" forcePluginActivation="true"/>
+ </with>
+ </and>
+ </enablement>
+ </provider>
+ </extension>
+
+ <extension
point="org.eclipse.jst.common.project.facet.core.libraryProviders">
+ <provider id="jsf11-maven-library-provider"
extends="maven-library-provider">
+ <label>Maven JSF 1.1 Libraries</label>
+ <param name="template"
value="platform:/plugin/org.jboss.tools.maven.core/poms/jsf-template11.xml"/>
+ <enablement>
+ <and>
+ <with variable="projectFacets">
+ <test property="org.jboss.tools.maven.core.projectFacets"
value="jst.jsf,jboss.m2" forcePluginActivation="true"/>
+ </with>
+ <with variable="requestingProjectFacet">
+ <test
property="org.eclipse.wst.common.project.facet.core.projectFacet"
value="jst.jsf:1.1" forcePluginActivation="true"/>
+ </with>
+ </and>
+ </enablement>
+ </provider>
+ </extension>
+
</plugin>
Added: trunk/maven/plugins/org.jboss.tools.maven.core/poms/jsf-template11.xml
===================================================================
--- trunk/maven/plugins/org.jboss.tools.maven.core/poms/jsf-template11.xml
(rev 0)
+++ trunk/maven/plugins/org.jboss.tools.maven.core/poms/jsf-template11.xml 2009-07-13
18:49:56 UTC (rev 16550)
@@ -0,0 +1,25 @@
+<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/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>template</groupId>
+ <artifactId>template</artifactId>
+ <packaging>pom</packaging>
+ <version>0.0.1-SNAPSHOT</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ <version>1.1_02</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-impl</artifactId>
+ <version>1.1_02</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+</project>
\ No newline at end of file
Added: trunk/maven/plugins/org.jboss.tools.maven.core/poms/jsf-template12.xml
===================================================================
--- trunk/maven/plugins/org.jboss.tools.maven.core/poms/jsf-template12.xml
(rev 0)
+++ trunk/maven/plugins/org.jboss.tools.maven.core/poms/jsf-template12.xml 2009-07-13
18:49:56 UTC (rev 16550)
@@ -0,0 +1,25 @@
+<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/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>template</groupId>
+ <artifactId>template</artifactId>
+ <packaging>pom</packaging>
+ <version>0.0.1-SNAPSHOT</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ <version>1.2-b19</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-impl</artifactId>
+ <version>1.2-b19</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+
+</project>
\ No newline at end of file
Modified:
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/MavenCoreActivator.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/MavenCoreActivator.java 2009-07-13
16:38:18 UTC (rev 16549)
+++
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/MavenCoreActivator.java 2009-07-13
18:49:56 UTC (rev 16550)
@@ -1,6 +1,9 @@
package org.jboss.tools.maven.core;
+import java.io.File;
+import java.net.URL;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
@@ -23,20 +26,31 @@
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Plugin;
import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.jdt.core.IClasspathAttribute;
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.launching.JavaRuntime;
+import org.eclipse.jst.common.project.facet.core.libprov.ILibraryProvider;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperationConfig;
import org.eclipse.jst.j2ee.project.facet.IJ2EEFacetConstants;
import org.eclipse.wst.common.componentcore.ComponentCore;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework;
+import org.maven.ide.components.pom.Dependency;
+import org.maven.ide.components.pom.PomFactory;
+import org.maven.ide.components.pom.PropertyElement;
+import org.maven.ide.components.pom.Repository;
+import org.maven.ide.components.pom.util.PomResourceFactoryImpl;
+import org.maven.ide.components.pom.util.PomResourceImpl;
import org.maven.ide.eclipse.MavenPlugin;
import org.maven.ide.eclipse.core.IMavenConstants;
+import org.maven.ide.eclipse.embedder.IMavenConfiguration;
import org.maven.ide.eclipse.embedder.MavenModelManager;
import org.maven.ide.eclipse.jdt.BuildPathManager;
import org.maven.ide.eclipse.project.IProjectConfigurationManager;
@@ -57,8 +71,14 @@
public static final String BASEDIR = "${basedir}"; //$NON-NLS-1$
+ public static final String ENCODING = "UTF-8"; //$NON-NLS-1$
+
+ public static final List<LibraryProviderOperationConfig>
libraryProviderOperationConfigs = new ArrayList<LibraryProviderOperationConfig>();
+
// The shared instance
private static MavenCoreActivator plugin;
+
+ private static PomResourceImpl resource;
/**
* The constructor
@@ -268,9 +288,10 @@
resolverConfiguration.setActiveProfiles(""); //$NON-NLS-1$
IProjectConfigurationManager configurationManager = MavenPlugin
.getDefault().getProjectConfigurationManager();
+ IMavenConfiguration mavenConfiguration =
MavenPlugin.lookup(IMavenConfiguration.class);
configurationManager.updateProjectConfiguration(project,
resolverConfiguration, //
- MavenPlugin.getDefault().getMavenRuntimeManager()
+ mavenConfiguration
.getGoalOnUpdate(), new NullProgressMonitor());
}
@@ -435,4 +456,189 @@
String sourceDirectory = root.getProjectRelativePath().toString();
return sourceDirectory;
}
+
+ public static void mergeModel(org.maven.ide.components.pom.Model projectModel,
org.maven.ide.components.pom.Model libraryModel) {
+ addProperties(projectModel,libraryModel);
+ addRepositories(projectModel,libraryModel);
+ addPlugins(projectModel,libraryModel);
+ addDependencies(projectModel,libraryModel);
+ }
+
+ private static void addDependencies(org.maven.ide.components.pom.Model projectModel,
org.maven.ide.components.pom.Model libraryModel) {
+ List<org.maven.ide.components.pom.Dependency> projectDependencies =
projectModel.getDependencies();
+ List<org.maven.ide.components.pom.Dependency> libraryDependencies =
libraryModel.getDependencies();
+ for (Dependency dependency:libraryDependencies) {
+ if (!dependencyExists(dependency,projectDependencies)) {
+ Dependency newDependency = (Dependency) EcoreUtil.copy(dependency);
+ projectDependencies.add(newDependency);
+ }
+ }
+
+ }
+
+ private static boolean dependencyExists(Dependency dependency,
+ List<Dependency> projectDependencies) {
+ String groupId = dependency.getGroupId();
+ String artifactId = dependency.getArtifactId();
+ if (artifactId == null) {
+ return false;
+ }
+ for (Dependency projectDependency:projectDependencies) {
+ String projectGroupId = projectDependency.getGroupId();
+ String projectArtifactId = projectDependency.getArtifactId();
+ if (!artifactId.equals(projectArtifactId)) {
+ return false;
+ }
+ if (groupId == null && projectGroupId == null) {
+ return true;
+ }
+ if (groupId != null && groupId.equals(projectGroupId)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static void addPlugins(org.maven.ide.components.pom.Model projectModel,
org.maven.ide.components.pom.Model libraryModel) {
+ org.maven.ide.components.pom.Build libraryBuild = libraryModel.getBuild();
+ if (libraryBuild == null) {
+ return;
+ }
+ List<org.maven.ide.components.pom.Plugin> libraryPlugins =
projectModel.getBuild().getPlugins();
+ for (org.maven.ide.components.pom.Plugin plugin:libraryPlugins) {
+ org.maven.ide.components.pom.Build projectBuild = projectModel.getBuild();
+ if (projectBuild == null) {
+ projectBuild = PomFactory.eINSTANCE.createBuild();
+ projectModel.setBuild(projectBuild);
+ }
+ List<org.maven.ide.components.pom.Plugin> projectPlugins =
projectBuild.getPlugins();
+ if (!pluginExists(plugin,projectPlugins)) {
+ org.maven.ide.components.pom.Plugin newPlugin = (org.maven.ide.components.pom.Plugin)
EcoreUtil.copy(plugin);
+ projectPlugins.add(newPlugin);
+ }
+ }
+ }
+
+ private static boolean pluginExists(org.maven.ide.components.pom.Plugin plugin,
List<org.maven.ide.components.pom.Plugin> projectPlugins) {
+ String groupId = plugin.getGroupId();
+ String artifactId = plugin.getArtifactId();
+ if (artifactId == null) {
+ return false;
+ }
+ for (org.maven.ide.components.pom.Plugin projectPlugin:projectPlugins) {
+ String projectGroupId = projectPlugin.getGroupId();
+ String projectArtifactId = projectPlugin.getArtifactId();
+ if (!artifactId.equals(projectArtifactId)) {
+ return false;
+ }
+ if (groupId == null && projectGroupId == null) {
+ return true;
+ }
+ if (groupId != null && groupId.equals(projectGroupId)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static void addRepositories(org.maven.ide.components.pom.Model projectModel,
org.maven.ide.components.pom.Model libraryModel) {
+ List<Repository> projectRepositories = projectModel.getRepositories();
+ List<Repository> libraryRepositories = libraryModel.getRepositories();
+ for (Repository repository:libraryRepositories) {
+ if (!repositoryExists(repository,projectRepositories)) {
+ Repository newRepository = (Repository) EcoreUtil.copy(repository);
+ projectRepositories.add(newRepository);
+ }
+ }
+ }
+
+ private static boolean repositoryExists(Repository repository,
+ List<Repository> projectRepositories) {
+ String url = repository.getUrl();
+ if (url == null) {
+ return false;
+ }
+ for(Repository projectRepository:projectRepositories) {
+ if (url.equals(projectRepository.getUrl())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static void addProperties(org.maven.ide.components.pom.Model projectModel,
org.maven.ide.components.pom.Model libraryModel) {
+ List<PropertyElement> projectProperties = projectModel.getProperties();
+ List<PropertyElement> libraryProperties = libraryModel.getProperties();
+ for (PropertyElement libraryProperty:libraryProperties) {
+ String propertyName = libraryProperty.getName();
+ if (!propertyExists(propertyName,projectProperties)) {
+ PropertyElement newProperty = (PropertyElement) EcoreUtil.copy(libraryProperty);
+ projectProperties.add(newProperty);
+ }
+ }
+ }
+
+ private static boolean propertyExists(String propertyName,
+ List<PropertyElement> projectProperties) {
+ if (propertyName == null) {
+ return false;
+ }
+ for (PropertyElement propertyElement:projectProperties) {
+ if (propertyName.equals(propertyElement.getName())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static void log(Throwable e) {
+ IStatus status = new Status(IStatus.ERROR, PLUGIN_ID, e.getLocalizedMessage(), e);
+ getDefault().getLog().log(status);
+ }
+
+ public static void log(String message) {
+ IStatus status = new Status(IStatus.ERROR, PLUGIN_ID, message);
+ getDefault().getLog().log(status);
+ }
+
+ public static File getProviderFile(ILibraryProvider provider) {
+ String id = provider.getId();
+ IPath providerDir = MavenCoreActivator.getDefault().getStateLocation().append(id);
+ File providerDirFile = providerDir.toFile();
+ providerDirFile.mkdir();
+ File providerFile = new File(providerDirFile, "template.xml"); //$NON-NLS-1$
+ return providerFile;
+ }
+
+ public static PomResourceImpl loadResource(URL url) throws CoreException {
+ try {
+ URI uri = URI.createURI(url.toString());
+ org.eclipse.emf.ecore.resource.Resource resource = new PomResourceFactoryImpl()
+ .createResource(uri);
+ resource.load(Collections.EMPTY_MAP);
+ return (PomResourceImpl) resource;
+
+ } catch (Exception ex) {
+ log(ex);
+ throw new CoreException(new Status(IStatus.ERROR,
+ PLUGIN_ID, -1, ex.getMessage(), ex));
+ }
+ }
+
+ public static void addLibraryProviderOperationConfig(
+ LibraryProviderOperationConfig config) {
+ libraryProviderOperationConfigs.add(config);
+ }
+
+ public static List<LibraryProviderOperationConfig>
getLibraryProviderOperationConfigs() {
+ return libraryProviderOperationConfigs;
+ }
+
+ public static PomResourceImpl getResource() {
+ return resource;
+ }
+
+ public static void setResource(PomResourceImpl resource2) {
+ resource = resource2;
+ }
}
Added:
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/PluginUpdater.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/PluginUpdater.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/PluginUpdater.java 2009-07-13
18:49:56 UTC (rev 16550)
@@ -0,0 +1,32 @@
+package org.jboss.tools.maven.core;
+
+
+import org.apache.maven.model.Plugin;
+import org.maven.ide.components.pom.Build;
+import org.maven.ide.components.pom.Model;
+import org.maven.ide.components.pom.PomFactory;
+import org.maven.ide.eclipse.embedder.ProjectUpdater;
+
+public class PluginUpdater extends ProjectUpdater {
+
+ private static final PomFactory POM_FACTORY = PomFactory.eINSTANCE;
+ private Plugin plugin;
+
+ public PluginUpdater(Plugin plugin) {
+ this.plugin = plugin;
+ }
+
+ public void update(Model model) {
+ Build build = model.getBuild();
+ if(build==null) {
+ build = POM_FACTORY.createBuild();
+ model.setBuild(build);
+ }
+ org.maven.ide.components.pom.Plugin newPlugin = POM_FACTORY.createPlugin();
+ newPlugin.setArtifactId(plugin.getArtifactId());
+ newPlugin.setGroupId(plugin.getGroupId());
+ newPlugin.setVersion(plugin.getVersion());
+ newPlugin.setExtensions(plugin.getExtensions());
+ // FIXME
+ }
+ }
Added:
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/ProjectFacetsFactoryTester.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/ProjectFacetsFactoryTester.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/ProjectFacetsFactoryTester.java 2009-07-13
18:49:56 UTC (rev 16550)
@@ -0,0 +1,44 @@
+package org.jboss.tools.maven.core;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.wst.common.project.facet.core.internal.ProjectFacetVersion;
+
+public class ProjectFacetsFactoryTester extends PropertyTester {
+
+ public boolean test(Object receiver, String property, Object[] args,
+ Object expectedValue) {
+
+ if (! (receiver instanceof Collection)) {
+ return false;
+ }
+ if (! (expectedValue instanceof String)) {
+ return false;
+ }
+ String requiredFacets = (String) expectedValue;
+ Collection collection = (Collection) receiver;
+ List<String> facets = new ArrayList<String>();
+ for (Iterator iterator = collection.iterator(); iterator.hasNext();) {
+ Object object = iterator.next();
+ if ( ! (object instanceof ProjectFacetVersion)) {
+ return false;
+ }
+ ProjectFacetVersion projectFacetVersion = (ProjectFacetVersion) object;
+ facets.add(projectFacetVersion.getProjectFacet().getId());
+ }
+ StringTokenizer tokenizer = new StringTokenizer(requiredFacets,",");
+ while (tokenizer.hasMoreTokens()) {
+ String requiredFacet = tokenizer.nextToken().trim();
+ if (!facets.contains(requiredFacet)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+}
Modified:
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/internal/project/facet/MavenFacetInstallDelegate.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/internal/project/facet/MavenFacetInstallDelegate.java 2009-07-13
16:38:18 UTC (rev 16549)
+++
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/internal/project/facet/MavenFacetInstallDelegate.java 2009-07-13
18:49:56 UTC (rev 16550)
@@ -15,6 +15,7 @@
import org.eclipse.jdt.core.IClasspathAttribute;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperationConfig;
import org.eclipse.jst.j2ee.classpathdep.ClasspathDependencyUtil;
import org.eclipse.jst.j2ee.classpathdep.IClasspathDependencyConstants;
import org.eclipse.jst.j2ee.project.facet.IJ2EEFacetConstants;
@@ -26,6 +27,8 @@
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
import org.jboss.tools.maven.core.MavenCoreActivator;
import org.jboss.tools.maven.core.IJBossMavenConstants;
+import org.jboss.tools.maven.core.libprov.MavenLibraryProviderInstallOperation;
+import org.jboss.tools.maven.core.libprov.MavenLibraryProviderInstallOperationConfig;
import org.maven.ide.eclipse.MavenPlugin;
import org.maven.ide.eclipse.core.IMavenConstants;
import org.maven.ide.eclipse.embedder.MavenModelManager;
@@ -106,6 +109,15 @@
if (!hasMavenNature) {
MavenCoreActivator.updateMavenProjectConfiguration(project);
}
+
+ List<LibraryProviderOperationConfig> configs =
MavenCoreActivator.getLibraryProviderOperationConfigs();
+ if (configs.size() > 0) {
+ MavenLibraryProviderInstallOperation operation = new
MavenLibraryProviderInstallOperation();
+ for (LibraryProviderOperationConfig libraryProviderOperationConfig:configs) {
+ operation.execute(libraryProviderOperationConfig, monitor);
+ }
+ }
+ configs.clear();
}
}
Added:
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/libprov/MavenLibraryProviderInstallOperation.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/libprov/MavenLibraryProviderInstallOperation.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/libprov/MavenLibraryProviderInstallOperation.java 2009-07-13
18:49:56 UTC (rev 16550)
@@ -0,0 +1,106 @@
+package org.jboss.tools.maven.core.libprov;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.ecore.resource.URIConverter;
+import org.eclipse.emf.ecore.xmi.XMIResource;
+import org.eclipse.jst.common.project.facet.core.libprov.ILibraryProvider;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperation;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperationConfig;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectBase;
+import org.jboss.tools.maven.core.MavenCoreActivator;
+import org.maven.ide.components.pom.Model;
+import org.maven.ide.components.pom.util.PomResourceImpl;
+import org.maven.ide.eclipse.MavenPlugin;
+import org.maven.ide.eclipse.core.IMavenConstants;
+import org.maven.ide.eclipse.embedder.MavenModelManager;
+
+public class MavenLibraryProviderInstallOperation extends
+ LibraryProviderOperation {
+
+ @Override
+ public void execute(LibraryProviderOperationConfig config,
+ IProgressMonitor monitor) throws CoreException {
+ IFacetedProjectBase facetedProject = config.getFacetedProject();
+ IProject project = facetedProject.getProject();
+ IFile pom = project.getFile(IMavenConstants.POM_FILE_NAME);
+ MavenLibraryProviderInstallOperationConfig mavenConfig =
(MavenLibraryProviderInstallOperationConfig) config;
+ if (pom.exists()) {
+ // JBoss Maven Integration facet has been executed
+ MavenModelManager modelManager = MavenPlugin.getDefault().getMavenModelManager();
+ PomResourceImpl resource = modelManager.loadResource(pom);
+ Model projectModel = resource.getModel();
+ Model libraryModel = mavenConfig.getModel();
+ MavenCoreActivator.mergeModel(projectModel, libraryModel);
+ try {
+ Map<String,String> options = new HashMap<String,String>();
+ options.put(XMIResource.OPTION_ENCODING, MavenCoreActivator.ENCODING);
+ resource.save(options);
+ } catch (IOException e) {
+ MavenCoreActivator.log(e);
+ } finally {
+ resource.unload();
+ }
+ ILibraryProvider provider = config.getLibraryProvider();
+ File providerFile = MavenCoreActivator.getProviderFile(provider);
+ URL url = null;
+ PomResourceImpl libraryResource = null;
+ URIConverter.WriteableOutputStream uws = null;
+ FileWriter fw = null;
+ try {
+ if (providerFile.exists()) {
+ url = providerFile.toURL();
+ } else {
+ Map<String, String> params = provider.getParams();
+ String pomURLString = params.get("template"); //$NON-NLS-1$
+ URL platformURL = new URL(pomURLString);
+ url = FileLocator.resolve(platformURL);
+ }
+ libraryResource = MavenCoreActivator.loadResource(url);
+ libraryResource.getContents().clear();
+ libraryResource.getContents().add(libraryModel);
+
+ Map<String, String> options = new HashMap<String, String>();
+ options.put(XMIResource.OPTION_ENCODING,
+ MavenCoreActivator.ENCODING);
+ fw = new FileWriter(providerFile);
+ uws = new URIConverter.WriteableOutputStream(
+ fw, MavenCoreActivator.ENCODING);
+ libraryResource.save(uws, options);
+ } catch (IOException e) {
+ MavenCoreActivator.log(e);
+ } finally {
+ if (uws != null) {
+ try {
+ uws.flush();
+ uws.close();
+ } catch (IOException ignore) {}
+ }
+ if (fw != null) {
+ try {
+ fw.close();
+ } catch (IOException ignore) {}
+ }
+ if (libraryResource != null) {
+ libraryResource.unload();
+ }
+ }
+
+ } else {
+ MavenCoreActivator.addLibraryProviderOperationConfig(config);
+ }
+
+ }
+
+
+}
Added:
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/libprov/MavenLibraryProviderInstallOperationConfig.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/libprov/MavenLibraryProviderInstallOperationConfig.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/libprov/MavenLibraryProviderInstallOperationConfig.java 2009-07-13
18:49:56 UTC (rev 16550)
@@ -0,0 +1,21 @@
+package org.jboss.tools.maven.core.libprov;
+
+import org.eclipse.emf.ecore.resource.URIConverter.WriteableOutputStream;
+import
org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderInstallOperationConfig;
+import org.maven.ide.components.pom.Model;
+import org.maven.ide.components.pom.util.PomResourceImpl;
+
+public class MavenLibraryProviderInstallOperationConfig extends
+ LibraryProviderInstallOperationConfig {
+
+ private Model model;
+
+ public void setModel(Model model) {
+ this.model = model;
+ }
+
+ public Model getModel() {
+ return model;
+ }
+
+}
Added:
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/libprov/MavenLibraryProviderUninstallOperation.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/libprov/MavenLibraryProviderUninstallOperation.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.core/src/org/jboss/tools/maven/core/libprov/MavenLibraryProviderUninstallOperation.java 2009-07-13
18:49:56 UTC (rev 16550)
@@ -0,0 +1,18 @@
+package org.jboss.tools.maven.core.libprov;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperation;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperationConfig;
+
+public class MavenLibraryProviderUninstallOperation extends LibraryProviderOperation {
+
+ @Override
+ public void execute(LibraryProviderOperationConfig config,
+ IProgressMonitor monitor) throws CoreException {
+ // TODO Auto-generated method stub
+
+
+ }
+
+}
Modified:
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/MavenSeamActivator.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/MavenSeamActivator.java 2009-07-13
16:38:18 UTC (rev 16549)
+++
trunk/maven/plugins/org.jboss.tools.maven.seam/src/org/jboss/tools/maven/seam/MavenSeamActivator.java 2009-07-13
18:49:56 UTC (rev 16550)
@@ -2,6 +2,7 @@
import java.io.BufferedReader;
import java.io.IOException;
+import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
@@ -733,12 +734,12 @@
private void configureParentProject(IDataModel m2FacetModel, IDataModel seamFacetModel)
{
Bundle bundle = getDefault().getBundle();
URL parentPomEntryURL = bundle.getEntry("/poms/parent-pom.xml");
- Reader reader = null;
+ InputStream inputStream = null;
try {
URL resolvedURL = FileLocator.resolve(parentPomEntryURL);
MavenModelManager modelManager = MavenPlugin.getDefault().getMavenModelManager();
- reader = new BufferedReader(new InputStreamReader(resolvedURL.openStream()));
- Model model = modelManager.readMavenModel(reader);
+ inputStream = resolvedURL.openStream();
+ Model model = modelManager.readMavenModel(inputStream);
model.setArtifactId(parentArtifactId);
model.setGroupId(m2FacetModel.getStringProperty(IJBossMavenConstants.GROUP_ID));
String projectVersion = m2FacetModel.getStringProperty(IJBossMavenConstants.VERSION);
@@ -777,9 +778,9 @@
} catch (Exception e) {
log(e);
} finally {
- if (reader != null) {
+ if (inputStream != null) {
try {
- reader.close();
+ inputStream.close();
} catch (IOException ignore) {}
}
}
Modified: trunk/maven/plugins/org.jboss.tools.maven.ui/META-INF/MANIFEST.MF
===================================================================
--- trunk/maven/plugins/org.jboss.tools.maven.ui/META-INF/MANIFEST.MF 2009-07-13 16:38:18
UTC (rev 16549)
+++ trunk/maven/plugins/org.jboss.tools.maven.ui/META-INF/MANIFEST.MF 2009-07-13 18:49:56
UTC (rev 16550)
@@ -7,6 +7,7 @@
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.wst.common.project.facet.ui,
+ org.eclipse.jst.common.project.facet.ui,
org.eclipse.wst.common.frameworks.ui,
org.eclipse.core.resources,
org.jboss.tools.maven.core
Modified: trunk/maven/plugins/org.jboss.tools.maven.ui/plugin.xml
===================================================================
--- trunk/maven/plugins/org.jboss.tools.maven.ui/plugin.xml 2009-07-13 16:38:18 UTC (rev
16549)
+++ trunk/maven/plugins/org.jboss.tools.maven.ui/plugin.xml 2009-07-13 18:49:56 UTC (rev
16550)
@@ -9,4 +9,9 @@
</wizard-pages>
</extension>
+ <extension
point="org.eclipse.jst.common.project.facet.ui.libraryProviderActionPanels">
+ <panel
+ provider="maven-library-provider"
+
class="org.jboss.tools.maven.ui.internal.libprov.MavenUserLibraryProviderInstallPanel"/>
+ </extension>
</plugin>
Modified:
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/Activator.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/Activator.java 2009-07-13
16:38:18 UTC (rev 16549)
+++
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/Activator.java 2009-07-13
18:49:56 UTC (rev 16550)
@@ -1,6 +1,16 @@
package org.jboss.tools.maven.ui;
+import java.net.URL;
+import java.util.Collections;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.maven.ide.components.pom.util.PomResourceFactoryImpl;
+import org.maven.ide.components.pom.util.PomResourceImpl;
import org.osgi.framework.BundleContext;
/**
@@ -46,5 +56,15 @@
public static Activator getDefault() {
return plugin;
}
+
+ public static void log(Throwable e) {
+ IStatus status = new Status(IStatus.ERROR, PLUGIN_ID, e.getLocalizedMessage(), e);
+ getDefault().getLog().log(status);
+ }
+ public static void log(String message) {
+ IStatus status = new Status(IStatus.ERROR, PLUGIN_ID, message);
+ getDefault().getLog().log(status);
+ }
+
}
Added:
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/AutoResizeTableLayout.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/AutoResizeTableLayout.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/AutoResizeTableLayout.java 2009-07-13
18:49:56 UTC (rev 16550)
@@ -0,0 +1,140 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.tools.maven.ui.internal.libprov;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.viewers.ColumnLayoutData;
+import org.eclipse.jface.viewers.ColumnPixelData;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.events.ControlListener;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+
+public class AutoResizeTableLayout extends TableLayout implements
+ ControlListener {
+
+ private final Table table;
+ private List<ColumnLayoutData> columns = new
ArrayList<ColumnLayoutData>();
+ private boolean autosizing = false;
+
+ public AutoResizeTableLayout(Table table) {
+ this.table = table;
+ table.addControlListener(this);
+ }
+
+ public void addColumnData(ColumnLayoutData data) {
+ columns.add(data);
+ super.addColumnData(data);
+ }
+
+ public void controlMoved(ControlEvent e) {
+ }
+
+ public void controlResized(ControlEvent e) {
+ if (autosizing) {
+ return;
+ }
+ autosizing = true;
+ try {
+ autoSizeColumns();
+ } finally {
+ autosizing = false;
+ }
+ }
+
+ private void autoSizeColumns() {
+ int width = table.getClientArea().width;
+ if (width <= 1) {
+ return;
+ }
+
+ TableColumn[] tableColumns = table.getColumns();
+ int size =
+ Math.min(columns.size(), tableColumns.length);
+ int[] widths = new int[size];
+ int fixedWidth = 0;
+ int numberOfWeightColumns = 0;
+ int totalWeight = 0;
+
+ // First calc space occupied by fixed columns.
+ for (int i = 0; i < size; i++) {
+ ColumnLayoutData col = (ColumnLayoutData)columns.get(i);
+ if (col instanceof ColumnPixelData) {
+ int pixels = ((ColumnPixelData)col).width;
+ widths[i] = pixels;
+ fixedWidth += pixels;
+ } else if (col instanceof ColumnWeightData) {
+ ColumnWeightData cw = (ColumnWeightData)col;
+ numberOfWeightColumns++;
+ int weight = cw.weight;
+ totalWeight += weight;
+ } else {
+ throw new IllegalStateException("Unknown column layout data");
+ }
+ }
+
+ // Do we have columns that have a weight?
+ if (numberOfWeightColumns > 0) {
+ // Now, distribute the rest
+ // to the columns with weight.
+ int rest = width - fixedWidth;
+ int totalDistributed = 0;
+ for (int i = 0; i < size; i++) {
+ ColumnLayoutData col = (ColumnLayoutData)columns.get(i);
+ if (col instanceof ColumnWeightData) {
+ ColumnWeightData cw = (ColumnWeightData)col;
+ int weight = cw.weight;
+ int pixels = totalWeight == 0 ? 0 : weight * rest / totalWeight;
+ totalDistributed += pixels;
+ widths[i] = pixels;
+ }
+ }
+
+ // Distribute any remaining pixels
+ // to columns with weight.
+ int diff = rest - totalDistributed;
+ for (int i = 0; diff > 0; i++) {
+ if (i == size) {
+ i = 0;
+ }
+ ColumnLayoutData col = (ColumnLayoutData)columns.get(i);
+ if (col instanceof ColumnWeightData) {
+ ++widths[i];
+ --diff;
+ }
+ }
+ }
+
+ for (int i = 0; i < size; i++) {
+ if (tableColumns[i].getWidth() != widths[i]) {
+ tableColumns[i].setWidth(widths[i]);
+ }
+
+ }
+
+ }
+
+}
Added:
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/DependencyEditingSupport.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/DependencyEditingSupport.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/DependencyEditingSupport.java 2009-07-13
18:49:56 UTC (rev 16550)
@@ -0,0 +1,139 @@
+package org.jboss.tools.maven.ui.internal.libprov;
+
+import org.maven.ide.components.pom.Dependency;
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ColumnViewer;
+import org.eclipse.jface.viewers.ComboBoxCellEditor;
+import org.eclipse.jface.viewers.EditingSupport;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TextCellEditor;
+
+public class DependencyEditingSupport extends EditingSupport {
+
+ private static String[] scopes = {"","provided",
"compile", "test", "runtime",
"system","import"};
+ private static String[] types =
{"","jar","war","rar","ear","par","ejb","ejb3","ejb-client","test-jar","java-source","javadoc","maven-plugin","pom"};
+
+ private CellEditor editor;
+ private int column;
+
+ public DependencyEditingSupport(ColumnViewer viewer, int column) {
+ super(viewer);
+ switch (column) {
+ case 3:
+ editor = new ComboBoxCellEditor(((TableViewer) viewer).getTable(),
+ scopes);
+ break;
+ case 4:
+ editor = new ComboBoxCellEditor(((TableViewer) viewer).getTable(),
+ types);
+ break;
+ default:
+ editor = new TextCellEditor(((TableViewer) viewer).getTable());
+ }
+
+
+ this.column = column;
+ }
+
+
+ @Override
+ protected boolean canEdit(Object element) {
+ return true;
+ }
+
+ @Override
+ protected CellEditor getCellEditor(Object element) {
+ return editor;
+ }
+
+ @Override
+ protected Object getValue(Object element) {
+ Dependency dependency = (Dependency) element;
+ String value = null;
+ switch (this.column) {
+ case 0:
+ value = dependency.getGroupId();
+ if (value == null) {
+ value = "";
+ }
+ return value;
+ case 1:
+ value = dependency.getArtifactId();
+ if (value == null) {
+ value = "";
+ }
+ return value;
+ case 2:
+ value = dependency.getVersion();
+ if (value == null) {
+ value = "";
+ }
+ return value;
+ case 3:
+ for (int i = 0; i < scopes.length; i++) {
+ if (scopes[i].equals(dependency.getScope())) {
+ return i;
+ }
+ }
+ return 0;
+ case 4:
+ for (int i = 0; i < types.length; i++) {
+ if (types[i].equals(dependency.getType())) {
+ return i;
+ }
+ }
+ return 0;
+ default:
+ break;
+ }
+ return null;
+
+ }
+
+ @Override
+ protected void setValue(Object element, Object value) {
+ Dependency dependency = (Dependency) element;
+
+ String valueString = null;
+ int intValue = 0;
+ if (column < 3) {
+ if (value == null) {
+ valueString = null;
+ } else {
+ valueString = value.toString();
+ }
+ } else {
+ intValue = (Integer)value;
+ }
+ switch (this.column) {
+ case 0:
+ dependency.setGroupId(valueString);
+ break;
+ case 1:
+ dependency.setArtifactId(valueString);
+ break;
+ case 2:
+ dependency.setVersion(valueString);
+ break;
+ case 3:
+ if (intValue > scopes.length) {
+ intValue = 0;
+ }
+ dependency.setScope(scopes[intValue]);
+ break;
+ case 4:
+ if (intValue > types.length) {
+ intValue = 0;
+ }
+ dependency.setType(types[intValue]);
+ break;
+
+ default:
+ break;
+ }
+
+ getViewer().update(element, null);
+
+ }
+
+}
Added:
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/ExclusionEditingSupport.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/ExclusionEditingSupport.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/ExclusionEditingSupport.java 2009-07-13
18:49:56 UTC (rev 16550)
@@ -0,0 +1,76 @@
+package org.jboss.tools.maven.ui.internal.libprov;
+
+import org.eclipse.jface.viewers.CellEditor;
+import org.eclipse.jface.viewers.ColumnViewer;
+import org.eclipse.jface.viewers.EditingSupport;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TextCellEditor;
+import org.maven.ide.components.pom.Exclusion;
+
+public class ExclusionEditingSupport extends EditingSupport {
+
+ private CellEditor editor;
+ private int column;
+
+ public ExclusionEditingSupport(ColumnViewer viewer, int column) {
+ super(viewer);
+ editor = new TextCellEditor(((TableViewer) viewer).getTable());
+ this.column = column;
+ }
+
+ @Override
+ protected boolean canEdit(Object element) {
+ return true;
+ }
+
+ @Override
+ protected CellEditor getCellEditor(Object element) {
+ return editor;
+ }
+
+ @Override
+ protected Object getValue(Object element) {
+ Exclusion exclusion = (Exclusion) element;
+ String value = null;
+ switch (this.column) {
+ case 0:
+ value = exclusion.getGroupId();
+ if (value == null) {
+ value = "";
+ }
+ return value;
+ case 1:
+ value = exclusion.getArtifactId();
+ if (value == null) {
+ value = "";
+ }
+ return value;
+ }
+ return null;
+ }
+
+ @Override
+ protected void setValue(Object element, Object value) {
+ Exclusion exclusion = (Exclusion) element;
+
+ String valueString = null;
+ if (value == null) {
+ valueString = null;
+ } else {
+ valueString = value.toString();
+ }
+ switch (this.column) {
+ case 0:
+ exclusion.setGroupId(valueString);
+ break;
+ case 1:
+ exclusion.setArtifactId(valueString);
+ break;
+ default:
+ break;
+ }
+ getViewer().update(element, null);
+
+ }
+
+}
Added:
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/MavenUserLibraryProviderInstallPanel.java
===================================================================
---
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/MavenUserLibraryProviderInstallPanel.java
(rev 0)
+++
trunk/maven/plugins/org.jboss.tools.maven.ui/src/org/jboss/tools/maven/ui/internal/libprov/MavenUserLibraryProviderInstallPanel.java 2009-07-13
18:49:56 UTC (rev 16550)
@@ -0,0 +1,497 @@
+package org.jboss.tools.maven.ui.internal.libprov;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.ColumnLayoutData;
+import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TableLayout;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jst.common.project.facet.core.libprov.ILibraryProvider;
+import org.eclipse.jst.common.project.facet.ui.libprov.LibraryProviderOperationPanel;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Table;
+import org.jboss.tools.maven.core.MavenCoreActivator;
+import org.jboss.tools.maven.core.libprov.MavenLibraryProviderInstallOperationConfig;
+import org.maven.ide.components.pom.Dependency;
+import org.maven.ide.components.pom.Exclusion;
+import org.maven.ide.components.pom.Model;
+import org.maven.ide.components.pom.PomFactory;
+import org.maven.ide.components.pom.util.PomResourceImpl;
+
+public class MavenUserLibraryProviderInstallPanel extends
+ LibraryProviderOperationPanel {
+
+ private TableViewer dependencyViewer;
+ protected ColumnLayoutData[] dependencyTableColumnLayouts= {
+ new ColumnWeightData(80,80),
+ new ColumnWeightData(80,80),
+ new ColumnWeightData(60,60),
+ new ColumnWeightData(60,60),
+ new ColumnWeightData(60,60)
+ };
+ protected ColumnLayoutData[] exclusionTableColumnLayouts= {
+ new ColumnWeightData(80,80),
+ new ColumnWeightData(60,60)
+ };
+ private List<Dependency> dependencies;
+ private TableViewer exclusionViewer;
+ private List exclusions;
+ private PomResourceImpl resource;
+
+ @Override
+ public Control createControl(final Composite parent) {
+ resource = MavenCoreActivator.getResource();
+ if (resource != null) {
+ resource.unload();
+ MavenCoreActivator.setResource(null);
+ }
+ MavenLibraryProviderInstallOperationConfig config =
(MavenLibraryProviderInstallOperationConfig) getOperationConfig();
+ ILibraryProvider provider = config.getLibraryProvider();
+ File providerFile = MavenCoreActivator.getProviderFile(provider);
+ URL url = null;
+ try {
+ if (providerFile.exists()) {
+ url = providerFile.toURL();
+ } else {
+ Map<String, String> params = provider.getParams();
+ String pomURLString = params.get("template"); //$NON-NLS-1$
+ URL platformURL = new URL(pomURLString);
+ url = FileLocator.resolve(platformURL);
+ }
+
+ resource = MavenCoreActivator.loadResource(url);
+ MavenCoreActivator.setResource(resource);
+ Model model = resource.getModel();
+ dependencies = model.getDependencies();
+ config.setModel(model);
+ parent.addDisposeListener(new DisposeListener() {
+
+ public void widgetDisposed(DisposeEvent e) {
+ parent.removeDisposeListener(this);
+ resource.unload();
+ MavenCoreActivator.setResource(null);
+ }
+ });
+ } catch (CoreException e) {
+ MavenCoreActivator.log(e);
+ } catch (IOException e) {
+ MavenCoreActivator.log(e);
+ }
+
+ if (dependencies == null) {
+ dependencies = new ArrayList<Dependency>();
+ }
+
+ Composite composite = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(2, false);
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ composite.setLayout(layout);
+ composite.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ Label dependencyLabel = new Label(composite, SWT.NONE);
+ dependencyLabel.setText("Dependencies:");
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.horizontalSpan=2;
+ dependencyLabel.setLayoutData(gd);
+
+ createDependencyViewer(composite);
+ dependencyViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ ISelection sel = event.getSelection();
+ if (sel instanceof IStructuredSelection) {
+ IStructuredSelection selection = (IStructuredSelection) sel;
+ Object object = selection.getFirstElement();
+ if (object instanceof Dependency) {
+ Dependency dependency = (Dependency) object;
+ exclusions = dependency.getExclusions();
+ exclusionViewer.setInput(exclusions);
+ }
+ }
+ }
+ });
+
+ Label exclusionLabel = new Label(composite, SWT.NONE);
+ exclusionLabel.setText("Exclusions:");
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.horizontalSpan=2;
+ exclusionLabel.setLayoutData(gd);
+
+ createExclusionViewer(composite);
+
+ if (dependencies.size() > 0) {
+ dependencyViewer.getTable().select(0);
+ exclusions = dependencies.get(0).getExclusions();
+ exclusionViewer.setInput(exclusions);
+ }
+ return composite;
+ }
+
+ private void createExclusionViewer(Composite parent) {
+ exclusionViewer = new TableViewer(parent, SWT.SINGLE | SWT.FULL_SELECTION |
SWT.H_SCROLL
+ | SWT.V_SCROLL | SWT.BORDER);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 60;
+ exclusionViewer.getTable().setLayoutData(gd);
+ //viewer.setLabelProvider(new TableLabelProvider());
+ exclusionViewer.setContentProvider(new TableContentProvider());
+ Table table = exclusionViewer.getTable();
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+ table.setFont(parent.getFont());
+
+ String[] columnHeaders = {"GroupId","ArtifactId"};
+
+ for (int i = 0; i < columnHeaders.length; i++) {
+ TableViewerColumn column = new TableViewerColumn(exclusionViewer, SWT.NONE);
+ column.setLabelProvider(new ExclusionColumnLabelProvider(i));
+ column.getColumn().setText(columnHeaders[i]);
+ column.getColumn().setResizable(true);
+ column.getColumn().setMoveable(true);
+ column.setEditingSupport(new ExclusionEditingSupport(exclusionViewer, i));
+
+ }
+
+
+ TableLayout layout = new AutoResizeTableLayout(table);
+ for (int i = 0; i < exclusionTableColumnLayouts.length; i++) {
+ layout.addColumnData(exclusionTableColumnLayouts[i]);
+ }
+ exclusionViewer.getTable().setLayout(layout);
+
+ createExclusionButtons(parent);
+
+ }
+
+ private void createDependencyViewer(Composite parent) {
+ dependencyViewer = new TableViewer(parent, SWT.SINGLE | SWT.FULL_SELECTION |
SWT.H_SCROLL
+ | SWT.V_SCROLL | SWT.BORDER);
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 80;
+ dependencyViewer.getTable().setLayoutData(gd);
+ //viewer.setLabelProvider(new TableLabelProvider());
+ dependencyViewer.setContentProvider(new TableContentProvider());
+ Table table = dependencyViewer.getTable();
+ table.setHeaderVisible(true);
+ table.setLinesVisible(true);
+ table.setFont(parent.getFont());
+
+ String[] columnHeaders =
{"GroupId","ArtifactId","Version","Scope","Type"};
+
+ for (int i = 0; i < columnHeaders.length; i++) {
+ TableViewerColumn column = new TableViewerColumn(dependencyViewer, SWT.NONE);
+ column.setLabelProvider(new DependencyColumnLabelProvider(i));
+ column.getColumn().setText(columnHeaders[i]);
+ column.getColumn().setResizable(true);
+ column.getColumn().setMoveable(true);
+ column.setEditingSupport(new DependencyEditingSupport(dependencyViewer, i));
+
+ }
+
+
+ TableLayout layout = new AutoResizeTableLayout(table);
+ for (int i = 0; i < dependencyTableColumnLayouts.length; i++) {
+ layout.addColumnData(dependencyTableColumnLayouts[i]);
+ }
+
+ dependencyViewer.getTable().setLayout(layout);
+ dependencyViewer.setInput(dependencies);
+ createDependencyButtons(parent);
+ }
+
+ private void createDependencyButtons(Composite parent) {
+ Composite buttonComposite = new Composite(parent, SWT.NONE);
+ buttonComposite.setLayout(new GridLayout(1,false));
+ buttonComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false));
+
+ Button addButton = new Button(buttonComposite, SWT.PUSH);
+ addButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ addButton.setText("Add");
+ addButton.addSelectionListener(new SelectionListener(){
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ Dependency dependency = PomFactory.eINSTANCE.createDependency();
+ dependency.setGroupId("?");
+ dependency.setArtifactId("?");
+ dependencies.add(dependency);
+ dependencyViewer.refresh();
+ }
+
+ });
+
+ final Button removeButton = new Button(buttonComposite, SWT.PUSH);
+ removeButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ removeButton.setText("Remove");
+ removeButton.setEnabled(false);
+
+ removeButton.addSelectionListener(new SelectionListener(){
+
+ public void widgetSelected(SelectionEvent e) {
+ ISelection sel = dependencyViewer.getSelection();
+ if (sel instanceof IStructuredSelection) {
+ IStructuredSelection selection = (IStructuredSelection) sel;
+ Object object = selection.getFirstElement();
+ if (object instanceof Dependency) {
+ Dependency dependency = (Dependency) object;
+ boolean ok = MessageDialog.openQuestion(getShell(), "Remove dependency",
"Are you sure you want to remove the '" + dependency.getGroupId() +
":" + dependency.getArtifactId() + "' artifact?");
+ if (ok) {
+ dependencies.remove(object);
+ dependencyViewer.refresh();
+ }
+ }
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+
+ }
+ });
+
+ final Button restoreDefaults = new Button(buttonComposite, SWT.PUSH);
+ restoreDefaults.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ restoreDefaults.setText("Restore Defaults");
+
+ restoreDefaults.addSelectionListener(new SelectionListener(){
+
+ public void widgetSelected(SelectionEvent e) {
+ resource.unload();
+ MavenLibraryProviderInstallOperationConfig config =
(MavenLibraryProviderInstallOperationConfig) getOperationConfig();
+ ILibraryProvider provider = config.getLibraryProvider();
+ Map<String, String> params = provider.getParams();
+ String pomURLString = params.get("template"); //$NON-NLS-1$
+ try {
+ URL platformURL = new URL(pomURLString);
+ URL url = FileLocator.resolve(platformURL);
+ resource = MavenCoreActivator.loadResource(url);
+ Model model = resource.getModel();
+ dependencies = model.getDependencies();
+ dependencyViewer.setInput(dependencies);
+ config.setModel(model);
+ dependencyViewer.refresh();
+ if (dependencies.size() > 0) {
+ dependencyViewer.getTable().select(0);
+ exclusions = dependencies.get(0).getExclusions();
+ } else {
+ exclusions = null;
+ }
+ exclusionViewer.setInput(exclusions);
+ exclusionViewer.refresh();
+ } catch (MalformedURLException e1) {
+ MavenCoreActivator.log(e1);
+ } catch (IOException e1) {
+ MavenCoreActivator.log(e1);
+ } catch (CoreException e1) {
+ MavenCoreActivator.log(e1);
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+
+ }
+ });
+
+ dependencyViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ ISelection sel = dependencyViewer.getSelection();
+ if (sel instanceof IStructuredSelection) {
+ IStructuredSelection selection = (IStructuredSelection) sel;
+ Object object = selection.getFirstElement();
+ removeButton.setEnabled(object instanceof Dependency);
+ } else {
+ removeButton.setEnabled(false);
+ }
+ }
+ });
+ }
+
+ protected Shell getShell() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ private void createExclusionButtons(Composite parent) {
+ Composite buttonComposite = new Composite(parent, SWT.NONE);
+ buttonComposite.setLayout(new GridLayout(1,false));
+ buttonComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false));
+
+ Button addButton = new Button(buttonComposite, SWT.PUSH);
+ addButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ addButton.setText("Add");
+ addButton.addSelectionListener(new SelectionListener(){
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+
+ }
+
+ public void widgetSelected(SelectionEvent e) {
+ Exclusion exclusion = PomFactory.eINSTANCE.createExclusion();
+ exclusion.setGroupId("?");
+ exclusion.setArtifactId("?");
+ if (exclusions == null) {
+ ISelection sel = dependencyViewer.getSelection();
+ if (sel instanceof IStructuredSelection) {
+ IStructuredSelection selection = (IStructuredSelection) sel;
+ Object object = selection.getFirstElement();
+ if (object instanceof Dependency) {
+ exclusions = ((Dependency) object).getExclusions();
+ exclusionViewer.setInput(exclusions);
+ }
+ }
+ }
+ if (exclusions != null) {
+ exclusions.add(exclusion);
+ }
+ exclusionViewer.refresh();
+ }
+
+ });
+
+ final Button removeButton = new Button(buttonComposite, SWT.PUSH);
+ removeButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ removeButton.setText("Remove");
+ removeButton.setEnabled(false);
+
+ removeButton.addSelectionListener(new SelectionListener(){
+
+ public void widgetSelected(SelectionEvent e) {
+ ISelection sel = exclusionViewer.getSelection();
+ if (sel instanceof IStructuredSelection) {
+ IStructuredSelection selection = (IStructuredSelection) sel;
+ Object object = selection.getFirstElement();
+ if (object instanceof Exclusion) {
+ Exclusion exclusion = (Exclusion) object;
+ boolean ok = MessageDialog.openQuestion(getShell(), "Remove exclusion",
"Are you sure you want to remove the '" + exclusion.getGroupId() +
":" + exclusion.getArtifactId() + "' artifact?");
+ if (ok && exclusions != null) {
+ exclusions.remove(object);
+ }
+ }
+ exclusionViewer.refresh();
+ }
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+
+ }
+ });
+ exclusionViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+
+ public void selectionChanged(SelectionChangedEvent event) {
+ ISelection sel = exclusionViewer.getSelection();
+ if (sel instanceof IStructuredSelection) {
+ IStructuredSelection selection = (IStructuredSelection) sel;
+ Object object = selection.getFirstElement();
+ removeButton.setEnabled(object instanceof Exclusion);
+ } else {
+ removeButton.setEnabled(false);
+ }
+ }
+ });
+ }
+
+ private static class TableContentProvider implements
+ IStructuredContentProvider {
+
+ public Object[] getElements(Object inputElement) {
+ if (inputElement instanceof Object[]) {
+ return (Object[]) inputElement;
+ }
+ if (inputElement instanceof Collection) {
+ return ((Collection) inputElement).toArray();
+ }
+ return new Object[0];
+ }
+
+ public void dispose() {
+
+ }
+
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+
+ }
+ }
+
+ private static class DependencyColumnLabelProvider extends ColumnLabelProvider {
+
+ private int columnIndex;
+
+ public DependencyColumnLabelProvider(int columnIndex) {
+ this.columnIndex = columnIndex;
+ }
+
+ public String getText(Object element) {
+ if (element instanceof Dependency) {
+ Dependency dependency = (Dependency) element;
+ switch (columnIndex) {
+ case 0:
+ return dependency.getGroupId();
+ case 1:
+ return dependency.getArtifactId();
+ case 2:
+ return dependency.getVersion();
+ case 3:
+ return dependency.getScope();
+ case 4:
+ return dependency.getType();
+ }
+ }
+ return null;
+ }
+ }
+
+ private static class ExclusionColumnLabelProvider extends ColumnLabelProvider {
+
+ private int columnIndex;
+
+ public ExclusionColumnLabelProvider(int columnIndex) {
+ this.columnIndex = columnIndex;
+ }
+
+ public String getText(Object element) {
+ if (element instanceof Exclusion) {
+ Exclusion exclusion = (Exclusion) element;
+ switch (columnIndex) {
+ case 0:
+ return exclusion.getGroupId();
+ case 1:
+ return exclusion.getArtifactId();
+ }
+ }
+ return null;
+ }
+ }
+}