diff options
| author | Jonathan Bauer | 2015-07-13 18:28:00 +0200 |
|---|---|---|
| committer | Jonathan Bauer | 2015-07-13 18:28:00 +0200 |
| commit | 0b6dd6432f82294f1080dfcb2b06af5da596c354 (patch) | |
| tree | e87a041021ed90c47c8f339a51cfcc7201bdb8dc | |
| parent | [client] fix IDP combo not beeing enabled when TEST_ACCOUNT auth method is saved (diff) | |
| download | tutor-module-0b6dd6432f82294f1080dfcb2b06af5da596c354.tar.gz tutor-module-0b6dd6432f82294f1080dfcb2b06af5da596c354.tar.xz tutor-module-0b6dd6432f82294f1080dfcb2b06af5da596c354.zip | |
[client] first steps with uploadWizwardStates [WIP]
also fixed 'Next' being clickable even though no VMX was selected
6 files changed, 117 insertions, 53 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java index c240c5d5..d9c9bee1 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java @@ -3,9 +3,6 @@ package org.openslx.dozmod.filetransfer; import java.io.File; import java.io.IOException; -import javax.swing.JOptionPane; -import javax.swing.SwingWorker; - import org.apache.log4j.Logger; import org.openslx.filetransfer.UploadStatusCallback; import org.openslx.filetransfer.Uploader; @@ -17,7 +14,7 @@ import org.openslx.filetransfer.Uploader; * @author www.codejava.net * */ -public class UploadTask extends SwingWorker<Void, Void> { +public class UploadTask implements Runnable { /** * Logger instance for this class. @@ -32,7 +29,6 @@ public class UploadTask extends SwingWorker<Void, Void> { private final int port; private final String uploadToken; private final File uploadFile; - private boolean success = false; public UploadTask(String host, int port, String uploadToken, File uploadFile) { // TODO: SSL @@ -47,7 +43,7 @@ public class UploadTask extends SwingWorker<Void, Void> { * Executed in background thread */ @Override - protected Void doInBackground() { + public void run() { Uploader upload = null; try { @@ -58,9 +54,8 @@ public class UploadTask extends SwingWorker<Void, Void> { final long fileSize = Image.Filesize = uploadFile.length(); BROKEN CODE - FIXME class imports */ final long fileSize = 1000000; - - - firePropertyChange("filesize", 0, fileSize); // Updates GUI + + LOGGER.debug("Filesize: " + fileSize); final boolean ret = upload.upload(uploadFile.getAbsolutePath(), new UploadStatusCallback() { // progress counter @@ -77,11 +72,9 @@ public class UploadTask extends SwingWorker<Void, Void> { final long now = System.currentTimeMillis(); if (lastUpdate + UPDATE_INTERVAL_MS < now) { final int percentCompleted = (int) ((totalBytesRead * 100) / fileSize); - setProgress(percentCompleted); lastBytes = (lastBytes * 2 + currentBytes) / 3; final double speed = lastBytes / UPDATE_INTERVAL_SECONDS; - firePropertyChange("speed", 0, speed / BYTES_PER_MIB); - firePropertyChange("bytesread", 0, totalBytesRead); + LOGGER.debug(percentCompleted + "% complete (speed: " + speed/BYTES_PER_MIB + ", total: " + totalBytesRead + ")"); lastUpdate = now; currentBytes = 0; } @@ -89,47 +82,24 @@ public class UploadTask extends SwingWorker<Void, Void> { @Override public void uploadError(String message) { - JOptionPane.showMessageDialog(null, "Error uploading file: " + message, "Error", - JOptionPane.ERROR_MESSAGE); - ul.close(null); + LOGGER.error("Upload error: " + message); + //Gui.showMessageBox(null, message, MessageType.ERROR, LOGGER, null); } }); // if the upload succeeded, set the progress to 100% manually again here to make // sure the GUI knows about it. - if (ret) { - setProgress(100); - firePropertyChange("bytesread", 0, uploadFile.length()); - firePropertyChange("success", false, true); - success = true; - } + + if (ret) + LOGGER.info("Upload completed."); + else + LOGGER.info("Upload failed."); } catch (IOException e) { - JOptionPane.showMessageDialog(null, "Error uploading file: " + e.getMessage(), "Error", - JOptionPane.ERROR_MESSAGE); - LOGGER.error("Upload of " + uploadFile.getAbsolutePath() + " failed!", e); + LOGGER.error("Upload of " + uploadFile.getAbsolutePath() + " failed: ", e); } finally { if (upload != null) upload.close(null); } - - return null; - } - - /** - * Executed in Swing's event dispatching thread - */ - @Override - protected void done() { - if (isCancelled()) - return; - if (success) { - LOGGER.info("Datei erfolgreich hochgeladen."); - JOptionPane.showMessageDialog(null, "Datei erfolgreich hochgeladen.", "Message", - JOptionPane.INFORMATION_MESSAGE); - } else { - LOGGER.error("Datei wurde unvollständig hochgeladen."); - JOptionPane.showMessageDialog(null, "Datei wurde unvollständig hochgeladen. Bitte wiederholen.", - "Message", JOptionPane.INFORMATION_MESSAGE); - } + return; } } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/MainMenuWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/MainMenuWindow.java index 7b2fa94b..6a959189 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/MainMenuWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/MainMenuWindow.java @@ -1,10 +1,14 @@ package org.openslx.dozmod.gui.window; +import java.io.File; + import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Shell; +import org.openslx.dozmod.filetransfer.UploadTask; import org.openslx.dozmod.gui.MainWindow; import org.openslx.dozmod.gui.window.layout.MainMenuWindowLayout; +import org.openslx.dozmod.thrift.Session; public class MainMenuWindow extends MainMenuWindowLayout { @@ -22,6 +26,8 @@ public class MainMenuWindow extends MainMenuWindowLayout { lecturesButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { + UploadTask ut = new UploadTask("132.230.8.113", 21, Session.getSatelliteToken(), new File("/media/data/vmware/OpenSLX0/OpenSLX0.vmdk")); + ut.run(); // } }); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java index 9b979ea9..eddcd516 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java @@ -6,11 +6,13 @@ import org.openslx.dozmod.gui.MainWindow; import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.gui.wizard.page.ImageMetaDataPage; import org.openslx.dozmod.gui.wizard.page.ImageUploadPage; +import org.openslx.dozmod.state.UploadWizardState; public class ImageWizard extends Wizard { private final static Logger LOGGER = Logger.getLogger(ImageWizard.class); + private UploadWizardState uploadWizardState; protected ImageUploadPage imageUploadPage; protected ImageMetaDataPage imageMetaDataPage; protected boolean editExistingImage; @@ -23,6 +25,7 @@ public class ImageWizard extends Wizard { super(); setNeedsProgressMonitor(true); this.editExistingImage = editExistingImage; + this.uploadWizardState = new UploadWizardState(); } @@ -33,13 +36,13 @@ public class ImageWizard extends Wizard { @Override public void addPages() { - imageUploadPage = new ImageUploadPage(editExistingImage); - imageMetaDataPage = new ImageMetaDataPage(); + // create the shared object for all pages of the wizard + imageUploadPage = new ImageUploadPage(uploadWizardState, editExistingImage); + imageMetaDataPage = new ImageMetaDataPage(uploadWizardState); addPage(imageUploadPage); addPage(imageMetaDataPage); } - @Override public boolean performFinish() { MainWindow.showMessageBox("Would continue uploading now :)", MessageType.INFO, LOGGER, null); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java index 0e6c01f6..a150433e 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageMetaDataPage.java @@ -9,6 +9,7 @@ import org.eclipse.swt.widgets.Composite; import org.openslx.bwlp.thrift.iface.OperatingSystem; import org.openslx.dozmod.gui.helper.Gui; import org.openslx.dozmod.gui.wizard.layout.ImageMetaDataPageLayout; +import org.openslx.dozmod.state.UploadWizardState; import org.openslx.dozmod.thrift.MetaDataCache; import org.openslx.util.QuickTimer; import org.openslx.util.QuickTimer.Task; @@ -17,11 +18,14 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout { private final static Logger LOGGER = Logger.getLogger(ImageMetaDataPage.class); - public ImageMetaDataPage() { + private UploadWizardState uploadWizardState; + + public ImageMetaDataPage(UploadWizardState uploadWizardState) { super(); + this.uploadWizardState = uploadWizardState; setPageComplete(false); } - + @Override public void createControl(Composite parent) { super.createControl(parent); @@ -33,7 +37,7 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout { @Override public void fire() { osList = MetaDataCache.getOperatingSystems(); - // now send the organisations back to the LoginWindow + // now send the organizations back to the LoginWindow // through populateIdpCombo() Gui.display.asyncExec(new Runnable() { @Override @@ -56,6 +60,30 @@ public class ImageMetaDataPage extends ImageMetaDataPageLayout { }); } + + /* Override setVisible() to inject some code when this page is set visible + * Note that this also gets called when we go back to this page. + * + * @see org.eclipse.jface.dialogs.DialogPage#setVisible(boolean) + */ + @Override + public void setVisible(boolean visible) { + + if (!getControl().isVisible() && visible) { + LOGGER.debug("Entering ImageMetaDataPage..."); + if (uploadWizardState == null) { + LOGGER.debug("state is null"); + return; + } + LOGGER.debug("vmName: " + + uploadWizardState.vmName == null ? + "null" : uploadWizardState.vmName); + LOGGER.debug("vmDescriptionFile: " + + uploadWizardState.vmDescriptionFile == null ? + "null" : uploadWizardState.vmDescriptionFile.toString()); + } + super.setVisible(visible); + } /** * @param osList list of OS's to fill the combo with */ diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java index b5880541..e6d77f31 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageUploadPage.java @@ -2,6 +2,7 @@ package org.openslx.dozmod.gui.wizard.page; import java.io.File; +import org.apache.log4j.Logger; import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; @@ -11,15 +12,21 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.FileDialog; import org.openslx.dozmod.Config; import org.openslx.dozmod.gui.wizard.layout.ImageUploadPageLayout; +import org.openslx.dozmod.state.UploadWizardState; public class ImageUploadPage extends ImageUploadPageLayout { + private final static Logger LOGGER = Logger.getLogger(ImageUploadPage.class); + + private UploadWizardState uploadWizardState; protected final boolean editExistingImage; + private File file; - public ImageUploadPage(boolean editExistingImage) { + public ImageUploadPage(UploadWizardState uploadWizardState, boolean editExistingImage) { super(); setPageComplete(false); this.editExistingImage = editExistingImage; + this.uploadWizardState = uploadWizardState; } @Override @@ -33,7 +40,11 @@ public class ImageUploadPage extends ImageUploadPageLayout { @Override public void keyReleased(KeyEvent e) { - setPageComplete(!imageNameTextField.getText().isEmpty()); + if (!imageNameTextField.getText().isEmpty()) { + uploadWizardState.vmName = imageNameTextField.getText(); + setPageComplete(uploadWizardState.vmDescriptionFile != null); + } else + setPageComplete(false); } }); @@ -47,9 +58,11 @@ public class ImageUploadPage extends ImageUploadPageLayout { dialog.setFilterPath(Config.getUploadPath()); String ret = dialog.open(); if (ret != null) { - File file = new File(ret); + file = new File(ret); Config.setUploadPath(file.getParentFile().getAbsolutePath()); + uploadWizardState.vmDescriptionFile = file; imageFileTextField.setText(ret); + setPageComplete(!imageNameTextField.getText().isEmpty()); } } @@ -57,5 +70,23 @@ public class ImageUploadPage extends ImageUploadPageLayout { public void widgetDefaultSelected(SelectionEvent e) { } }); + + } + /* Override setVisible() to inject some code when this page is set visible + * Note that this also gets called when we go back to this page. + * + * @see org.eclipse.jface.dialogs.DialogPage#setVisible(boolean) + */ + @Override + public void setVisible(boolean visible) { + if (getControl().isVisible() && !visible) { + // currently shown and about to be hidden + LOGGER.info("Leaving ImageUploadPage..."); + LOGGER.debug(uploadWizardState.vmName == null ? "vmName: null" : "vmName: " + uploadWizardState.vmName + " fopajkws"); + LOGGER.debug("vmDescriptionFile: " + + uploadWizardState.vmDescriptionFile == null ? + "null" : uploadWizardState.vmDescriptionFile.toString()); + } + super.setVisible(visible); } } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java b/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java new file mode 100644 index 00000000..12ce08a1 --- /dev/null +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/state/UploadWizardState.java @@ -0,0 +1,26 @@ +package org.openslx.dozmod.state; + +import java.io.File; + +import org.openslx.bwlp.thrift.iface.OperatingSystem; + +public class UploadWizardState { + + // name of the virtual machine as entered by the user + public String vmName; + // operating system of the virtual machine to be uploaded + public OperatingSystem vmOperatingSystem; + // description file of the virtual machine to be uploaded + public File vmDescriptionFile; + // disk file of the virtual machine to be uploaded + public File vmDiskFile; + + // image metadata holders +// public ImageBaseWrite imageBaseWrite; +// public ImageVersionWrite imageVersionWrite; + + public UploadWizardState() { +// this.imageBaseWrite = new ImageBaseWrite(); +// this.imageVersionWrite = new ImageVersionWrite(); + } +} |
