diff options
author | Pascal Rapicault | 2010-01-13 17:29:41 +0000 |
---|---|---|
committer | Pascal Rapicault | 2010-01-13 17:29:41 +0000 |
commit | 18189f0d42f7375660762dc6c885cf31683ae562 (patch) | |
tree | 17775d847bed9a33f3c68b74db2df75a2139c0bc /examples/org.eclipse.equinox.p2.examples.rcp.cloud | |
parent | c363f2984a09b73c422e38f4556fd3b23eafe958 (diff) | |
download | rt.equinox.p2-18189f0d42f7375660762dc6c885cf31683ae562.tar.gz rt.equinox.p2-18189f0d42f7375660762dc6c885cf31683ae562.tar.xz rt.equinox.p2-18189f0d42f7375660762dc6c885cf31683ae562.zip |
Merging api branch back to HEADv20100113
Diffstat (limited to 'examples/org.eclipse.equinox.p2.examples.rcp.cloud')
9 files changed, 77 insertions, 191 deletions
diff --git a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/.settings/org.eclipse.jdt.core.prefs index 88da5d43a..8f8669add 100644 --- a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/.settings/org.eclipse.jdt.core.prefs +++ b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/.settings/org.eclipse.jdt.core.prefs @@ -1,7 +1,7 @@ #Thu Mar 12 11:04:59 PDT 2009 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=jsr14 org.eclipse.jdt.core.compiler.compliance=1.5 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error diff --git a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/META-INF/MANIFEST.MF b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/META-INF/MANIFEST.MF index 5c908b502..5796e7571 100644 --- a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/META-INF/MANIFEST.MF +++ b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/META-INF/MANIFEST.MF @@ -7,7 +7,8 @@ Bundle-Activator: org.eclipse.equinox.p2.examples.rcp.cloud.Activator Bundle-Localization: plugin Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, - org.eclipse.equinox.p2.ui;bundle-version="1.0.100", + org.eclipse.equinox.p2.operations;bundle-version="2.0.0", + org.eclipse.equinox.p2.ui;bundle-version="2.0.0", org.eclipse.equinox.p2.metadata;bundle-version="1.0.0", org.eclipse.equinox.p2.metadata.repository;bundle-version="1.0.0", org.eclipse.equinox.p2.artifact.repository;bundle-version="1.0.0", diff --git a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/Activator.java b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/Activator.java index c12d07d85..c0589471a 100644 --- a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/Activator.java +++ b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/Activator.java @@ -1,8 +1,7 @@ package org.eclipse.equinox.p2.examples.rcp.cloud; -import org.eclipse.equinox.internal.provisional.p2.core.eventbus.IProvisioningEventBus; -import org.eclipse.equinox.internal.provisional.p2.ui.policy.Policy; import org.eclipse.equinox.p2.examples.rcp.cloud.p2.CloudPolicy; +import org.eclipse.equinox.p2.ui.Policy; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.osgi.framework.BundleContext; diff --git a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/CloudPolicy.java b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/CloudPolicy.java index bc962fb16..c5b754f93 100644 --- a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/CloudPolicy.java +++ b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/CloudPolicy.java @@ -10,8 +10,7 @@ *******************************************************************************/ package org.eclipse.equinox.p2.examples.rcp.cloud.p2; -import org.eclipse.equinox.internal.provisional.p2.ui.policy.IUViewQueryContext; -import org.eclipse.equinox.internal.provisional.p2.ui.policy.Policy; +import org.eclipse.equinox.p2.ui.Policy; /** * CloudPolicy defines the RCP Cloud Example policies for the p2 UI. The policy @@ -21,12 +20,10 @@ import org.eclipse.equinox.internal.provisional.p2.ui.policy.Policy; */ public class CloudPolicy extends Policy { public CloudPolicy() { - // XXX User has no access to manipulate repositories - setRepositoryManipulator(null); - + // XXX User has no visibility for repos + setRepositoriesVisible(false); + // XXX Default view is by category - IUViewQueryContext queryContext = new IUViewQueryContext( - IUViewQueryContext.AVAILABLE_VIEW_BY_CATEGORY); - setQueryContext(queryContext); + setGroupByCategory(true); } } diff --git a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/InstallNewSoftwareHandler.java b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/InstallNewSoftwareHandler.java index 9e08c2e2b..a7e9b7921 100644 --- a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/InstallNewSoftwareHandler.java +++ b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/InstallNewSoftwareHandler.java @@ -1,22 +1,17 @@ /******************************************************************************* - * Copyright (c) 2008 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: + * Copyright (c) 2008, 2009 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 *******************************************************************************/ package org.eclipse.equinox.p2.examples.rcp.cloud.p2; -import org.eclipse.equinox.internal.provisional.p2.ui.IProvHelpContextIds; -import org.eclipse.equinox.internal.provisional.p2.ui.QueryableMetadataRepositoryManager; -import org.eclipse.equinox.internal.provisional.p2.ui.dialogs.InstallWizard; -import org.eclipse.equinox.internal.provisional.p2.ui.dialogs.ProvisioningWizardDialog; -import org.eclipse.equinox.internal.provisional.p2.ui.policy.Policy; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.ui.PlatformUI; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob; /** * InstallNewSoftwareHandler invokes the install wizard @@ -32,21 +27,25 @@ public class InstallNewSoftwareHandler extends PreloadingRepositoryHandler { super(); } - protected void doExecute(String profileId, QueryableMetadataRepositoryManager manager) { - InstallWizard wizard = new InstallWizard(Policy.getDefault(), profileId, null, null, manager); - WizardDialog dialog = new ProvisioningWizardDialog(getShell(), wizard); - dialog.create(); - PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(), IProvHelpContextIds.INSTALL_WIZARD); - - dialog.open(); + protected void doExecute(LoadMetadataRepositoryJob job) { + getProvisioningUI().openInstallWizard(getShell(), null, null, job); } protected boolean waitForPreload() { - // If there is no way for the user to manipulate repositories, - // then we may as well wait for existing repos to load so that - // content is available. If the user can manipulate the - // repositories, then we don't wait, because we don't know which - // ones they want to work with. - return Policy.getDefault().getRepositoryManipulator() == null; + // If the user cannot see repositories, then we may as well wait + // for existing repos to load so that content is available. + // If the user can manipulate the repositories, then we don't wait, + // because we don't know which ones they want to work with. + return !getProvisioningUI().getPolicy().getRepositoriesVisible(); + } + + protected void setLoadJobProperties(Job loadJob) { + super.setLoadJobProperties(loadJob); + // If we are doing a background load, we do not wish to authenticate, as the + // user is unaware that loading was needed + if (!waitForPreload()) { + loadJob.setProperty(LoadMetadataRepositoryJob.SUPPRESS_AUTHENTICATION_JOB_MARKER, Boolean.toString(true)); + loadJob.setProperty(LoadMetadataRepositoryJob.SUPPRESS_REPOSITORY_EVENTS, Boolean.toString(true)); + } } } diff --git a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/Messages.java b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/Messages.java deleted file mode 100644 index 2e228a737..000000000 --- a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/Messages.java +++ /dev/null @@ -1,25 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 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 - *******************************************************************************/ - -package org.eclipse.equinox.p2.examples.rcp.cloud.p2; - -import org.eclipse.osgi.util.NLS; - -public class Messages extends NLS { - private static final String BUNDLE_NAME = "org.eclipse.equinox.p2.examples.rcp.cloud.p2.messages"; //$NON-NLS-1$ - static { - // load message values from bundle file - NLS.initializeMessages(BUNDLE_NAME, Messages.class); - } - public static String InstallNewSoftwareHandler_LoadRepositoryJobLabel; - public static String UpdateHandler_NoSitesMessage; - public static String UpdateHandler_NoSitesTitle; -} diff --git a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/PreloadingRepositoryHandler.java b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/PreloadingRepositoryHandler.java index 8b2213a0c..66aa00c4a 100644 --- a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/PreloadingRepositoryHandler.java +++ b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/PreloadingRepositoryHandler.java @@ -12,28 +12,22 @@ package org.eclipse.equinox.p2.examples.rcp.cloud.p2; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; -import org.eclipse.core.runtime.*; -import org.eclipse.core.runtime.jobs.*; -import org.eclipse.equinox.internal.provisional.p2.core.ProvisionException; -import org.eclipse.equinox.internal.provisional.p2.engine.IProfileRegistry; -import org.eclipse.equinox.internal.provisional.p2.ui.ProvUI; -import org.eclipse.equinox.internal.provisional.p2.ui.QueryableMetadataRepositoryManager; -import org.eclipse.equinox.internal.provisional.p2.ui.policy.Policy; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.swt.custom.BusyIndicator; +import org.eclipse.core.runtime.jobs.IJobChangeEvent; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.core.runtime.jobs.JobChangeAdapter; +import org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob; +import org.eclipse.equinox.p2.ui.ProvisioningUI; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; /** - * PreloadingRepositoryHandler provides background loading of repositories - * before executing the provisioning handler. + * PreloadingRepositoryHandler provides background loading of + * repositories before executing the provisioning handler. * * @since 3.5 */ abstract class PreloadingRepositoryHandler extends AbstractHandler { - Object LOAD_FAMILY = new Object(); - /** * The constructor. */ @@ -45,46 +39,26 @@ abstract class PreloadingRepositoryHandler extends AbstractHandler { * Execute the command. */ public Object execute(ExecutionEvent event) { - final String profileId = IProfileRegistry.SELF; - BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() { - public void run() { - doExecuteAndLoad(profileId, preloadRepositories()); - } - }); + doExecuteAndLoad(); return null; } - void doExecuteAndLoad(final String profileId, boolean preloadRepositories) { - // cancel any load that is already running - Job.getJobManager().cancel(LOAD_FAMILY); - final QueryableMetadataRepositoryManager queryableManager = new QueryableMetadataRepositoryManager( - Policy.getDefault().getQueryContext(), false); - if (preloadRepositories) { - Job loadJob = new Job( - Messages.InstallNewSoftwareHandler_LoadRepositoryJobLabel) { - - protected IStatus run(IProgressMonitor monitor) { - queryableManager.loadAll(monitor); - return Status.OK_STATUS; - } - - public boolean belongsTo(Object family) { - return family == LOAD_FAMILY; - } - - }; + void doExecuteAndLoad() { + if (preloadRepositories()) { + //cancel any load that is already running + Job.getJobManager().cancel(LoadMetadataRepositoryJob.LOAD_FAMILY); + final LoadMetadataRepositoryJob loadJob = new LoadMetadataRepositoryJob(getProvisioningUI()); + setLoadJobProperties(loadJob); if (waitForPreload()) { loadJob.addJobChangeListener(new JobChangeAdapter() { public void done(IJobChangeEvent event) { if (PlatformUI.isWorkbenchRunning()) if (event.getResult().isOK()) { - PlatformUI.getWorkbench().getDisplay() - .asyncExec(new Runnable() { - public void run() { - doExecute(profileId, - queryableManager); - } - }); + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + public void run() { + doExecute(loadJob); + } + }); } } }); @@ -95,15 +69,14 @@ abstract class PreloadingRepositoryHandler extends AbstractHandler { loadJob.setSystem(true); loadJob.setUser(false); loadJob.schedule(); - doExecute(profileId, queryableManager); + doExecute(null); } } else { - doExecute(profileId, queryableManager); + doExecute(null); } } - protected abstract void doExecute(String profileId, - QueryableMetadataRepositoryManager manager); + protected abstract void doExecute(LoadMetadataRepositoryJob job); protected boolean preloadRepositories() { return true; @@ -113,12 +86,19 @@ abstract class PreloadingRepositoryHandler extends AbstractHandler { return true; } + protected void setLoadJobProperties(Job loadJob) { + loadJob.setProperty(LoadMetadataRepositoryJob.ACCUMULATE_LOAD_ERRORS, Boolean.toString(true)); + } + + protected ProvisioningUI getProvisioningUI() { + return ProvisioningUI.getDefaultUI(); + } + /** * Return a shell appropriate for parenting dialogs of this handler. - * * @return a Shell */ protected Shell getShell() { - return ProvUI.getDefaultParentShell(); + return getProvisioningUI().getDefaultParentShell(); } } diff --git a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/UpdateHandler.java b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/UpdateHandler.java index 1668b09b3..77db223a1 100644 --- a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/UpdateHandler.java +++ b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/UpdateHandler.java @@ -10,22 +10,9 @@ *******************************************************************************/ package org.eclipse.equinox.p2.examples.rcp.cloud.p2; -import java.util.Collection; -import java.util.Iterator; - -import org.eclipse.equinox.internal.provisional.p2.metadata.IInstallableUnit; -import org.eclipse.equinox.internal.provisional.p2.ui.ElementQueryDescriptor; -import org.eclipse.equinox.internal.provisional.p2.ui.ProvUI; -import org.eclipse.equinox.internal.provisional.p2.ui.QueryableMetadataRepositoryManager; -import org.eclipse.equinox.internal.provisional.p2.ui.actions.UpdateAction; -import org.eclipse.equinox.internal.provisional.p2.ui.model.ProfileElement; -import org.eclipse.equinox.internal.provisional.p2.ui.policy.Policy; -import org.eclipse.equinox.internal.provisional.p2.ui.policy.RepositoryManipulator; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.ISelectionProvider; -import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.equinox.p2.operations.RepositoryTracker; +import org.eclipse.equinox.p2.operations.UpdateOperation; +import org.eclipse.equinox.p2.ui.LoadMetadataRepositoryJob; /** * UpdateHandler invokes the check for updates UI @@ -36,59 +23,22 @@ public class UpdateHandler extends PreloadingRepositoryHandler { boolean hasNoRepos = false; - /** - * The constructor. - */ - public UpdateHandler() { - // constructor - } - - protected void doExecute(String profileId, QueryableMetadataRepositoryManager manager) { + protected void doExecute(LoadMetadataRepositoryJob job) { if (hasNoRepos) { - boolean goToSites = MessageDialog.openQuestion(getShell(), Messages.UpdateHandler_NoSitesTitle, Messages.UpdateHandler_NoSitesMessage); - if (goToSites) { - Policy.getDefault().getRepositoryManipulator().manipulateRepositories(getShell()); - } return; } - // get the profile roots - ElementQueryDescriptor queryDescriptor = Policy.getDefault().getQueryProvider().getQueryDescriptor(new ProfileElement(null, profileId)); - Collection collection = queryDescriptor.performQuery(null); - final IInstallableUnit[] roots = new IInstallableUnit[collection.size()]; - Iterator iter = collection.iterator(); - int i = 0; - while (iter.hasNext()) { - roots[i] = (IInstallableUnit) ProvUI.getAdapter(iter.next(), IInstallableUnit.class); - i++; + UpdateOperation operation = getProvisioningUI().getUpdateOperation(null, null); + // check for updates + operation.resolveModal(null); + if (getProvisioningUI().getPolicy().continueWorkingWithOperation(operation, getShell())) { + getProvisioningUI().openUpdateWizard(getShell(), true, operation, job); } - // now create an update action whose selection is all the roots - UpdateAction action = new UpdateAction(Policy.getDefault(), new ISelectionProvider() { - - public void addSelectionChangedListener(ISelectionChangedListener listener) { - // not dynamic - } - - public ISelection getSelection() { - return new StructuredSelection(roots); - } - - public void removeSelectionChangedListener(ISelectionChangedListener listener) { - // not dynamic - } - - public void setSelection(ISelection selection) { - // not mutable - - } - }, profileId, false); - action.setRepositoryManager(manager); - action.run(); } protected boolean preloadRepositories() { hasNoRepos = false; - RepositoryManipulator repoMan = Policy.getDefault().getRepositoryManipulator(); - if (repoMan != null && repoMan.getKnownRepositories().length == 0) { + RepositoryTracker repoMan = getProvisioningUI().getRepositoryTracker(); + if (repoMan.getKnownRepositories(getProvisioningUI().getSession()).length == 0) { hasNoRepos = true; return false; } diff --git a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/messages.properties b/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/messages.properties deleted file mode 100644 index e16c86732..000000000 --- a/examples/org.eclipse.equinox.p2.examples.rcp.cloud/src/org/eclipse/equinox/p2/examples/rcp/cloud/p2/messages.properties +++ /dev/null @@ -1,15 +0,0 @@ -############################################################################### -# Copyright (c) 2009 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 -############################################################################### - - -InstallNewSoftwareHandler_LoadRepositoryJobLabel=Contacting Software Sites -UpdateHandler_NoSitesMessage=There are no update sites to search. Do you wish to open the "Available Software Sites" preferences? -UpdateHandler_NoSitesTitle=No Updates Found |