diff options
author | Jeff Johnston | 2016-05-26 17:57:06 +0000 |
---|---|---|
committer | Jeff Johnston | 2016-05-26 19:04:17 +0000 |
commit | 3e61aaba00fc436d824c4d5855dcd32111060a6b (patch) | |
tree | dd2d8c6e9aceed2d52bed2279bd60b032ba625a8 | |
parent | b9ea44b555f165efc45aa2d71392a07251f5c841 (diff) | |
download | org.eclipse.linuxtools-3e61aaba00fc436d824c4d5855dcd32111060a6b.tar.gz org.eclipse.linuxtools-3e61aaba00fc436d824c4d5855dcd32111060a6b.tar.xz org.eclipse.linuxtools-3e61aaba00fc436d824c4d5855dcd32111060a6b.zip |
Bug 491999 - Docker build fails when called via Quick Access menu
- make connection detection more robust to handle case where Docker
Explorer View isn't up yet and a connection selected
- add some logic back into CommandUtils and use it instead of
calling DockerConnectionWatcher directly
Change-Id: I7653fdd80114485db6299f485dbb96d58299d5d0
Reviewed-on: https://git.eclipse.org/r/73752
Tested-by: Hudson CI
Reviewed-by: Jeff Johnston <jjohnstn@redhat.com>
2 files changed, 29 insertions, 7 deletions
diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/BuildImageCommandHandler.java b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/BuildImageCommandHandler.java index 0be03715e2..a800185040 100644 --- a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/BuildImageCommandHandler.java +++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/BuildImageCommandHandler.java @@ -28,10 +28,10 @@ import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.IWizard; import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.linuxtools.docker.core.DockerConnectionManager; import org.eclipse.linuxtools.docker.core.DockerException; import org.eclipse.linuxtools.docker.core.IDockerConnection; import org.eclipse.linuxtools.internal.docker.core.DockerConnection; -import org.eclipse.linuxtools.internal.docker.ui.DockerConnectionWatcher; import org.eclipse.linuxtools.internal.docker.ui.views.DVMessages; import org.eclipse.linuxtools.internal.docker.ui.views.ImageBuildProgressHandler; import org.eclipse.linuxtools.internal.docker.ui.wizards.ImageBuild; @@ -39,6 +39,9 @@ import org.eclipse.linuxtools.internal.docker.ui.wizards.WizardMessages; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.handlers.HandlerUtil; @@ -55,7 +58,23 @@ public class BuildImageCommandHandler extends AbstractHandler { final ImageBuild wizard = new ImageBuild(); final WizardDialog wizardDialog = new NonModalWizardDialog(HandlerUtil.getActiveShell(event), wizard); wizardDialog.create(); - connection = DockerConnectionWatcher.getInstance().getConnection(); + IWorkbenchWindow window = PlatformUI.getWorkbench() + .getActiveWorkbenchWindow(); + IWorkbenchPage activePage = null; + IWorkbenchPart activePart = null; + if (window != null) + activePage = window.getActivePage(); + if (activePage != null) + activePart = activePage.getActivePart(); + connection = CommandUtils.getCurrentConnection(activePart); + // if no current connection, try the first connection in the list of + // connections + if (connection == null) { + IDockerConnection[] connections = DockerConnectionManager + .getInstance().getConnections(); + if (connections.length > 0) + connection = connections[0]; + } if (connection == null || !connection.isActive()) { // if no active connection, issue error message dialog and return Display.getDefault().syncExec(() -> MessageDialog.openError( diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/CommandUtils.java b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/CommandUtils.java index d85a771810..fdbbe12048 100644 --- a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/CommandUtils.java +++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/CommandUtils.java @@ -75,11 +75,14 @@ public class CommandUtils { * - active Workbench part */ public static IDockerConnection getCurrentConnection(final IWorkbenchPart activePart) { - return DockerConnectionWatcher.getInstance().getConnection(); - // if (activePart instanceof DockerContainersView) { - // return ((DockerContainersView) activePart).getConnection(); - // } else if (activePart instanceof DockerImagesView) { - // return ((DockerImagesView) activePart).getConnection(); + if (DockerConnectionWatcher.getInstance().getConnection() != null) + return DockerConnectionWatcher.getInstance().getConnection(); + else if (activePart instanceof DockerContainersView) { + return ((DockerContainersView) activePart).getConnection(); + } else if (activePart instanceof DockerImagesView) { + return ((DockerImagesView) activePart).getConnection(); + } + return null; // } else if (activePart instanceof DockerExplorerView) { // final ITreeSelection selection = ((DockerExplorerView) activePart) // .getCommonViewer().getStructuredSelection(); |