diff options
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui')
7 files changed, 73 insertions, 27 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java index d8e7f797..4be287d7 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java @@ -255,19 +255,26 @@ public abstract class MainWindow { @Override public void fire() { App.waitForInit(); - // now try to init the session with the saved configuration (by giving it null) - if (ThriftActions.initSession(null, false, SwingUtilities.getWindowAncestor(mainWindow))) { - initWindow(); - } else { - // session resume failed, so do the normal login procedure - Gui.asyncExec(new Runnable() { - @Override - public void run() { - LoginWindow.open(mainWindow); + Gui.syncExec(new GuiCallable<Boolean>() { + @Override + public Boolean run() { + // now try to init the session with the saved configuration (by giving it null) + if (ThriftActions.initSession(null, false, + SwingUtilities.getWindowAncestor(mainWindow))) { initWindow(); + } else { + // session resume failed, so do the normal login procedure + Gui.asyncExec(new Runnable() { + @Override + public void run() { + LoginWindow.open(mainWindow); + initWindow(); + } + }); } - }); - } + return null; + } + }); } }); } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/DownloadPanel.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/DownloadPanel.java index a25bd661..a50e67c5 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/DownloadPanel.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/DownloadPanel.java @@ -69,5 +69,10 @@ public class DownloadPanel extends TransferPanel implements ActionListener, Quit public void onApplicationQuit() { download.cancel(); } + + @Override + protected void releaseResources() { + // NOOP + } } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/PassiveUploadPanel.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/PassiveUploadPanel.java index bfd9b783..93b412de 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/PassiveUploadPanel.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/PassiveUploadPanel.java @@ -38,4 +38,9 @@ public class PassiveUploadPanel extends TransferPanel { return false; } + @Override + protected void releaseResources() { + // NOOP + } + } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java index 0718946e..95464f24 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/TransferPanel.java @@ -129,11 +129,13 @@ public abstract class TransferPanel extends ActivityPanel implements TransferEve status = I18n.ACTIVITY.getString("TransferPanel.TransferState.error"); if (transfer.isCanceled()) { transfer.removeListener(panel); + releaseResources(); } break; case FINISHED: transferDone(); status = I18n.ACTIVITY.getString("TransferPanel.TransferState.finished"); + releaseResources(); break; case IDLE: status = I18n.ACTIVITY.getString("TransferPanel.TransferState.idle"); @@ -166,6 +168,11 @@ public abstract class TransferPanel extends ActivityPanel implements TransferEve } }); } + + /** + * Called when the transfer is finished, or cancelled due to an error + */ + protected abstract void releaseResources(); private void transferDone() { transfer.removeListener(panel); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java index 6b8c5a94..7e56b0e8 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/activity/UploadPanel.java @@ -34,7 +34,7 @@ public class UploadPanel extends TransferPanel implements QuitNotification { private static final Logger LOGGER = LogManager.getLogger(UploadPanel.class); - private final UploadInitiator state; + private UploadInitiator state; private final UploadPanel panel = this; @@ -59,26 +59,33 @@ public class UploadPanel extends TransferPanel implements QuitNotification { private class ButtonAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { + if (state == null) + return; + state.getUploadTask().removeListener(panel); if (!state.getUploadTask().isCanceled()) { if (!Gui.showMessageBox(panel, I18n.ACTIVITY.getString("UploadPanel.Message.yesNo.cancelTransfer"), MessageType.QUESTION_YESNO, null, null)) return; + final UploadInitiator fstate = state; QuickTimer.scheduleOnce(new Task() { @Override public void fire() { - state.cancelError("UploadPanel: Requested by user through button press"); + fstate.cancelError("UploadPanel: Requested by user through button press"); } }); } - state.getUploadTask().removeListener(panel); close(); + state = null; } } private class SscToggle implements ActionListener { @Override public void actionPerformed(ActionEvent e) { + if (state == null) + return; final UploadOptions options = new UploadOptions(chkServerSideCopy.isSelected()); + final UploadInitiator fstate = state; QuickTimer.scheduleOnce(new Task() { @Override public void fire() { @@ -86,7 +93,7 @@ public class UploadPanel extends TransferPanel implements QuitNotification { UploadOptions newOpt = null; try { newOpt = ThriftManager.getSatClient().setUploadOptions(Session.getSatelliteToken(), - state.getToken(), options); + fstate.getToken(), options); } catch (TAuthorizationException | TInvalidTokenException e) { dis = true; } catch (TException e) { @@ -117,6 +124,13 @@ public class UploadPanel extends TransferPanel implements QuitNotification { @Override public void onApplicationQuit() { // Application quit, tell server we cancel + if (state == null) + return; state.cancelError("Application quit (via UploadPanel)"); } + + @Override + protected void releaseResources() { + state = null; + } } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageCreationWizard.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageCreationWizard.java index 0bfe2b22..0c56a5c0 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageCreationWizard.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageCreationWizard.java @@ -291,22 +291,24 @@ public class ImageCreationWizard extends Wizard implements UiFeedback, QuitNotif } @Override protected boolean onCancelRequest() { - if (state.uuid == null) + if (state == null || state.uuid == null) return true; // Allow closing - nothing in progress boolean confirmed = Gui.showMessageBox(this, I18n.WIZARD.getString("ImageCreation.Message.yesNo.cancelRequest"), MessageType.QUESTION_YESNO, null, null); if (confirmed) { QuickTimer.scheduleOnce(new Task() { - @Override public void fire() { - if (state.upload != null) { + @Override + public void fire() { + if (state != null && state.upload != null) { state.upload.cancelError("Cancelled through aborting wizard"); - } - // As we're creating a new VM, delete base image aswell - try { - ThriftManager.getSatClient().deleteImageBase(Session.getSatelliteToken(), state.uuid); - } catch (TException e) { - LOGGER.debug("Error canceling upload on sat: ", e); + // As we're creating a new VM, delete base image aswell + try { + ThriftManager.getSatClient() + .deleteImageBase(Session.getSatelliteToken(), state.uuid); + } catch (TException e) { + LOGGER.debug("Error canceling upload on sat: ", e); + } } } }); @@ -315,7 +317,7 @@ public class ImageCreationWizard extends Wizard implements UiFeedback, QuitNotif } @Override public boolean wantConfirmQuit() { - return state.uuid != null; + return state != null && state.uuid != null; } @Override public void escapePressed() { @@ -330,7 +332,10 @@ public class ImageCreationWizard extends Wizard implements UiFeedback, QuitNotif @Override protected void doCleanup() { - state = null; + if (state != null) { + state.upload = null; + state = null; + } containerDefinition = null; currentPages.clear(); } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageUpdateWizard.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageUpdateWizard.java index ac8f80c1..1bcbaaf6 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageUpdateWizard.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageUpdateWizard.java @@ -147,8 +147,11 @@ public class ImageUpdateWizard extends Wizard implements UiFeedback, QuitNotific @Override protected void doCleanup() { + if (state != null) { + state.upload = null; + state = null; + } imageUploadPage = null; - state = null; } } |