diff options
author | Xavier Coulon | 2016-12-02 16:26:35 +0000 |
---|---|---|
committer | Roland Grunberg | 2017-01-27 15:54:35 +0000 |
commit | 733dfd596e7694dade090c299d75b4830b77def7 (patch) | |
tree | bd285716fa1068556d2c9e99d3bc59c1c7ee0231 | |
parent | cf6165c32874d362682e356364ef8629bda101ec (diff) | |
download | org.eclipse.linuxtools-733dfd596e7694dade090c299d75b4830b77def7.tar.gz org.eclipse.linuxtools-733dfd596e7694dade090c299d75b4830b77def7.tar.xz org.eclipse.linuxtools-733dfd596e7694dade090c299d75b4830b77def7.zip |
Bug 508589 - Docker Explorer: Enable multiple connection deletion
Removed the restriction on the command in the plugin.xml and
added an SWTBot test to verify the work on 2 connections at the
same time.
Change-Id: If1d48b12895fb6425042e4af5026f51800f826b0
Signed-off-by: Xavier Coulon <xcoulon@redhat.com>
Reviewed-on: https://git.eclipse.org/r/86253
Tested-by: Hudson CI
Reviewed-by: Roland Grunberg <rgrunber@redhat.com>
4 files changed, 49 insertions, 12 deletions
diff --git a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/SWTUtils.java b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/SWTUtils.java index 1257009ae3..16d58bea09 100644 --- a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/SWTUtils.java +++ b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/SWTUtils.java @@ -315,6 +315,24 @@ public class SWTUtils { } /** + * Selects <strong> all child items</strong> in the given + * <code>parentTreeItem</code> whose labels match the given + * <code>items</code>. + * + * @param parentTree + * the parent tree + * @param matchItems + * the items to select + * @return + */ + public static SWTBotTree select(final SWTBotTree parentTree, final String... matchItems) { + final List<String> fullyQualifiedItems = Stream.of(parentTree.getAllItems()).filter( + treeItem -> Stream.of(matchItems).anyMatch(matchItem -> treeItem.getText().startsWith(matchItem))) + .map(item -> item.getText()).collect(Collectors.toList()); + return parentTree.select(fullyQualifiedItems.toArray(new String[0])); + } + + /** * Selects the given <code>treeItem</code> whose labels match the given * <code>items</code>. * diff --git a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerExplorerViewSWTBotTest.java b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerExplorerViewSWTBotTest.java index a3e4b10efd..5af7ee2425 100644 --- a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerExplorerViewSWTBotTest.java +++ b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerExplorerViewSWTBotTest.java @@ -13,7 +13,10 @@ 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 java.util.stream.Collectors; +import java.util.stream.Stream; import org.assertj.core.api.Assertions; import org.eclipse.jface.viewers.Viewer; @@ -625,7 +628,27 @@ public class DockerExplorerViewSWTBotTest { final SWTBotTreeItem connectionTreeItem = SWTUtils.expand(dockerExplorerViewBot.bot().tree(), "Test"); // then assertThat(connectionTreeItem.getItems()).isEmpty(); + } + @Test + public void shouldRemoveAllConnectionsSimultaneously() throws DockerException, InterruptedException { + // given + final DockerClient client = MockDockerClientFactory.build(); + final DockerConnection dockerConnection1 = MockDockerConnectionFactory.from("Test1", client) + .withDefaultTCPConnectionSettings(); + final DockerConnection dockerConnection2 = MockDockerConnectionFactory.from("Test2", client) + .withDefaultTCPConnectionSettings(); + DockerConnectionManagerUtils.configureConnectionManager(dockerConnection1, dockerConnection2); + final List<String> initialConnections = Stream.of(dockerExplorerViewBot.bot().tree().getAllItems()) + .map(item -> item.getText()).collect(Collectors.toList()); + assertThat(initialConnections).contains("Test1", "Test2"); + // when + SWTUtils.select(dockerExplorerViewBot.bot().tree(), "Test1", "Test2"); + SWTUtils.getContextMenu(dockerExplorerViewBot.bot().tree(), "Remove").click(); + // then + final List<String> remainingConnections = Stream.of(dockerExplorerViewBot.bot().tree().getAllItems()) + .map(item -> item.getText()).collect(Collectors.toList()); + assertThat(remainingConnections).doesNotContain("Test1", "Test2"); } } diff --git a/containers/org.eclipse.linuxtools.docker.ui/plugin.xml b/containers/org.eclipse.linuxtools.docker.ui/plugin.xml index 127d79153d..5cf7ebcf91 100644 --- a/containers/org.eclipse.linuxtools.docker.ui/plugin.xml +++ b/containers/org.eclipse.linuxtools.docker.ui/plugin.xml @@ -1133,16 +1133,11 @@ checkEnabled="false"> <with variable="selection"> - <count - value="1"> - </count> <iterate ifEmpty="false" - operator="or"> - <or> - <instanceof - value="org.eclipse.linuxtools.docker.core.IDockerConnection" /> - </or> + operator="and"> + <instanceof + value="org.eclipse.linuxtools.docker.core.IDockerConnection" /> </iterate> </with> </visibleWhen> diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/RemoveConnectionCommandHandler.java b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/RemoveConnectionCommandHandler.java index 657491bd54..bce8b50f00 100644 --- a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/RemoveConnectionCommandHandler.java +++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/RemoveConnectionCommandHandler.java @@ -11,10 +11,11 @@ package org.eclipse.linuxtools.internal.docker.ui.commands; +import java.util.stream.Stream; + import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.jface.viewers.ITreeSelection; -import org.eclipse.jface.viewers.TreePath; import org.eclipse.linuxtools.docker.core.DockerConnectionManager; import org.eclipse.linuxtools.docker.core.IDockerConnection; import org.eclipse.ui.IWorkbenchPart; @@ -33,9 +34,9 @@ public class RemoveConnectionCommandHandler extends AbstractHandler { if(activePart instanceof CommonNavigator) { final CommonViewer viewer = ((CommonNavigator)activePart).getCommonViewer(); final ITreeSelection selection = (ITreeSelection) viewer.getSelection(); - for (TreePath treePath : selection.getPaths()) { - DockerConnectionManager.getInstance().removeConnection((IDockerConnection) treePath.getLastSegment()); - } + Stream.of(selection.getPaths()).forEach( + p -> DockerConnectionManager.getInstance().removeConnection( + (IDockerConnection) p.getLastSegment())); } return null; } |