diff options
| author | ralph isenmann | 2020-10-05 16:58:19 +0200 |
|---|---|---|
| committer | ralph isenmann | 2020-10-05 16:58:19 +0200 |
| commit | f420dcea6ee03dfd5ca70dd49ce1a2b4f9cbdd06 (patch) | |
| tree | 87fdc86a174f59783f326f1804a82d60f0d004ae /dozentenmodul/src/main/java | |
| parent | [client] allow user to define bind mounts for container (diff) | |
| download | tutor-module-f420dcea6ee03dfd5ca70dd49ce1a2b4f9cbdd06.tar.gz tutor-module-f420dcea6ee03dfd5ca70dd49ce1a2b4f9cbdd06.tar.xz tutor-module-f420dcea6ee03dfd5ca70dd49ce1a2b4f9cbdd06.zip | |
[client] update ImageDetailsWindow for container
- text area shows now, in case if input method is a git repository, the provided url (currently no modification allowed
- show BindMountTable in that view, to allow modification (TODO)
Diffstat (limited to 'dozentenmodul/src/main/java')
6 files changed, 54 insertions, 24 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java index a392d7b8..b6cb1050 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java @@ -39,7 +39,9 @@ import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback; import org.openslx.dozmod.gui.window.layout.ImageDetailsWindowLayout; import org.openslx.dozmod.gui.wizard.ImageUpdateWizard; import org.openslx.dozmod.gui.wizard.LectureWizard; +import org.openslx.dozmod.model.ContainerBuildContextMethod; import org.openslx.dozmod.model.ContainerDefinition; +import org.openslx.dozmod.model.ContainerMeta; import org.openslx.dozmod.permissions.ImagePerms; import org.openslx.dozmod.thrift.ImageDetailsActions; import org.openslx.dozmod.thrift.Session; @@ -807,9 +809,23 @@ import org.openslx.util.Util; // TODO if only a single version is created an the user deletes it, next line will out of bounce! containerDefinition = ContainerDefinition.fromByteArray(loadContainerDef(image.versions.get(0))); - txtContainerDescription.setText(containerDefinition.getDescription()); - txtContainerImageName.setText(containerDefinition.getContainerMeta().getImageName()); - txtContainerRun.setText(containerDefinition.getContainerMeta().getRunOptions()); + ContainerMeta containerMeta = containerDefinition.getContainerMeta(); + ContainerBuildContextMethod method = ContainerBuildContextMethod.fromInt( + containerMeta.getBuildContextMethod()); + + switch (method) { + case FILE: + txtContainerDescription.setText(containerDefinition.getDescription()); + break; + case GIT_REPOSITORY: + txtContainerDescription.setText(containerMeta.getBuildContextUrl()); + txtContainerDescription.setEnabled(false); + break; + } + + txtContainerImageName.setText(containerMeta.getImageName()); + txtContainerRun.setText(containerMeta.getRunOptions()); + bindMountTable.setData(containerMeta.getBindMountConfig(), true); changeMonitor.add(txtContainerDescription). addConstraint(new TextNotEmptyConstraint("Empty Dockerfile not allowed!")); @@ -817,8 +833,6 @@ import org.openslx.util.Util; .addConstraint(new TextNotEmptyConstraint("Empty Name not allowed!")); changeMonitor.add(txtContainerRun) .addConstraint(new TextNotEmptyConstraint("No Container Run Options provided!")); - // TODO txtContainerMountUserDir txt Field needs a Constraint, only when chkContainerMountUserDir is selected; - changeMonitor.add(txtContainerMountUserDir); } // fill share mode combo, if not already done diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java index f47d95e8..c1df6867 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageDetailsWindowLayout.java @@ -24,6 +24,7 @@ import org.openslx.dozmod.gui.control.ComboBox; import org.openslx.dozmod.gui.control.ComboBox.ComboBoxRenderer; import org.openslx.dozmod.gui.control.PersonLabel; import org.openslx.dozmod.gui.control.QLabel; +import org.openslx.dozmod.gui.control.table.ContainerBindMountTable; import org.openslx.dozmod.gui.control.table.ImageVersionTable; import org.openslx.dozmod.gui.control.table.QScrollPane; import org.openslx.dozmod.gui.helper.GridManager; @@ -38,10 +39,11 @@ import org.openslx.thrifthelper.Comparators; private final JPanel pnlTabContainer; protected final JTextArea txtContainerDescription; - protected final JCheckBox chkContainerMountUserDir; protected final JTextField txtContainerRun; protected final JTextField txtContainerImageName; - protected final JTextField txtContainerMountUserDir; + protected final ContainerBindMountTable bindMountTable; + protected final JButton btnAddBindMount; + protected final JButton btnDelBindMount; protected QLabel lblError; protected final PersonLabel lblOwner; @@ -296,11 +298,17 @@ import org.openslx.thrifthelper.Comparators; grdContainerMeta.add(txtContainerRun, 2).fill(true, false); grdContainerMeta.nextRow(); - grdContainerMeta.add(new QLabel("Mount User Directory"), 1); - chkContainerMountUserDir = new JCheckBox(); - txtContainerMountUserDir = new JTextField(); - grdContainerMeta.add(chkContainerMountUserDir, 1); - grdContainerMeta.add(txtContainerMountUserDir, 1).fill(true, false); + bindMountTable = new ContainerBindMountTable(); + QScrollPane scrollPaneTable = new QScrollPane(bindMountTable); + grdContainerMeta.add(scrollPaneTable, 3).fill(true, true).expand(true, true); + grdContainerMeta.nextRow(); + + btnAddBindMount = new JButton("Add Bind Mount"); + btnDelBindMount = new JButton("Remove Bind Mount"); + grdContainerMeta.add(Box.createHorizontalBox(), 1).fill(true, false).expand(true, false); + grdContainerMeta.add(btnAddBindMount); + grdContainerMeta.add(btnDelBindMount); + grdContainerMeta.nextRow(); grdContainerMeta.finish(true); GridManager grdContainer = new GridManager(pnlTabContainer, 1, false, new Insets(8, 2, 8, 2)); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ContainerUploadPageLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ContainerUploadPageLayout.java index 3533d38f..df9e99fc 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ContainerUploadPageLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ContainerUploadPageLayout.java @@ -6,6 +6,7 @@ import org.openslx.dozmod.gui.control.table.QScrollPane; import org.openslx.dozmod.gui.helper.GridManager; import org.openslx.dozmod.gui.wizard.Wizard; import org.openslx.dozmod.gui.wizard.WizardPage; +import org.openslx.dozmod.model.ContainerBuildContextMethod; import javax.swing.*; import java.awt.*; @@ -30,9 +31,7 @@ public class ContainerUploadPageLayout extends WizardPage { protected final JButton btnAddBindMount; protected final JButton btnDelBindMount; - public enum BuildContextMethod { - FILE, GIT_REPOSITORY; - } + // TODO set proper Text labels @@ -84,7 +83,7 @@ public class ContainerUploadPageLayout extends WizardPage { tpInput.addTab("Dockerfile", p1); tpInput.addTab("Git Repository", p2); // tpInput.addTab("Simple Input", p3); - tpInput.setSelectedIndex(BuildContextMethod.FILE.ordinal()); + tpInput.setSelectedIndex(ContainerBuildContextMethod.FILE.ordinal()); grid.add(tpInput, 3).fill(true, false); @@ -136,7 +135,7 @@ public class ContainerUploadPageLayout extends WizardPage { grid.finish(true); } - protected BuildContextMethod getBuildContextMethod() { - return BuildContextMethod.values()[tpInput.getSelectedIndex()]; + protected ContainerBuildContextMethod getBuildContextMethod() { + return ContainerBuildContextMethod.fromInt(tpInput.getSelectedIndex()); } } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/DockerfileUploadPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/DockerfileUploadPage.java index 9e6e65ec..9eaf5cf6 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/DockerfileUploadPage.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/DockerfileUploadPage.java @@ -10,6 +10,7 @@ import org.openslx.dozmod.gui.window.ContainerBindMountWindow; import org.openslx.dozmod.gui.wizard.Wizard; import org.openslx.dozmod.gui.wizard.layout.ContainerUploadPageLayout; import org.openslx.dozmod.model.ContainerBindMount; +import org.openslx.dozmod.model.ContainerBuildContextMethod; import org.openslx.dozmod.model.ContainerDefinition; import org.openslx.dozmod.model.ContainerMeta; import org.openslx.dozmod.state.UploadWizardState; @@ -200,7 +201,7 @@ public class DockerfileUploadPage extends ContainerUploadPageLayout { } private boolean checkUserInput() { - BuildContextMethod method = getBuildContextMethod(); + ContainerBuildContextMethod method = getBuildContextMethod(); switch (method) { case FILE: diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerBuildContextMethod.java b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerBuildContextMethod.java new file mode 100644 index 00000000..6ed42ba8 --- /dev/null +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerBuildContextMethod.java @@ -0,0 +1,10 @@ +package org.openslx.dozmod.model; + +public enum ContainerBuildContextMethod { + + FILE, GIT_REPOSITORY; + + public static ContainerBuildContextMethod fromInt(int index) { + return values()[index]; + } +} diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerMeta.java b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerMeta.java index 56bbf3c1..089cea69 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerMeta.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/model/ContainerMeta.java @@ -1,7 +1,5 @@ package org.openslx.dozmod.model; -import org.openslx.dozmod.gui.wizard.layout.ContainerUploadPageLayout; - import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -17,11 +15,11 @@ public class ContainerMeta { private String build_context_url; private String image_name; private String run_options; - private Collection<ContainerBindMount> bind_mount_config; + private List<ContainerBindMount> bind_mount_config; public ContainerMeta() { - build_context_method = ContainerUploadPageLayout.BuildContextMethod.FILE.ordinal(); + build_context_method = ContainerBuildContextMethod.FILE.ordinal(); build_context_url = ""; image_name = ""; run_options = ""; @@ -60,7 +58,7 @@ public class ContainerMeta { this.image_name = image_name; } - public Collection<ContainerBindMount> getBindMountConfig() { + public List<ContainerBindMount> getBindMountConfig() { return bind_mount_config; } |
