/******************************************************************************* * Copyright (c) 2017 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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 * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.eclipse.linuxtools.docker.reddeer.core.ui.wizards; import org.jboss.reddeer.common.wait.TimePeriod; import org.jboss.reddeer.common.wait.WaitUntil; import org.jboss.reddeer.common.wait.WaitWhile; import org.jboss.reddeer.core.condition.JobIsRunning; import org.jboss.reddeer.core.condition.ShellWithTextIsAvailable; import org.jboss.reddeer.core.matcher.WithTextMatcher; import org.jboss.reddeer.jface.wizard.WizardPage; import org.jboss.reddeer.swt.impl.button.CheckBox; import org.jboss.reddeer.swt.impl.button.FinishButton; import org.jboss.reddeer.swt.impl.button.NextButton; import org.jboss.reddeer.swt.impl.button.OkButton; import org.jboss.reddeer.swt.impl.button.PushButton; import org.jboss.reddeer.swt.impl.combo.LabeledCombo; import org.jboss.reddeer.swt.impl.shell.DefaultShell; import org.jboss.reddeer.swt.impl.text.LabeledText; /** * * @author jkopriva@redhat.com * */ public class ImageRunSelectionPage extends WizardPage { public ImageRunSelectionPage() { super(); new WaitUntil(new ShellWithTextIsAvailable("Run a Docker Image"), TimePeriod.LONG); } public void finish() { if (new FinishButton().isEnabled()) { new FinishButton().click(); new WaitWhile(new JobIsRunning(), TimePeriod.VERY_LONG); } else { throw new RuntimeException("Image cannot be run! (Duplicate name?)"); } } public void next() { new NextButton().click(); } public void setContainerName(String name) { new LabeledText("Container Name:").setText(name); } public void setEntrypoint(String Entrypoint) { new LabeledText("Entrypoint:").setText(Entrypoint); } public void setCommand(String command) { new LabeledText("Command:").setText(command); } public void setPublishAllExposedPorts(boolean checked) { new CheckBox("Publish all exposed ports to random ports on the host interfaces").toggle(checked); } public void setPublishAllExposedPorts() { setPublishAllExposedPorts(true); } public void setKeepSTDINOpen(boolean checked) { new CheckBox("Keep STDIN open to Console even if not attached (-i)").toggle(checked); } public void setKeepSTDINOpen() { setKeepSTDINOpen(true); } public void setAllocatePseudoTTY(boolean checked) { new CheckBox("Allocate pseudo-TTY from Console (-t)").toggle(checked); } public void setAllocatePseudoTTY() { setAllocatePseudoTTY(true); } public void setAutomaticalyRemove(boolean checked) { new CheckBox("Automatically remove the container when it exits (--rm)").toggle(checked); } public void setAutomaticalyRemove() { setAutomaticalyRemove(true); } public void setGiveExtendedPrivileges(boolean checked) { new CheckBox("Give extended privileges to this container (--privileged)").toggle(checked); } public void setGiveExtendedPrivileges() { setGiveExtendedPrivileges(true); } public void addExposedPort(String containerPort, String hostAddress, String hostPort) { new PushButton(0, new WithTextMatcher("Add...")).click(); new DefaultShell("Exposing a Container Port"); new LabeledText("Container port:").setText(containerPort); new LabeledText("Host address:").setText(hostAddress); new LabeledText("Host port:").setText(hostPort); new OkButton().click(); } public void addLinkToContainer(String containerName, String alias) { new PushButton(1, new WithTextMatcher("Add...")).click(); new DefaultShell("Container Linking"); new LabeledCombo("Container:").setText(containerName); new LabeledText("Alias:").setText(alias); new OkButton().click(); } }