diff options
author | Jeff Johnston | 2016-09-09 20:35:09 +0000 |
---|---|---|
committer | Jeff Johnston | 2016-09-09 22:28:26 +0000 |
commit | 0c1a87a9bc3aa1bff17976d205cc0eccc1f34b38 (patch) | |
tree | d82d90e5dc439b6c9255d9d958af4ce8f5b19a51 | |
parent | f019bd5ff0de1eec8db2bae28b13eb1105be51a6 (diff) | |
download | org.eclipse.linuxtools-0c1a87a9bc3aa1bff17976d205cc0eccc1f34b38.tar.gz org.eclipse.linuxtools-0c1a87a9bc3aa1bff17976d205cc0eccc1f34b38.tar.xz org.eclipse.linuxtools-0c1a87a9bc3aa1bff17976d205cc0eccc1f34b38.zip |
Bug 501175 - Build and Pull Image buttons enabled/disabled improperly
- fix DockerImagesView and DockerContainersView to set the connection
for the DockerConnectionWatcher based on the DockerExplorerView
selection
- change the ConnectionPropertyTester to use the DockerConnectionWatcher
when given an empty list (i.e. no selected object)
- modify the DockerImagesViewSWTBotTest to verify the Build and Pull
toolbar icons are enabled/disabled properly when no Image is
selected and when no Connection is selected
Change-Id: I858527f0340d42343dc53f88765bc1d8b425ed3d
Reviewed-on: https://git.eclipse.org/r/80847
Tested-by: Hudson CI
Reviewed-by: Jeff Johnston <jjohnstn@redhat.com>
(cherry picked from commit 30dad6c59ffa2f7569f4f419291fc1723247ae07)
Reviewed-on: https://git.eclipse.org/r/80854
4 files changed, 72 insertions, 6 deletions
diff --git a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImagesViewSWTBotTest.java b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImagesViewSWTBotTest.java index 20c8aa52f1..28064a0ffc 100644 --- a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImagesViewSWTBotTest.java +++ b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImagesViewSWTBotTest.java @@ -13,6 +13,7 @@ package org.eclipse.linuxtools.internal.docker.ui.views; import static org.assertj.core.api.Assertions.assertThat; +import java.util.List; import java.util.concurrent.TimeUnit; import org.eclipse.linuxtools.internal.docker.core.DockerConnection; @@ -33,6 +34,7 @@ import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot; import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView; import org.eclipse.swtbot.swt.finder.SWTBot; import org.eclipse.swtbot.swt.finder.widgets.SWTBotTableItem; +import org.eclipse.swtbot.swt.finder.widgets.SWTBotToolbarButton; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.views.properties.PropertySheet; import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage; @@ -95,6 +97,14 @@ public class DockerImagesViewSWTBotTest { return tableItem.click().select(); } + private void unselectImages() { + dockerImagesBotView.bot().table().unselect(); + } + + private void unselectConnections() { + dockerExplorerBotView.bot().tree().unselect(); + } + @Test public void shouldShowDefaultImages() { // then default connection with 1 image should be displayed @@ -197,5 +207,45 @@ public class DockerImagesViewSWTBotTest { .hasId("org.eclipse.linuxtools.docker.ui.properties.image.info"); } + @Test + public void verifyBuildAndPullActionEnablement() { + // given + final DockerClient client = MockDockerClientFactory.image(MockImageFactory.name("angry_bar").build()).build(); + final DockerConnection dockerConnection = MockDockerConnectionFactory.from("Test", client) + .withDefaultTCPConnectionSettings(); + DockerConnectionManagerUtils.configureConnectionManager(dockerConnection); + final PropertySheet propertySheet = SWTUtils + .syncExec(() -> SWTUtils.getView(bot, "org.eclipse.ui.views.PropertySheet", true)); + this.dockerImagesView.setFocus(); + // select the container in the table + selectImageInTable("angry_bar"); + List<SWTBotToolbarButton> buttons = this.dockerImagesBotView.getToolbarButtons(); + for (SWTBotToolbarButton button : buttons) { + if (button.getText().equals("Build Image")) { + assertThat(button.isEnabled()); + } else if (button.getText().equals("Pull...")) { + assertThat(button.isEnabled()); + } + } + unselectImages(); + buttons = this.dockerImagesBotView.getToolbarButtons(); + for (SWTBotToolbarButton button : buttons) { + if (button.getText().equals("Build Image")) { + assertThat(button.isEnabled()); + } else if (button.getText().equals("Pull...")) { + assertThat(button.isEnabled()); + } + } + unselectConnections(); + buttons = this.dockerImagesBotView.getToolbarButtons(); + for (SWTBotToolbarButton button : buttons) { + if (button.getText().equals("Build Image")) { + assertThat(!button.isEnabled()); + } else if (button.getText().equals("Pull...")) { + assertThat(!button.isEnabled()); + } + } + } + } diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/propertytesters/ConnectionPropertyTester.java b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/propertytesters/ConnectionPropertyTester.java index 68996524a3..c2b4291803 100644 --- a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/propertytesters/ConnectionPropertyTester.java +++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/propertytesters/ConnectionPropertyTester.java @@ -53,10 +53,16 @@ public class ConnectionPropertyTester extends PropertyTester { private boolean isConnectionEstablished(Object receiver, String property, Object[] args, Object expectedValue) { - if (receiver instanceof List && !((List<?>) receiver).isEmpty()) { - return isConnectionEstablished(((List<?>) receiver).get(0), - property, args, - expectedValue); + if (receiver instanceof List) { + if (!((List<?>) receiver).isEmpty()) { + return isConnectionEstablished(((List<?>) receiver).get(0), + property, args, expectedValue); + } else { + return isConnectionEstablished( + DockerConnectionWatcher.getInstance().getConnection(), + property, args, + expectedValue); + } } if (receiver instanceof IAdaptable) { final IDockerConnection connection = ((IAdaptable) receiver) diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerContainersView.java b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerContainersView.java index 8527cf0075..b4de872e5e 100644 --- a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerContainersView.java +++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerContainersView.java @@ -59,6 +59,7 @@ import org.eclipse.linuxtools.docker.core.IDockerImage; import org.eclipse.linuxtools.docker.core.IDockerPortMapping; import org.eclipse.linuxtools.docker.ui.Activator; import org.eclipse.linuxtools.internal.docker.core.DockerConnection; +import org.eclipse.linuxtools.internal.docker.ui.DockerConnectionWatcher; import org.eclipse.linuxtools.internal.docker.ui.SWTImagesFactory; import org.eclipse.linuxtools.internal.docker.ui.commands.CommandUtils; import org.eclipse.linuxtools.internal.docker.ui.propertytesters.ContainerPropertyTester; @@ -216,8 +217,12 @@ public class DockerContainersView extends ViewPart implements // Find out if it has a selection and set our connection appropriately. ISelection selection = getSite().getWorkbenchWindow() .getSelectionService().getSelection(DockerExplorerView.VIEW_ID); - if (selection != null) + if (selection != null) { selectionChanged(null, selection); + // also notify DockerConnectionWatcher + DockerConnectionWatcher.getInstance().selectionChanged(null, + selection); + } } private void createTableViewer(final Composite container) { diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImagesView.java b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImagesView.java index 02180967e0..ad034774db 100644 --- a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImagesView.java +++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImagesView.java @@ -46,6 +46,7 @@ import org.eclipse.linuxtools.docker.core.IDockerContainer; import org.eclipse.linuxtools.docker.core.IDockerImage; import org.eclipse.linuxtools.docker.core.IDockerImageListener; import org.eclipse.linuxtools.docker.ui.Activator; +import org.eclipse.linuxtools.internal.docker.ui.DockerConnectionWatcher; import org.eclipse.linuxtools.internal.docker.ui.commands.CommandUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyListener; @@ -182,8 +183,12 @@ public class DockerImagesView extends ViewPart implements IDockerImageListener, // Find out if it has a selection and set our connection appropriately. ISelection selection = getSite().getWorkbenchWindow() .getSelectionService().getSelection(DockerExplorerView.VIEW_ID); - if (selection != null) + if (selection != null) { selectionChanged(null, selection); + // also notify DockerConnectionWatcher + DockerConnectionWatcher.getInstance().selectionChanged(null, + selection); + } } private void createTableViewer(final Composite container) { |