summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/layout/ContainerUploadPageLayout.java11
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ContainerUploadPage.java79
-rw-r--r--dozentenmodul/src/main/properties/i18n/page_layout.properties1
-rw-r--r--dozentenmodul/src/main/properties/i18n/page_layout_de_DE.properties1
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.