diff options
4 files changed, 82 insertions, 10 deletions
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 bd49a500..600dbb7a 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 @@ -23,6 +23,8 @@ public class ContainerUploadPageLayout extends WizardPage { protected final JTabbedPane tpInput; protected final JTextField txtGitRepo; + protected final JTextField txtContainerImageFile; + /** * Constructor to define the Layout */ @@ -75,6 +77,15 @@ public class ContainerUploadPageLayout extends WizardPage { grid.add(txtImageName, 2, 1).fill(true, false).expand(true, false); grid.nextRow(); + QLabel lblContainerImageFile = new QLabel("Prebuild Container Image"); + lblContainerImageFile.setToolTipText( + I18n.PAGE_LAYOUT.getString("ContainerUploadPage.ContainerImageFile.ToolTipText")); + txtContainerImageFile = new JTextField(); + txtContainerImageFile.setEnabled(false); + grid.add(lblContainerImageFile); + grid.add(txtContainerImageFile, 2).fill(true, false).expand(true, false); + grid.nextRow(); + // -- Software license changed - shown only in UploadWizard -- chkLicenseRestricted = new JCheckBox( I18n.PAGE_LAYOUT.getString("ContainerUploadPage.CheckBox.ContainsLicenseRestricted.text")); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ContainerUploadPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ContainerUploadPage.java index ca39f170..e7e7adf5 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ContainerUploadPage.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ContainerUploadPage.java @@ -28,6 +28,8 @@ import javax.swing.event.ChangeListener; import javax.swing.filechooser.FileFilter; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; import java.io.File; import java.io.IOException; import java.util.regex.Matcher; @@ -40,7 +42,6 @@ public class ContainerUploadPage extends ContainerUploadPageLayout { private final Logger LOGGER = Logger.getLogger(ContainerUploadPage.class); - private final UploadWizardState state; private final ImageDetailsRead existingImage; private final ContainerDefinition containerDefinition; @@ -122,9 +123,48 @@ public class ContainerUploadPage extends ContainerUploadPageLayout { } }); + txtContainerImageFile.addMouseListener(new MouseListener() { + @Override public void mouseClicked(MouseEvent e) { + if (e.getClickCount() >= 2) + browseContainerImageFile(); + } + + @Override public void mousePressed(MouseEvent e) { + + } + + @Override public void mouseReleased(MouseEvent e) { + + } + + @Override public void mouseEntered(MouseEvent e) { + + } + + @Override public void mouseExited(MouseEvent e) { + + } + }); + btnBrowseForImage.requestFocus(); } + private void browseContainerImageFile() { + QFileChooser fc = new QFileChooser(Config.getUploadPath(), false); + fc.setAcceptAllFileFilterUsed(false); + fc.addChoosableFileFilter(new ContainerImageFileFiler()); + + int action = fc.showOpenDialog(getDialog()); + File file = fc.getSelectedFile(); + if (action != JFileChooser.APPROVE_OPTION || file == null) { + txtContainerImageFile.setText(""); + return; + } + + txtContainerImageFile.setText(file.getAbsolutePath()); + LOGGER.info("Tar File selected"); + } + private void browseFile() { QFileChooser fc = new QFileChooser(Config.getUploadPath(), false); @@ -149,10 +189,8 @@ public class ContainerUploadPage extends ContainerUploadPageLayout { String imageName = file.getParentFile().getName(); File imageTarFile = new File(file.getParentFile(), imageName.concat(".tar")); if (imageTarFile.exists()) { - LOGGER.info("Upload also an created Image"); - state.diskFile = imageTarFile; - } else { - state.diskFile = getDummyFile(); + txtContainerImageFile.setText(imageTarFile.getAbsolutePath()); + LOGGER.info("Prebuild Container Image found"); } Config.setUploadPath(file.getParent()); @@ -215,13 +253,20 @@ public class ContainerUploadPage extends ContainerUploadPageLayout { ContainerMeta containerMeta = containerDefinition.getContainerMeta(); containerMeta.setBuildContextMethod(getBuildContextMethod().ordinal()); containerMeta.setImageName(txtImageName.getText()); + + + File containerImageFile = new File(txtContainerImageFile.getText()); + if (containerImageFile.exists()) + state.diskFile = containerImageFile; + else + state.diskFile = getDummyFile(); + switch (containerDefinition.getBuildContextMethod()) { case FILE: containerDefinition.setContainerRecipe(state.descriptionFile); break; case GIT_REPOSITORY: containerMeta.setBuildContextUrl(txtGitRepo.getText()); - state.diskFile = getDummyFile(); state.descriptionFile = getDummyFile(); break; } @@ -231,15 +276,14 @@ public class ContainerUploadPage extends ContainerUploadPageLayout { /** * This function starts the image creation process. It is triggered by the * "Next" button. - * + * <p> * Depending on the state, it will first try to get a UUID for the new image by * calling createImage() of the thrift API. If a UUID is received, it will * request an upload with requestImageVersionUpload(). If granted, it will * finally start a thread for the UploadTask. - * + * <p> * Then a callback to the Gui is executed where we can process the upload state * and give the user feedback about it. - * */ @Override protected boolean wantNextOrFinish() { // are we creating a new image? then either: @@ -285,7 +329,7 @@ public class ContainerUploadPage extends ContainerUploadPageLayout { private static class DockerfileFilter extends FileFilter { @Override public boolean accept(File f) { - + Pattern p = Pattern.compile("[Dd]ockerfile"); Matcher m = p.matcher(f.getName()); @@ -299,4 +343,19 @@ public class ContainerUploadPage extends ContainerUploadPageLayout { return "Dockerfile"; } } + + private static class ContainerImageFileFiler extends FileFilter { + + @Override public boolean accept(File f) { + + boolean accept = false; + if ((f.isFile() && f.toString().endsWith(".tar")) || f.isDirectory()) + accept = true; + return accept; + } + + @Override public String getDescription() { + return "Container Image (.tar)"; + } + } } diff --git a/dozentenmodul/src/main/properties/i18n/page_layout.properties b/dozentenmodul/src/main/properties/i18n/page_layout.properties index f6047781..19910681 100644 --- a/dozentenmodul/src/main/properties/i18n/page_layout.properties +++ b/dozentenmodul/src/main/properties/i18n/page_layout.properties @@ -64,6 +64,7 @@ ContainerUploadPage.DockerFile.label=Docker File ContainerUploadPage.GitRepository.label=Git Repository ContainerUploadPage.GitRepository.toolTipText=Set clone address of Git Repository [git@ | http://] [.git]. Currently no Checks! ContainerUploadPage.CheckBox.ContainsLicenseRestricted.text=Contains license restricted software +ContainerUploadPage.ContainerImageFile.ToolTipText="Displays the path to a container image file archived as tar. Add manually with double click." ContainerUploadPage.Infobox.label=Information ContainerUploadPage.Infobox.text=Please provide all the information needed to define a container image. diff --git a/dozentenmodul/src/main/properties/i18n/page_layout_de_DE.properties b/dozentenmodul/src/main/properties/i18n/page_layout_de_DE.properties index 8eced6c6..0695ed6c 100644 --- a/dozentenmodul/src/main/properties/i18n/page_layout_de_DE.properties +++ b/dozentenmodul/src/main/properties/i18n/page_layout_de_DE.properties @@ -64,6 +64,7 @@ ContainerUploadPage.DockerFile.label=Docker File ContainerUploadPage.GitRepository.label=Git Repository ContainerUploadPage.GitRepository.toolTipText=Clone Addresse des Git Repositories setzen. [git@ | http://] [.git]. Momentan noch keine Checks! ContainerUploadPage.CheckBox.ContainsLicenseRestricted.text=Enthält lizenzpflichtige Software +ContainerUploadPage.ContainerImageFile.ToolTipText="Zeigt den Pfad zu einer als tar archivierten Container-Image-Datei an. Manuell Hinzufügen mit Doppelklick" ContainerUploadPage.Infobox.label=Hinweis ContainerUploadPage.Infobox.text=In dieser Maske sind alle Infromationen zur Definition eines Container Images anzugeben. |