Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier Coulon2016-08-25 20:33:49 +0000
committerJeff Johnston2016-08-26 18:24:44 +0000
commit2f5471f0d63eacff01143b927b76c1013ab4e562 (patch)
treea9132f2f4a5ad29751c534b2426a74e278457351
parentf107e191a5cbe83dccc25172d74676b325bfbcc7 (diff)
downloadorg.eclipse.linuxtools-2f5471f0d63eacff01143b927b76c1013ab4e562.tar.gz
org.eclipse.linuxtools-2f5471f0d63eacff01143b927b76c1013ab4e562.tar.xz
org.eclipse.linuxtools-2f5471f0d63eacff01143b927b76c1013ab4e562.zip
Bug 500158 - Add context menu to open Hierarchy view in Containers and Images views
Added context menu when selecting an image or a container in the Docker Images and Docker Containers view Added tests to verify that the Docker Image Hierarchy view is opened when calling the command from the context menu Change-Id: I69238475af5a420357fcbcae0ad7a376b06260e6 Signed-off-by: Xavier Coulon <xcoulon@redhat.com> Reviewed-on: https://git.eclipse.org/r/79723 Tested-by: Hudson CI Reviewed-by: Jeff Johnston <jjohnstn@redhat.com>
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/AbstractSWTBotAssertion.java3
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/DockerConnectionManagerUtils.java24
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/SWTUtils.java41
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerContainersViewSWTBotTest.java29
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerExplorerViewSWTBotTest.java2
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImageHierarchyViewSWTBotTest.java3
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImagesViewSWTBotTest.java31
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/wizards/ImagePushSWTBotTests.java2
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui/plugin.xml25
9 files changed, 143 insertions, 17 deletions
diff --git a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/AbstractSWTBotAssertion.java b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/AbstractSWTBotAssertion.java
index c71468bc3d..0e0f2a3c16 100644
--- a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/AbstractSWTBotAssertion.java
+++ b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/AbstractSWTBotAssertion.java
@@ -40,7 +40,8 @@ public abstract class AbstractSWTBotAssertion<Assertion extends AbstractSWTBotAs
public Assertion isNotEnabled() {
notNullValue();
if(actual.isEnabled()) {
- failWithMessage("Expected widget with text '%s (%s)' to be disabled but it was not", actual.getText());
+ failWithMessage("Expected widget with text '%s (%s)' to be disabled but it was not", actual.getText(),
+ actual.getToolTipText());
}
return (Assertion) this;
}
diff --git a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/DockerConnectionManagerUtils.java b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/DockerConnectionManagerUtils.java
index 62bdafedb9..9be3f4498f 100644
--- a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/DockerConnectionManagerUtils.java
+++ b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/testutils/swt/DockerConnectionManagerUtils.java
@@ -18,6 +18,7 @@ import org.eclipse.linuxtools.internal.docker.ui.testutils.MockDockerConnectionS
import org.eclipse.linuxtools.internal.docker.ui.views.DockerContainersView;
import org.eclipse.linuxtools.internal.docker.ui.views.DockerExplorerView;
import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
+import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
/**
*
@@ -52,17 +53,24 @@ public class DockerConnectionManagerUtils {
public static void configureConnectionManager(final IDockerConnectionStorageManager connectionStorageManager) {
DockerConnectionManager.getInstance().setConnectionStorageManager(connectionStorageManager);
final SWTWorkbenchBot bot = new SWTWorkbenchBot();
- final DockerExplorerView dockerExplorerView = SWTUtils.getView(bot, DockerExplorerView.VIEW_ID);
- final DockerContainersView dockerContainersView = (DockerContainersView) SWTUtils.getView(bot,
- DockerContainersView.VIEW_ID);
+ final SWTBotView dockerExplorerBotView = SWTUtils.getSWTBotView(bot, DockerExplorerView.VIEW_ID);
+ final SWTBotView dockerContainersBotView = SWTUtils.getSWTBotView(bot, DockerContainersView.VIEW_ID);
SWTUtils.syncExec(() -> {
DockerConnectionManager.getInstance().reloadConnections();
- if (dockerExplorerView != null) {
- dockerExplorerView.getCommonViewer().refresh();
- dockerExplorerView.showConnectionsOrExplanations();
+ if (dockerExplorerBotView != null) {
+ final DockerExplorerView dockerExplorerView = (DockerExplorerView) dockerExplorerBotView
+ .getViewReference().getView(false);
+ if (dockerExplorerView != null) {
+ dockerExplorerView.getCommonViewer().refresh();
+ dockerExplorerView.showConnectionsOrExplanations();
+ }
}
- if (dockerContainersView != null) {
- dockerContainersView.getViewer().refresh();
+ if (dockerContainersBotView != null) {
+ final DockerContainersView dockerContainersView = (DockerContainersView) dockerContainersBotView
+ .getViewReference().getView(false);
+ if (dockerContainersView != null) {
+ dockerContainersView.getViewer().refresh();
+ }
}
});
}
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 283b3edf4c..09e0074d87 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
@@ -29,6 +29,7 @@ import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.linuxtools.internal.docker.ui.views.DockerExplorerView;
import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTException;
+import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Menu;
@@ -37,10 +38,14 @@ import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
import org.eclipse.swtbot.eclipse.finder.waits.Conditions;
import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
import org.eclipse.swtbot.swt.finder.exceptions.WidgetNotFoundException;
+import org.eclipse.swtbot.swt.finder.finders.ContextMenuHelper;
import org.eclipse.swtbot.swt.finder.finders.UIThreadRunnable;
import org.eclipse.swtbot.swt.finder.results.Result;
import org.eclipse.swtbot.swt.finder.results.VoidResult;
+import org.eclipse.swtbot.swt.finder.widgets.AbstractSWTBot;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotMenu;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTable;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTableItem;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotToolbarButton;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
@@ -92,7 +97,6 @@ public class SWTUtils {
* @throws SWTException
* if an {@link SWTException} occurred
*/
- @Deprecated
public static void syncAssert(final Runnable runnable) throws SWTException, ComparisonFailure {
final Queue<ComparisonFailure> failure = new ArrayBlockingQueue<>(1);
final Queue<SWTException> swtException = new ArrayBlockingQueue<>(1);
@@ -268,6 +272,14 @@ public class SWTUtils {
return swtBotTreeItem;
}
+ public static SWTBotTableItem getListItem(final SWTBotTable table, final String name) {
+ return Stream.iterate(0, i -> i + 1).limit(table.rowCount()).map(rowNumber -> table.getTableItem(rowNumber))
+ .filter(rowItem -> {
+ return Stream.iterate(0, j -> j + 1).limit(table.columnCount())
+ .map(colNum -> rowItem.getText(colNum)).anyMatch(colValue -> colValue.contains(name));
+ }).findFirst().orElse(null);
+ }
+
/**
* Waits for the given duration
*
@@ -442,8 +454,7 @@ public class SWTUtils {
@SuppressWarnings("unchecked")
public static <T> T getView(final SWTWorkbenchBot bot, final String viewId) {
- return (T) bot.views().stream().filter(v -> v.getViewReference().getId().equals(viewId)).findFirst()
- .map(v -> v.getReference().getView(false)).orElse(null);
+ return (T) bot.viewById(viewId).getReference().getView(false);
}
/**
@@ -452,7 +463,8 @@ public class SWTUtils {
* @throws InterruptedException
*/
public static boolean isConsoleViewVisible(final SWTWorkbenchBot bot) {
- return SWTUtils.getView(bot, IConsoleConstants.ID_CONSOLE_VIEW) != null;
+ return bot.views().stream()
+ .anyMatch(v -> v.getViewReference().getId().equals(IConsoleConstants.ID_CONSOLE_VIEW));
}
public static SWTBotToolbarButton getConsoleToolbarButtonWithTooltipText(final SWTWorkbenchBot bot, final String tooltipText) {
@@ -460,4 +472,25 @@ public class SWTUtils {
.filter(button -> button.getToolTipText().equals(tooltipText)).findFirst().get();
}
+ public static void closeView(final SWTWorkbenchBot bot, final String viewId) {
+ bot.views().stream().filter(v -> v.getReference().getId().equals(viewId)).forEach(v -> v.close());
+ }
+
+ /**
+ * Creates a new {@link SWTBotMenu} from the context. This avoids some
+ * unexpected "Widget is disposed" errors.
+ *
+ * @param bot
+ * the bot
+ * @param menuName
+ * the name of the menu to find
+ * @return the context menu
+ * @see <a href=
+ * "https://www.eclipse.org/forums/index.php?t=msg&th=11863&start=0&">Eclipse
+ * forum</a>
+ */
+ public static SWTBotMenu getContextMenu(final AbstractSWTBot<? extends Control> bot, final String menuName) {
+ return new SWTBotMenu(ContextMenuHelper.contextMenu(bot, menuName));
+ }
+
}
diff --git a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerContainersViewSWTBotTest.java b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerContainersViewSWTBotTest.java
index 32c1678802..081096d37c 100644
--- a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerContainersViewSWTBotTest.java
+++ b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerContainersViewSWTBotTest.java
@@ -13,6 +13,8 @@ package org.eclipse.linuxtools.internal.docker.ui.views;
import static org.assertj.core.api.Assertions.assertThat;
+import java.util.concurrent.TimeUnit;
+
import org.eclipse.linuxtools.internal.docker.core.DockerConnection;
import org.eclipse.linuxtools.internal.docker.core.DockerContainerRefreshManager;
import org.eclipse.linuxtools.internal.docker.ui.testutils.MockContainerFactory;
@@ -22,11 +24,13 @@ import org.eclipse.linuxtools.internal.docker.ui.testutils.MockImageFactory;
import org.eclipse.linuxtools.internal.docker.ui.testutils.swt.ClearConnectionManagerRule;
import org.eclipse.linuxtools.internal.docker.ui.testutils.swt.CloseWelcomePageRule;
import org.eclipse.linuxtools.internal.docker.ui.testutils.swt.DockerConnectionManagerUtils;
+import org.eclipse.linuxtools.internal.docker.ui.testutils.swt.DockerImageHierarchyViewAssertion;
import org.eclipse.linuxtools.internal.docker.ui.testutils.swt.SWTUtils;
import org.eclipse.linuxtools.internal.docker.ui.testutils.swt.TestLoggerRule;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
+import org.eclipse.swtbot.swt.finder.widgets.SWTBotTableItem;
import org.eclipse.ui.PlatformUI;
import org.junit.Assert;
import org.junit.Before;
@@ -80,6 +84,12 @@ public class DockerContainersViewSWTBotTest {
this.dockerExplorerBotView = bot.viewById(DockerExplorerView.VIEW_ID);
}
+ private SWTBotTableItem selectContainerInTable(final String containerName) {
+ final SWTBotTableItem tableItem = SWTUtils.getListItem(dockerContainersViewBot.bot().table(), containerName);
+ assertThat(tableItem).isNotNull();
+ return tableItem.click().select();
+ }
+
@Test
public void defaultContainersTest() {
// default connection with 1 image should be displayed
@@ -127,4 +137,23 @@ public class DockerContainersViewSWTBotTest {
assertThat(dockerConnection.getContainerListeners()).hasSize(0);
}
+ @Test
+ public void shouldOpenImageHierarchyView() {
+ // given
+ final DockerClient client = MockDockerClientFactory
+ .container(MockContainerFactory.name("angry_bar").status("Stopped").build()).build();
+ final DockerConnection dockerConnection = MockDockerConnectionFactory.from("Test", client)
+ .withDefaultTCPConnectionSettings();
+ DockerConnectionManagerUtils.configureConnectionManager(dockerConnection);
+ // make sure the hierarchy view is closed.
+ SWTUtils.closeView(this.bot, DockerImageHierarchyView.VIEW_ID);
+ // open the context menu on one of the containers
+ selectContainerInTable("angry_bar");
+ SWTUtils.getContextMenu(dockerContainersViewBot.bot().table(), "Open Image Hierarchy").click();
+ // wait 1sec
+ SWTUtils.wait(1, TimeUnit.SECONDS);
+ DockerImageHierarchyViewAssertion.assertThat(SWTUtils.getView(bot, DockerImageHierarchyView.VIEW_ID))
+ .isNotNull();
+ }
+
}
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 0832f4ba7e..540766d838 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
@@ -388,7 +388,7 @@ public class DockerExplorerViewSWTBotTest {
DockerConnectionManagerUtils.configureConnectionManager(dockerConnection);
// open the context menu on one of the containers
selectContainersInTreeView("Test", "gentle_foo", "angry_bar");
- final SWTBotMenu menuCommand = dockerExplorerViewBot.bot().tree().contextMenu("Pause");
+ final SWTBotMenu menuCommand = SWTUtils.getContextMenu(dockerExplorerViewBot.bot().tree(), "Pause");
// then
MenuAssertion.assertThat(menuCommand).isVisible().isNotEnabled();
}
diff --git a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImageHierarchyViewSWTBotTest.java b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImageHierarchyViewSWTBotTest.java
index 55cc2571f6..8f881adbc0 100644
--- a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImageHierarchyViewSWTBotTest.java
+++ b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerImageHierarchyViewSWTBotTest.java
@@ -196,7 +196,8 @@ public class DockerImageHierarchyViewSWTBotTest {
dockerExplorerViewBot.bot().tree().contextMenu("Open Image Hierarchy").click(); //$NON-NLS-1$
// then the view should be visible and selection should be on
// foo_container1
- DockerImageHierarchyViewAssertion.assertThat(getDockerImageHierarchyView())
+
+ DockerImageHierarchyViewAssertion.assertThat(SWTUtils.getView(this.bot, DockerImageHierarchyView.VIEW_ID))
.hasSelectedElement(this.connection.getContainer("sha256:foo_container1"));
}
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 56346e5fdb..0a0cad053a 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,8 @@ package org.eclipse.linuxtools.internal.docker.ui.views;
import static org.assertj.core.api.Assertions.assertThat;
+import java.util.concurrent.TimeUnit;
+
import org.eclipse.linuxtools.internal.docker.core.DockerConnection;
import org.eclipse.linuxtools.internal.docker.core.DockerContainerRefreshManager;
import org.eclipse.linuxtools.internal.docker.ui.testutils.MockContainerFactory;
@@ -22,12 +24,14 @@ import org.eclipse.linuxtools.internal.docker.ui.testutils.MockImageFactory;
import org.eclipse.linuxtools.internal.docker.ui.testutils.swt.ClearConnectionManagerRule;
import org.eclipse.linuxtools.internal.docker.ui.testutils.swt.CloseWelcomePageRule;
import org.eclipse.linuxtools.internal.docker.ui.testutils.swt.DockerConnectionManagerUtils;
+import org.eclipse.linuxtools.internal.docker.ui.testutils.swt.DockerImageHierarchyViewAssertion;
import org.eclipse.linuxtools.internal.docker.ui.testutils.swt.SWTUtils;
import org.eclipse.linuxtools.internal.docker.ui.testutils.swt.TestLoggerRule;
import org.eclipse.swt.widgets.TableItem;
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.ui.PlatformUI;
import org.junit.Assert;
import org.junit.Before;
@@ -82,6 +86,12 @@ public class DockerImagesViewSWTBotTest {
this.dockerExplorerBotView = bot.viewById(DockerExplorerView.VIEW_ID);
}
+ private SWTBotTableItem selectImageInTable(final String imageName) {
+ final SWTBotTableItem tableItem = SWTUtils.getListItem(dockerImagesBotView.bot().table(), imageName);
+ assertThat(tableItem).isNotNull();
+ return tableItem.click().select();
+ }
+
@Test
public void shouldShowDefaultImages() {
// then default connection with 1 image should be displayed
@@ -144,4 +154,25 @@ public class DockerImagesViewSWTBotTest {
// there should be one listener left: DockerExplorerView
assertThat(dockerConnection.getImageListeners()).hasSize(0);
}
+
+ @Test
+ public void shouldOpenImageHierarchyView() {
+ // given
+ final DockerClient client = MockDockerClientFactory.image(MockImageFactory.name("angry_bar").build())
+ .image(MockImageFactory.name("gentle_foo").build()).build();
+ final DockerConnection dockerConnection = MockDockerConnectionFactory.from("Test", client)
+ .withDefaultTCPConnectionSettings();
+ DockerConnectionManagerUtils.configureConnectionManager(dockerConnection);
+ // make sure the hierarchy view is closed.
+ SWTUtils.closeView(this.bot, DockerImageHierarchyView.VIEW_ID);
+ // open the context menu on one of the containers
+ selectImageInTable("angry_bar");
+ SWTUtils.getContextMenu(dockerImagesBotView.bot().table(), "Open Image Hierarchy").click();
+ // wait 1sec
+ SWTUtils.wait(1, TimeUnit.SECONDS);
+ DockerImageHierarchyViewAssertion.assertThat(SWTUtils.getView(bot, DockerImageHierarchyView.VIEW_ID))
+ .isNotNull();
+ }
+
+
}
diff --git a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/wizards/ImagePushSWTBotTests.java b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/wizards/ImagePushSWTBotTests.java
index a73b741ec3..beff20e7f8 100644
--- a/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/wizards/ImagePushSWTBotTests.java
+++ b/containers/org.eclipse.linuxtools.docker.ui.tests/src/org/eclipse/linuxtools/internal/docker/ui/wizards/ImagePushSWTBotTests.java
@@ -98,7 +98,7 @@ public class ImagePushSWTBotTests {
// when opening the "Push Image..." wizard
final SWTBotTree dockerExplorerViewTreeBot = dockerExplorerViewBot.bot().tree();
dockerExplorerViewTreeBot.select(imageTreeItem);
- dockerExplorerViewTreeBot.contextMenu("Push...").click();
+ SWTUtils.getContextMenu(dockerExplorerViewTreeBot, "Push...").click();
}
@Test
diff --git a/containers/org.eclipse.linuxtools.docker.ui/plugin.xml b/containers/org.eclipse.linuxtools.docker.ui/plugin.xml
index e6c21e4fc4..a9dfe60839 100644
--- a/containers/org.eclipse.linuxtools.docker.ui/plugin.xml
+++ b/containers/org.eclipse.linuxtools.docker.ui/plugin.xml
@@ -429,7 +429,7 @@
class="org.eclipse.linuxtools.internal.docker.ui.commands.PauseContainersCommandHandler">
<enabledWhen>
<with variable="selection">
- <iterate ifEmpty="false">
+ <iterate ifEmpty="false" operator="and">
<or>
<and>
<instanceof
@@ -1542,6 +1542,18 @@
style="push">
</command>
</menuContribution>
+ <!-- containers view context menu: open hierarchy -->
+ <menuContribution
+ locationURI="popup:org.eclipse.linuxtools.docker.ui.dockerContainersView">
+ <command
+ commandId="org.eclipse.linuxtools.docker.ui.commands.openInHierarchyView"
+ icon="icons/class_hi.png"
+ label="%command.openInHierarchyView.menu.name"
+ mnemonic="R"
+ style="push">
+ </command>
+ </menuContribution>
+
<!-- containers view toolbar: refresh view -->
<menuContribution
locationURI="toolbar:org.eclipse.linuxtools.docker.ui.dockerContainersView">
@@ -1688,6 +1700,17 @@
style="push">
</command>
</menuContribution>
+ <!-- image view context menu: open hierarchy -->
+ <menuContribution
+ locationURI="popup:org.eclipse.linuxtools.docker.ui.dockerImagesView">
+ <command
+ commandId="org.eclipse.linuxtools.docker.ui.commands.openInHierarchyView"
+ icon="icons/class_hi.png"
+ label="%command.openInHierarchyView.menu.name"
+ mnemonic="R"
+ style="push">
+ </command>
+ </menuContribution>
<!-- images view toolbar: remove images -->
<menuContribution
locationURI="toolbar:org.eclipse.linuxtools.docker.ui.dockerImagesView">

Back to the top