| /******************************************************************************* |
| * Copyright (c) 2010, 2014 The Eclipse Foundation 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: |
| * The Eclipse Foundation - initial API and implementation |
| * Yatta Solutions - bug 432803: public API |
| *******************************************************************************/ |
| package org.eclipse.epp.mpc.ui; |
| |
| import java.util.List; |
| |
| import org.eclipse.core.commands.ExecutionException; |
| import org.eclipse.epp.internal.mpc.ui.CatalogRegistry; |
| import org.eclipse.epp.internal.mpc.ui.MarketplaceClientUiPlugin; |
| |
| /** |
| * Provides a means to configure and launch the marketplace client. |
| * |
| * @author David Green |
| * @author Carsten Reckord |
| */ |
| public class MarketplaceClient { |
| /** |
| * Add a catalog descriptor to those available to be the user when accessing the marketplace. |
| * |
| * @param catalogDescriptor |
| * the descriptor, must not be null |
| * @see #removeCatalogDescriptor(CatalogDescriptor) |
| */ |
| public static void addCatalogDescriptor(CatalogDescriptor catalogDescriptor) { |
| if (catalogDescriptor == null) { |
| throw new IllegalArgumentException(); |
| } |
| CatalogRegistry.getInstance().register(catalogDescriptor); |
| } |
| |
| /** |
| * Remove a catalog descriptor from those available to the user when accessing the marketplace. |
| * |
| * @see #addCatalogDescriptor(CatalogDescriptor) |
| */ |
| public static void removeCatalogDescriptor(CatalogDescriptor catalogDescriptor) { |
| if (catalogDescriptor == null) { |
| throw new IllegalArgumentException(); |
| } |
| CatalogRegistry.getInstance().unregister(catalogDescriptor); |
| } |
| |
| /** |
| * Open the marketplace wizard, which will prompt the user to select software to install or uninstall. Must only be |
| * called from the UI thread. |
| * <p> |
| * Upon return of this method the UI will have been displayed, however any provisioning operations instigated by the |
| * user may not have completed. |
| * </p> |
| * |
| * @param catalogDescriptors |
| * the catalogs to query, or null if the default catalogs should be used. |
| * @throws IllegalArgumentException |
| * if the given catalogs are not null and either empty or improperly configured |
| * @throws ExecutionException |
| * if an exception occurs when attempting to present the UI |
| */ |
| public static void openMarketplaceWizard(List<CatalogDescriptor> catalogDescriptors) |
| throws IllegalArgumentException, ExecutionException { |
| if (catalogDescriptors != null) { |
| if (catalogDescriptors.isEmpty()) { |
| throw new IllegalArgumentException(); |
| } |
| for (CatalogDescriptor descriptor : catalogDescriptors) { |
| if (descriptor.getUrl() == null) { |
| throw new IllegalArgumentException(); |
| } |
| if (descriptor.getLabel() == null) { |
| throw new IllegalArgumentException(); |
| } |
| } |
| } |
| IMarketplaceClientService clientService = getMarketplaceClientService(); |
| IMarketplaceClientConfiguration config = clientService.newConfiguration(); |
| if (catalogDescriptors != null) { |
| config.setCatalogDescriptors(catalogDescriptors); |
| } |
| clientService.open(config); |
| } |
| |
| /** |
| * Convenience method to retrieve a registered {@link IMarketplaceClientService client service} for opening the MPC |
| * wizard dialog. |
| * |
| * @return a client service from the OSGi service registry |
| */ |
| public static IMarketplaceClientService getMarketplaceClientService() { |
| return MarketplaceClientUiPlugin.getInstance().getClientService(); |
| } |
| } |