Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Johnston2016-09-09 20:35:09 +0000
committerJeff Johnston2016-09-09 22:28:26 +0000
commit0c1a87a9bc3aa1bff17976d205cc0eccc1f34b38 (patch)
treed82d90e5dc439b6c9255d9d958af4ce8f5b19a51
parentf019bd5ff0de1eec8db2bae28b13eb1105be51a6 (diff)
downloadorg.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
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImagesViewSWTBotTest.java50
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/propertytesters/ConnectionPropertyTester.java14
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerContainersView.java7
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImagesView.java7
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) {

Back to the top