diff options
author | Xavier Coulon | 2015-08-31 12:23:47 +0000 |
---|---|---|
committer | Jeff Johnston | 2015-09-01 19:55:14 +0000 |
commit | 95ff625aa416273053462ba96d6721cd06be3774 (patch) | |
tree | de737e86ac8da316a8386522e47e161dc2d99d40 | |
parent | 13d24bf3ae393add0fb99e4de3ea5209357c47d2 (diff) | |
download | org.eclipse.linuxtools-95ff625aa416273053462ba96d6721cd06be3774.tar.gz org.eclipse.linuxtools-95ff625aa416273053462ba96d6721cd06be3774.tar.xz org.eclipse.linuxtools-95ff625aa416273053462ba96d6721cd06be3774.zip |
Bug 470577 - Docker Explorer does not show the latest image id after an image build
DockerExplorerView is now properly registered as a listener.
Change-Id: I4a8c5a597f5c13c861613c45a413f4d669bccabb
Signed-off-by: Xavier Coulon <xcoulon@redhat.com>
Reviewed-on: https://git.eclipse.org/r/55034
Tested-by: Hudson CI
Reviewed-by: Jeff Johnston <jjohnstn@redhat.com>
7 files changed, 67 insertions, 49 deletions
diff --git a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerContainerListener.java b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerContainerListener.java index 85924a1524..d92b310044 100644 --- a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerContainerListener.java +++ b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerContainerListener.java @@ -15,12 +15,13 @@ import java.util.List; public interface IDockerContainerListener { /** - * Listener notification method + * Called when the list of {@link IDockerContainer} for the given + * {@link IDockerConnection} changed * * @param connection - * - Docker connection - * @param list - * - new list of IDockerContainers + * - the Docker connection + * @param containers + * - the new list of {@link IDockerContainer} */ void listChanged(IDockerConnection connection, List<IDockerContainer> list); diff --git a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerImageListener.java b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerImageListener.java index d1195a3b5b..1b63e526d4 100644 --- a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerImageListener.java +++ b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/docker/core/IDockerImageListener.java @@ -14,6 +14,15 @@ import java.util.List; public interface IDockerImageListener { - void listChanged(IDockerConnection manager, List<IDockerImage> list); + /** + * Called when the list of {@link IDockerImage} for the given + * {@link IDockerConnection} changed + * + * @param connection + * - the Docker connection + * @param images + * - the new list of {@link IDockerImage} + */ + void listChanged(IDockerConnection manager, List<IDockerImage> images); } diff --git a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerConnection.java b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerConnection.java index b550080f81..6881537ce7 100644 --- a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerConnection.java +++ b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerConnection.java @@ -672,7 +672,8 @@ public class DockerConnection implements IDockerConnection { if (containerListeners != null) { Object[] listeners = containerListeners.getListeners(); for (int i = 0; i < listeners.length; ++i) { - ((IDockerContainerListener) listeners[i]).listChanged(this, + ((IDockerContainerListener) listeners[i]) + .listChanged(this, list); } } diff --git a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerContainerRefreshManager.java b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerContainerRefreshManager.java index b94520f23c..152a27e606 100644 --- a/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerContainerRefreshManager.java +++ b/containers/org.eclipse.linuxtools.docker.core/src/org/eclipse/linuxtools/internal/docker/core/DockerContainerRefreshManager.java @@ -38,8 +38,9 @@ public class DockerContainerRefreshManager implements IDockerContainerListener { } @Override - public synchronized void listChanged(IDockerConnection connection, - List<IDockerContainer> dclist) { + public synchronized void listChanged( + final IDockerConnection connection, + final List<IDockerContainer> dclist) { ContainerRefreshThread rt = refreshThreadMap.get(connection); if (rt == null) { 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 7ccb44333d..aab99e1fe7 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 @@ -369,7 +369,8 @@ public class DockerContainersView extends ViewPart implements } @Override - public void listChanged(final IDockerConnection connection, final List<IDockerContainer> containers) { + public void listChanged(final IDockerConnection connection, + final List<IDockerContainer> containers) { if (connection.getName().equals(connection.getName())) { Display.getDefault().asyncExec(new Runnable() { @Override diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerExplorerView.java b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerExplorerView.java index 6b106bc6f8..9772593a6e 100644 --- a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerExplorerView.java +++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/views/DockerExplorerView.java @@ -66,7 +66,8 @@ public class DockerExplorerView extends CommonNavigator implements private Control connectionsPane; private Control explanationsPane; private PageBook pageBook; - private Map<IDockerConnection, DockerContainersRefresher> containersRefreshers = new HashMap<>(); + private Map<IDockerConnection, ContainersRefresher> containersRefreshers = new HashMap<>(); + private Map<IDockerConnection, ImagesRefresher> imagesRefreshers = new HashMap<>(); /** the search text widget. to filter containers and images. */ private Text search; @@ -252,9 +253,14 @@ public class DockerExplorerView extends CommonNavigator implements for (IDockerConnection connection : DockerConnectionManager .getInstance().getConnections()) { if (!containersRefreshers.containsKey(connection)) { - final DockerContainersRefresher containerRefresher = new DockerContainersRefresher(); - connection.addContainerListener(containerRefresher); - containersRefreshers.put(connection, containerRefresher); + final ContainersRefresher refresher = new ContainersRefresher(); + connection.addContainerListener(refresher); + containersRefreshers.put(connection, refresher); + } + if (!imagesRefreshers.containsKey(connection)) { + final ImagesRefresher refresher = new ImagesRefresher(); + connection.addImageListener(refresher); + imagesRefreshers.put(connection, refresher); } } } @@ -263,55 +269,54 @@ public class DockerExplorerView extends CommonNavigator implements for (IDockerConnection connection : DockerConnectionManager .getInstance().getConnections()) { if (containersRefreshers.containsKey(connection)) { - final DockerContainersRefresher dockerContainersRefresher = containersRefreshers + final ContainersRefresher refresher = containersRefreshers .get(connection); - connection.removeContainerListener(dockerContainersRefresher); + connection.removeContainerListener(refresher); containersRefreshers.remove(connection); } + if (imagesRefreshers.containsKey(connection)) { + final ImagesRefresher refresher = imagesRefreshers + .get(connection); + connection.removeImageListener(refresher); + imagesRefreshers.remove(connection); + } } } - class DockerContainersRefresher implements IDockerContainerListener { + private void refresh(final IDockerConnection connection) { + Display.getDefault().asyncExec(new Runnable() { + + @Override + public void run() { + // following is to force Container property testers + // to run again after list is updated. They won't do so by + // default. + final ISelection selection = getCommonViewer().getSelection(); + getCommonViewer().refresh(connection, true); + if (selection != null) { + getCommonViewer().setSelection(selection, false); + } + } + }); + } + + class ContainersRefresher implements IDockerContainerListener { + @Override public void listChanged(final IDockerConnection connection, - final List<IDockerContainer> list) { - Display.getDefault().asyncExec(new Runnable() { - - @Override - public void run() { - // following is to force Container property testers - // to run again after list is updated. They won't do so by - // default. - final ISelection selection = getCommonViewer() - .getSelection(); - if (selection != null) { - getCommonViewer().setSelection(selection, false); - } - getCommonViewer().refresh(); - } - }); + final List<IDockerContainer> containers) { + refresh(connection); } } - class DockerImagesRefresher implements IDockerImageListener { + class ImagesRefresher implements IDockerImageListener { + @Override public void listChanged(final IDockerConnection connection, - final List<IDockerImage> list) { - Display.getDefault().asyncExec(new Runnable() { - - @Override - public void run() { - // following is to force Image property testers - // to run again after list is updated. They won't do so by - // default. - ISelection selection = getCommonViewer().getSelection(); - if (selection != null) { - getCommonViewer().setSelection(selection, false); - } - getCommonViewer().refresh(connection, true); - } - }); + final List<IDockerImage> images) { + refresh(connection); } + } } 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 fe661f595a..c15e7d1a59 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 @@ -364,7 +364,7 @@ public class DockerImagesView extends ViewPart implements IDockerImageListener, @Override public void listChanged(final IDockerConnection connection, - final List<IDockerImage> containers) { + final List<IDockerImage> images) { if (connection.getName().equals(connection.getName())) { Display.getDefault().asyncExec(new Runnable() { @Override |