diff options
author | Pascal Rapicault | 2011-01-14 19:47:39 +0000 |
---|---|---|
committer | Pascal Rapicault | 2011-01-14 19:47:39 +0000 |
commit | 3ca9be7b7413a39ee93ba7a8107a77e20441a9dd (patch) | |
tree | b45f81a316b1ff73e054f854ef6e9b00e82b6b8e /org.eclipse.m2e.discovery/src | |
parent | f0a415be7b68ec1b475127ca3288de7889755431 (diff) | |
download | m2e-core-3ca9be7b7413a39ee93ba7a8107a77e20441a9dd.tar.gz m2e-core-3ca9be7b7413a39ee93ba7a8107a77e20441a9dd.tar.xz m2e-core-3ca9be7b7413a39ee93ba7a8107a77e20441a9dd.zip |
Add discovery UI
Diffstat (limited to 'org.eclipse.m2e.discovery/src')
11 files changed, 537 insertions, 0 deletions
diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/MavenDiscovery.java b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/MavenDiscovery.java new file mode 100644 index 00000000..f8a02144 --- /dev/null +++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/MavenDiscovery.java @@ -0,0 +1,90 @@ +/******************************************************************************* + * Copyright (c) 2011 Sonatype, Inc. + * 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: + * Sonatype, Inc. - initial API and implementation + *******************************************************************************/ + +package org.eclipse.m2e.internal.discovery; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.apache.maven.plugin.MojoExecution; +import org.eclipse.equinox.internal.p2.discovery.Catalog; +import org.eclipse.equinox.internal.p2.discovery.DiscoveryCore; +import org.eclipse.equinox.internal.p2.discovery.compatibility.RemoteBundleDiscoveryStrategy; +import org.eclipse.equinox.internal.p2.discovery.model.Tag; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.m2e.internal.discovery.wizards.MavenCatalogConfiguration; +import org.eclipse.m2e.internal.discovery.wizards.MavenDiscoveryWizard; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.internal.Workbench; + + +@SuppressWarnings("restriction") +public class MavenDiscovery { + + public static final Tag APPLICABLE_TAG = new Tag("applicable", Messages.MavenDiscovery_Wizard_Applicable_Tag); //$NON-NLS-1$ + + private static final Tag EXTRAS_TAG = new Tag("extras", Messages.MavenDiscovery_Wizard_ExtrasTag); //$NON-NLS-1$ + + private static final Tag LIFECYCLES_TAG = new Tag("lifecycles", Messages.MavenDiscovery_Wizard_LifecyclesTag); //$NON-NLS-1$ + + private static final Tag MAVEN_TAG = new Tag("maven", Messages.MavenDiscovery_Wizard_MavenTag); //$NON-NLS-1$ + + private static final String PATH = "http://download.eclipse.org/technology/m2e/discovery/directory.xml"; //$NON-NLS-1$ + + public static void launchWizard(final Collection<String> packagingTypes, Collection<MojoExecution> mojos) { + final Display display = Workbench.getInstance().getDisplay(); + display.asyncExec(new Runnable() { + public void run() { + launchWizard(display.getActiveShell(), packagingTypes); + } + }); + } + + public static void launchWizard(Shell shell, Collection<String> packagingTypes) { + Catalog catalog = new Catalog(); + catalog.setEnvironment(DiscoveryCore.createEnvironment()); + catalog.setVerifyUpdateSiteAvailability(false); + + // look for remote descriptor + RemoteBundleDiscoveryStrategy remoteDiscoveryStrategy = new RemoteBundleDiscoveryStrategy(); + remoteDiscoveryStrategy.setDirectoryUrl(PATH); + catalog.getDiscoveryStrategies().add(remoteDiscoveryStrategy); + + // Build the list of tags to show in the Wizard header + List<Tag> tags = new ArrayList<Tag>(3); + if(!packagingTypes.isEmpty()) { + tags.add(APPLICABLE_TAG); + } + tags.add(EXTRAS_TAG); + tags.add(LIFECYCLES_TAG); + tags.add(MAVEN_TAG); + catalog.setTags(tags); + + // Create configuration for the catalog + MavenCatalogConfiguration configuration = new MavenCatalogConfiguration(); + configuration.setShowTagFilter(true); + if(!packagingTypes.isEmpty()) { + tags = new ArrayList<Tag>(1); + tags.add(APPLICABLE_TAG); + configuration.setSelectedTags(tags); + } else { + configuration.setSelectedTags(tags); + } + configuration.setShowInstalledFilter(false); + configuration.setSelectedPackagingTypes(packagingTypes); + + MavenDiscoveryWizard wizard = new MavenDiscoveryWizard(catalog, configuration); + WizardDialog dialog = new WizardDialog(shell, wizard); + dialog.open(); + } +} diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/MavenDiscoveryIcons.java b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/MavenDiscoveryIcons.java new file mode 100644 index 00000000..4f200525 --- /dev/null +++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/MavenDiscoveryIcons.java @@ -0,0 +1,57 @@ +/******************************************************************************* + * Copyright (c) 2011 Sonatype, Inc. + * 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: + * Sonatype, Inc. - initial API and implementation + *******************************************************************************/ + +package org.eclipse.m2e.internal.discovery; + +import java.net.MalformedURLException; +import java.net.URL; + +import org.eclipse.core.runtime.Platform; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.resource.ImageRegistry; +import org.eclipse.swt.graphics.Image; + + +public class MavenDiscoveryIcons { + + public static final String PLUGIN_ID = "org.eclipse.m2e.discovery"; //$NON-NLS-1$ + + private static final URL baseURL = Platform.getBundle(PLUGIN_ID).getEntry("/icons/"); //$NON-NLS-1$ + + private static ImageRegistry imageRegistry; + + public static final ImageDescriptor WIZARD_BANNER = create("banner.gif"); //$NON-NLS-1$ + + private static ImageDescriptor create(String string) { + try { + return ImageDescriptor.createFromURL(new URL(baseURL, string)); + } catch(MalformedURLException e) { + return ImageDescriptor.getMissingImageDescriptor(); + } + } + + public static Image getImage(ImageDescriptor descriptor) { + ImageRegistry imageRegistry = getImageRegistry(); + Image image = imageRegistry.get(String.valueOf(descriptor.hashCode())); + if(image == null) { + image = descriptor.createImage(true); + imageRegistry.put(String.valueOf(descriptor.hashCode()), image); + } + return image; + } + + private static ImageRegistry getImageRegistry() { + if(imageRegistry == null) { + imageRegistry = new ImageRegistry(); + } + return imageRegistry; + } +} diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/Messages.java b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/Messages.java new file mode 100644 index 00000000..f60984c2 --- /dev/null +++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/Messages.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2011 Sonatype, Inc. + * 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: + * Sonatype, Inc. - initial API and implementation + *******************************************************************************/ + +package org.eclipse.m2e.internal.discovery; + +import org.eclipse.osgi.util.NLS; + + +public class Messages extends NLS { + private static final String BUNDLE_NAME = "org.eclipse.m2e.internal.discovery.messages"; //$NON-NLS-1$ + + public static String DiscoveryWizardProposal_Label; + + public static String MavenCatalogPage_Descripton; + + public static String MavenCatalogPage_Title; + + public static String MavenCatalogViewer_Error_loading_lifecycle; + + public static String MavenCatalogViewer_Missing_packaging_type; + + public static String MavenDiscoveryWizard_Title; + + public static String MavenDiscovery_Wizard_Applicable_Tag; + + public static String MavenDiscovery_Wizard_ExtrasTag; + + public static String MavenDiscovery_Wizard_LifecyclesTag; + + public static String MavenDiscovery_Wizard_MavenTag; + + static { + // initialize resource bundle + NLS.initializeMessages(BUNDLE_NAME, Messages.class); + } + + private Messages() { + } +} diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/handlers/MavenDiscoveryHandler.java b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/handlers/MavenDiscoveryHandler.java new file mode 100644 index 00000000..933caa95 --- /dev/null +++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/handlers/MavenDiscoveryHandler.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * Copyright (c) 2011 Sonatype, Inc. + * 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: + * Sonatype, Inc. - initial API and implementation + *******************************************************************************/ + +package org.eclipse.m2e.internal.discovery.handlers; + +import java.util.Collections; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.m2e.internal.discovery.MavenDiscovery; +import org.eclipse.ui.handlers.HandlerUtil; + + +public class MavenDiscoveryHandler extends AbstractHandler { + + @SuppressWarnings("unchecked") + public Object execute(ExecutionEvent event) throws ExecutionException { + MavenDiscovery.launchWizard(HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell(), Collections.EMPTY_LIST); + return null; + } +} diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/markers/DiscoveryWizardProposal.java b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/markers/DiscoveryWizardProposal.java new file mode 100644 index 00000000..5dd2c3fd --- /dev/null +++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/markers/DiscoveryWizardProposal.java @@ -0,0 +1,36 @@ +/*******************************************************************************
+ * Copyright (c) 2011 Sonatype, Inc.
+ * 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:
+ * Sonatype, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.m2e.internal.discovery.markers;
+
+import java.util.Arrays;
+import java.util.Collections;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.m2e.core.core.IMavenConstants;
+import org.eclipse.m2e.internal.discovery.MavenDiscovery;
+import org.eclipse.m2e.internal.discovery.Messages;
+import org.eclipse.ui.IMarkerResolution;
+
+
+class DiscoveryWizardProposal implements IMarkerResolution {
+
+ static final DiscoveryWizardProposal PROPOSAL = new DiscoveryWizardProposal();
+
+ public String getLabel() {
+ return Messages.DiscoveryWizardProposal_Label;
+ }
+
+ public void run(IMarker marker) {
+ String packaging = marker.getAttribute(IMavenConstants.MARKER_ATTR_PACKAGING, null);
+ if (packaging != null)
+ MavenDiscovery.launchWizard(Arrays.asList(new String[] {packaging}), Collections.EMPTY_LIST);
+ }
+}
\ No newline at end of file diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/markers/MavenDiscoveryMarkerResolutionGenerator.java b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/markers/MavenDiscoveryMarkerResolutionGenerator.java new file mode 100644 index 00000000..8e278c5a --- /dev/null +++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/markers/MavenDiscoveryMarkerResolutionGenerator.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * Copyright (c) 2011 Sonatype, Inc. + * 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: + * Sonatype, Inc. - initial API and implementation + *******************************************************************************/ +package org.eclipse.m2e.internal.discovery.markers; + +import org.eclipse.core.resources.IMarker; +import org.eclipse.m2e.core.core.IMavenConstants; +import org.eclipse.ui.IMarkerResolution; +import org.eclipse.ui.IMarkerResolutionGenerator; +import org.eclipse.ui.IMarkerResolutionGenerator2; + + +public class MavenDiscoveryMarkerResolutionGenerator implements IMarkerResolutionGenerator, IMarkerResolutionGenerator2 { + + public boolean hasResolutions(IMarker marker) { + String type = marker.getAttribute(IMavenConstants.MARKER_ATTR_EDITOR_HINT, null); + return IMavenConstants.EDITOR_HINT_UNKNOWN_PACKAGING.equals(type) + || IMavenConstants.EDITOR_HINT_NOT_COVERED_MOJO_EXECUTION.equals(type); + } + + public IMarkerResolution[] getResolutions(IMarker marker) { + String type = marker.getAttribute(IMavenConstants.MARKER_ATTR_EDITOR_HINT, null); + if(IMavenConstants.EDITOR_HINT_UNKNOWN_PACKAGING.equals(type)) { + return new IMarkerResolution[] {DiscoveryWizardProposal.PROPOSAL}; + } else if(IMavenConstants.EDITOR_HINT_NOT_COVERED_MOJO_EXECUTION.equals(type)) { + return new IMarkerResolution[] {DiscoveryWizardProposal.PROPOSAL}; + } + return new IMarkerResolution[0]; + } +} diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/messages.properties b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/messages.properties new file mode 100644 index 00000000..e7b3665f --- /dev/null +++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/messages.properties @@ -0,0 +1,17 @@ +# +# Copyright (c) 2011 Sonatype, Inc. +# 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 +# +DiscoveryWizardProposal_Label=Discover new m2e add-ons +MavenCatalogPage_Descripton=Select updates and add-ons to install. Press Finish to proceed with installation.\nPress the information button to see a detailed overview and a link to more information. +MavenCatalogPage_Title=Install m2e add-ons +MavenCatalogViewer_Error_loading_lifecycle=An error occurred loading lifecycle data for catalog item: {0}. +MavenCatalogViewer_Missing_packaging_type=No relevant CatalogItem found for packaging type: {0}. +MavenDiscoveryWizard_Title=M2e store +MavenDiscovery_Wizard_Applicable_Tag=Applicable +MavenDiscovery_Wizard_ExtrasTag=Extras +MavenDiscovery_Wizard_LifecyclesTag=Lifecycles +MavenDiscovery_Wizard_MavenTag=Maven diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenCatalogConfiguration.java b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenCatalogConfiguration.java new file mode 100644 index 00000000..a837d664 --- /dev/null +++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenCatalogConfiguration.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (c) 2011 Sonatype, Inc. + * 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: + * Sonatype, Inc. - initial API and implementation + *******************************************************************************/ + +package org.eclipse.m2e.internal.discovery.wizards; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogConfiguration; + + +@SuppressWarnings("restriction") +public class MavenCatalogConfiguration extends CatalogConfiguration { + + private Set<String> selectedPackagingTypes; + + public Collection<String> getSelectedPackagingTypes() { + return selectedPackagingTypes; + } + + // IDs for catalog items which should be selected when the wizard is presented + public void setSelectedPackagingTypes(Collection<String> packagingTypes) { + if(selectedPackagingTypes == null) { + selectedPackagingTypes = new HashSet<String>(packagingTypes); + } else { + selectedPackagingTypes.addAll(packagingTypes); + } + } +} diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenCatalogPage.java b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenCatalogPage.java new file mode 100644 index 00000000..c902dda0 --- /dev/null +++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenCatalogPage.java @@ -0,0 +1,37 @@ +/*******************************************************************************
+ * Copyright (c) 2011 Sonatype, Inc.
+ * 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:
+ * Sonatype, Inc. - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.m2e.internal.discovery.wizards;
+
+import org.eclipse.equinox.internal.p2.discovery.Catalog;
+import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogPage;
+import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogViewer;
+import org.eclipse.m2e.internal.discovery.Messages;
+import org.eclipse.swt.widgets.Composite;
+
+
+@SuppressWarnings("restriction")
+public class MavenCatalogPage extends CatalogPage {
+
+ public MavenCatalogPage(Catalog catalog) {
+ super(catalog);
+ setTitle(Messages.MavenCatalogPage_Title);
+ setDescription(Messages.MavenCatalogPage_Descripton);
+ }
+
+ protected CatalogViewer doCreateViewer(Composite parent) {
+ MavenCatalogViewer viewer = new MavenCatalogViewer(getCatalog(), this, getContainer(), getWizard()
+ .getConfiguration());
+ viewer.setMinimumHeight(MINIMUM_HEIGHT);
+ viewer.createControl(parent);
+ return viewer;
+ }
+}
diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenCatalogViewer.java b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenCatalogViewer.java new file mode 100644 index 00000000..2179cdab --- /dev/null +++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenCatalogViewer.java @@ -0,0 +1,114 @@ +/*******************************************************************************
+ * Copyright (c) 2011 Sonatype, Inc.
+ * 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:
+ * Sonatype, Inc. - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.m2e.internal.discovery.wizards;
+
+import java.net.URL;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.equinox.internal.p2.discovery.Catalog;
+import org.eclipse.equinox.internal.p2.discovery.model.CatalogItem;
+import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogConfiguration;
+import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogViewer;
+import org.eclipse.jface.operation.IRunnableContext;
+import org.eclipse.jface.window.IShellProvider;
+import org.eclipse.m2e.core.core.MavenLogger;
+import org.eclipse.m2e.core.internal.lifecycle.LifecycleMappingFactory;
+import org.eclipse.m2e.core.internal.lifecycle.model.LifecycleMappingMetadata;
+import org.eclipse.m2e.core.internal.lifecycle.model.LifecycleMappingMetadataSource;
+import org.eclipse.m2e.internal.discovery.MavenDiscovery;
+import org.eclipse.m2e.internal.discovery.Messages;
+import org.eclipse.osgi.util.NLS;
+
+
+@SuppressWarnings("restriction")
+public class MavenCatalogViewer extends CatalogViewer {
+
+ private static final String PATH = "lifecycle/"; //$NON-NLS-1$
+
+ private static final String EXT = ".xml"; //$NON-NLS-1$
+
+ private static final String ID = "org.eclipse.m2e.discovery"; //$NON-NLS-1$
+
+ public MavenCatalogViewer(Catalog catalog, IShellProvider shellProvider, IRunnableContext context,
+ CatalogConfiguration configuration) {
+ super(catalog, shellProvider, context, configuration);
+ }
+
+ @Override
+ protected void postDiscovery() {
+ super.postDiscovery();
+
+ final MavenCatalogConfiguration config = (MavenCatalogConfiguration) getConfiguration();
+ final Collection<String> selectedPackagingTypes = config.getSelectedPackagingTypes();
+
+ shellProvider.getShell().getDisplay().syncExec(new Runnable() {
+ @SuppressWarnings("synthetic-access")
+ public void run() {
+ Map<String, Set<CatalogItem>> map = new HashMap<String, Set<CatalogItem>>();
+
+ for(String packagingType : selectedPackagingTypes) {
+ map.put(packagingType, new HashSet<CatalogItem>());
+ for(CatalogItem ci : getCatalog().getItems()) {
+ LifecycleMappingMetadataSource src = getLifecycleMappingMetadataSource(ci);
+ if(src != null && hasPackaging(src, packagingType)) {
+ Set<CatalogItem> items = map.get(packagingType);
+ items.add(ci);
+ }
+ }
+ }
+
+ // Select relevant CatalogItems
+ // TODO Make selection smarter
+ for(Entry<String, Set<CatalogItem>> type : map.entrySet()) {
+ if(type.getValue().isEmpty()) {
+ MavenLogger.log(NLS.bind(Messages.MavenCatalogViewer_Missing_packaging_type, type.getKey()));
+ }
+ for(CatalogItem ci : type.getValue()) {
+ modifySelection(ci, true);
+ ci.addTag(MavenDiscovery.APPLICABLE_TAG);
+ }
+ }
+ }
+ });
+ }
+
+ private static LifecycleMappingMetadataSource getLifecycleMappingMetadataSource(CatalogItem ci) {
+ try {
+ return LifecycleMappingFactory.createLifecycleMappingMetadataSource(getLifecycleMappingMetadataSourceURL(ci));
+ } catch(Exception e) {
+ MavenLogger.log(new Status(IStatus.WARNING, ID, NLS.bind(Messages.MavenCatalogViewer_Error_loading_lifecycle,
+ ci.getId()), e));
+ return null;
+ }
+ }
+
+ private static URL getLifecycleMappingMetadataSourceURL(CatalogItem ci) {
+ return ci.getSource().getResource(PATH + ci.getId() + EXT);
+ }
+
+ private static boolean hasPackaging(LifecycleMappingMetadataSource lifecycleMappingMetadataSource,
+ String packagingType) {
+ for(LifecycleMappingMetadata lifecycleMappingMetadata : lifecycleMappingMetadataSource.getLifecycleMappings()) {
+ if(packagingType.equals(lifecycleMappingMetadata.getPackagingType())) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenDiscoveryWizard.java b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenDiscoveryWizard.java new file mode 100644 index 00000000..346e0ba2 --- /dev/null +++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenDiscoveryWizard.java @@ -0,0 +1,34 @@ +/*******************************************************************************
+ * Copyright (c) 2011 Sonatype, Inc.
+ * 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:
+ * Sonatype, Inc. - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.m2e.internal.discovery.wizards;
+
+import org.eclipse.equinox.internal.p2.discovery.Catalog;
+import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogPage;
+import org.eclipse.equinox.internal.p2.ui.discovery.wizards.DiscoveryWizard;
+import org.eclipse.m2e.internal.discovery.MavenDiscoveryIcons;
+import org.eclipse.m2e.internal.discovery.Messages;
+
+
+@SuppressWarnings("restriction")
+public class MavenDiscoveryWizard extends DiscoveryWizard {
+
+ public MavenDiscoveryWizard(Catalog catalog, MavenCatalogConfiguration configuration) {
+ super(catalog, configuration);
+ setWindowTitle(Messages.MavenDiscoveryWizard_Title);
+ setDefaultPageImageDescriptor(MavenDiscoveryIcons.WIZARD_BANNER);
+ }
+
+ @Override
+ protected CatalogPage doCreateCatalogPage() {
+ return new MavenCatalogPage(getCatalog());
+ }
+}
|