Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/BuildImageCommandHandler.java')
-rw-r--r--containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/BuildImageCommandHandler.java105
1 files changed, 105 insertions, 0 deletions
diff --git a/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/BuildImageCommandHandler.java b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/BuildImageCommandHandler.java
new file mode 100644
index 0000000000..d9d38faaa9
--- /dev/null
+++ b/containers/org.eclipse.linuxtools.docker.ui/src/org/eclipse/linuxtools/internal/docker/ui/commands/BuildImageCommandHandler.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * Copyright (c) 2015 Red Hat.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat - Initial Contribution
+ *******************************************************************************/
+package org.eclipse.linuxtools.internal.docker.ui.commands;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.IHandler;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.linuxtools.docker.core.DockerException;
+import org.eclipse.linuxtools.docker.core.IDockerConnection;
+import org.eclipse.linuxtools.internal.docker.core.DockerConnection;
+import org.eclipse.linuxtools.internal.docker.ui.views.DVMessages;
+import org.eclipse.linuxtools.internal.docker.ui.views.DockerImagesView;
+import org.eclipse.linuxtools.internal.docker.ui.views.ImageBuildProgressHandler;
+import org.eclipse.linuxtools.internal.docker.ui.wizards.ImageBuild;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class BuildImageCommandHandler extends AbstractHandler implements
+ IHandler {
+
+ private final static String BUILD_IMAGE_JOB_TITLE = "ImageBuild.msg"; //$NON-NLS-1$
+ private static final String ERROR_BUILDING_IMAGE = "ImageBuildError.msg"; //$NON-NLS-1$
+
+ private IDockerConnection connection;
+
+ @Override
+ public Object execute(final ExecutionEvent event) throws ExecutionException {
+ final IWorkbenchPart activePart = HandlerUtil.getActivePart(event);
+ final ImageBuild wizard = new ImageBuild();
+ final boolean buildImage = CommandUtils.openWizard(wizard,
+ HandlerUtil.getActiveShell(event));
+ if (buildImage) {
+ if (activePart instanceof DockerImagesView) {
+ connection = ((DockerImagesView) activePart)
+ .getConnection();
+ }
+ performBuildImage(wizard);
+ }
+ return null;
+ }
+
+ private void performBuildImage(final ImageBuild wizard) {
+ final Job buildImageJob = new Job(
+ DVMessages.getString(BUILD_IMAGE_JOB_TITLE)) {
+
+ @Override
+ protected IStatus run(final IProgressMonitor monitor) {
+ final String id = wizard.getImageName();
+ final int lines = wizard.getNumberOfLines();
+ final IPath path = wizard.getDirectory();
+ monitor.beginTask(DVMessages.getString(BUILD_IMAGE_JOB_TITLE),
+ 1);
+ // build the image and let the progress
+ // handler refresh the images when done
+ try {
+ ((DockerConnection) connection)
+ .buildImage(path, id,
+ new ImageBuildProgressHandler(connection,
+ id, lines));
+ monitor.worked(1);
+ } catch (final DockerException e) {
+ Display.getDefault().syncExec(new Runnable() {
+
+ @Override
+ public void run() {
+ MessageDialog.openError(Display.getCurrent()
+ .getActiveShell(), DVMessages
+ .getFormattedString(ERROR_BUILDING_IMAGE,
+ id), e.getMessage());
+
+ }
+
+ });
+ // for now
+ } catch (InterruptedException e) {
+ // do nothing
+ } finally {
+ monitor.done();
+ }
+ return Status.OK_STATUS;
+ }
+
+ };
+
+ buildImageJob.schedule();
+
+ }
+
+}

Back to the top