diff options
author | rawagner | 2014-09-30 11:00:27 +0000 |
---|---|---|
committer | Igor Fedorenko | 2014-09-30 14:28:21 +0000 |
commit | 169e1a1348043936787be58099077ff60afbdd59 (patch) | |
tree | 95cd915f79f8a832b3134886ce1a93a46c7e1c82 | |
parent | ba02bfc991792d73c0e2adcf7aa35366a043cf7b (diff) | |
download | m2e-core-169e1a1348043936787be58099077ff60afbdd59.tar.gz m2e-core-169e1a1348043936787be58099077ff60afbdd59.tar.xz m2e-core-169e1a1348043936787be58099077ff60afbdd59.zip |
445205 Disable cancel and finish buttons while opening installation wizard
Change-Id: I8400aff484ec5c4b8c8561781063412f8f45997c
Signed-off-by: Rastislav Wagner <rawagner@redhat.com>
2 files changed, 46 insertions, 10 deletions
diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/MavenDiscoveryService.java b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/MavenDiscoveryService.java index 4d1a9403..8b120f8e 100644 --- a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/MavenDiscoveryService.java +++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/MavenDiscoveryService.java @@ -346,7 +346,7 @@ public class MavenDiscoveryService implements IMavenDiscoveryUI, IMavenDiscovery MavenDiscoveryInstallOperation runner = new MavenDiscoveryInstallOperation(toCatalogItems(proposals), postInstallHook, true, false, projectsToConfigure); context.run(true, true, runner); - int openInstallWizard = MavenDiscoveryUi.openInstallWizard(runner.getOperation(), true); + int openInstallWizard = MavenDiscoveryUi.openInstallWizard(runner.getOperation(), true, context); return openInstallWizard == Window.OK; } catch(InvocationTargetException e) { IStatus status = new Status(IStatus.ERROR, DiscoveryActivator.PLUGIN_ID, NLS.bind( diff --git a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenDiscoveryUi.java b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenDiscoveryUi.java index 96411213..88560eb7 100644 --- a/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenDiscoveryUi.java +++ b/org.eclipse.m2e.discovery/src/org/eclipse/m2e/internal/discovery/wizards/MavenDiscoveryUi.java @@ -16,6 +16,7 @@ import java.lang.reflect.InvocationTargetException; import java.util.List; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.equinox.internal.p2.discovery.model.CatalogItem; @@ -26,6 +27,7 @@ import org.eclipse.equinox.internal.p2.ui.discovery.wizards.Messages; import org.eclipse.equinox.p2.ui.ProvisioningUI; import org.eclipse.jface.operation.IRunnableContext; import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.osgi.util.NLS; import org.eclipse.ui.PlatformUI; @@ -63,7 +65,7 @@ public abstract class MavenDiscoveryUi { try { MavenDiscoveryInstallOperation runner = new MavenDiscoveryInstallOperation(descriptors, postInstallHook, true); context.run(true, true, runner); - openInstallWizard(runner.getOperation(), true); + openInstallWizard(runner.getOperation(), true, context); } catch(InvocationTargetException e) { if(e.getCause() instanceof CoreException) throw (CoreException) e.getCause(); @@ -78,13 +80,47 @@ public abstract class MavenDiscoveryUi { return true; } - public static int openInstallWizard(RestartInstallOperation operation, boolean blockOnOpen) { - MavenDiscoveryInstallWizard wizard = new MavenDiscoveryInstallWizard(ProvisioningUI.getDefaultUI(), operation, - operation.getIUs(), null); - WizardDialog dialog = new ProvisioningWizardDialog(ProvUI.getDefaultParentShell(), wizard); - dialog.create(); - PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(), IProvHelpContextIds.INSTALL_WIZARD); - dialog.setBlockOnOpen(blockOnOpen); - return dialog.open(); + public static int openInstallWizard(RestartInstallOperation operation, boolean blockOnOpen, IRunnableContext context) { + OpenInstallWizardRunner runner = new OpenInstallWizardRunner(operation, blockOnOpen); + try { + context.run(false, false, runner); + } catch(InvocationTargetException e) { + IStatus status = new Status(IStatus.ERROR, DiscoveryActivator.PLUGIN_ID, NLS.bind( + Messages.ConnectorDiscoveryWizard_installProblems, new Object[] {e.getCause().getMessage()}), e.getCause()); + StatusManager.getManager().handle(status, StatusManager.SHOW | StatusManager.BLOCK | StatusManager.LOG); + return Window.CANCEL; + } catch(InterruptedException ex) { + return Window.CANCEL; + } + return runner.getStatus(); + } + + private static class OpenInstallWizardRunner implements IRunnableWithProgress { + + private int status; + + private RestartInstallOperation operation; + + private boolean blockOnOpen; + + public OpenInstallWizardRunner(RestartInstallOperation operation, boolean blockOnOpen) { + this.operation = operation; + this.blockOnOpen = blockOnOpen; + } + + public void run(IProgressMonitor arg0) { + MavenDiscoveryInstallWizard wizard = new MavenDiscoveryInstallWizard(ProvisioningUI.getDefaultUI(), operation, + operation.getIUs(), null); + WizardDialog dialog = new ProvisioningWizardDialog(ProvUI.getDefaultParentShell(), wizard); + dialog.create(); + PlatformUI.getWorkbench().getHelpSystem().setHelp(dialog.getShell(), IProvHelpContextIds.INSTALL_WIZARD); + dialog.setBlockOnOpen(blockOnOpen); + status = dialog.open(); + } + + public int getStatus() { + return status; + } } + } |