Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Coulon2016-12-02 16:26:35 +0000
committerRoland Grunberg2017-01-27 15:54:35 +0000
commit733dfd596e7694dade090c299d75b4830b77def7 (patch)
treebd285716fa1068556d2c9e99d3bc59c1c7ee0231
parentcf6165c32874d362682e356364ef8629bda101ec (diff)
downloadorg.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>
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/SWTUtils.java18
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerExplorerViewSWTBotTest.java23
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui/plugin.xml11
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/RemoveConnectionCommandHandler.java9
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;
}

Back to the top