| /******************************************************************************* |
| * Copyright (c) 2007, 2010 IBM Corporation 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: |
| * IBM Corporation - initial API and implementation |
| * Sonatype, Inc. - ongoing development |
| *******************************************************************************/ |
| package org.eclipse.equinox.internal.p2.ui.dialogs; |
| |
| import java.util.ArrayList; |
| import java.util.Collection; |
| import org.eclipse.equinox.internal.p2.ui.ProvUIImages; |
| import org.eclipse.equinox.internal.p2.ui.ProvUIMessages; |
| import org.eclipse.equinox.internal.p2.ui.model.*; |
| import org.eclipse.equinox.p2.metadata.IInstallableUnit; |
| import org.eclipse.equinox.p2.operations.ProfileChangeOperation; |
| import org.eclipse.equinox.p2.operations.UninstallOperation; |
| import org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob; |
| import org.eclipse.equinox.p2.ui.ProvisioningUI; |
| import org.eclipse.jface.wizard.IWizardPage; |
| |
| /** |
| * @since 3.4 |
| */ |
| public class UninstallWizard extends ProvisioningOperationWizard { |
| |
| public UninstallWizard(ProvisioningUI ui, UninstallOperation operation, Collection<IInstallableUnit> initialSelections, LoadMetadataRepositoryJob job) { |
| super(ui, operation, initialSelections.toArray(), job); |
| setWindowTitle(ProvUIMessages.UninstallIUOperationLabel); |
| setDefaultPageImageDescriptor(ProvUIImages.getImageDescriptor(ProvUIImages.WIZARD_BANNER_UNINSTALL)); |
| } |
| |
| protected ISelectableIUsPage createMainPage(IUElementListRoot input, Object[] selections) { |
| mainPage = new SelectableIUsPage(ui, this, input, selections); |
| mainPage.setTitle(ProvUIMessages.UninstallIUOperationLabel); |
| mainPage.setDescription(ProvUIMessages.UninstallDialog_UninstallMessage); |
| ((SelectableIUsPage) mainPage).updateStatus(input, operation); |
| return mainPage; |
| } |
| |
| protected ResolutionResultsWizardPage createResolutionPage() { |
| return new UninstallWizardPage(ui, this, root, (UninstallOperation) operation); |
| } |
| |
| protected void initializeResolutionModelElements(Object[] selectedElements) { |
| root = new IUElementListRoot(); |
| ArrayList<InstalledIUElement> list = new ArrayList<InstalledIUElement>(selectedElements.length); |
| ArrayList<InstalledIUElement> selections = new ArrayList<InstalledIUElement>(selectedElements.length); |
| for (int i = 0; i < selectedElements.length; i++) { |
| IInstallableUnit iu = ElementUtils.getIU(selectedElements[i]); |
| if (iu != null) { |
| InstalledIUElement element = new InstalledIUElement(root, getProfileId(), iu); |
| list.add(element); |
| selections.add(element); |
| } |
| } |
| root.setChildren(list.toArray()); |
| planSelections = selections.toArray(); |
| } |
| |
| protected IResolutionErrorReportingPage createErrorReportingPage() { |
| return (SelectableIUsPage) mainPage; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * @see org.eclipse.jface.wizard.Wizard#getStartingPage() |
| */ |
| public IWizardPage getStartingPage() { |
| if (getCurrentStatus().isOK()) { |
| ((SelectableIUsPage) mainPage).setPageComplete(true); |
| return resolutionPage; |
| } |
| return super.getStartingPage(); |
| } |
| |
| /* (non-Javadoc) |
| * @see org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard#getProfileChangeOperation(java.lang.Object[]) |
| */ |
| protected ProfileChangeOperation getProfileChangeOperation(Object[] elements) { |
| UninstallOperation op = new UninstallOperation(ui.getSession(), ElementUtils.elementsToIUs(elements)); |
| op.setProfileId(getProfileId()); |
| // op.setRootMarkerKey(getRootMarkerKey()); |
| op.setProvisioningContext(getProvisioningContext()); |
| return op; |
| } |
| } |